4include_once 
"./Services/Object/classes/class.ilObjectGUI.php";
 
    5include_once 
'./Services/AccessControl/classes/class.ilObjRole.php';
 
   46        function __construct($a_data,$a_id,$a_call_by_reference = 
false,$a_prepare_output = 
true)
 
   50                $lng->loadLanguageModule(
'rbac');
 
   53                define(
"USER_FOLDER_ID",7);
 
   69                $this->
ilObjectGUI($a_data,$a_id,$a_call_by_reference,
false);
 
   70                $this->ctrl->saveParameter($this, array(
'obj_id', 
'rolf_ref_id'));
 
   80                $next_class = $this->ctrl->getNextClass($this);
 
   81                $cmd = $this->ctrl->getCmd();
 
   85                        case 'ilrepositorysearchgui':
 
   91                                include_once(
'./Services/Search/classes/class.ilRepositorySearchGUI.php');
 
   93                                $rep_search->setTitle($this->lng->txt(
'role_add_user'));
 
   94                                $rep_search->setCallback($this,
'addUserObject');
 
   97                                $this->tabs_gui->setTabActive(
'user_assignment');
 
   98                                $this->ctrl->setReturn($this,
'userassignment');
 
   99                                $ret =& $this->ctrl->forwardCommand($rep_search);
 
  104                                $this->tabs_gui->setTabActive(
'export');
 
  106                                include_once 
'./Services/Export/classes/class.ilExportOptions.php';
 
  110                                include_once 
'./Services/Export/classes/class.ilExportGUI.php';
 
  112                                $exp->addFormat(
'xml');
 
  113                                $this->ctrl->forwardCommand($exp);
 
  125                                                $cmd = 
'userassignment';
 
  169                $this->back_target = array(
"text" => $a_text,
 
  175                return $this->back_target ? $this->back_target : array();
 
  209                global $rbacsystem,$rbacreview;
 
  211                if(!$rbacreview->isAssignable($this->object->getId(),$this->obj_ref_id) &&
 
  212                        $this->obj_ref_id != ROLE_FOLDER_ID)
 
  220                        $this->
__showButton(
'selectDesktopItem',$this->lng->txt(
'role_desk_add'));
 
  223                include_once 
'Services/AccessControl/classes/class.ilRoleDesktopItemsTableGUI.php';
 
  225                $this->tpl->setContent(
$tbl->getHTML());
 
  237                        $this->
ilias->raiseError($this->lng->txt(
"permission_denied"),$this->ilias->error_obj->MESSAGE);
 
  239                if(!$rbacsystem->checkAccess(
'push_desktop_items',
USER_FOLDER_ID))
 
  241                        $this->
ilias->raiseError($this->lng->txt(
"permission_denied"),$this->ilias->error_obj->MESSAGE);
 
  243                if(!count(
$_POST[
'del_desk_item']))
 
  252                include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
 
  254                $confirmation_gui->setFormAction($this->ctrl->getFormAction($this));
 
  255                $confirmation_gui->setHeaderText($this->lng->txt(
'role_assigned_desk_items').
 
  256                        ' "'.$this->object->getTitle().
'": '.
 
  257                        $this->lng->txt(
'role_sure_delete_desk_items'));
 
  258                $confirmation_gui->setCancel($this->lng->txt(
"cancel"), 
"listDesktopItems");
 
  259                $confirmation_gui->setConfirm($this->lng->txt(
"delete"), 
"deleteDesktopItems");
 
  261                include_once 
'Services/AccessControl/classes/class.ilRoleDesktopItem.php';
 
  264                foreach(
$_POST[
'del_desk_item'] as $role_item_id)
 
  266                        $item_data = $role_desk_item_obj->getItem($role_item_id);
 
  269                        if(strlen($desc = $tmp_obj->getDescription()))
 
  271                                $desc = 
'<div class="il_Description_no_margin">'.$desc.
'</div>';                                
 
  274                        $confirmation_gui->addItem(
"del_desk_item[]", $role_item_id, $tmp_obj->getTitle().$desc);
 
  277                $this->tpl->setContent($confirmation_gui->getHTML());
 
  288                        $this->
ilias->raiseError($this->lng->txt(
"permission_denied"),$this->ilias->error_obj->MESSAGE);
 
  291                if (!$rbacsystem->checkAccess(
'push_desktop_items',
USER_FOLDER_ID))
 
  293                        $this->
ilias->raiseError($this->lng->txt(
"permission_denied"),$this->ilias->error_obj->MESSAGE);
 
  296                if (!count(
$_POST[
'del_desk_item']))
 
  305                include_once 
'Services/AccessControl/classes/class.ilRoleDesktopItem.php';
 
  309                foreach (
$_POST[
'del_desk_item'] as $role_item_id)
 
  311                        $role_desk_item_obj->delete($role_item_id);
 
  323                global $rbacsystem,
$tree;
 
  325                include_once 
'Services/AccessControl/classes/class.ilRoleDesktopItemSelector.php';
 
  326                include_once 
'Services/AccessControl/classes/class.ilRoleDesktopItem.php';
 
  328                if(!$rbacsystem->checkAccess(
'push_desktop_items',
USER_FOLDER_ID))
 
  330                        #$this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
 
  336                $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.role_desktop_item_selector.html", 
"Services/AccessControl");
 
  337                $this->
__showButton(
'listDesktopItems',$this->lng->txt(
'back'));
 
  343                $exp->setExpand(
$_GET[
"role_desk_item_link_expand"] ? 
$_GET[
"role_desk_item_link_expand"] : 
$tree->readRootId());
 
  344                $exp->setExpandTarget($this->ctrl->getLinkTarget($this,
'selectDesktopItem'));
 
  348                $output = $exp->getOutput();
 
  349                $this->tpl->setVariable(
"EXPLORER",$output);
 
  359                if (!$rbacsystem->checkAccess(
'push_desktop_items',
USER_FOLDER_ID))
 
  361                        $this->
ilias->raiseError($this->lng->txt(
"permission_denied"),$this->ilias->error_obj->MESSAGE);
 
  366                if (!isset(
$_GET[
'item_id']))
 
  374                include_once 
'Services/AccessControl/classes/class.ilRoleDesktopItem.php';
 
  381                $this->ctrl->redirect($this,
'listDesktopItems');
 
  392                include_once 
'./Services/Form/classes/class.ilPropertyFormGUI.php';
 
  395                if($this->creation_mode)
 
  397                        $this->ctrl->setParameter($this, 
"new_type", 
'role');
 
  399                $this->form->setFormAction($this->ctrl->getFormAction($this));
 
  404                                $this->form->setTitle($this->lng->txt(
'role_new'));
 
  405                                $this->form->addCommandButton(
'save',$this->lng->txt(
'role_new'));
 
  409                                $this->form->setTitle($this->lng->txt(
'role_edit'));
 
  410                                $this->form->addCommandButton(
'update', $this->lng->txt(
'save'));
 
  417                $this->form->addCommandButton(
'cancel', $this->lng->txt(
'cancel'));
 
  422                        $title->setDisabled(
true);
 
  427                        $title->setValidationRegexp(
'/^(?!il_).*$/');
 
  428                        $title->setValidationFailureMessage($this->lng->txt(
'msg_role_reserved_prefix'));
 
  432                $title->setMaxLength(70);
 
  433                $title->setRequired(
true);
 
  434                $this->form->addItem($title);
 
  439                        $desc->setDisabled(
true);
 
  443                $this->form->addItem($desc);
 
  445                if($a_mode != self::MODE_LOCAL_CREATE && $a_mode != self::MODE_GLOBAL_CREATE)
 
  448                        $this->form->addItem($ilias_id);
 
  451                if($this->obj_ref_id == ROLE_FOLDER_ID)
 
  455                        #$reg->setInfo($this->lng->txt('rbac_new_acc_reg_info')); 
  456                        $this->form->addItem($reg);
 
  460                        #$la->setInfo($this->lng->txt('rbac_local_admin_info')); 
  461                        $this->form->addItem($la);
 
  466                #$pro->setInfo($this->lng->txt('role_protext_permission_info')); 
  467                $this->form->addItem($pro);
 
  469                include_once 
'Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php';
 
  473                        $quo->setMinValue(0);
 
  475                        $quo->setInfo($this->lng->txt(
'enter_in_mb_desc').
'<br />'.$this->lng->txt(
'disk_quota_on_role_desc'));
 
  476                        $this->form->addItem($quo);
 
  480                        $this->lng->loadLanguageModule(
"file");
 
  481                        $wquo = 
new ilNumberInputGUI($this->lng->txt(
'personal_workspace_disk_quota'),
'wsp_disk_quota');
 
  482                        $wquo->setMinValue(0);
 
  484                        $wquo->setInfo($this->lng->txt(
'enter_in_mb_desc').
'<br />'.$this->lng->txt(
'disk_quota_on_role_desc'));
 
  485                        $this->form->addItem($wquo);
 
  499                if(!$this->form->getItemByPostVar(
'title')->getDisabled())
 
  501                        $role->
setTitle($this->form->getInput(
'title'));
 
  504                if(!$this->form->getItemByPostVar(
'desc')->getDisabled())
 
  524                include_once 
'Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php';
 
  539                $data[
'pro'] = $rbacreview->isProtected($this->obj_ref_id, $role->
getId());
 
  541                $this->form->setValuesByArray(
$data);
 
  556                if(!$rbacsystem->checkAccess(
'create_role',$this->obj_ref_id))
 
  558                        $ilErr->raiseError($this->lng->txt(
'permission_denied'),
$ilErr->MESSAGE);
 
  562                $this->tpl->setContent($this->form->getHTML());
 
  575                        $ilErr->raiseError($this->lng->txt(
"msg_no_perm_write"),
$ilErr->MESSAGE);
 
  579                if($this->object->getId() != SYSTEM_ROLE_ID)
 
  581                        $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
 
  582                        if($rbacreview->isDeleteable($this->object->getId(), $this->obj_ref_id))
 
  584                                $ilToolbar->addButton(
 
  585                                        $this->lng->txt(
'rbac_delete_role'),
 
  586                                        $this->ctrl->getLinkTarget($this,
'confirmDeleteRole')
 
  593                $this->tpl->setContent($this->form->getHTML());
 
  603                global $rbacadmin,$rbacreview;
 
  606                if($this->form->checkInput() and !$this->checkDuplicate())
 
  608                        include_once 
'./Services/AccessControl/classes/class.ilObjRole.php';
 
  610                        $this->role->create();
 
  611                        $rbacadmin->assignRoleToFolder($this->role->getId(), $this->obj_ref_id,
'y');
 
  612                        $rbacadmin->setProtected(
 
  614                                $this->role->getId(),
 
  615                                $this->form->getInput(
'pro') ? 
'y' : 
'n' 
  618                        $this->ctrl->setParameter($this,
'obj_id',$this->role->getId());
 
  619                        $this->ctrl->redirect($this,
'perm');
 
  623                $this->form->setValuesByPost();
 
  624                $this->tpl->setContent($this->form->getHTML());
 
  647                if($this->form->checkInput() and !$this->checkDuplicate($this->object->getId()))
 
  649                        include_once 
'./Services/AccessControl/classes/class.ilObjRole.php';
 
  651                        $this->
object->update();
 
  652                        $rbacadmin->setProtected(
 
  654                                $this->object->getId(),
 
  655                                $this->form->getInput(
'pro') ? 
'y' : 
'n' 
  658                        $this->ctrl->redirect($this,
'edit');
 
  662                $this->form->setValuesByPost();
 
  663                $this->tpl->setContent($this->form->getHTML());
 
  671        protected function permObject($a_show_admin_permissions = 
false)
 
  675                $ilTabs->setTabActive(
'default_perm_settings');
 
  679                if($a_show_admin_permissions)
 
  681                        $ilTabs->setSubTabActive(
'rbac_admin_permissions');
 
  685                        $ilTabs->setSubTabActive(
'rbac_repository_permissions');        
 
  690                        $ilErr->raiseError($this->lng->txt(
'msg_no_perm_perm'),
$ilErr->MESSAGE);
 
  695                if($this->object->getId() != SYSTEM_ROLE_ID)
 
  697                        $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
 
  698                        $ilToolbar->addButton(
 
  699                                $this->lng->txt(
"adopt_perm_from_template"),
 
  700                                $this->ctrl->getLinkTarget($this,
'adoptPerm')
 
  702                        if($rbacreview->isDeleteable($this->object->getId(), $this->obj_ref_id))
 
  704                                $ilToolbar->addButton(
 
  705                                        $this->lng->txt(
'rbac_delete_role'),
 
  706                                        $this->ctrl->getLinkTarget($this,
'confirmDeleteRole')
 
  711                $this->tpl->addBlockFile(
 
  714                        'tpl.rbac_template_permissions.html',
 
  715                        'Services/AccessControl' 
  718                $this->tpl->setVariable(
'PERM_ACTION',$this->ctrl->getFormAction($this));
 
  720                include_once 
'./Services/Accordion/classes/class.ilAccordionGUI.php';
 
  725                if($this->obj_ref_id == ROLE_FOLDER_ID)
 
  727                        if($a_show_admin_permissions)
 
  729                                $subs = 
$objDefinition->getSubObjectsRecursively(
'adm',
true,
true);
 
  733                                $subs = 
$objDefinition->getSubObjectsRecursively(
'root',
true,$a_show_admin_permissions);
 
  742                foreach($subs as $subtype => $def)
 
  750                                $translation = $this->lng->txt(
"obj_".$subtype);
 
  754                                $translation = $this->lng->txt(
'objs_'.$subtype);
 
  757                        $sorted[$subtype] = $def;
 
  758                        $sorted[$subtype][
'translation'] = $translation;
 
  763                foreach($sorted as $subtype => $def)
 
  771                                $translation = $this->lng->txt(
"obj_".$subtype);
 
  775                                $translation = $this->lng->txt(
'objs_'.$subtype);
 
  778                        include_once 
'Services/AccessControl/classes/class.ilObjectRoleTemplatePermissionTableGUI.php';
 
  783                                $this->object->getId(),
 
  785                                $a_show_admin_permissions
 
  789                        $acc->addItem($translation, 
$tbl->getHTML());
 
  792                $this->tpl->setVariable(
'ACCORDION',$acc->getHTML());
 
  795                include_once 
'./Services/AccessControl/classes/class.ilObjectRoleTemplateOptionsTableGUI.php';
 
  800                        $this->object->getId(),
 
  801                        $a_show_admin_permissions
 
  803                if($this->object->getId() != SYSTEM_ROLE_ID)
 
  806                                $a_show_admin_permissions ? 
'adminPermSave' : 
'permSave',
 
  807                                $this->lng->txt(
'save')
 
  812                $this->tpl->setVariable(
'OPTIONS_TABLE',
$options->getHTML());
 
  839                $parent_role_ids = $rbacreview->getParentRoleIds($this->obj_ref_id,
true);
 
  841                foreach($parent_role_ids as $id => $tmp)
 
  848                foreach($sorted_ids as $id)
 
  850                        $par = $parent_role_ids[$id];
 
  851                        if ($par[
"obj_id"] != SYSTEM_ROLE_ID && $this->object->getId() != $par[
"obj_id"])
 
  853                                $output[$key][
"role_id"] = $par[
"obj_id"];
 
  854                                $output[$key][
"type"] = ($par[
"type"] == 
'role' ? $this->lng->txt(
'obj_role') : $this->lng->txt(
'obj_rolt'));
 
  856                                $output[$key][
"role_desc"] = $par[
"desc"];
 
  862                include_once(
'./Services/AccessControl/classes/class.ilRoleAdoptPermissionTableGUI.php');
 
  865                $tbl->setTitle($this->lng->txt(
"adopt_perm_from_template"));
 
  866                $tbl->setData($output);
 
  868                $this->tpl->setContent(
$tbl->getHTML());
 
  879                $access = $this->
checkAccess(
'visible,write',
'edit_permission');
 
  882                        $ilErr->raiseError($this->lng->txt(
'msg_no_perm_perm'),
$ilErr->WARNING);
 
  885                $question = $this->lng->txt(
'rbac_role_delete_qst');
 
  886                if($rbacreview->isAssigned(
$ilUser->getId(), $this->object->getId()))
 
  888                        $question .= (
'<br />'.$this->lng->txt(
'rbac_role_delete_self'));
 
  892                include_once 
'./Services/Utilities/classes/class.ilConfirmationGUI.php';
 
  895                $confirm->setFormAction($this->ctrl->getFormAction($this));
 
  896                $confirm->setHeaderText($question);
 
  897                $confirm->setCancel($this->lng->txt(
'cancel'), 
'perm');
 
  898                $confirm->setConfirm($this->lng->txt(
'rbac_delete_role'), 
'performDeleteRole');
 
  902                        $this->object->getId(),
 
  903                        $this->object->getTitle(),
 
  907                $this->tpl->setContent($confirm->getHTML());
 
  920                $access = $this->
checkAccess(
'visible,write',
'edit_permission');
 
  923                        $ilErr->raiseError($this->lng->txt(
'msg_no_perm_perm'),
$ilErr->WARNING);
 
  926                $this->
object->setParent((
int) $this->obj_ref_id);
 
  927                $this->
object->delete();
 
  930                $this->ctrl->returnToParent($this);
 
  943                $access = $this->
checkAccess(
'visible,write',
'edit_permission');
 
  947                        $this->
ilias->raiseError($this->lng->txt(
"msg_no_perm_perm"),$this->ilias->error_obj->MESSAGE);
 
  951                include_once 
"Services/AccessControl/classes/class.ilRbacLog.php";
 
  959                if($this->obj_ref_id == ROLE_FOLDER_ID)
 
  961                        if($a_show_admin_permissions)
 
  963                                $subs = 
$objDefinition->getSubObjectsRecursively(
'adm',
true,
true);
 
  967                                $subs = 
$objDefinition->getSubObjectsRecursively(
'root',
true,
false);
 
  975                foreach($subs as $subtype => $def)
 
  978                        $rbacadmin->deleteRolePermission($this->object->getId(),$this->obj_ref_id,$subtype);
 
  981                if (empty(
$_POST[
"template_perm"]))
 
  983                        $_POST[
"template_perm"] = array();
 
  986                foreach (
$_POST[
"template_perm"] as $key => $ops_array)
 
  989                        $rbacadmin->setRolePermission($this->object->getId(), $key, $ops_array, $this->obj_ref_id);
 
 1000                $this->
object->update();
 
 1003                if ($this->obj_ref_id == ROLE_FOLDER_ID or $rbacreview->isAssignable($this->object->getId(),$this->obj_ref_id))
 
 1005                        $rbacadmin->setProtected($this->obj_ref_id,$this->object->getId(),
ilUtil::tf2yn(
$_POST[
'protected']));
 
 1008                if($a_show_admin_permissions)
 
 1010                        $_POST[
'recursive'] = 
true;
 
 1014                if(!
$_POST[
'recursive'] and !is_array(
$_POST[
'recursive_list']))
 
 1017                        if($a_show_admin_permissions)
 
 1019                                $this->ctrl->redirect($this,
'adminPerm');
 
 1023                                $this->ctrl->redirect($this,
'perm');
 
 1033                $start = ($this->obj_ref_id == ROLE_FOLDER_ID ? ROOT_FOLDER_ID : 
$this->obj_ref_id);
 
 1034                if($a_show_admin_permissions)
 
 1036                        $start = 
$tree->getParentId($this->obj_ref_id);
 
 1041                        $this->
object->changeExistingObjects(
 
 1046                                #$a_show_admin_permissions ? array('adm') : array() 
 1051                        $this->
object->changeExistingObjects(
 
 1056                                #$a_show_admin_permissions ? array('adm') : array() 
 1061                if($a_show_admin_permissions)
 
 1063                        $this->ctrl->redirect($this,
'adminPerm');
 
 1067                        $this->ctrl->redirect($this,
'perm');
 
 1080                global $rbacadmin, $rbacsystem, $rbacreview, 
$tree;
 
 1089                $access = $this->
checkAccess(
'visible,write',
'edit_permission');
 
 1092                        $this->
ilias->raiseError($this->lng->txt(
"msg_no_perm_perm"),$this->ilias->error_obj->MESSAGE);
 
 1095                if ($this->object->getId() == 
$_POST[
"adopt"])
 
 1101                        $rbacadmin->deleteRolePermission($this->object->getId(), $this->obj_ref_id);
 
 1102                        $parentRoles = $rbacreview->getParentRoleIds($this->obj_ref_id,
true);
 
 1103                        $rbacadmin->copyRoleTemplatePermissions(
 
 1105                                $parentRoles[
$_POST[
"adopt"]][
"parent"],
 
 1107                                $this->object->getId(),
 
 1111                        $this->
object->update();
 
 1114                        $obj_data =& $this->
ilias->obj_factory->getInstanceByObjId($_POST[
"adopt"]);
 
 1115                        ilUtil::sendSuccess($this->lng->txt(
"msg_perm_adopted_from1").
" '".$obj_data->getTitle().
"'.<br/>".
 
 1116                                         $this->lng->txt(
"msg_perm_adopted_from2"),
true);
 
 1119                $this->ctrl->redirect($this, 
"perm");
 
 1129        $this->assignUserObject();
 
 1141                global $rbacreview,$rbacadmin;
 
 1143                if(!$this->
checkAccess(
'edit_userassignment',
'edit_permission'))
 
 1148                if(!$rbacreview->isAssignable($this->object->getId(),$this->obj_ref_id) &&
 
 1149                        $this->obj_ref_id != ROLE_FOLDER_ID)
 
 1156                        $GLOBALS[
'lng']->loadLanguageModule(
'search');
 
 1161                $assigned_users_all = $rbacreview->assignedUsers($this->object->getId());
 
 1164                $assigned_users_new = array_diff($a_user_ids,array_intersect($a_user_ids,$assigned_users_all));
 
 1167        if (count($assigned_users_new) == 0)
 
 1170                        $this->ctrl->redirect($this,
'userassignment');
 
 1174        foreach ($assigned_users_new as $user)
 
 1176                        $rbacadmin->assignUser($this->object->getId(),$user,
false);
 
 1180                $this->
object->update();
 
 1183                $this->ctrl->redirect($this,
'userassignment');
 
 1193        global $rbacsystem, $rbacadmin, $rbacreview;
 
 1195                if(!$this->
checkAccess(
'edit_userassignment',
'edit_permission'))
 
 1197                        $this->
ilias->raiseError($this->lng->txt(
"msg_no_perm_assign_user_to_role"),$this->ilias->error_obj->MESSAGE);
 
 1200        $selected_users = (
$_POST[
"user_id"]) ? 
$_POST[
"user_id"] : array(
$_GET[
"user_id"]);
 
 1202                if ($selected_users[0]=== NULL)
 
 1204                        $this->
ilias->raiseError($this->lng->txt(
"no_checkbox"),$this->
ilias->error_obj->MESSAGE);
 
 1208                if ($this->object->getId() == SYSTEM_ROLE_ID)
 
 1210            if ($admin = array_search(SYSTEM_USER_ID,$selected_users) !== 
false)
 
 1211                            unset($selected_users[$admin]);
 
 1215                $last_role = array();
 
 1216                $global_roles = $rbacreview->getGlobalRoles();
 
 1218                foreach ($selected_users as $user)
 
 1220                        $assigned_roles = $rbacreview->assignedRoles($user);
 
 1221                        $assigned_global_roles = array_intersect($assigned_roles,$global_roles);
 
 1223                        if (count($assigned_roles) == 1 or (count($assigned_global_roles) == 1 and in_array($this->object->getId(),$assigned_global_roles)))
 
 1225                                $userObj = $this->
ilias->obj_factory->getInstanceByObjId($user);
 
 1226                                $last_role[$user] = $userObj->getFullName();
 
 1233                foreach ($selected_users as $user)
 
 1235                        if(!isset($last_role[$user]))
 
 1237                                $rbacadmin->deassignUser($this->object->getId(), $user);
 
 1242                $this->
object->update();
 
 1245                if(count($last_role))
 
 1247                        $user_list = implode(
", ",$last_role);
 
 1248                        ilUtil::sendFailure($this->lng->txt(
'msg_is_last_role').
': '.$user_list.
'<br />'.$this->lng->txt(
'msg_min_one_role'),
true);
 
 1254                $this->ctrl->redirect($this,
'userassignment');
 
 1265                if(!$this->
checkAccess(
'edit_userassignment',
'edit_permission'))
 
 1267                        $this->
ilias->raiseError($this->lng->txt(
"msg_no_perm_assign_user_to_role"),$this->ilias->error_obj->MESSAGE);
 
 1270                $this->tabs_gui->setTabActive(
'user_assignment');
 
 1272                $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rbac_ua.html',
'Services/AccessControl');
 
 1274                include_once 
'./Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php';
 
 1278                include_once 
'./Services/PrivacySecurity/classes/class.ilSecuritySettings.php';
 
 1280                        $this->object->getId() != SYSTEM_ROLE_ID ||
 
 1282                                        !$rbacreview->isAssigned(
$ilUser->getId(),SYSTEM_ROLE_ID) or
 
 1290                        include_once 
'./Services/Search/classes/class.ilRepositorySearchGUI.php';
 
 1295                                        'auto_complete_name'    => 
$lng->txt(
'user'),
 
 1296                                        'submit_name'                   => 
$lng->txt(
'add')
 
 1307                                $this->lng->txt(
'search_user'),
 
 1308                                $this->ctrl->getLinkTargetByClass(
'ilRepositorySearchGUI',
'start')
 
 1314                        $this->lng->txt(
'role_mailto'),
 
 1315                        $this->ctrl->getLinkTarget($this,
'mailToRole')
 
 1317                $this->tpl->setVariable(
'BUTTONS_UA',$tb->getHTML());
 
 1320                include_once 
'./Services/PrivacySecurity/classes/class.ilSecuritySettings.php';
 
 1321                $role_assignment_editable = 
true;
 
 1323                                $this->object->getId() == SYSTEM_ROLE_ID &&
 
 1326                        $role_assignment_editable = 
false;
 
 1329                include_once 
'./Services/AccessControl/classes/class.ilAssignedUsersTableGUI.php';
 
 1332                $this->tpl->setVariable(
'TABLE_UA',$ut->getHTML());
 
 1345                if (
$_GET[
"new_type"] != 
"role")
 
 1347                        $this->ctrl->redirect($this, 
"userassignment");
 
 1351                        $this->ctrl->redirectByClass(
"ilobjrolefoldergui",
"view");
 
 1358                global $rbacsystem,$rbacreview;
 
 1362                if (!is_array(
$_POST[
"role"]))
 
 1365                        $this->searchObject();
 
 1370                $this->tpl->addBlockFile(
"ADM_CONTENT", 
"adm_content", 
"tpl.role_usr_selection.html", 
"Services/AccessControl");
 
 1371                $this->
__showButton(
"searchUserForm",$this->lng->txt(
"role_new_search"));
 
 1376                foreach (
$_POST[
"role"] as $role_id)
 
 1378                        $members = array_merge($rbacreview->assignedUsers($role_id),$members);
 
 1381                $members = array_unique($members);
 
 1385                $f_result = array();
 
 1387                foreach($members as $user)
 
 1394                        $user_ids[$counter] = $user;
 
 1398                        $f_result[$counter][] = $tmp_obj->getLogin();
 
 1399                        $f_result[$counter][] = $tmp_obj->getFirstname();
 
 1400                        $f_result[$counter][] = $tmp_obj->getLastname();
 
 1406                $this->__showSearchUserTable($f_result,$user_ids,
"listUsersRole");
 
 1414                $this->tpl->addBlockFile(
"CONTENT", 
"content", 
"tpl.adm_content.html");
 
 1415                $this->tpl->addBlockFile(
"STATUSLINE", 
"statusline", 
"tpl.statusline.html");
 
 1435                $this->tpl->setTitle($this->lng->txt(
'role'));
 
 1436                $this->tpl->setDescription($this->object->getTitle());
 
 1439                $this->
getTabs($this->tabs_gui);
 
 1448                $this->tpl->addBlockFile(
"LOCATOR", 
"locator", 
"tpl.locator.html", 
"Services/Locator");
 
 1452                foreach (
$tree->getPathFull($this->obj_ref_id) as $key => 
$row)
 
 1456                                $this->tpl->touchBlock(
'locator_separator_prefix');
 
 1459                        $this->tpl->setCurrentBlock(
"locator_item");
 
 1461                        if (
$row[
"type"] == 
'rolf')
 
 1463                                $this->tpl->setVariable(
"ITEM",$this->object->getTitle());
 
 1464                                $this->tpl->setVariable(
"LINK_ITEM",$this->ctrl->getLinkTarget($this));
 
 1466                        elseif (
$row[
"child"] != 
$tree->getRootId())
 
 1468                                $ilCtrl->setParameterByClass(
"ilrepositorygui", 
"ref_id", 
$row[
"child"]);
 
 1469                                $this->tpl->setVariable(
"ITEM", 
$row[
"title"]);
 
 1470                                $this->tpl->setVariable(
"LINK_ITEM",
 
 1471                                        $ilCtrl->getLinkTargetByClass(
"ilrepositorygui", 
""));
 
 1475                                $ilCtrl->setParameterByClass(
"ilrepositorygui", 
"ref_id", 
$row[
"child"]);
 
 1476                                $this->tpl->setVariable(
"ITEM", $this->lng->txt(
"repository"));
 
 1477                                $this->tpl->setVariable(
"LINK_ITEM",
 
 1478                                        $ilCtrl->getLinkTargetByClass(
"ilrepositorygui", 
""));
 
 1480                        $ilCtrl->setParameterByClass(
"ilrepositorygui", 
"ref_id", 
$_GET[
"ref_id"]);
 
 1482                        $this->tpl->parseCurrentBlock();
 
 1485                $this->tpl->setVariable(
"TXT_LOCATOR",$this->lng->txt(
"locator"));
 
 1486                $this->tpl->parseCurrentBlock();
 
 1497                if (
$_GET[
"admin_mode"] == 
"settings" 
 1498                        && 
$_GET[
"ref_id"] == ROLE_FOLDER_ID)   
 
 1500                        parent::addAdminLocatorItems(
true);
 
 1502                        $ilLocator->addItem($this->lng->txt(
"obj_".ilObject::_lookupType(
 
 1504                                $this->ctrl->getLinkTargetByClass(
"ilobjrolefoldergui", 
"view"));
 
 1506                        if (
$_GET[
"obj_id"] > 0)
 
 1508                                $ilLocator->addItem($this->object->getTitle(),
 
 1509                                        $this->ctrl->getLinkTarget($this, 
"view"));
 
 1523                global $rbacsystem,$rbacreview, $ilHelp;
 
 1525                $base_role_container = $rbacreview->getFoldersAssignedToRole($this->object->getId(),
true);
 
 1528                $activate_role_edit = 
false;
 
 1532                if (in_array($this->obj_ref_id,$base_role_container) ||
 
 1533                        (strtolower(
$_GET[
"baseClass"]) == 
"iladministrationgui" &&
 
 1534                        $_GET[
"admin_mode"] == 
"settings"))
 
 1536                        $activate_role_edit = 
true;
 
 1540                $tabs_gui->clearTargets();
 
 1542                $ilHelp->setScreenIdComponent(
"role");
 
 1544                if ($this->back_target != 
"")
 
 1546                        $tabs_gui->setBackTarget(
 
 1547                                $this->back_target[
"text"],$this->back_target[
"link"]);
 
 1550                if($this->
checkAccess(
'write',
'edit_permission') && $activate_role_edit)
 
 1552                        $tabs_gui->addTarget(
"edit_properties",
 
 1553                                $this->ctrl->getLinkTarget($this, 
"edit"), array(
"edit",
"update"), get_class($this));
 
 1569                        $tabs_gui->addTarget(
 
 1570                                "default_perm_settings",
 
 1571                                $this->ctrl->getLinkTarget($this, 
"perm"), array(),get_class($this)
 
 1575                if($this->
checkAccess(
'write',
'edit_permission') && $activate_role_edit && $this->object->getId() != ANONYMOUS_ROLE_ID)
 
 1577                        $tabs_gui->addTarget(
"user_assignment",
 
 1578                                $this->ctrl->getLinkTarget($this, 
"userassignment"),
 
 1579                                array(
"deassignUser", 
"userassignment", 
"assignUser", 
"searchUserForm", 
"search"),
 
 1583                if($this->
checkAccess(
'write',
'edit_permission') && $activate_role_edit  && $this->object->getId() != ANONYMOUS_ROLE_ID)
 
 1585                        $tabs_gui->addTarget(
"desktop_items",
 
 1586                                $this->ctrl->getLinkTarget($this, 
"listDesktopItems"),
 
 1587                                array(
"listDesktopItems", 
"deleteDesktopItems", 
"selectDesktopItem", 
"askDeleteDesktopItem"),
 
 1592                        $tabs_gui->addTarget(
 
 1594                                        $this->ctrl->getLinkTargetByClass(
'ilExportGUI'),
 
 1606                if(count($obj_ids) > 1)
 
 1608                        $_SESSION[
'mail_roles'][] = 
'#il_role_'.$this->object->getId();
 
 1612                        $_SESSION[
'mail_roles'][] = $rbacreview->getRoleMailboxAddress($this->object->getId());
 
 1615        require_once 
'Services/Mail/classes/class.ilMailFormCall.php';
 
 1622                global $rbacsystem,$ilAccess;
 
 1624                $a_perm_obj = $a_perm_obj ? $a_perm_obj : $a_perm_global;
 
 1626                if($this->obj_ref_id == ROLE_FOLDER_ID)
 
 1628                        return $rbacsystem->checkAccess($a_perm_global,$this->obj_ref_id);
 
 1632                        return $ilAccess->checkAccess($a_perm_obj,
'',$this->obj_ref_id);
 
 1644                if(!(
int) 
$_POST[
'recursive'] and !is_array(
$_POST[
'recursive_list']))
 
 1650                if($rbacreview->isProtected($this->obj_ref_id, $this->object->getId()))
 
 1654                        return count($rbacreview->getFoldersAssignedToRole($this->object->getId())) > 1;
 
 1660                        return count($rbacreview->getFoldersAssignedToRole($this->object->getId())) > 1;
 
 1670                $protected = 
$_POST[
'protected'];
 
 1672                include_once 
'./Services/Form/classes/class.ilPropertyFormGUI.php';
 
 1674                $form->setFormAction($this->ctrl->getFormAction($this,
'changeExistingObjects'));
 
 1675                $form->setTitle($this->lng->txt(
'rbac_change_existing_confirm_tbl'));
 
 1677                $form->addCommandButton(
'changeExistingObjects', $this->lng->txt(
'change_existing_objects'));
 
 1678                $form->addCommandButton(
'perm',$this->lng->txt(
'cancel'));
 
 1683                                serialize(array(
'all')) :
 
 1684                                serialize(
$_POST[
'recursive_list'])
 
 1686                $form->addItem($hidden);
 
 1694                                $this->lng->txt(
'rbac_keep_local_policies'),
 
 1696                                $this->lng->txt(
'rbac_keep_local_policies_info')
 
 1703                                $this->lng->txt(
'rbac_keep_local_policies'),
 
 1705                                $this->lng->txt(
'rbac_unprotected_keep_local_policies_info')
 
 1709                $rad->addOption($keep);
 
 1714                                $this->lng->txt(
'rbac_delete_local_policies'),
 
 1716                                $this->lng->txt(
'rbac_delete_local_policies_info')
 
 1722                                $this->lng->txt(
'rbac_delete_local_policies'),
 
 1724                                $this->lng->txt(
'rbac_unprotected_delete_local_policies_info')
 
 1727                $rad->addOption($del);
 
 1729                $form->addItem($rad);
 
 1730                $this->tpl->setContent($form->getHTML());
 
 1739                global 
$tree,$rbacreview,$rbacadmin;
 
 1741                $mode = (int) 
$_POST[
'mode'];
 
 1742                $start = ($this->obj_ref_id == ROLE_FOLDER_ID ? ROOT_FOLDER_ID : 
$this->obj_ref_id);
 
 1747                $this->ctrl->redirect($this,
'perm');
 
 1761                        case 'default_perm_settings':
 
 1762                                if($this->obj_ref_id != ROLE_FOLDER_ID)
 
 1766                                $ilTabs->addSubTabTarget(
 
 1767                                        'rbac_repository_permissions',
 
 1768                                        $this->ctrl->getLinkTarget($this,
'perm')
 
 1770                                $ilTabs->addSubTabTarget(
 
 1771                                        'rbac_admin_permissions',
 
 1772                                        $this->ctrl->getLinkTarget($this,
'adminPerm')
 
const USER_FOLDER_ID
Class ilObjUserFolder.
Accordion user interface class.
TableGUI class for role administration.
Confirmation screen class.
static _isActive()
Static getter.
static _isPersonalWorkspaceActive()
Static getter.
Export User Interface Class.
static newInstance($a_export_id)
Create new instance.
static allocateExportId()
Allocate a new export id.
This class represents a non editable value in a property form.
editObject()
Edit role properties.
performDeleteRoleObject()
Delete role.
saveObject()
Save new role.
updateObject()
Save role settings.
initFormRoleProperties($a_mode)
Create role prperty form.
userassignmentObject()
display user assignment panel
showChangeExistingObjectsConfirmation()
Show confirmation screen.
__construct($a_data, $a_id, $a_call_by_reference=false, $a_prepare_output=true)
Constructor @access public.
setBackTarget($a_text, $a_link)
set back tab target
readRoleProperties(ilObjRole $role)
Read role properties and write them to form.
deassignUserObject()
de-assign users from role
permObject($a_show_admin_permissions=false)
Show template permissions.
loadRoleProperties(ilObjRole $role)
Store form input in role object.
assignSaveObject()
wrapper for renamed function
permSaveObject($a_show_admin_permissions=false)
save permissions
& executeCommand()
execute command
getParentType()
get type of current object (not role folder)
getContainerType()
Get type of role container.
getTabs(&$tabs_gui)
get tabs abstract method.
deleteDesktopItemsObject()
addUserObject($a_user_ids)
Assign user (callback from ilRepositorySearchGUI)
checkAccess($a_perm_global, $a_perm_obj='')
cancelObject()
cancelObject is called when an operation is canceled, method links back @access public
showDefaultPermissionSettings()
check if default permissions are shown or not
adminPermObject()
Show administration permissions.
assignDesktopItemObject()
adminPermSaveObject()
Save admin permissions.
addAdminLocatorItems()
should be overwritten to add object specific items (repository items are preloaded)
checkDuplicate($a_role_id=0)
Check if role with same name already exists in this folder.
confirmDeleteRoleObject()
Show delete confirmation screen.
createObject()
Only called from administration -> role folder ? Otherwise this check access is wrong.
getParentRefId()
Get ref id of current object (not role folder id)
isChangeExistingObjectsConfirmationRequired()
Check if a confirmation about further settings is required or not.
adoptPermSaveObject()
copy permissions from role
selectDesktopItemObject()
getParentObjId()
Get obj_id of current object.
setSubTabs($a_tab)
Set sub tabs.
getAdminTabs(&$tabs_gui)
admin and normal tabs are equal for roles
changeExistingObjectsObject()
Change existing objects.
askDeleteDesktopItemObject()
setAllowRegister($a_allow_register)
set allow_register of role
const MODE_UNPROTECTED_KEEP_LOCAL_POLICIES
const MODE_PROTECTED_DELETE_LOCAL_POLICIES
const MODE_UNPROTECTED_DELETE_LOCAL_POLICIES
getPersonalWorkspaceDiskQuota()
getAllowRegister()
get allow_register
const MODE_PROTECTED_KEEP_LOCAL_POLICIES
static isAutoGenerated($a_role_id)
toggleAssignUsersStatus($a_assign_users)
setDiskQuota($a_disk_quota)
_getTranslation($a_role_title)
setPersonalWorkspaceDiskQuota($a_disk_quota)
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
Class ilObjectGUI Basic methods of all Output classes.
__showButton($a_cmd, $a_text, $a_target='')
ilObjectGUI($a_data, $a_id=0, $a_call_by_reference=true, $a_prepare_output=true)
Constructor @access public.
prepareOutput()
prepare output
Table for object role permissions.
Table for object role permissions.
static _lookupObjId($a_id)
setTitle($a_title)
set object title
setDescription($a_desc)
set object description
getDescription()
get object description
getId()
get object id @access public
static _lookupType($a_id, $a_reference=false)
lookup object type
static _getIdsForTitle($title, $type='', $partialmatch=false)
getTitle()
get object title @access public
static lookupTxt($a_mod_prefix, $a_pl_id, $a_lang_var)
Lookup language text.
This class represents an option in a radio group.
static diffTemplate(array $a_old, array $a_new)
static add($a_action, $a_ref_id, array $a_diff, $a_source_ref_id=false)
static gatherTemplate($a_role_ref_id, $a_role_id)
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array(), $a_sticky=false)
fill toolbar with
Copyright (c) 1998-2015 ILIAS open source, Extended GPL, see docs/LICENSE Date: 07....
Table for role desktop items.
static _getInstance()
Get instance of ilSecuritySettings.
This class represents a text area property in a property form.
This class represents a text property in a property form.
static formCheckbox($checked, $varname, $value, $disabled=false)
??? @access public
static _sortIds($a_ids, $a_table, $a_field, $a_id_name)
Function that sorts ids by a given table field using WHERE IN E.g: __sort(array(6,...
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
static tf2yn($a_tf)
convert true/false to "y"/"n"
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static redirect($a_script)
http redirect to other script
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static infoPanel($a_keep=true)
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
redirection script todo: (a better solution should control the processing via a xml file)
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
if(!is_array($argv)) $options