Public Member Functions | Static Public Member Functions | Data Fields

ilObjRole Class Reference

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)

Static Public Member Functions

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

Data Fields

 $parent
 $allow_register
 $assign_users

Detailed Description

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


Member Function Documentation

ilObjRole::_getAssignUsersStatus ( a_role_id  ) 

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

References $query, $res, and $row.

Referenced by ilObjUserGUI::createObject(), ilRbacReview::getGlobalAssignableRoles(), ilObjUserFolderGUI::importUserRoleAssignmentObject(), 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::_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 222 of file class.ilObjRole.php.

References $q.

Referenced by saveForm().

        {
                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 196 of file class.ilObjRole.php.

References $q, and $roles.

Referenced by displayForm().

        {
                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"]);
                }
                
                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 391 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::_updateSessionRoles ( a_selected_users  ) 

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

References $_SESSION, $q, $rbacreview, $roles, $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 115 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 150 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 292 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
                        $user_ids = $rbacreview->assignedUsers($this->getId());
                        
                        $last_role_user_ids = array();

                        foreach ($user_ids as $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)
                                {
                                        // 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 185 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 67 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 376 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 259 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 270 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 57 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 90 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 169 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 248 of file class.ilObjRole.php.

        {
                $this->parent = $a_parent_ref;
        }

ilObjRole::toggleAssignUsersStatus ( a_assign_users  ) 

Definition at line 63 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 127 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 48 of file class.ilObjRole.php.

ilObjRole::$assign_users

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

ilObjRole::$parent

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


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