Public Member Functions | Static Public Member Functions | Data Fields

ilObjRole Class Reference
[Services/AccessControl]

Class ilObjRole. More...

Inheritance diagram for ilObjRole:
Collaboration diagram for ilObjRole:

Public Member Functions

 ilObjRole ($a_id=0, $a_call_by_reference=false)
 Constructor public.
 toggleAssignUsersStatus ($a_assign_users)
 getAssignUsersStatus ()
 _getAssignUsersStatus ($a_role_id)
 read ()
 loads "role" from database private
 assignData ($a_data)
 loads a record "role" from array public
 update ()
 updates a record "role" and write it into database public
 create ()
 create
 setAllowRegister ($a_allow_register)
 set allow_register of role
 getAllowRegister ()
 get allow_register
 _lookupRegisterAllowed ()
 get all roles that are activated in user registration
 _lookupAllowRegister ($a_role_id)
 check whether role is allowed in user registration or not
 setParent ($a_parent_ref)
 set reference id of parent object this is neccessary for non RBAC protected objects!!!
 getParent ()
 get reference id of parent object
 ilClone ($a_parent_ref)
 copy all properties and subobjects of a role.
 delete ()
 delete role and all related data
 getCountMembers ()
 _updateSessionRoles ($a_selected_users)
 _getTranslation ($a_role_title)
 _updateAuthMode ($a_roles)
 _getAuthMode ($a_role_id)
 __getPermissionDefinitions ()

Static Public Member Functions

 _search (&$a_search_obj)
 STATIC METHOD search for role data.

Data Fields

 $parent
 $allow_register
 $assign_users

Detailed Description

Class ilObjRole.

Author:
Stefan Meyer <smeyer@databay.de>
Version:
Id:
class.ilObjRole.php 11710 2006-07-30 13:18:15Z akill

Definition at line 34 of file class.ilObjRole.php.


Member Function Documentation

ilObjRole::__getPermissionDefinitions (  ) 

Definition at line 496 of file class.ilObjRole.php.

References ilObject::$lng, $q, and $row.

        {
                global $ilDB, $lng, $objDefinition;             
                #$to_filter = $objDefinition->getSubobjectsToFilter();

                // build array with all rbac object types
                $q = "SELECT ta.typ_id,obj.title,ops.ops_id,ops.operation FROM rbac_ta AS ta ".
                         "LEFT JOIN object_data AS obj ON obj.obj_id=ta.typ_id ".
                         "LEFT JOIN rbac_operations AS ops ON ops.ops_id=ta.ops_id";
                $r = $ilDB->query($q);

                while ($row = $r->fetchRow(DB_FETCHMODE_OBJECT))
                {
                        // FILTER SUBOJECTS OF adm OBJECT
                        #if(in_array($row->title,$to_filter))
                        #{
                        #       continue;
                        #}
                        $rbac_objects[$row->typ_id] = array("obj_id"    => $row->typ_id,
                                                                                            "type"              => $row->title
                                                                                                );

                        $rbac_operations[$row->typ_id][$row->ops_id] = array(
                                                                                                                                "ops_id"        => $row->ops_id,
                                                                                                                                "title"         => $row->operation,
                                                                                                                                "name"          => $lng->txt($row->title."_".$row->operation)
                                                                                                                           );
                }
                
                return array($rbac_objects,$rbac_operations);
        }

ilObjRole::_getAssignUsersStatus ( a_role_id  ) 

Definition at line 69 of file class.ilObjRole.php.

References $query, $res, and $row.

Referenced by ilObjUserGUI::createObject(), ilRbacReview::getGlobalAssignableRoles(), ilObjUserFolderGUI::importUserRoleAssignmentObject(), ilSoapUserAdministration::importUsers(), and ilObjUserFolderGUI::importUsersObject().

        {
                global $ilDB;

                $query = "SELECT assign_users FROM role_data WHERE role_id = '".$a_role_id."'";

                $res = $ilDB->query($query);
                while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
                {
                        return $row->assign_users ? true : false;
                }
                return false;
        }

Here is the caller graph for this function:

ilObjRole::_getAuthMode ( a_role_id  ) 

Definition at line 482 of file class.ilObjRole.php.

References $q, and $row.

Referenced by ilRegistrationGUI::__validateRole(), and ilRegistrationGUI::saveForm().

        {
                global $ilDB;

                $q = "SELECT auth_mode FROM role_data ".
                         "WHERE role_id='".$a_role_id."'";
                $r = $ilDB->query($q);
                $row = $r->fetchRow();
                
                return $row[0];
        }

Here is the caller graph for this function:

ilObjRole::_getTranslation ( a_role_title  ) 

Definition at line 449 of file class.ilObjRole.php.

References ilObject::$lng.

Referenced by ilObjRoleGUI::editObject(), ilObjectStatusGUI::getAssignedValidRoles(), ilObjGroup::getLocalGroupRoles(), ilObjiLincCourse::getLocalRoles(), ilObjiLincCourse::getMemberRolesTitle(), ilObjGroup::getMemberRolesTitle(), ilObjectStatusGUI::getRoleAssignmentInfo(), ilPermissionGUI::perm(), ilObjRoleTemplateGUI::permObject(), ilObjRoleGUI::permObject(), ilObjUserGUI::roleassignmentObject(), ilSoapRoleObjectXMLWriter::start(), and ilObjRoleFolderGUI::viewObject().

        {
                global $lng;
                
                $test_str = explode('_',$a_role_title);

                if ($test_str[0] == 'il') 
                {
                        $test2 = (int) $test_str[3];
                        if ($test2 > 0)
                        {
                                unset($test_str[3]);
                        }

                        return $lng->txt(implode('_',$test_str));
                }
                
                return $a_role_title;
        }

Here is the caller graph for this function:

ilObjRole::_lookupAllowRegister ( a_role_id  ) 

check whether role is allowed in user registration or not

Parameters:
int $a_role_id role id
Returns:
boolean true if role is allowed in user registration

Definition at line 220 of file class.ilObjRole.php.

References $q.

Referenced by ilRegistrationGUI::__validateRole(), and ilRegistrationSettingsGUI::editRoles().

        {
                global $ilDB;
                
                $q = "SELECT * FROM role_data ".
                        " WHERE role_id =".$ilDB->quote($a_role_id);
                        
                $role_set = $ilDB->query($q);
                
                if ($role_rec = $role_set->fetchRow(DB_FETCHMODE_ASSOC))
                {
                        if ($role_rec["allow_register"])
                        {
                                return true;
                        }
                }
                return false;
        }

Here is the caller graph for this function:

ilObjRole::_lookupRegisterAllowed (  ) 

get all roles that are activated in user registration

public

Returns:
array array of int: role ids

Definition at line 193 of file class.ilObjRole.php.

References $q.

Referenced by ilRegistrationSettingsGUI::__prepareRoleList(), ilRegistrationGUI::__showRoleSelection(), and ilObjAuthSettingsGUI::authSettingsObject().

        {
                global $ilDB;
                
                $q = "SELECT * FROM role_data ".
                        "LEFT JOIN object_data ON object_data.obj_id = role_data.role_id ".
                        "WHERE allow_register = 1";
                        
                $r = $ilDB->query($q);
        
                $roles = array();
                while ($role = $r->fetchRow(DB_FETCHMODE_ASSOC))
                {
                        $roles[] = array("id" => $role["obj_id"],
                                                         "title" => $role["title"],
                                                         "auth_mode" => $role['auth_mode']);
                }
                
                return $roles;
        }

Here is the caller graph for this function:

ilObjRole::_search ( &$  a_search_obj  )  [static]

STATIC METHOD search for role data.

This method is called from class.ilSearch This method used by class.ilSearchGUI.php to a link to the results

Parameters:
object object of search class public

Definition at line 392 of file class.ilObjRole.php.

References $counter, $ilBench, $query, $res, and $row.

Referenced by ilSearch::performSearch().

        {
                global $ilBench;

                // NO CLASS VARIABLES IN STATIC METHODS

                $where_condition = $a_search_obj->getWhereCondition("like",array("title","description"));
                //$in = $a_search_obj->getInStatement("ore.ref_id");

                $query = "SELECT obj_id FROM object_data AS od ".
                        $where_condition." ".
                        "AND od.type = 'role' ";

                $ilBench->start("Search", "ilObjRole_search");
                $res = $a_search_obj->ilias->db->query($query);
                $ilBench->stop("Search", "ilObjRole_search");

                $counter = 0;

                while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
                {
                        $result_data[$counter++]["id"]                          =  $row->obj_id;
                }

                return $result_data ? $result_data : array();
        }

Here is the caller graph for this function:

ilObjRole::_updateAuthMode ( a_roles  ) 

Definition at line 469 of file class.ilObjRole.php.

References $q, and $role_id.

Referenced by ilObjAuthSettingsGUI::updateAuthRolesObject().

        {
                global $ilDB;

                foreach ($a_roles as $role_id => $auth_mode)
                {
                        $q = "UPDATE role_data SET ".
                                 "auth_mode='".$auth_mode."' ".
                                 "WHERE role_id='".$role_id."'";
                        $ilDB->query($q);
                }
        }

Here is the caller graph for this function:

ilObjRole::_updateSessionRoles ( a_selected_users  ) 

Definition at line 420 of file class.ilObjRole.php.

References $_SESSION, $q, $rbacreview, $user, and ilUtil::getUsersOnline().

Referenced by ilObjUserGUI::assignSaveObject().

        {
        global $ilDB, $rbacreview;
        
                $online_users_all = ilUtil::getUsersOnline();
                
        // users online to alter their role assignment
        $affected_users = array_intersect(array_keys($online_users_all),$a_selected_users);
        
            foreach ($affected_users as $user)
                {
                        $role_arr = $rbacreview->assignedRoles($user);

                        // current user assigned himself?
            if ($user == $_SESSION["AccountId"])
                        {
                                $_SESSION["RoleId"] = $role_arr;
                        }
                        else
                        {
                                $roles = "RoleId|".serialize($role_arr);
                                $modified_data = preg_replace("/RoleId.*?;\}/",$roles,$online_users_all[$user]["data"]);

                                $q = "UPDATE usr_session SET data='".$modified_data."' WHERE user_id = '".$user."'";
                                $ilDB->query($q);
                        }
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjRole::assignData ( a_data  ) 

loads a record "role" from array public

Parameters:
array roledata

Definition at line 112 of file class.ilObjRole.php.

References setAllowRegister(), ilObject::setDescription(), ilObject::setTitle(), ilUtil::stripSlashes(), and toggleAssignUsersStatus().

Referenced by read().

        {
                $this->setTitle(ilUtil::stripSlashes($a_data["title"]));
                $this->setDescription(ilUtil::stripslashes($a_data["desc"]));
                $this->setAllowRegister($a_data["allow_register"]);
                $this->toggleAssignUsersStatus($a_data['assign_users']);
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjRole::create (  ) 

create

public

Returns:
integer object id

Reimplemented from ilObject.

Definition at line 147 of file class.ilObjRole.php.

References $q, getAllowRegister(), and getAssignUsersStatus().

        {
                $this->id = parent::create();

                $q = "INSERT INTO role_data ".
                        "(role_id,allow_register,assign_users) ".
                        "VALUES ".
                        "('".$this->id."','".$this->getAllowRegister()."','".$this->getAssignUsersStatus()."')";
                $this->ilias->db->query($q);

                return $this->id;
        }

Here is the call graph for this function:

ilObjRole::delete (  ) 

delete role and all related data

public

Returns:
boolean true if all object data were removed; false if only a references were removed

Reimplemented from ilObject.

Definition at line 290 of file class.ilObjRole.php.

References $q, $rbacadmin, $rbacreview, $user_id, $users, ilObject::_exists(), ilObject::getId(), and getParent().

        {               
                global $rbacadmin, $rbacreview;
                
                $role_folders = $rbacreview->getFoldersAssignedToRole($this->getId());
                
                if ($rbacreview->isAssignable($this->getId(),$this->getParent()))
                {
                        // do not delete role if this role is the last role a user is assigned to

                        // first fetch all users assigned to role
//echo "<br>role id:".$this->getId().":";
                        $user_ids = $rbacreview->assignedUsers($this->getId());

                        $last_role_user_ids = array();

                        foreach ($user_ids as $user_id)
                        {
//echo "<br>user id:".$user_id.":";
                                // get all roles each user has
                                $role_ids = $rbacreview->assignedRoles($user_id);
                                
                                // is last role?
                                if (count($role_ids) == 1)
                                {
                                        $last_role_user_ids[] = $user_id;
                                }                       
                        }
                        
                        // users with last role found?
                        if (count($last_role_user_ids) > 0)
                        {
                                foreach ($last_role_user_ids as $user_id)
                                {
//echo "<br>last role for user id:".$user_id.":";
                                        // GET OBJECT TITLE
                                        $tmp_obj = $this->ilias->obj_factory->getInstanceByObjId($user_id);
                                        $user_names[] = $tmp_obj->getFullname();
                                        unset($tmp_obj);
                                }
                                
                                // TODO: This check must be done in rolefolder object because if multiple
                                // roles were selected the other roles are still deleted and the system does not
                                // give any feedback about this.
                                $users = implode(', ',$user_names);
                                $this->ilias->raiseError($this->lng->txt("msg_user_last_role1")." ".
                                                                         $users."<br/>".$this->lng->txt("msg_user_last_role2"),$this->ilias->error_obj->WARNING);                               
                        }
                        else
                        {
                                // IT'S A BASE ROLE
                                $rbacadmin->deleteRole($this->getId(),$this->getParent());

                                // delete object_data entry
                                parent::delete();
                                        
                                // delete role_data entry
                                $q = "DELETE FROM role_data WHERE role_id = '".$this->getId()."'";
                                $this->ilias->db->query($q);

                                include_once './classes/class.ilRoleDesktopItem.php';
                                
                                $role_desk_item_obj =& new ilRoleDesktopItem($this->getId());
                                $role_desk_item_obj->deleteAll();

                        }
                }
                else
                {
                        // linked local role: INHERITANCE WAS STOPPED, SO DELETE ONLY THIS LOCAL ROLE
                        $rbacadmin->deleteLocalRole($this->getId(),$this->getParent());
                }

                //  purge empty rolefolders
                foreach ($role_folders as $rolf)
                {
                        if (ilObject::_exists($rolf,true))
                        {
                                $rolfObj = $this->ilias->obj_factory->getInstanceByRefId($rolf);
                                $rolfObj->purge();
                                unset($roleObj);
                        }
                }
                
                return true;
        }

Here is the call graph for this function:

ilObjRole::getAllowRegister (  ) 

get allow_register

public

Returns:
integer

Definition at line 182 of file class.ilObjRole.php.

Referenced by create().

        {
                return $this->allow_register;
        }

Here is the caller graph for this function:

ilObjRole::getAssignUsersStatus (  ) 

Definition at line 64 of file class.ilObjRole.php.

Referenced by create().

        {
                return $this->assign_users;
        }

Here is the caller graph for this function:

ilObjRole::getCountMembers (  ) 

Definition at line 377 of file class.ilObjRole.php.

References $rbacreview.

        {
                global $rbacreview;
                
                return count($rbacreview->assignedUsers($this->getId()));
        }

ilObjRole::getParent (  ) 

get reference id of parent object

public

Returns:
integer ref_id of parent object

Definition at line 257 of file class.ilObjRole.php.

Referenced by delete().

        {
                return $this->parent;
        }

Here is the caller graph for this function:

ilObjRole::ilClone ( a_parent_ref  ) 

copy all properties and subobjects of a role.

DISABLED public

Returns:
integer new ref id

Reimplemented from ilObject.

Definition at line 268 of file class.ilObjRole.php.

References $rbacadmin.

        {               
                // DISABLED
                return false;

                global $rbacadmin;

                // always call parent ilClone function first!!
                $new_ref_id = parent::ilClone($a_parent_ref);
                
                // put here role specific stuff

                // ... and finally always return new reference ID!!
                return $new_ref_id;
        }

ilObjRole::ilObjRole ( a_id = 0,
a_call_by_reference = false 
)

Constructor public.

Parameters:
integer reference_id or object_id
boolean treat the id as reference_id (true) or object_id (false)

Definition at line 54 of file class.ilObjRole.php.

References ilObject::ilObject().

        {
                $this->type = "role";
                $this->ilObject($a_id,$a_call_by_reference);
        }

Here is the call graph for this function:

ilObjRole::read (  ) 

loads "role" from database private

Definition at line 87 of file class.ilObjRole.php.

References $data, $q, and assignData().

Referenced by update().

        {
                $q = "SELECT * FROM role_data WHERE role_id='".$this->id."'";
                $r = $this->ilias->db->query($q);

                if ($r->numRows() > 0)
                {
                        $data = $r->fetchRow(DB_FETCHMODE_ASSOC);

                        // fill member vars in one shot
                        $this->assignData($data);
                }
                else
                {
                         $this->ilias->raiseError("<b>Error: There is no dataset with id ".$this->id."!</b><br />class: ".get_class($this)."<br />Script: ".__FILE__."<br />Line: ".__LINE__, $this->ilias->FATAL);
                }

                parent::read();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilObjRole::setAllowRegister ( a_allow_register  ) 

set allow_register of role

public

Parameters:
integer 

Definition at line 166 of file class.ilObjRole.php.

Referenced by assignData().

        {
                if (empty($a_allow_register))
                {
                        $a_allow_register == 0;
                }
                
                $this->allow_register = (int) $a_allow_register;
        }

Here is the caller graph for this function:

ilObjRole::setParent ( a_parent_ref  ) 

set reference id of parent object this is neccessary for non RBAC protected objects!!!

public

Parameters:
integer ref_id of parent object

Definition at line 246 of file class.ilObjRole.php.

        {
                $this->parent = $a_parent_ref;
        }

ilObjRole::toggleAssignUsersStatus ( a_assign_users  ) 

Definition at line 60 of file class.ilObjRole.php.

Referenced by assignData().

        {
                $this->assign_users = (int) $a_assign_users;
        }

Here is the caller graph for this function:

ilObjRole::update (  ) 

updates a record "role" and write it into database public

Reimplemented from ilObject.

Definition at line 124 of file class.ilObjRole.php.

References $q, and read().

        {
                $q = "UPDATE role_data SET ".
                        "allow_register='".$this->allow_register."', ".
                        "assign_users = '".$this->getAssignUsersStatus()."' ".
                        "WHERE role_id='".$this->id."'";

                $this->ilias->db->query($q);

                parent::update();

                $this->read();

                return true;
        }

Here is the call graph for this function:


Field Documentation

ilObjRole::$allow_register

Definition at line 45 of file class.ilObjRole.php.

ilObjRole::$assign_users

Definition at line 46 of file class.ilObjRole.php.

ilObjRole::$parent

Definition at line 43 of file class.ilObjRole.php.


The documentation for this class was generated from the following file: