24 require_once
"./classes/class.ilObjectGUI.php";
54 $this->
ilObjectGUI($a_data,$a_id,$a_call_by_reference,
false);
59 $next_class = $this->ctrl->getNextClass($this);
60 $cmd = $this->ctrl->getCmd();
65 case 'ilpermissiongui':
66 include_once(
"./classes/class.ilPermissionGUI.php");
68 $ret =& $this->ctrl->forwardCommand($perm_gui);
91 global $rbacreview,$rbacsystem;
93 if (!$rbacsystem->checkAccess(
"visible,read",$this->object->getRefId()))
95 $this->ilias->raiseError($this->lng->txt(
"permission_denied"),$this->ilias->error_obj->MESSAGE);
98 $this->tpl->addBlockfile(
'ADM_CONTENT',
'adm_content',
'tpl.usr_role_assignment.html');
102 if ($this->object->getId() == ROLE_FOLDER_ID)
106 $_SESSION[
'filtered_roles'] = isset($_POST[
'filter']) ? $_POST[
'filter'] :
$_SESSION[
'filtered_roles'];
113 $this->tpl->setCurrentBlock(
"filter");
114 $this->tpl->setVariable(
"FILTER_TXT_FILTER",$this->lng->txt(
'filter'));
116 $this->tpl->setVariable(
"FILTER_ACTION",$this->ctrl->getFormAction($this));
117 $this->tpl->setVariable(
"FILTER_NAME",
'view');
118 $this->tpl->setVariable(
"FILTER_VALUE",$this->lng->txt(
'apply_filter'));
119 $this->tpl->parseCurrentBlock();
123 $role_list = $rbacreview->getRolesByFilter(
$_SESSION[
"filtered_roles"],$this->object->getId());
127 $role_list = $rbacreview->getRoleListByObject(
$_GET[
"ref_id"],
true);
132 include_once (
'./Services/AccessControl/classes/class.ilObjRole.php');
134 foreach ($role_list as $role)
137 if ($role[
"type"] ==
"rolt")
139 $path = $this->lng->txt(
"obj_rolt");
140 $rolf = ROLE_FOLDER_ID;
145 $rolf_list = $rbacreview->getFoldersAssignedToRole($role[
"obj_id"],$assignable);
147 if ($this->object->getId() != ROLE_FOLDER_ID)
149 $rolf = $this->
object->getRefId();
153 $rolf = $rolf_list[0];
157 if ($rbacreview->isDeleted($rolf))
165 if ($this->tree->isInTree($rolf))
167 if ($rolf[0] == ROLE_FOLDER_ID)
169 $path = $this->lng->txt(
"global");
173 $tmpPath = $this->tree->getPathFull($rolf);
174 $path = $tmpPath[count($tmpPath)-2][
"title"];
179 $path =
"<b>Rolefolder ".$rolf.
" not found in tree! (Role ".$role[
"obj_id"].
")</b>";
184 $checkbox = ilUtil::formCheckBox(0,
"role_id[]",$role[
"obj_id"],$disabled);
187 if ($role[
"role_type"] !=
'linked'
188 && ($role[
"obj_id"] == SYSTEM_ROLE_ID
189 or $role[
"obj_id"] == ANONYMOUS_ROLE_ID
190 or substr($role[
"title"],0,3) ==
"il_"))
198 $result_set[$counter][] = $checkbox;
199 $role_ids[$counter] = $role[
"obj_id"];
202 if (substr($role[
"title"],0,3) ==
"il_" and $role[
'type'] !=
"rolt")
206 $rolf_arr = $rbacreview->getFoldersAssignedToRole($role[
"obj_id"],
true);
207 $rolf2 = $rolf_arr[0];
214 $parent_node = $this->tree->getParentNodeData($rolf2);
216 $role[
"description"] = $this->lng->txt(
"obj_".$parent_node[
"type"]).
" (#".$parent_node[
"obj_id"].
")";
219 if ($role[
"type"] ==
"rolt" and (substr($role[
"title"],0,3) ==
"il_"))
221 $role[
"description"] .=
"<br/><i>".$this->lng->txt(
"predefined_template").
" (".$role[
"title"].
")</i>";
224 $result_set[$counter][] =
"<img src=\"".ilUtil::getImagePath(
"icon_".$role[
"type"].
".gif").
"\" alt=\"".$this->lng->txt(
"obj_".$role[
"type"]).
"\" title=\"".$this->lng->txt(
"obj_".$role[
"type"]).
"\" border=\"0\" vspace=\"0\"/>";
225 if ($role[
"type"] ==
"role")
227 if (($this->object->getId() == ROLE_FOLDER_ID) &&
228 ($role[
"role_type"] ==
"local"))
230 $this->ctrl->setParameterByClass(
"ilobjrolegui",
"rolf_ref_id", $rolf);
232 $this->ctrl->setParameterByClass(
"ilobjrolegui",
"obj_id", $role[
"obj_id"]);
233 $link = $this->ctrl->getLinkTargetByClass(
"ilobjrolegui",
"perm");
234 $this->ctrl->setParameterByClass(
"ilobjrolegui",
"rolf_ref_id",
"");
238 $this->ctrl->setParameterByClass(
"ilobjroletemplategui",
"obj_id", $role[
"obj_id"]);
239 $link = $this->ctrl->getLinkTargetByClass(
"ilobjroletemplategui",
"perm");
241 $result_set[$counter][] =
"<a title=\"".ilObjRole::_getTranslation($role[
"title"]).
"\" href=\"$link\">".
ilObjRole::_getTranslation($role[
"title"]).
"</a>";
242 $result_set[$counter][] = $role[
"description"];
243 $result_set[$counter][] = $path.
" (".$role[
"role_type"].
")";;
260 global $rbacsystem,$rbacreview;
263 if (!$rbacsystem->checkAccess(
'delete',$this->object->getRefId()))
265 $perform_delete =
false;
266 $this->ilias->raiseError($this->lng->txt(
"msg_no_perm_delete").
" ".
267 $not_deletable,$this->ilias->error_obj->MESSAGE);
270 $return_loc = $this->tree->getParentId($this->object->getRefId());
272 $feedback[
"count"] = count(
$_SESSION[
"saved_post"]);
278 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
280 if ($obj->getType() ==
"role")
282 $rolf_arr = $rbacreview->getFoldersAssignedToRole($obj->getId(),
true);
283 $obj->setParent($rolf_arr[0]);
285 $feedback[
"role"] =
true;
289 $feedback[
"rolt"] =
true;
300 if ($feedback[
"count"] > 1)
302 if ($feedback[
"role"] ===
true)
304 if ($feedback[
"rolt"] ===
true)
320 if ($feedback[
"role"] ===
true)
334 #$this->redirectToRefId($return_loc, "view");
336 $class_name = $this->objDefinition->getClassName($obj_type);
337 $class = strtolower(
"ilObj".$class_name.
"GUI");
338 $this->ctrl->setParameterByClass($class,
'ref_id',$return_loc);
339 $this->ctrl->redirectByClass($class,
'view');
349 $this->
object->setTitle($this->lng->txt(
"obj_".$this->object->getType().
"_local"));
350 $this->
object->setDescription(
"obj_".$this->object->getType().
"_local_desc");
362 if (!isset($_POST[
"role_id"]))
364 $this->ilias->raiseError($this->lng->txt(
"no_checkbox"),$this->ilias->error_obj->MESSAGE);
368 $_SESSION[
"saved_post"] = $_POST[
"role_id"];
371 $this->data[
"cols"] = array(
"type",
"title",
"description",
"last_change");
373 foreach($_POST[
"role_id"] as $id)
375 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
377 $this->data[
"data"][
"$id"] = array(
378 "type" => $obj_data->getType(),
379 "title" => $obj_data->getTitle(),
380 "desc" => $obj_data->getDescription(),
381 "last_update" => $obj_data->getLastUpdateDate());
384 $this->data[
"buttons"] = array(
"cancelDelete" => $this->lng->txt(
"cancel"),
385 "confirmedDelete" => $this->lng->txt(
"confirm"));
391 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
394 foreach ($this->data[
"cols"] as $key)
396 $this->tpl->setCurrentBlock(
"table_header");
397 $this->tpl->setVariable(
"TEXT",$this->lng->txt($key));
398 $this->tpl->parseCurrentBlock();
405 foreach ($this->data[
"data"] as $key => $value)
408 foreach ($value as $key => $cell_data)
410 $this->tpl->setCurrentBlock(
"table_cell");
419 $this->tpl->setVariable(
"TEXT_CONTENT",$cell_data);
422 $this->tpl->parseCurrentBlock();
425 $this->tpl->setCurrentBlock(
"table_row");
427 $this->tpl->parseCurrentBlock();
433 foreach ($this->data[
"buttons"] as $name => $value)
435 $this->tpl->setCurrentBlock(
"operation_btn");
436 $this->tpl->setVariable(
"BTN_NAME",$name);
437 $this->tpl->setVariable(
"BTN_VALUE",$value);
438 $this->tpl->parseCurrentBlock();
451 $this->ctrl->redirect($this,
"view");
464 $d = $this->objDefinition->getCreatableSubObjects($this->object->getType());
466 if ($this->object->getRefId() != ROLE_FOLDER_ID or !$rbacsystem->checkAccess(
'create_rolt',ROLE_FOLDER_ID))
471 if (!$rbacsystem->checkAccess(
'create_role',$this->object->getRefId()))
484 for ($i=0; $i<count($this->data[
"ctrl"]); $i++)
486 if ($this->data[
"ctrl"][$i][
"type"] == $row[
"name"])
492 if ($row[
"max"] ==
"" || $count < $row[
"max"])
494 $subobj[] = $row[
"name"];
499 if (is_array($subobj))
503 $a_tpl->setCurrentBlock(
"add_object");
504 $a_tpl->setVariable(
"SELECT_OBJTYPE", $opts);
505 $a_tpl->setVariable(
"BTN_NAME",
"create");
506 $a_tpl->setVariable(
"TXT_ADD", $this->lng->txt(
"add"));
507 $a_tpl->parseCurrentBlock();
522 $_GET[
"new_type"] = $this->
object->getType();
523 $_POST[
"Fobject"][
"title"] = $this->
object->getTitle();
524 $_POST[
"Fobject"][
"desc"] = $this->
object->getDescription();
534 $this->ctrl->redirect($this,
"view");
541 $actions = array(
"delete" => $this->lng->txt(
"delete"));
544 $tpl =& $tbl->getTemplateObject();
546 $tpl->setCurrentBlock(
"tbl_form_header");
547 $tpl->setVariable(
"FORMACTION",$this->ctrl->getFormAction($this));
548 $tpl->parseCurrentBlock();
552 $tpl->setCurrentBlock(
"tbl_action_row");
554 $tpl->setVariable(
"COLUMN_COUNTS",(
$_SESSION[
"filtered_roles"] == 4) ? 4 : 5);
560 foreach (
$actions as $name => $value)
562 $tpl->setCurrentBlock(
"tbl_action_btn");
563 $tpl->setVariable(
"BTN_NAME",$name);
564 $tpl->setVariable(
"BTN_VALUE",$value);
565 $tpl->parseCurrentBlock();
568 if (!empty($a_role_ids))
572 $tpl->setCurrentBlock(
"tbl_action_toggle_checkboxes");
573 $tpl->setVariable(
"JS_VARNAME",
"role_id");
575 $tpl->setVariable(
"TXT_CHECKALL", $this->lng->txt(
"check_all"));
576 $tpl->setVariable(
"TXT_UNCHECKALL", $this->lng->txt(
"uncheck_all"));
577 $tpl->parseCurrentBlock();
581 $tpl->setVariable(
"TPLPATH",$this->tpl->tplPath);
584 $this->ctrl->setParameter($this,
"cmd",
"view");
587 $tbl->setTitle($this->lng->txt(
"roles"),
"icon_role.gif",$this->lng->txt(
"roles"));
591 $tbl->setHeaderNames(array($this->lng->txt(
"type"),$this->lng->txt(
"role"),
592 $this->lng->txt(
"description"),$this->lng->txt(
"context")));
593 $tbl->setHeaderVars(array(
"type",
"title",
"description",
"context"),$this->ctrl->getParameterArray($this,
"",
false));
594 $tbl->setColumnWidth(array(
"",
"30%",
"40%",
"30%"));
598 $tbl->setHeaderNames(array(
"",$this->lng->txt(
"type"),
599 $this->lng->txt(
"role"),
600 $this->lng->txt(
"description"),
601 $this->lng->txt(
"context")));
602 $tbl->setHeaderVars(array(
"",
"type",
"title",
"description",
"context"),$this->ctrl->getParameterArray($this,
"",
false));
603 $tbl->setColumnWidth(array(
"",
"",
"30%",
"40%",
"30%"));
608 $this->tpl->setVariable(
"ROLES_TABLE",$tbl->tpl->get());
615 include_once
"./Services/Table/classes/class.ilTableGUI.php";
625 if (!
$_GET[
"sort_by"] or
$_GET[
"sort_by"] ==
"name")
627 $_GET[
"sort_by"] =
"title";
630 $order =
$_GET[
"sort_by"];
635 $tbl->setOrderColumn($order);
636 $tbl->setOrderDirection(
$_GET[
"sort_order"]);
637 $tbl->setOffset(
$_GET[
"offset"]);
638 $tbl->setLimit(
$_GET[
"limit"]);
639 $tbl->setFooter(
"tblfooter",$this->lng->txt(
"previous"),$this->lng->txt(
"next"));
640 $tbl->setData($result_set);
650 $action[1] = $this->lng->txt(
'all_roles');
651 $action[2] = $this->lng->txt(
'all_global_roles');
652 $action[3] = $this->lng->txt(
'all_local_roles');
653 $action[4] = $this->lng->txt(
'internal_local_roles_only');
654 $action[5] = $this->lng->txt(
'non_internal_local_roles_only');
655 $action[6] = $this->lng->txt(
'role_templates_only');
676 global $rbacsystem,
$tree;
679 if ($this->object->getRefId() == ROLE_FOLDER_ID)
681 $access = $rbacsystem->checkAccess(
'visible,write',$this->object->getRefId());
685 $access = $rbacsystem->checkAccess(
'edit_permission',$tree->getParentId($this->object->getRefId()));
690 $tabs_gui->addTarget(
"obj_rolf",
691 $this->ctrl->getLinkTarget($this,
"view"), array(
"view",
"delete",
""),
"",
"");
694 if ($this->object->getRefId() == ROLE_FOLDER_ID and $rbacsystem->checkAccess(
'edit_permission',$this->object->getRefId()))
696 $tabs_gui->addTarget(
"perm_settings",
697 $this->ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
"perm"), array(
"perm",
"info",
"owner"),
'ilpermissiongui');