46                 global $ilDB,
$ilErr,$ilias;
 
   49                 (isset($ilDB)) ? $this->
ilDB =& $ilDB : $this->
ilDB =& $ilias->db;
 
   73                 if (!isset($a_usr_id))
 
   75                         $message = get_class($this).
"::removeUser(): No usr_id given!";
 
   76                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
   79                 $query = 
"DELETE FROM rbac_ua WHERE usr_id = ".$ilDB->quote($a_usr_id,
'integer');
 
   96                 if (!isset($a_rol_id) or !isset($a_ref_id))
 
   98                         $message = get_class($this).
"::deleteRole(): Missing parameter! role_id: ".$a_rol_id.
" ref_id of role folder: ".$a_ref_id;
 
   99                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  103                 if ($a_rol_id == SYSTEM_ROLE_ID)
 
  105                         $this->ilErr->raiseError($lng->txt(
"msg_sysrole_not_deletable"),$this->ilErr->MESSAGE);
 
  108                 include_once(
'Services/LDAP/classes/class.ilLDAPRoleGroupMapping.php');
 
  110                 $mapping->deleteRole($a_rol_id); 
 
  117                 $query = 
"DELETE FROM rbac_ua ".
 
  118                          "WHERE rol_id = ".$ilDB->quote($a_rol_id,
'integer');
 
  122                 $query = 
"DELETE FROM rbac_pa ".
 
  123                          "WHERE rol_id = ".$ilDB->quote($a_rol_id,
'integer').
" ";
 
  142                 if (!isset($a_obj_id))
 
  144                         $message = get_class($this).
"::deleteTemplate(): No obj_id given!";
 
  145                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  148                 $query = 
'DELETE FROM rbac_templates '.
 
  149                          'WHERE rol_id = '.$ilDB->quote($a_obj_id,
'integer');
 
  152                 $query = 
'DELETE FROM rbac_fa '.
 
  153                         'WHERE rol_id = '.$ilDB->quote($a_obj_id,
'integer');
 
  170                 if (!isset($a_rol_id))
 
  172                         $message = get_class($this).
"::deleteLocalRole(): Missing parameter! role_id: '".$a_rol_id.
"'";
 
  173                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  177                 if ($a_rol_id == SYSTEM_ROLE_ID)
 
  184                         $clause = 
'AND parent = '.$ilDB->quote($a_ref_id,
'integer').
' ';
 
  187                 $query = 
'DELETE FROM rbac_fa '.
 
  188                          'WHERE rol_id = '.$ilDB->quote($a_rol_id,
'integer').
' '.
 
  192                 $query = 
'DELETE FROM rbac_templates '.
 
  193                          'WHERE rol_id = '.$ilDB->quote($a_rol_id,
'integer').
' '.
 
  211                 global $ilDB,$rbacreview;
 
  213                 if (!isset($a_rol_id) or !isset($a_usr_id))
 
  215                         $message = get_class($this).
"::assignUser(): Missing parameter! role_id: ".$a_rol_id.
" usr_id: ".$a_usr_id;
 
  216                         #$this->ilErr->raiseError($message,$this->ilErr->WARNING); 
  220                 $alreadyAssigned = $rbacreview->isAssigned($a_usr_id,$a_rol_id);        
 
  223                 if (!$alreadyAssigned) 
 
  225                         $query = 
"INSERT INTO rbac_ua (usr_id, rol_id) ".
 
  226                          "VALUES (".$ilDB->quote($a_usr_id,
'integer').
",".$ilDB->quote($a_rol_id,
'integer').
")";
 
  229                         include_once 
'Services/AccessControl/classes/class.ilRoleDesktopItem.php';
 
  231                         foreach($role_desk_item_obj->getAll() as $item_data)
 
  233                                 include_once 
'./Services/User/classes/class.ilObjUser.php';
 
  239                 include_once(
'Services/LDAP/classes/class.ilLDAPRoleGroupMapping.php');
 
  241                 $mapping->assign($a_rol_id,$a_usr_id); 
 
  257                 if (!isset($a_rol_id) or !isset($a_usr_id))
 
  259                         $message = get_class($this).
"::deassignUser(): Missing parameter! role_id: ".$a_rol_id.
" usr_id: ".$a_usr_id;
 
  260                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  263                 $query = 
"DELETE FROM rbac_ua ".
 
  264                          "WHERE usr_id = ".$ilDB->quote($a_usr_id,
'integer').
" ".
 
  265                          "AND rol_id = ".$ilDB->quote($a_rol_id,
'integer').
" ";
 
  268                 include_once(
'Services/LDAP/classes/class.ilLDAPRoleGroupMapping.php');
 
  270                 $mapping->deassign($a_rol_id,$a_usr_id); 
 
  287                 if (!isset($a_rol_id) or !isset($a_ops) or !isset($a_ref_id))
 
  289                         $this->ilErr->raiseError(get_class($this).
"::grantPermission(): Missing parameter! ".
 
  290                                                         "role_id: ".$a_rol_id.
" ref_id: ".$a_ref_id.
" operations: ",$this->ilErr->WARNING);
 
  293                 if (!is_array($a_ops))
 
  295                         $this->ilErr->raiseError(get_class($this).
"::grantPermission(): Wrong datatype for operations!",
 
  296                                                                          $this->ilErr->WARNING);
 
  306                 if ($a_rol_id == SYSTEM_ROLE_ID)
 
  312                 foreach ($a_ops as $key => $operation)
 
  314                         $a_ops[$key] = (int) $operation;
 
  318                 $ops_ids = serialize($a_ops);
 
  320                 $query = 
'DELETE FROM rbac_pa '.
 
  321                         'WHERE rol_id = %s '.
 
  323                 $res = $ilDB->queryF(
$query,array(
'integer',
'integer'),
 
  324                         array($a_rol_id,$a_ref_id));
 
  331                 $query = 
"INSERT INTO rbac_pa (rol_id,ops_id,ref_id) ".
 
  333                          "(".$ilDB->quote($a_rol_id,
'integer').
",".$ilDB->quote($ops_ids,
'text').
",".$ilDB->quote($a_ref_id,
'integer').
")";
 
  352                 if (!isset($a_ref_id))
 
  355                         $message = get_class($this).
"::revokePermission(): Missing parameter! ref_id: ".$a_ref_id;
 
  356                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  358 #$log->write("ilRBACadmin::revokePermission(), 0"); 
  361                 if ($a_keep_protected != 
true)
 
  364                         if ($a_rol_id == SYSTEM_ROLE_ID)
 
  371                                 $and1 = 
" AND rol_id = ".$ilDB->quote($a_rol_id,
'integer').
" ";
 
  378                         $query = 
"DELETE FROM rbac_pa ".
 
  379                                  "WHERE ref_id = ".$ilDB->quote($a_ref_id,
'integer').
 
  390                 $roles_in_scope = $rbacreview->getParentRoleIds($a_ref_id);
 
  394 #$log->write("ilRBACadmin::revokePermission(), 1"); 
  398                         foreach ($roles_in_scope as $role)
 
  400                                 if ($role[
'protected'] == 
true)
 
  405                                 $role_ids[] = $role[
'obj_id'];
 
  414                         $query = 
'DELETE FROM rbac_pa '.
 
  415                                 'WHERE '.$ilDB->in(
'rol_id',$role_ids,
false,
'integer').
' '.
 
  416                                 'AND ref_id = '.$ilDB->quote($a_ref_id,
'integer');
 
  421 #$log->write("ilRBACadmin::revokePermission(), 2");      
  423                         if ($a_rol_id == SYSTEM_ROLE_ID)
 
  429                         if ($roles_in_scope[$a_rol_id][
'protected'] == 
true)
 
  434                         $query = 
"DELETE FROM rbac_pa ".
 
  435                                  "WHERE ref_id = ".$ilDB->quote($a_ref_id,
'integer').
" ".
 
  436                                  "AND rol_id = ".$ilDB->quote($a_rol_id,
'integer').
" ";
 
  463                 $query = 
'DELETE FROM rbac_pa '.
 
  465                                 '( '.$GLOBALS[
'tree']->getSubTreeQuery($a_ref_id,array(
'child')).
' ) '.
 
  466                                 'AND rol_id = '.$ilDB->quote($a_role_id,
'integer');
 
  468                 $ilDB->manipulate(
$query);
 
  492                 $query = 
'DELETE FROM rbac_templates '.
 
  493                                 'WHERE parent IN ( '.
 
  494                                 $GLOBALS[
'tree']->getSubTreeQuery($a_ref_id, array(
'child')).
' ) '.
 
  495                                 'AND rol_id = '.$ilDB->quote($a_rol_id,
'integer');
 
  499                 $ilDB->manipulate(
$query);
 
  510                 $query = 
'DELETE FROM rbac_fa '.
 
  511                                 'WHERE parent IN ( '.
 
  512                                 $GLOBALS[
'tree']->getSubTreeQuery($a_ref_id,array(
'child')).
' ) '.
 
  513                                 'AND rol_id = '.$ilDB->quote($a_rol_id,
'integer');
 
  518                 $ilDB->manipulate(
$query);
 
  534                 if (!isset($a_ref_ids) or !is_array($a_ref_ids))
 
  536                         $message = get_class($this).
"::revokePermissionList(): Missing parameter or parameter is not an array! reference_list: ".var_dump($a_ref_ids);
 
  537                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  540                 if (!isset($a_rol_id))
 
  542                         $message = get_class($this).
"::revokePermissionList(): Missing parameter! rol_id: ".$a_rol_id;
 
  543                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  547                 if ($a_rol_id == SYSTEM_ROLE_ID)
 
  552                 $query = 
"DELETE FROM rbac_pa ".
 
  553                          "WHERE ".$ilDB->in(
'ref_id',$a_ref_ids,
false,
'integer').
' '.
 
  554                          "AND rol_id = ".$ilDB->quote($a_rol_id,
'integer');
 
  570         public function copyRolePermissions($a_source_id,$a_source_parent,$a_dest_parent,$a_dest_id,$a_consider_protected = 
true)
 
  572                 global $tree,$rbacreview;
 
  577                 $source_obj = $tree->getParentId($a_source_parent);
 
  578                 $target_obj = $tree->getParentId($a_dest_parent);
 
  579                 $ops = $rbacreview->getRoleOperationsOnObject($a_source_id,$source_obj);
 
  598                 global $rbacreview,$ilDB;
 
  600                 if (!isset($a_source_id) or !isset($a_source_parent) or !isset($a_dest_id) or !isset($a_dest_parent))
 
  602                         $message = __METHOD__.
": Missing parameter! source_id: ".$a_source_id.
 
  603                                            " source_parent_id: ".$a_source_parent.
 
  604                                            " dest_id : ".$a_dest_id.
 
  605                                            " dest_parent_id: ".$a_dest_parent;
 
  606                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  610                 if ($a_dest_id == SYSTEM_ROLE_ID)
 
  616                 $query = 
'SELECT * FROM rbac_templates '.
 
  617                          'WHERE rol_id = '.$ilDB->quote($a_source_id,
'integer').
' '.
 
  618                          'AND parent = '.$ilDB->quote($a_source_parent,
'integer');
 
  620                 $operations = array();
 
  622                 while (
$row = $ilDB->fetchObject(
$res))
 
  624                         $operations[$rownum][
'type'] = 
$row->type;
 
  625                         $operations[$rownum][
'ops_id'] = 
$row->ops_id;
 
  630                 $query = 
'DELETE FROM rbac_templates WHERE rol_id = '.$ilDB->quote($a_dest_id,
'integer').
' '.
 
  631                         'AND parent = '.$ilDB->quote($a_dest_parent,
'integer');
 
  634                 foreach($operations as 
$row => $op)
 
  636                         $query = 
'INSERT INTO rbac_templates (rol_id,type,ops_id,parent) '.
 
  638                                  $ilDB->quote($a_dest_id,
'integer').
",".
 
  639                                  $ilDB->quote($op[
'type'],
'text').
",".
 
  640                                  $ilDB->quote($op[
'ops_id'],
'integer').
",".
 
  641                                  $ilDB->quote($a_dest_parent,
'integer').
")";
 
  642                         $ilDB->manipulate(
$query);
 
  646                 if ($a_consider_protected == 
true)
 
  648                         if ($rbacreview->isProtected($a_source_parent,$a_source_id))
 
  671                 global $rbacreview,$ilDB;
 
  673                 if (!isset($a_source1_id) or !isset($a_source1_parent) 
 
  674                 or !isset($a_source2_id) or !isset($a_source2_parent) 
 
  675                 or !isset($a_dest_id) or !isset($a_dest_parent))
 
  677                         $message = get_class($this).
"::copyRolePermissionIntersection(): Missing parameter! source1_id: ".$a_source1_id.
 
  678                                            " source1_parent: ".$a_source1_parent.
 
  679                                            " source2_id: ".$a_source2_id.
 
  680                                            " source2_parent: ".$a_source2_parent.
 
  681                                            " dest_id: ".$a_dest_id.
 
  682                                            " dest_parent_id: ".$a_dest_parent;
 
  683                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  687                 if ($a_dest_id == SYSTEM_ROLE_ID)
 
  692                 if ($rbacreview->isProtected($a_source2_parent,$a_source2_id))
 
  694                         $GLOBALS[
'ilLog']->write(__METHOD__.
': Role is protected');
 
  698                 $query = 
"SELECT s1.type, s1.ops_id ".
 
  699                         "FROM rbac_templates s1, rbac_templates s2 ".
 
  700                         "WHERE s1.rol_id = ".$ilDB->quote($a_source1_id,
'integer').
" ".
 
  701                         "AND s1.parent = ".$ilDB->quote($a_source1_parent,
'integer').
" ".
 
  702                         "AND s2.rol_id = ".$ilDB->quote($a_source2_id,
'integer').
" ".
 
  703                         "AND s2.parent = ".$ilDB->quote($a_source2_parent,
'integer').
" ".
 
  704                         "AND s1.type = s2.type ".
 
  705                         "AND s1.ops_id = s2.ops_id";
 
  707                 $operations = array();
 
  711                         $operations[$rowNum][
'type'] = 
$row->type;
 
  712                         $operations[$rowNum][
'ops_id'] = 
$row->ops_id;
 
  718                 $query = 
'DELETE FROM rbac_templates WHERE rol_id = '.$ilDB->quote($a_dest_id,
'integer').
' '.
 
  719                         'AND parent = '.$ilDB->quote($a_dest_parent,
'integer');
 
  722                 $query = 
'INSERT INTO rbac_templates (rol_id,type,ops_id,parent) '.
 
  724                 $sta = $ilDB->prepareManip(
$query,array(
'integer',
'text',
'integer',
'integer'));
 
  725                 foreach($operations as $key => $set)
 
  727                         $ilDB->execute($sta,array(
 
  755                 global $ilDB, $rbacreview;
 
  758                 $s1_ops = $rbacreview->getAllOperationsOfRole($a_source1_id,$a_source1_parent);
 
  759                 $s2_ops = $rbacreview->getAlloperationsOfRole($a_source2_id,$a_source2_parent);
 
  763                 $GLOBALS[
'ilLog']->write(__METHOD__.
': '.print_r($s1_ops,TRUE));
 
  764                 $GLOBALS[
'ilLog']->write(__METHOD__.
': '.print_r($s2_ops,TRUE));
 
  766                 foreach($s1_ops as $type => $ops)
 
  772                                 $query = 
'INSERT INTO rbac_templates (rol_id,type,ops_id,parent) '.
 
  774                                         $ilDB->quote($a_dest_id,
'integer').
', '.
 
  775                                         $ilDB->quote($type,
'text').
', '.
 
  776                                         $ilDB->quote($op,
'integer').
', '.
 
  777                                         $ilDB->quote($a_dest_parent,
'integer').
' '.
 
  779                                 $ilDB->manipulate(
$query);
 
  784                 foreach($s2_ops as $type => $ops)
 
  788                                 if(!isset($s1_ops[$type]) or !in_array($op, $s1_ops[$type]))
 
  790                                         $query = 
'INSERT INTO rbac_templates (rol_id,type,ops_id,parent) '.
 
  792                                                 $ilDB->quote($a_dest_id,
'integer').
', '.
 
  793                                                 $ilDB->quote($type,
'text').
', '.
 
  794                                                 $ilDB->quote($op,
'integer').
', '.
 
  795                                                 $ilDB->quote($a_dest_parent,
'integer').
' '.
 
  797                                         $ilDB->manipulate(
$query);
 
  814                 global $rbacreview, $ilDB;
 
  816                 $s1_ops = $rbacreview->getAllOperationsOfRole($a_source_id,$a_source_parent);
 
  817                 $d_ops = $rbacreview->getAllOperationsOfRole($a_dest_id,$a_dest_parent);
 
  819                 foreach($s1_ops as $type => $ops)
 
  823                                 if(isset($d_ops[$type]) and in_array($op, $d_ops[$type]))
 
  825                                         $query = 
'DELETE FROM rbac_templates '.
 
  826                                                         'WHERE rol_id = '.$ilDB->quote($a_dest_id,
'integer').
' '.
 
  827                                                         'AND type = '.$ilDB->quote($type,
'text').
' '.
 
  828                                                         'AND ops_id = '.$ilDB->quote($op,
'integer').
' '.
 
  829                                                         'AND parent = '.$ilDB->quote($a_dest_parent,
'integer');
 
  830                                         $ilDB->manipulate(
$query);
 
  852                 if (!isset($a_rol_id) or !isset($a_ref_id))
 
  854                         $message = get_class($this).
"::deleteRolePermission(): Missing parameter! role_id: ".$a_rol_id.
" ref_id: ".$a_ref_id;
 
  855                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  859                 if ($a_rol_id == SYSTEM_ROLE_ID)
 
  864                 if ($a_type !== 
false)
 
  866                         $and_type = 
" AND type=".$ilDB->quote($a_type,
'text').
" ";
 
  869                 $query = 
'DELETE FROM rbac_templates '.
 
  870                          'WHERE rol_id = '.$ilDB->quote($a_rol_id,
'integer').
' '.
 
  871                          'AND parent = '.$ilDB->quote($a_ref_id,
'integer').
' '.
 
  893                 if (!isset($a_rol_id) or !isset($a_type) or !isset($a_ops) or !isset($a_ref_id))
 
  895                         $message = get_class($this).
"::setRolePermission(): Missing parameter!".
 
  896                                            " role_id: ".$a_rol_id.
 
  898                                            " operations: ".$a_ops.
 
  899                                            " ref_id: ".$a_ref_id;
 
  900                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  903                 if (!is_string($a_type) or empty($a_type))
 
  905                         $message = get_class($this).
"::setRolePermission(): a_type is no string or empty!";
 
  906                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  909                 if (!is_array($a_ops) or empty($a_ops))
 
  911                         $message = get_class($this).
"::setRolePermission(): a_ops is no array or empty!";
 
  912                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  916                 if ($a_rol_id == SYSTEM_ROLE_ID)
 
  921                 $query = 
'INSERT INTO rbac_templates (rol_id,type,ops_id,parent) '.
 
  923                 $sta = $ilDB->prepareManip(
$query,array(
'integer',
'text',
'integer',
'integer'));
 
  924                 foreach ($a_ops as $op)
 
  926                         $res = $ilDB->execute($sta,array(
 
  952                 global $ilDB,$rbacreview;
 
  954                 if (!isset($a_rol_id) or !isset($a_parent))
 
  956                         $message = get_class($this).
"::assignRoleToFolder(): Missing Parameter!".
 
  957                                            " role_id: ".$a_rol_id.
 
  958                                            " parent_id: ".$a_parent.
 
  959                                            " assign: ".$a_assign;
 
  960                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
  964                 if ($a_rol_id == SYSTEM_ROLE_ID)
 
  970                 if ($a_assign != 
"y")
 
  975                 $query = sprintf(
'INSERT INTO rbac_fa (rol_id, parent, assign, protected) '.
 
  976                         'VALUES (%s,%s,%s,%s)',
 
  977                         $ilDB->quote($a_rol_id,
'integer'),
 
  978                         $ilDB->quote($a_parent,
'integer'),
 
  979                         $ilDB->quote($a_assign,
'text'),
 
  980                         $ilDB->quote(
'n',
'text'));
 
  998                 if (!isset($a_type_id) or !isset($a_ops_id))
 
 1000                         $message = get_class($this).
"::assignOperationToObject(): Missing parameter!".
 
 1001                                            "type_id: ".$a_type_id.
 
 1002                                            "ops_id: ".$a_ops_id;
 
 1003                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
 1006                 $query = 
"INSERT INTO rbac_ta (typ_id, ops_id) ".
 
 1007                          "VALUES(".$ilDB->quote($a_type_id,
'integer').
",".$ilDB->quote($a_ops_id,
'integer').
")";
 
 1024                 if (!isset($a_type_id) or !isset($a_ops_id))
 
 1026                         $message = get_class($this).
"::deassignPermissionFromObject(): Missing parameter!".
 
 1027                                            "type_id: ".$a_type_id.
 
 1028                                            "ops_id: ".$a_ops_id;
 
 1029                         $this->ilErr->raiseError($message,$this->ilErr->WARNING);
 
 1032                 $query = 
"DELETE FROM rbac_ta ".
 
 1033                          "WHERE typ_id = ".$ilDB->quote($a_type_id,
'integer').
" ".
 
 1034                          "AND ops_id = ".$ilDB->quote($a_ops_id,
'integer');
 
 1054                 $query = 
'UPDATE rbac_fa '.
 
 1055                         'SET protected = '.$ilDB->quote($a_value,
'text').
' '.
 
 1056                         'WHERE rol_id = '.$ilDB->quote($a_role_id,
'integer');
 
 1073                 global $rbacreview,
$ilLog,$ilObjDataCache;
 
 1075                 $source_rolf = $rbacreview->getRoleFolderIdOfObject($a_source_id);
 
 1076                 $target_rolf = $rbacreview->getRoleFolderIdOfObject($a_target_id);
 
 1083                 $real_local = array();
 
 1084                 foreach($rbacreview->getRolesOfRoleFolder($source_rolf,
false) as $role_data)
 
 1086                         $title = $ilObjDataCache->lookupTitle($role_data);
 
 1087                         if(substr($title,0,3) == 
'il_')
 
 1091                         $real_local[] = $role_data;
 
 1093                 if(!count($real_local))
 
 1101                         if(!is_object($tmp_obj))
 
 1105                         $rolf = $tmp_obj->createRoleFolder();
 
 1106                         $target_rolf = $rolf->getRefId();
 
 1107                         $ilLog->write(__METHOD__.
': Created new role folder with id '.$rolf->getRefId());
 
 1109                 foreach($real_local as $role)
 
 1111                         include_once (
"./Services/AccessControl/classes/class.ilObjRole.php");
 
 1115                         $ilLog->write(__METHOD__.
': Start copying of role '.$orig->getTitle());
 
 1117                         $roleObj->setTitle($orig->getTitle());
 
 1118                         $roleObj->setDescription($orig->getDescription());
 
 1119                         $roleObj->setImportId($orig->getImportId());
 
 1124                         $ilLog->write(__METHOD__.
': Added new local role, id '.$roleObj->getId());
 
 1142                 global $rbacreview,$tree,
$ilLog;
 
 1144                 $new_parent = $tree->getParentId($a_ref_id);
 
 1145                 $old_context_roles = $rbacreview->getParentRoleIds($a_old_parent,
false);
 
 1146                 $new_context_roles = $rbacreview->getParentRoleIds($new_parent,
false);
 
 1148                 $for_addition = $for_deletion = array();
 
 1149                 foreach($new_context_roles as $new_role_id => $new_role)
 
 1151                         if(!isset($old_context_roles[$new_role_id]))
 
 1153                                 $for_addition[$new_role_id] = $new_role;
 
 1155                         elseif($new_role[
'parent'] != $old_context_roles[$new_role_id][
'parent'])
 
 1158                                 $for_deletion[$new_role_id] = $new_role;
 
 1159                                 $for_addition[$new_role_id] = $new_role;
 
 1162                 foreach($old_context_roles as $old_role_id => $old_role)
 
 1164                         if(!isset($new_context_roles[$old_role_id]))
 
 1166                                 $for_deletion[$old_role_id] = $old_role;
 
 1170                 if(!count($for_deletion) and !count($for_addition))
 
 1175                 include_once 
"Services/AccessControl/classes/class.ilRbacLog.php";
 
 1177                 if($rbac_log_active)
 
 1179                         $role_ids = array_unique(array_merge(array_keys($for_deletion), array_keys($for_addition)));
 
 1182                 foreach($nodes = $tree->getSubTree($node_data = $tree->getNodeData($a_ref_id),
true) as $node_data)
 
 1184                         $node_id = $node_data[
'child'];
 
 1186                         if($rbac_log_active)
 
 1194                         if(!$node_data[
'type'])
 
 1196                                 $ilLog->write(__METHOD__.
': No type give. Choosing next tree entry.');
 
 1202                                 $ilLog->write(__METHOD__.
': Missing subtree node_id');
 
 1206                         foreach($for_deletion as $role_id => $role_data)
 
 1208                                 if($rolf_id = $rbacreview->getRoleFolderIdOfObject($node_id))
 
 1215                         foreach($for_addition as $role_id => $role_data)
 
 1219                                         $ops = $rbacreview->getOperationsOfRole($role_id,$node_data[
'type'],$role_data[
'parent']),
 
 1224                         if($rbac_log_active)
 
 1245                 $parent_roles = $rbacreview->getParentRoleIds($a_source_ref_id, FALSE);
 
 1246                 $GLOBALS[
'ilLog']->write(__METHOD__.
': '. print_r($parent_roles,TRUE));