00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00035 require_once "class.ilObjectGUI.php";
00036
00037 class ilObjRoleGUI extends ilObjectGUI
00038 {
00044 var $type;
00045
00051 var $rolf_ref_id;
00052
00053
00054 var $ctrl;
00055
00060 function ilObjRoleGUI($a_data,$a_id,$a_call_by_reference)
00061 {
00062 global $ilCtrl;
00063
00064 $this->type = "role";
00065 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference);
00066 $this->rolf_ref_id =& $this->ref_id;
00067
00068 $this->ctrl =& $ilCtrl;
00069 $this->ctrl->saveParameter($this,'obj_id');
00070 }
00071
00072 function &executeCommand()
00073 {
00074 global $rbacsystem;
00075
00076 $next_class = $this->ctrl->getNextClass($this);
00077 $cmd = $this->ctrl->getCmd();
00078 switch($next_class)
00079 {
00080 default:
00081 if(!$cmd)
00082 {
00083 $cmd = "view";
00084 }
00085 $cmd .= "Object";
00086 $this->$cmd();
00087
00088 break;
00089 }
00090 return true;
00091 }
00092
00096 function createObject()
00097 {
00098 global $rbacsystem;
00099
00100 if (!$rbacsystem->checkAccess('create_role', $this->rolf_ref_id))
00101 {
00102 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00103 }
00104
00105 $this->getTemplateFile("edit","role");
00106
00107 if ($this->rolf_ref_id == ROLE_FOLDER_ID)
00108 {
00109 $this->tpl->setCurrentBlock("allow_register");
00110 $allow_register = ($_SESSION["error_post_vars"]["Fobject"]["allow_register"]) ? "checked=\"checked\"" : "";
00111 $this->tpl->setVariable("TXT_ALLOW_REGISTER",$this->lng->txt("allow_register"));
00112 $this->tpl->setVariable("ALLOW_REGISTER",$allow_register);
00113 $this->tpl->parseCurrentBlock();
00114
00115 $this->tpl->setCurrentBlock("assign_users");
00116 $assign_users = $_SESSION["error_post_vars"]["Fobject"]["assign_users"] ? "checked=\"checked\"" : "";
00117 $this->tpl->setVariable("TXT_ASSIGN_USERS",$this->lng->txt("allow_assign_users"));
00118 $this->tpl->setVariable("ASSIGN_USERS",$assign_users);
00119 $this->tpl->parseCurrentBlock();
00120 }
00121
00122
00123 $this->tpl->setVariable("TITLE",ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"]),true);
00124 $this->tpl->setVariable("DESC",ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]));
00125
00126 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt("title"));
00127 $this->tpl->setVariable("TXT_DESC",$this->lng->txt("desc"));
00128 $this->tpl->setVariable("FORMACTION", $this->getFormAction("save","adm_object.php?cmd=gateway&ref_id=".$this->rolf_ref_id."&new_type=".$this->type));
00129 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($this->type."_new"));
00130 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00131 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($this->type."_add"));
00132 $this->tpl->setVariable("CMD_SUBMIT", "save");
00133 $this->tpl->setVariable("TARGET", $this->getTargetFrame("save"));
00134 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00135 }
00136
00142 function saveObject()
00143 {
00144 global $rbacsystem, $rbacadmin, $rbacreview;
00145
00146
00147 if (!$rbacsystem->checkAccess("create_role",$this->rolf_ref_id))
00148 {
00149 $this->ilias->raiseError($this->lng->txt("msg_no_perm_create_role"),$this->ilias->error_obj->MESSAGE);
00150 }
00151
00152
00153 if (empty($_POST["Fobject"]["title"]))
00154 {
00155 $this->ilias->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilias->error_obj->MESSAGE);
00156 }
00157
00158
00159 if ($rbacreview->roleExists($_POST["Fobject"]["title"]))
00160 {
00161 $this->ilias->raiseError($this->lng->txt("msg_role_exists1")." '".ilUtil::stripSlashes($_POST["Fobject"]["title"])."' ".
00162 $this->lng->txt("msg_role_exists2"),$this->ilias->error_obj->MESSAGE);
00163 }
00164
00165
00166 if (substr($_POST["Fobject"]["title"],0,3) == "il_")
00167 {
00168 $this->ilias->raiseError($this->lng->txt("msg_role_reserved_prefix"),$this->ilias->error_obj->MESSAGE);
00169 }
00170
00171
00172 include_once("./classes/class.ilObjRole.php");
00173 $roleObj = new ilObjRole();
00174
00175 $roleObj->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00176 $roleObj->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00177 $roleObj->setAllowRegister($_POST["Fobject"]["allow_register"]);
00178 $roleObj->toggleAssignUsersStatus($_POST["Fobject"]["assign_users"]);
00179 $roleObj->create();
00180 $rbacadmin->assignRoleToFolder($roleObj->getId(), $this->rolf_ref_id,'y');
00181
00182 sendInfo($this->lng->txt("role_added"),true);
00183
00184 ilUtil::redirect("adm_object.php?ref_id=".$this->rolf_ref_id);
00185 }
00186
00192 function permObject()
00193 {
00194 global $rbacadmin, $rbacreview, $rbacsystem,$objDefinition;
00195
00196
00197 #$to_filter = $objDefinition->getSubobjectsToFilter();
00198
00199 if (!$rbacsystem->checkAccess('visible,write',$this->rolf_ref_id))
00200 {
00201 $this->ilias->raiseError($this->lng->txt("msg_no_perm_perm"),$this->ilias->error_obj->MESSAGE);
00202 exit();
00203 }
00204
00205
00206 $q = "SELECT ta.typ_id,obj.title,ops.ops_id,ops.operation FROM rbac_ta AS ta ".
00207 "LEFT JOIN object_data AS obj ON obj.obj_id=ta.typ_id ".
00208 "LEFT JOIN rbac_operations AS ops ON ops.ops_id=ta.ops_id";
00209 $r = $this->ilias->db->query($q);
00210
00211 while ($row = $r->fetchRow(DB_FETCHMODE_OBJECT))
00212 {
00213
00214 #if(in_array($row->title,$to_filter))
00215 #{
00216 # continue;
00217 #}
00218 $rbac_objects[$row->typ_id] = array("obj_id" => $row->typ_id,
00219 "type" => $row->title
00220 );
00221
00222 $rbac_operations[$row->typ_id][$row->ops_id] = array(
00223 "ops_id" => $row->ops_id,
00224 "title" => $row->operation,
00225 "name" => $this->lng->txt($row->title."_".$row->operation)
00226 );
00227 }
00228
00229 foreach ($rbac_objects as $key => $obj_data)
00230 {
00231 $rbac_objects[$key]["name"] = $this->lng->txt("obj_".$obj_data["type"]);
00232 $rbac_objects[$key]["ops"] = $rbac_operations[$key];
00233 }
00234
00235
00236
00237 if ($this->rolf_ref_id != ROLE_FOLDER_ID)
00238 {
00239
00240 $parent_data = $this->tree->getParentNodeData($this->rolf_ref_id);
00241
00242 $subobj_data = $this->objDefinition->getSubObjects($parent_data["type"]);
00243
00244
00245 foreach ($rbac_objects as $key => $obj_data)
00246 {
00247 if (!$subobj_data[$obj_data["type"]] and $parent_data["type"] != $obj_data["type"])
00248 {
00249 unset($rbac_objects[$key]);
00250 }
00251 }
00252 }
00253
00254
00255 sort($rbac_objects);
00256
00257 foreach ($rbac_objects as $key => $obj_data)
00258 {
00259 sort($rbac_objects[$key]["ops"]);
00260 }
00261
00262
00263 $rbac_objects = ilUtil::sortArray($rbac_objects,"name","asc");
00264
00265
00266 $global_roles_all = $rbacreview->getGlobalRoles();
00267 $global_roles_user = array_intersect($_SESSION["RoleId"],$global_roles_all);
00268
00269
00270 if (in_array($this->object->getId(),$global_roles_all))
00271 {
00272 $global_role = true;
00273 }
00274 else
00275 {
00276 $global_role = false;
00277 }
00278
00279 foreach ($rbac_objects as $key => $obj_data)
00280 {
00281 $allowed_ops_on_type = array();
00282
00283 foreach ($global_roles_user as $role_id)
00284 {
00285 $allowed_ops_on_type = array_merge($allowed_ops_on_type,$rbacreview->getOperationsOfRole($role_id,$obj_data["type"]));
00286 }
00287
00288 $allowed_ops_on_type = array_unique($allowed_ops_on_type);
00289
00290 $arr_selected = $rbacreview->getOperationsOfRole($this->object->getId(), $obj_data["type"], $this->rolf_ref_id);
00291 $arr_checked = array_intersect($arr_selected,array_keys($rbac_operations[$obj_data["obj_id"]]));
00292
00293 foreach ($rbac_operations[$obj_data["obj_id"]] as $operation)
00294 {
00295
00296 if ($this->object->getId() == SYSTEM_ROLE_ID)
00297 {
00298 $checked = true;
00299 $disabled = true;
00300 }
00301 else
00302 {
00303 $checked = in_array($operation["ops_id"],$arr_checked);
00304
00305
00306 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]) and $global_role == true and
00307 !in_array($operation["ops_id"],$allowed_ops_on_type))
00308 {
00309 $disabled = true;
00310 }
00311 else
00312 {
00313 $disabled = false;
00314 }
00315 }
00316
00317
00318 $box = ilUtil::formCheckBox($checked,"template_perm[".$obj_data["type"]."][]",$operation["ops_id"],$disabled);
00319 $output["perm"][$obj_data["obj_id"]][$operation["ops_id"]] = $box;
00320 }
00321 }
00322
00323
00324 $output["col_anz"] = count($rbac_objects);
00325 $output["txt_save"] = $this->lng->txt("save");
00326 $output["check_bottom"] = ilUtil::formCheckBox(0,"recursive",1);
00327 $output["message_table"] = $this->lng->txt("change_existing_objects");
00328
00329
00330
00331
00332
00333
00334 $output["message_middle"] = $this->lng->txt("adopt_perm_from_template");
00335
00336
00337 if ($this->object->getId() == SYSTEM_ROLE_ID)
00338 {
00339 $output["adopt"] = array();
00340 $output["sysrole_msg"] = $this->lng->txt("msg_sysrole_not_editable");
00341 }
00342 else
00343 {
00344
00345 $parent_role_ids = $rbacreview->getParentRoleIds($this->rolf_ref_id,true);
00346
00347
00348 ksort($parent_role_ids);
00349
00350 foreach ($parent_role_ids as $key => $par)
00351 {
00352 if ($par["obj_id"] != SYSTEM_ROLE_ID)
00353 {
00354 $radio = ilUtil::formRadioButton(0,"adopt",$par["obj_id"]);
00355 $output["adopt"][$key]["css_row_adopt"] = ilUtil::switchColor($key, "tblrow1", "tblrow2");
00356 $output["adopt"][$key]["check_adopt"] = $radio;
00357 $output["adopt"][$key]["type"] = ($par["type"] == 'role' ? 'Role' : 'Template');
00358 $output["adopt"][$key]["role_name"] = $par["title"];
00359 }
00360 }
00361
00362 $output["formaction_adopt"] = "adm_object.php?cmd=adoptPermSave&ref_id=".$this->rolf_ref_id."&obj_id=".$this->object->getId();
00363
00364 }
00365
00366 $output["formaction"] = "adm_object.php?cmd=permSave&ref_id=".$this->rolf_ref_id."&obj_id=".$this->object->getId();
00367
00368 $this->data = $output;
00369
00370
00371
00372
00373
00374
00375 $this->tpl->addBlockFile("CONTENT", "content", "tpl.adm_content.html");
00376 $this->tpl->addBlockFile("LOCATOR", "locator", "tpl.locator.html");
00377 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.adm_perm_role.html");
00378
00379 foreach ($rbac_objects as $obj_data)
00380 {
00381
00382 $this->tpl->setCurrentBlock("object_operations");
00383
00384 foreach ($obj_data["ops"] as $operation)
00385 {
00386 $css_row = ilUtil::switchColor($key, "tblrow1", "tblrow2");
00387 $this->tpl->setVariable("CSS_ROW",$css_row);
00388 $this->tpl->setVariable("PERMISSION",$operation["name"]);
00389 if (substr($operation["title"], 0, 7) == "create_")
00390 {
00391 if ($this->objDefinition->getDevMode(substr($operation["title"], 7, strlen($operation["title"]) -7)))
00392 {
00393 $this->tpl->setVariable("TXT_NOT_IMPL", "(".$this->lng->txt("not_implemented_yet").")");
00394 }
00395 }
00396 $this->tpl->setVariable("CHECK_PERMISSION",$this->data["perm"][$obj_data["obj_id"]][$operation["ops_id"]]);
00397 $this->tpl->parseCurrentBlock();
00398 }
00399
00400
00401 $this->tpl->setCurrentBlock("object_type");
00402 $this->tpl->setVariable("TXT_OBJ_TYPE",$obj_data["name"]);
00403 if ($this->objDefinition->getDevMode($obj_data["type"]))
00404 {
00405 $this->tpl->setVariable("TXT_NOT_IMPL", "(".$this->lng->txt("not_implemented_yet").")");
00406 }
00407 $this->tpl->parseCurrentBlock();
00408
00409 }
00410
00411
00412 if ($this->object->getId() != SYSTEM_ROLE_ID)
00413 {
00414
00415 foreach ($this->data["adopt"] as $key => $value)
00416 {
00417 $this->tpl->setCurrentBlock("ADOPT_PERM_ROW");
00418 $this->tpl->setVariable("CSS_ROW_ADOPT",$value["css_row_adopt"]);
00419 $this->tpl->setVariable("CHECK_ADOPT",$value["check_adopt"]);
00420 $this->tpl->setVariable("TYPE",$value["type"]);
00421 $this->tpl->setVariable("ROLE_NAME",$value["role_name"]);
00422 $this->tpl->parseCurrentBlock();
00423 }
00424
00425 $this->tpl->setCurrentBlock("ADOPT_PERM_FORM");
00426 $this->tpl->setVariable("MESSAGE_MIDDLE",$this->data["message_middle"]);
00427 $this->tpl->setVariable("FORMACTION_ADOPT",$this->data["formaction_adopt"]);
00428 $this->tpl->parseCurrentBlock();
00429
00430
00431 $this->tpl->setCurrentBlock("tblfooter_recursive");
00432 $this->tpl->setVariable("COL_ANZ",3);
00433 $this->tpl->setVariable("CHECK_BOTTOM",$this->data["check_bottom"]);
00434 $this->tpl->setVariable("MESSAGE_TABLE",$this->data["message_table"]);
00435 $this->tpl->parseCurrentBlock();
00436
00437 $this->tpl->setCurrentBlock("tblfooter_standard");
00438 $this->tpl->setVariable("COL_ANZ_PLUS",4);
00439 $this->tpl->setVariable("TXT_SAVE",$this->data["txt_save"]);
00440 $this->tpl->parseCurrentBlock();
00441 }
00442 else
00443 {
00444
00445 $this->tpl->setCurrentBlock("tblfooter_sysrole");
00446 $this->tpl->setVariable("COL_ANZ_SYS",3);
00447 $this->tpl->parseCurrentBlock();
00448
00449
00450 $this->tpl->setCurrentBlock("sysrole_msg");
00451 $this->tpl->setVariable("TXT_SYSROLE_MSG",$this->data["sysrole_msg"]);
00452 $this->tpl->parseCurrentBlock();
00453 }
00454
00455 $this->tpl->setCurrentBlock("adm_content");
00456 $this->tpl->setVariable("TBL_TITLE_IMG",ilUtil::getImagePath("icon_".$this->object->getType()."_b.gif"));
00457 $this->tpl->setVariable("TBL_TITLE_IMG_ALT",$this->lng->txt($this->object->getType()));
00458 $this->tpl->setVariable("TBL_HELP_IMG",ilUtil::getImagePath("icon_help.gif"));
00459 $this->tpl->setVariable("TBL_HELP_LINK","tbl_help.php");
00460 $this->tpl->setVariable("TBL_HELP_IMG_ALT",$this->lng->txt("help"));
00461 $this->tpl->setVariable("TBL_TITLE",$this->object->getTitle());
00462
00463 $this->tpl->setVariable("TXT_PERMISSION",$this->data["txt_permission"]);
00464 $this->tpl->setVariable("FORMACTION",$this->data["formaction"]);
00465 $this->tpl->parseCurrentBlock();
00466 }
00467
00473 function permSaveObject()
00474 {
00475 global $rbacsystem, $rbacadmin, $rbacreview,$objDefinition;
00476
00477
00478 if (!$rbacsystem->checkAccess('write', $this->rolf_ref_id))
00479 {
00480 $this->ilias->raiseError($this->lng->txt("msg_no_perm_perm"),$this->ilias->error_obj->MESSAGE);
00481 }
00482
00483 #$to_filter = $objDefinition->getSubobjectsToFilter();
00484
00485
00486
00487 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]))
00488 {
00489
00490 $q = "SELECT ta.typ_id,obj.title,ops.ops_id,ops.operation FROM rbac_ta AS ta ".
00491 "LEFT JOIN object_data AS obj ON obj.obj_id=ta.typ_id ".
00492 "LEFT JOIN rbac_operations AS ops ON ops.ops_id=ta.ops_id";
00493 $r = $this->ilias->db->query($q);
00494
00495 while ($row = $r->fetchRow(DB_FETCHMODE_OBJECT))
00496 {
00497
00498 #if(in_array($row->title,$to_filter))
00499 #{
00500 # continue;
00501 #}
00502
00503 $rbac_objects[$row->typ_id] = array("obj_id" => $row->typ_id,
00504 "type" => $row->title
00505 );
00506
00507 $rbac_operations[$row->typ_id][$row->ops_id] = array(
00508 "ops_id" => $row->ops_id,
00509 "title" => $row->operation,
00510 "name" => $this->lng->txt($row->title."_".$row->operation)
00511 );
00512 }
00513
00514 foreach ($rbac_objects as $key => $obj_data)
00515 {
00516 $rbac_objects[$key]["name"] = $this->lng->txt("obj_".$obj_data["type"]);
00517 $rbac_objects[$key]["ops"] = $rbac_operations[$key];
00518 }
00519
00520 $global_roles_all = $rbacreview->getGlobalRoles();
00521 $global_roles_user = array_intersect($_SESSION["RoleId"],$global_roles_all);
00522
00523 foreach ($rbac_objects as $key => $obj_data)
00524 {
00525 $allowed_ops_on_type = array();
00526
00527 foreach ($global_roles_user as $role_id)
00528 {
00529 $allowed_ops_on_type = array_merge($allowed_ops_on_type,$rbacreview->getOperationsOfRole($role_id,$obj_data["type"]));
00530 }
00531
00532 $allowed_ops_on_type = array_unique($allowed_ops_on_type);
00533
00534 $arr_previous = $rbacreview->getOperationsOfRole($this->object->getId(), $obj_data["type"], $this->rolf_ref_id);
00535 $arr_missing = array_diff($arr_previous,$allowed_ops_on_type);
00536
00537 $_POST["template_perm"][$obj_data["type"]] = array_merge($_POST["template_perm"][$obj_data["type"]],$arr_missing);
00538
00539
00540 if (empty($_POST["template_perm"][$obj_data["type"]]))
00541 {
00542 unset($_POST["template_perm"][$obj_data["type"]]);
00543 }
00544 }
00545 }
00546
00547
00548 $rbacadmin->deleteRolePermission($this->object->getId(), $this->rolf_ref_id);
00549
00550 if (empty($_POST["template_perm"]))
00551 {
00552 $_POST["template_perm"] = array();
00553 }
00554
00555 foreach ($_POST["template_perm"] as $key => $ops_array)
00556 {
00557
00558 $rbacadmin->setRolePermission($this->object->getId(), $key, $ops_array, $this->rolf_ref_id);
00559 }
00560
00561
00562 $this->object->update();
00563
00564
00565
00566 if ($_POST["recursive"])
00567 {
00568
00569 if ($this->rolf_ref_id == ROLE_FOLDER_ID)
00570 {
00571 $node_id = ROOT_FOLDER_ID;
00572 }
00573 else
00574 {
00575 $node_id = $this->tree->getParentId($this->rolf_ref_id);
00576 }
00577
00578
00579 $node_data = $this->tree->getNodeData($node_id);
00580 $subtree_nodes = $this->tree->getSubTree($node_data);
00581
00582
00583 $all_parent_obj_of_rolf = $rbacreview->getObjectsWithStopedInheritance($this->object->getId());
00584
00585
00586 if ($this->rolf_ref_id == ROLE_FOLDER_ID)
00587 {
00588 $key = array_keys($all_parent_obj_of_rolf,SYSTEM_FOLDER_ID);
00589 }
00590 else
00591 {
00592 $key = array_keys($all_parent_obj_of_rolf,$node_id);
00593 }
00594
00595 unset($all_parent_obj_of_rolf[$key[0]]);
00596
00597 $check = false;
00598
00599 foreach ($subtree_nodes as $node)
00600 {
00601 if (!$check)
00602 {
00603 if (in_array($node["child"],$all_parent_obj_of_rolf))
00604 {
00605 $lft = $node["lft"];
00606 $rgt = $node["rgt"];
00607 $check = true;
00608 continue;
00609 }
00610
00611 $valid_nodes[] = $node;
00612 }
00613 else
00614 {
00615 if (($node["lft"] > $lft) && ($node["rgt"] < $rgt))
00616 {
00617 continue;
00618 }
00619 else
00620 {
00621 $check = false;
00622 $valid_nodes[] = $node;
00623 }
00624 }
00625 }
00626
00627
00628 foreach ($valid_nodes as $key => $node)
00629 {
00630 #if(!in_array($node["type"],$to_filter))
00631 {
00632 $node_ids[] = $node["child"];
00633 $valid_nodes[$key]["perms"] = $_POST["template_perm"][$node["type"]];
00634 }
00635 }
00636
00637
00638 $rbacadmin->revokePermissionList($node_ids,$this->object->getId());
00639
00640
00641 foreach ($valid_nodes as $node)
00642 {
00643 if (is_array($node["perms"]))
00644 {
00645 $rbacadmin->grantPermission($this->object->getId(),$node["perms"],$node["child"]);
00646 }
00647 }
00648 }
00649
00650
00651
00652 sendinfo($this->lng->txt("saved_successfully"),true);
00653
00654 ilUtil::redirect("adm_object.php?ref_id=".$this->rolf_ref_id."&obj_id=".$this->object->getId()."&cmd=perm");
00655 }
00656
00657
00663 function adoptPermSaveObject()
00664 {
00665 global $rbacadmin, $rbacsystem, $rbacreview;
00666
00667 if (!$rbacsystem->checkAccess('write',$this->rolf_ref_id))
00668 {
00669 $this->ilias->raiseError($this->lng->txt("msg_no_perm_perm"),$this->ilias->error_obj->MESSAGE);
00670 }
00671 elseif ($this->object->getId() == $_POST["adopt"])
00672 {
00673 sendInfo($this->lng->txt("msg_perm_adopted_from_itself"),true);
00674 }
00675 else
00676 {
00677 $rbacadmin->deleteRolePermission($this->object->getId(), $this->rolf_ref_id);
00678 $parentRoles = $rbacreview->getParentRoleIds($this->rolf_ref_id,true);
00679 $rbacadmin->copyRolePermission($_POST["adopt"],$parentRoles[$_POST["adopt"]]["parent"],
00680 $this->rolf_ref_id,$this->object->getId());
00681
00682
00683 $this->object->update();
00684
00685
00686 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($_POST["adopt"]);
00687 sendInfo($this->lng->txt("msg_perm_adopted_from1")." '".$obj_data->getTitle()."'.<br/>".$this->lng->txt("msg_perm_adopted_from2"),true);
00688 }
00689
00690 ilUtil::redirect("adm_object.php?ref_id=".$this->rolf_ref_id."&obj_id=".$this->object->getId()."&cmd=perm");
00691 }
00692
00698 function assignSaveObject()
00699 {
00700 $this->assignUserObject();
00701 }
00702
00708 function assignUserObject()
00709 {
00710 global $rbacsystem, $rbacadmin, $rbacreview;
00711
00712 if (!$rbacsystem->checkAccess("edit_userassignment", $this->rolf_ref_id))
00713 {
00714 $this->ilias->raiseError($this->lng->txt("msg_no_perm_assign_user_to_role"),$this->ilias->error_obj->MESSAGE);
00715 }
00716
00717 if (!$rbacreview->isAssignable($this->object->getId(),$this->rolf_ref_id))
00718 {
00719 $this->ilias->raiseError($this->lng->txt("err_role_not_assignable"),$this->ilias->error_obj->MESSAGE);
00720 }
00721
00722 if (!$rbacsystem->checkAccess('write',$this->rolf_ref_id))
00723 {
00724 $this->ilias->raiseError($this->lng->txt("msg_no_perm_perm"),$this->ilias->error_obj->MESSAGE);
00725 }
00726
00727 if (!isset($_POST["user"]))
00728 {
00729 sendInfo($this->lng->txt("no_checkbox"));
00730 $this->searchObject();
00731
00732 return false;
00733 }
00734
00735 $selected_users = $_POST["user"];
00736 $assigned_users_all = $rbacreview->assignedUsers($this->object->getId());
00737
00738
00739 $assigned_users_new = array_diff($selected_users,array_intersect($selected_users,$assigned_users_all));
00740
00741
00742 if (count($assigned_users_new) == 0)
00743 {
00744 sendInfo($this->lng->txt("msg_selected_users_already_assigned"));
00745 $this->searchObject();
00746
00747 return false;
00748 }
00749
00750
00751
00752
00753 foreach ($assigned_users_new as $user)
00754 {
00755 $rbacadmin->assignUser($this->object->getId(),$user,false);
00756 }
00757
00758
00759 $this->object->_updateSessionRoles($assigned_users_new);
00760
00761
00762 $this->object->update();
00763
00764 sendInfo($this->lng->txt("msg_userassignment_changed"),true);
00765 ilUtil::redirect("adm_object.php?ref_id=".$this->rolf_ref_id."&obj_id=".$this->object->getId()."&cmd=userassignment&sort_by=".$_GET["sort_by"]."&sort_order=".$_GET["sort_order"]."&offset=".$_GET["offset"]);
00766 }
00767
00773 function deassignUserObject()
00774 {
00775 global $rbacsystem, $rbacadmin, $rbacreview;
00776
00777 if (!$rbacsystem->checkAccess("edit_userassignment", $this->rolf_ref_id))
00778 {
00779 $this->ilias->raiseError($this->lng->txt("msg_no_perm_assign_user_to_role"),$this->ilias->error_obj->MESSAGE);
00780 }
00781
00782 if (!$rbacsystem->checkAccess('write',$this->rolf_ref_id))
00783 {
00784 $this->ilias->raiseError($this->lng->txt("msg_no_perm_perm"),$this->ilias->error_obj->MESSAGE);
00785 }
00786
00787 $selected_users = ($_POST["user_id"]) ? $_POST["user_id"] : array($_GET["user_id"]);
00788
00789 if ($selected_users[0]=== NULL)
00790 {
00791 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
00792 }
00793
00794
00795 if ($this->object->getId() == SYSTEM_ROLE_ID)
00796 {
00797 if ($admin = array_search(SYSTEM_USER_ID,$selected_users) !== false)
00798 unset($selected_users[$admin]);
00799 }
00800
00801
00802
00803 $last_role = array();
00804 $global_roles = $rbacreview->getGlobalRoles();
00805
00806 foreach ($selected_users as $user)
00807 {
00808 $assigned_roles = $rbacreview->assignedRoles($user);
00809 $assigned_global_roles = array_intersect($assigned_roles,$global_roles);
00810
00811 if (count($assigned_roles) == 1 or (count($assigned_global_roles) == 1 and in_array($this->object->getId(),$assigned_global_roles)))
00812 {
00813 $userObj = $this->ilias->obj_factory->getInstanceByObjId($user);
00814 $last_role[$user] = $userObj->getFullName();
00815 unset($userObj);
00816 }
00817 }
00818
00819
00820 if (count($last_role) > 0)
00821 {
00822 $user_list = implode(", ",$last_role);
00823 $this->ilias->raiseError($this->lng->txt("msg_is_last_role").": ".$user_list."<br/>".$this->lng->txt("msg_min_one_role")."<br/>".$this->lng->txt("action_aborted"),$this->ilias->error_obj->MESSAGE);
00824 }
00825
00826
00827 foreach ($selected_users as $user)
00828 {
00829 $rbacadmin->deassignUser($this->object->getId(),$user);
00830 }
00831
00832
00833 $this->object->_updateSessionRoles($selected_users);
00834
00835
00836 $this->object->update();
00837
00838 sendInfo($this->lng->txt("msg_userassignment_changed"),true);
00839 ilUtil::redirect("adm_object.php?ref_id=".$this->rolf_ref_id."&obj_id=".$this->object->getId()."&cmd=userassignment&sort_by=".$_GET["sort_by"]."&sort_order=".$_GET["sort_order"]."&offset=".$_GET["offset"]);
00840 }
00841
00847 function updateObject()
00848 {
00849 global $rbacsystem, $rbacreview;
00850
00851
00852 if (!$rbacsystem->checkAccess("write", $this->rolf_ref_id))
00853 {
00854 $this->ilias->raiseError($this->lng->txt("msg_no_perm_modify_role"),$this->ilias->error_obj->MESSAGE);
00855 }
00856
00857 if (substr($this->object->getTitle(),0,3) != "il_")
00858 {
00859
00860 if (empty($_POST["Fobject"]["title"]))
00861 {
00862 $this->ilias->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilias->error_obj->MESSAGE);
00863 }
00864
00865
00866 if (substr($_POST["Fobject"]["title"],0,3) == "il_")
00867 {
00868 $this->ilias->raiseError($this->lng->txt("msg_role_reserved_prefix"),$this->ilias->error_obj->MESSAGE);
00869 }
00870
00871
00872 if ($rbacreview->roleExists($_POST["Fobject"]["title"],$this->object->getId()))
00873 {
00874 $this->ilias->raiseError($this->lng->txt("msg_role_exists1")." '".ilUtil::stripSlashes($_POST["Fobject"]["title"])."' ".
00875 $this->lng->txt("msg_role_exists2"),$this->ilias->error_obj->MESSAGE);
00876 }
00877
00878
00879 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00880 }
00881
00882 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00883 $this->object->setAllowRegister($_POST["Fobject"]["allow_register"]);
00884 $this->object->toggleAssignUsersStatus($_POST["Fobject"]["assign_users"]);
00885 $this->object->update();
00886
00887 sendInfo($this->lng->txt("saved_successfully"),true);
00888
00889 ilUtil::redirect("adm_object.php?ref_id=".$this->rolf_ref_id);
00890 }
00891
00897 function editObject()
00898 {
00899 global $rbacsystem, $rbacreview;
00900
00901 if (!$rbacsystem->checkAccess("write", $this->rolf_ref_id))
00902 {
00903 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00904 }
00905
00906 $this->getTemplateFile("edit");
00907
00908 if ($_SESSION["error_post_vars"])
00909 {
00910
00911 if (substr($this->object->getTitle(),0,3) != "il_")
00912 {
00913 $this->tpl->setVariable("TITLE",ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"]),true);
00914 }
00915
00916 $this->tpl->setVariable("DESC",ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]));
00917 $allow_register = ($_SESSION["error_post_vars"]["Fobject"]["allow_register"]) ? "checked=\"checked\"" : "";
00918 $assign_users = ($_SESSION["error_post_vars"]["Fobject"]["assign_users"]) ? "checked=\"checked\"" : "";
00919 }
00920 else
00921 {
00922 if (substr($this->object->getTitle(),0,3) != "il_")
00923 {
00924 $this->tpl->setVariable("TITLE",ilUtil::prepareFormOutput($this->object->getTitle()));
00925 }
00926
00927 $this->tpl->setVariable("DESC",ilUtil::stripSlashes($this->object->getDescription()));
00928 $allow_register = ($this->object->getAllowRegister()) ? "checked=\"checked\"" : "";
00929 $assign_users = $this->object->getAssignUsersStatus() ? "checked=\"checked\"" : "";
00930
00931 }
00932
00933 $obj_str = "&obj_id=".$this->obj_id;
00934
00935 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt("title"));
00936 $this->tpl->setVariable("TXT_DESC",$this->lng->txt("desc"));
00937
00938
00939 $global_roles = $rbacreview->getGlobalRoles();
00940
00941 $this->tpl->setVariable("FORMACTION", $this->getFormAction("update","adm_object.php?cmd=gateway&ref_id=".$this->rolf_ref_id.$obj_str));
00942 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($this->object->getType()."_edit"));
00943 $this->tpl->setVariable("TARGET", $this->getTargetFrame("update"));
00944 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00945 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00946 $this->tpl->setVariable("CMD_SUBMIT", "update");
00947 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00948
00949 if (substr($this->object->getTitle(),0,3) == "il_")
00950 {
00951 $this->tpl->setVariable("SHOW_TITLE",$this->object->getTitle());
00952 }
00953
00954 if ($this->object->getId() != ANONYMOUS_ROLE_ID and
00955 $this->object->getId() != SYSTEM_ROLE_ID and
00956 in_array($this->object->getId(),$global_roles))
00957 {
00958 $this->tpl->setCurrentBlock("allow_register");
00959 $this->tpl->setVariable("TXT_ALLOW_REGISTER",$this->lng->txt("allow_register"));
00960 $this->tpl->setVariable("ALLOW_REGISTER",$allow_register);
00961 $this->tpl->parseCurrentBlock();
00962
00963 $this->tpl->setCurrentBlock("assign_users");
00964 $this->tpl->setVariable("TXT_ASSIGN_USERS",$this->lng->txt('allow_assign_users'));
00965 $this->tpl->setVariable("ASSIGN_USERS",$assign_users);
00966 $this->tpl->parseCurrentBlock();
00967 }
00968 }
00969
00973 function userassignmentObject()
00974 {
00975 global $rbacreview, $rbacsystem;
00976
00977 if (!$rbacsystem->checkAccess("edit_userassignment", $this->rolf_ref_id))
00978 {
00979 $this->ilias->raiseError($this->lng->txt("msg_no_perm_assign_user_to_role"),$this->ilias->error_obj->MESSAGE);
00980 }
00981
00982 $assigned_users = $rbacreview->assignedUsers($this->object->getId(),array("login","firstname","lastname","usr_id"));
00983
00984
00985 $val_contact = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".$this->lng->txt("role_user_send_mail")."\" title=\"".$this->lng->txt("role_user_send_mail")."\" border=\"0\" vspace=\"0\"/>";
00986 $val_change = "<img src=\"".ilUtil::getImagePath("icon_change_b.gif")."\" alt=\"".$this->lng->txt("role_user_edit")."\" title=\"".$this->lng->txt("role_user_edit")."\" border=\"0\" vspace=\"0\"/>";
00987 $val_leave = "<img src=\"".ilUtil::getImagePath("icon_group_out_b.gif")."\" alt=\"".$this->lng->txt("role_user_deassign")."\" title=\"".$this->lng->txt("role_user_deassign")."\" border=\"0\" vspace=\"0\"/>";
00988
00989 $counter = 0;
00990
00991 foreach ($assigned_users as $user)
00992 {
00993 $link_contact = "mail_new.php?type=new&rcp_to=".$user["login"];
00994 $link_change = "adm_object.php?ref_id=7&obj_id=".$user["usr_id"]."&cmd=edit";
00995 $link_leave = $this->ctrl->getLinkTarget($this,"deassignUser")."&user_id=".$user["usr_id"];
00996
00997 $member_functions = "";
00998
00999
01000 if ($this->object->getId() != ANONYMOUS_ROLE_ID or $user["usr_id"] != ANONYMOUS_USER_ID)
01001 {
01002
01003 $member_functions = "<a href=\"".$link_contact."\">".$val_contact."</a>";
01004 $member_functions .= "<a href=\"".$link_change."\">".$val_change."</a>";
01005
01006 if ($this->object->getId() != SYSTEM_ROLE_ID or $user["usr_id"] != SYSTEM_USER_ID)
01007 {
01008 $member_functions .="<a href=\"".$link_leave."\">".$val_leave."</a>";
01009 }
01010 }
01011
01012
01013 if (($this->object->getId() == SYSTEM_ROLE_ID and $user["usr_id"] == SYSTEM_USER_ID)
01014 or ($this->object->getId() == ANONYMOUS_ROLE_ID and $user["usr_id"] == ANONYMOUS_USER_ID))
01015 {
01016 $result_set[$counter][] = "";
01017 }
01018 else
01019 {
01020 $result_set[$counter][] = ilUtil::formCheckBox(0,"user_id[]",$user["usr_id"]);
01021 }
01022
01023 $result_set[$counter][] = $user["login"];
01024 $result_set[$counter][] = $user["firstname"];
01025 $result_set[$counter][] = $user["lastname"];
01026 $result_set[$counter][] = $member_functions;
01027
01028 ++$counter;
01029
01030 unset($member_functions);
01031 }
01032
01033 return $this->__showAssignedUsersTable($result_set);
01034 }
01035
01036 function __showAssignedUsersTable($a_result_set)
01037 {
01038 global $rbacsystem;
01039
01040 $actions = array("deassignUser" => $this->lng->txt("remove"));
01041
01042 $tbl =& $this->__initTableGUI();
01043 $tpl =& $tbl->getTemplateObject();
01044
01045 $tpl->setCurrentBlock("tbl_form_header");
01046 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01047 $tpl->parseCurrentBlock();
01048
01049 $tpl->setCurrentBlock("tbl_action_row");
01050
01051
01052 $tpl->setCurrentBlock("plain_button");
01053 $tpl->setVariable("PBTN_NAME","searchUserForm");
01054 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("role_add_user"));
01055 $tpl->parseCurrentBlock();
01056 $tpl->setCurrentBlock("plain_buttons");
01057 $tpl->parseCurrentBlock();
01058
01059 $tpl->setVariable("COLUMN_COUNTS",5);
01060 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01061
01062 foreach ($actions as $name => $value)
01063 {
01064 $tpl->setCurrentBlock("tbl_action_btn");
01065 $tpl->setVariable("BTN_NAME",$name);
01066 $tpl->setVariable("BTN_VALUE",$value);
01067 $tpl->parseCurrentBlock();
01068 }
01069
01070 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01071
01072
01073 $this->ctrl->setParameter($this,"cmd","userassignment");
01074
01075
01076
01077 $tbl->setTitle($this->lng->txt("assigned_users"),"icon_usr_b.gif",$this->lng->txt("users"));
01078
01079
01080 $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("grp_options")));
01081 $tbl->setHeaderVars(array("","login","firstname","lastname","functions"),$this->ctrl->getParameterArray($this,"",false));
01082 $tbl->setColumnWidth(array("","30%","30%","30%","10%"));
01083
01084 $this->__setTableGUIBasicData($tbl,$a_result_set,"userassignment");
01085 $tbl->render();
01086 $this->tpl->setVariable("ADM_CONTENT",$tbl->tpl->get());
01087
01088 return true;
01089 }
01090
01091 function &__initTableGUI()
01092 {
01093 include_once "class.ilTableGUI.php";
01094
01095 return new ilTableGUI(0,false);
01096 }
01097
01098 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
01099 {
01100 switch($from)
01101 {
01102 case "group":
01103 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
01104 break;
01105
01106 case "role":
01107 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
01108 break;
01109
01110 default:
01111
01112 if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
01113 {
01114 $_GET["sort_by"] = "login";
01115 }
01116 $order = $_GET["sort_by"];
01117 break;
01118 }
01119
01120 $tbl->setOrderColumn($order);
01121 $tbl->setOrderDirection($_GET["sort_order"]);
01122 $tbl->setOffset($_GET["offset"]);
01123 $tbl->setLimit($_GET["limit"]);
01124 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01125 $tbl->setData($result_set);
01126 }
01127
01128 function searchUserFormObject()
01129 {
01130 global $rbacsystem;
01131
01132 if (!$rbacsystem->checkAccess("edit_userassignment", $this->rolf_ref_id))
01133 {
01134 $this->ilias->raiseError($this->lng->txt("msg_no_perm_assign_user_to_role"),$this->ilias->error_obj->MESSAGE);
01135 }
01136
01137 $this->lng->loadLanguageModule('search');
01138
01139 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.role_users_search.html");
01140
01141 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
01142 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("role_search_users"));
01143 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
01144 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["role_search_str"] ? $_SESSION["role_search_str"] : "");
01145 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
01146 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
01147 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
01148 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
01149 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
01150 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
01151
01152 $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
01153 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
01154 $role = ($_POST["search_for"] == "role") ? 1 : 0;
01155
01156 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
01157 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
01158 $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
01159
01160 $this->__unsetSessionVariables();
01161 }
01162
01163 function __unsetSessionVariables()
01164 {
01165 unset($_SESSION["role_delete_member_ids"]);
01166 unset($_SESSION["role_delete_subscriber_ids"]);
01167 unset($_SESSION["role_search_str"]);
01168 unset($_SESSION["role_search_for"]);
01169 unset($_SESSION["role_role"]);
01170 unset($_SESSION["role_group"]);
01171 unset($_SESSION["role_archives"]);
01172 }
01173
01178 function cancelObject()
01179 {
01180 $return_location = "userassignment";
01181
01182 sendInfo($this->lng->txt("action_aborted"),true);
01183 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
01184 }
01185
01186 function searchObject()
01187 {
01188 global $rbacsystem, $tree;
01189
01190 if (!$rbacsystem->checkAccess("edit_userassignment", $this->rolf_ref_id))
01191 {
01192 $this->ilias->raiseError($this->lng->txt("msg_no_perm_assign_user_to_role"),$this->ilias->error_obj->MESSAGE);
01193 }
01194
01195 $_SESSION["role_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["role_search_str"];
01196 $_SESSION["role_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["role_search_for"];
01197
01198 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
01199 {
01200 sendInfo($this->lng->txt("role_search_enter_search_string"));
01201 $this->searchUserFormObject();
01202
01203 return false;
01204 }
01205
01206 if(!count($result = $this->__search(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"])))
01207 {
01208 sendInfo($this->lng->txt("role_no_results_found"));
01209 $this->searchUserFormObject();
01210
01211 return false;
01212 }
01213
01214 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.role_usr_selection.html");
01215 $this->__showButton("searchUserForm",$this->lng->txt("role_new_search"));
01216
01217 $counter = 0;
01218 $f_result = array();
01219
01220 switch($_POST["search_for"])
01221 {
01222 case "usr":
01223 foreach($result as $user)
01224 {
01225 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user["id"],false))
01226 {
01227 continue;
01228 }
01229 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user["id"]);
01230 $f_result[$counter][] = $tmp_obj->getLogin();
01231 $f_result[$counter][] = $tmp_obj->getFirstname();
01232 $f_result[$counter][] = $tmp_obj->getLastname();
01233
01234 unset($tmp_obj);
01235 ++$counter;
01236 }
01237 $this->__showSearchUserTable($f_result);
01238
01239 return true;
01240
01241 case "role":
01242 foreach($result as $role)
01243 {
01244
01245 if ($role["id"] == ANONYMOUS_ROLE_ID)
01246 {
01247 continue;
01248 }
01249
01250 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
01251 {
01252 continue;
01253 }
01254
01255
01256 if ($tmp_obj->getCountMembers() == 0)
01257 {
01258 continue;
01259 }
01260
01261 $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
01262 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01263 $f_result[$counter][] = $tmp_obj->getCountMembers();
01264
01265 unset($tmp_obj);
01266 ++$counter;
01267 }
01268
01269 $this->__showSearchRoleTable($f_result);
01270
01271 return true;
01272
01273 case "grp":
01274 foreach($result as $group)
01275 {
01276 if(!$tree->isInTree($group["id"]))
01277 {
01278 continue;
01279 }
01280
01281 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
01282 {
01283 continue;
01284 }
01285
01286
01287 if ($tmp_obj->getId() == $this->object->getId())
01288 {
01289 continue;
01290 }
01291
01292 $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
01293 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01294 $f_result[$counter][] = $tmp_obj->getCountMembers();
01295
01296 unset($tmp_obj);
01297 ++$counter;
01298 }
01299 $this->__showSearchGroupTable($f_result);
01300
01301 return true;
01302 }
01303 }
01304
01305 function __search($a_search_string,$a_search_for)
01306 {
01307 include_once("class.ilSearch.php");
01308
01309 $this->lng->loadLanguageModule("content");
01310 $search =& new ilSearch($_SESSION["AccountId"]);
01311 $search->setPerformUpdate(false);
01312 $search->setSearchString(ilUtil::stripSlashes($a_search_string));
01313 $search->setCombination("and");
01314 $search->setSearchFor(array(0 => $a_search_for));
01315 $search->setSearchType('new');
01316
01317 if($search->validate($message))
01318 {
01319 $search->performSearch();
01320 }
01321 else
01322 {
01323 sendInfo($message,true);
01324 $this->ctrl->redirect($this,"searchUserForm");
01325 }
01326
01327 return $search->getResultByType($a_search_for);
01328 }
01329
01330 function __showSearchUserTable($a_result_set,$a_cmd = "search")
01331 {
01332 $return_to = "searchUserForm";
01333
01334 if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
01335 {
01336 $return_to = "search";
01337 }
01338
01339 $tbl =& $this->__initTableGUI();
01340 $tpl =& $tbl->getTemplateObject();
01341
01342
01343 $tpl->setCurrentBlock("tbl_form_header");
01344 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01345 $tpl->parseCurrentBlock();
01346
01347 $tpl->setCurrentBlock("tbl_action_btn");
01348 $tpl->setVariable("BTN_NAME",$return_to);
01349 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01350 $tpl->parseCurrentBlock();
01351
01352 $tpl->setCurrentBlock("tbl_action_btn");
01353 $tpl->setVariable("BTN_NAME","assignUser");
01354 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
01355 $tpl->parseCurrentBlock();
01356
01357 $tpl->setCurrentBlock("tbl_action_row");
01358 $tpl->setVariable("COLUMN_COUNTS",4);
01359 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01360 $tpl->parseCurrentBlock();
01361
01362 $tbl->setTitle($this->lng->txt("role_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("role_header_edit_users"));
01363 $tbl->setHeaderNames(array("",
01364 $this->lng->txt("username"),
01365 $this->lng->txt("firstname"),
01366 $this->lng->txt("lastname")));
01367 $tbl->setHeaderVars(array("",
01368 "login",
01369 "firstname",
01370 "lastname"),
01371 array("ref_id" => $this->rolf_ref_id,
01372 "obj_id" => $this->object->getId(),
01373 "cmd" => $a_cmd,
01374 "cmdClass" => "ilobjrolegui",
01375 "cmdNode" => $_GET["cmdNode"]));
01376
01377 $tbl->setColumnWidth(array("","33%","33%","33%"));
01378
01379 $this->__setTableGUIBasicData($tbl,$a_result_set);
01380 $tbl->render();
01381
01382 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01383
01384 return true;
01385 }
01386
01387 function __showSearchRoleTable($a_result_set)
01388 {
01389 $tbl =& $this->__initTableGUI();
01390 $tpl =& $tbl->getTemplateObject();
01391
01392 $tpl->setCurrentBlock("tbl_form_header");
01393 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01394 $tpl->parseCurrentBlock();
01395
01396 $tpl->setCurrentBlock("tbl_action_btn");
01397 $tpl->setVariable("BTN_NAME","searchUserForm");
01398 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01399 $tpl->parseCurrentBlock();
01400
01401 $tpl->setCurrentBlock("tbl_action_btn");
01402 $tpl->setVariable("BTN_NAME","listUsersRole");
01403 $tpl->setVariable("BTN_VALUE",$this->lng->txt("role_list_users"));
01404 $tpl->parseCurrentBlock();
01405
01406 $tpl->setCurrentBlock("tbl_action_row");
01407 $tpl->setVariable("COLUMN_COUNTS",4);
01408 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01409 $tpl->parseCurrentBlock();
01410
01411 $tbl->setTitle($this->lng->txt("role_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("role_header_edit_users"));
01412 $tbl->setHeaderNames(array("",
01413 $this->lng->txt("obj_role"),
01414 $this->lng->txt("role_count_users")));
01415 $tbl->setHeaderVars(array("",
01416 "title",
01417 "nr_members"),
01418 array("ref_id" => $this->rolf_ref_id,
01419 "obj_id" => $this->object->getId(),
01420 "cmd" => "search",
01421 "cmdClass" => "ilobjrolegui",
01422 "cmdNode" => $_GET["cmdNode"]));
01423
01424 $tbl->setColumnWidth(array("","80%","19%"));
01425
01426
01427 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
01428 $tbl->render();
01429
01430 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01431
01432 return true;
01433 }
01434
01435 function __showSearchGroupTable($a_result_set)
01436 {
01437 $tbl =& $this->__initTableGUI();
01438 $tpl =& $tbl->getTemplateObject();
01439
01440 $tpl->setCurrentBlock("tbl_form_header");
01441 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01442 $tpl->parseCurrentBlock();
01443
01444 $tpl->setCurrentBlock("tbl_action_btn");
01445 $tpl->setVariable("BTN_NAME","searchUserForm");
01446 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01447 $tpl->parseCurrentBlock();
01448
01449 $tpl->setCurrentBlock("tbl_action_btn");
01450 $tpl->setVariable("BTN_NAME","listUsersGroup");
01451 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01452 $tpl->parseCurrentBlock();
01453
01454 $tpl->setCurrentBlock("tbl_action_row");
01455 $tpl->setVariable("COLUMN_COUNTS",4);
01456 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01457 $tpl->parseCurrentBlock();
01458
01459 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01460 $tbl->setHeaderNames(array("",
01461 $this->lng->txt("obj_grp"),
01462 $this->lng->txt("grp_count_members")));
01463 $tbl->setHeaderVars(array("",
01464 "title",
01465 "nr_members"),
01466 array("ref_id" => $this->rolf_ref_id,
01467 "obj_id" => $this->object->getId(),
01468 "cmd" => "search",
01469 "cmdClass" => "ilobjrolegui",
01470 "cmdNode" => $_GET["cmdNode"]));
01471
01472 $tbl->setColumnWidth(array("","80%","19%"));
01473
01474
01475 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
01476 $tbl->render();
01477
01478 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01479
01480 return true;
01481 }
01482
01483 function listUsersRoleObject()
01484 {
01485 global $rbacsystem,$rbacreview;
01486
01487 $_SESSION["role_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["role_role"];
01488
01489 if(!is_array($_POST["role"]))
01490 {
01491 sendInfo($this->lng->txt("role_no_roles_selected"));
01492 $this->searchObject();
01493
01494 return false;
01495 }
01496
01497 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.role_usr_selection.html");
01498 $this->__showButton("searchUserForm",$this->lng->txt("role_new_search"));
01499
01500
01501 $members = array();
01502 foreach($_POST["role"] as $role_id)
01503 {
01504 $members = array_merge($rbacreview->assignedUsers($role_id),$members);
01505 }
01506
01507 $members = array_unique($members);
01508
01509
01510 $counter = 0;
01511 $f_result = array();
01512 foreach($members as $user)
01513 {
01514 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01515 {
01516 continue;
01517 }
01518
01519 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01520 $f_result[$counter][] = $tmp_obj->getLogin();
01521 $f_result[$counter][] = $tmp_obj->getFirstname();
01522 $f_result[$counter][] = $tmp_obj->getLastname();
01523
01524 unset($tmp_obj);
01525 ++$counter;
01526 }
01527 $this->__showSearchUserTable($f_result,"listUsersRole");
01528
01529 return true;
01530 }
01531
01532 function listUsersGroupObject()
01533 {
01534 global $rbacsystem,$rbacreview,$tree;
01535
01536 $_SESSION["role_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["role_group"];
01537
01538 if(!is_array($_POST["group"]))
01539 {
01540 sendInfo($this->lng->txt("role_no_groups_selected"));
01541 $this->searchObject();
01542
01543 return false;
01544 }
01545
01546 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.role_usr_selection.html");
01547 $this->__showButton("searchUserForm",$this->lng->txt("role_new_search"));
01548
01549
01550 $members = array();
01551 foreach($_POST["group"] as $group_id)
01552 {
01553 if (!$tree->isInTree($group_id))
01554 {
01555 continue;
01556 }
01557 if (!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
01558 {
01559 continue;
01560 }
01561
01562 $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
01563
01564 unset($tmp_obj);
01565 }
01566
01567 $members = array_unique($members);
01568
01569
01570 $counter = 0;
01571 $f_result = array();
01572 foreach($members as $user)
01573 {
01574 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01575 {
01576 continue;
01577 }
01578 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01579 $f_result[$counter][] = $tmp_obj->getLogin();
01580 $f_result[$counter][] = $tmp_obj->getFirstname();
01581 $f_result[$counter][] = $tmp_obj->getLastname();
01582
01583 unset($tmp_obj);
01584 ++$counter;
01585 }
01586 $this->__showSearchUserTable($f_result,"listUsersGroup");
01587
01588 return true;
01589 }
01590 }
01591 ?>