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 ilObjUserFolderGUI extends ilObjectGUI
00038 {
00039 var $ctrl;
00040
00045 function ilObjUserFolderGUI($a_data,$a_id,$a_call_by_reference, $a_prepare_output = true)
00046 {
00047 global $ilCtrl;
00048
00049 define('USER_FOLDER_ID',7);
00050
00051 $this->ctrl =& $ilCtrl;
00052
00053 $this->type = "usrf";
00054
00055 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00056 }
00057
00058 function &executeCommand()
00059 {
00060 global $rbacsystem;
00061
00062 $next_class = $this->ctrl->getNextClass($this);
00063 $cmd = $this->ctrl->getCmd();
00064 switch($next_class)
00065 {
00066 default:
00067 if(!$cmd)
00068 {
00069 $cmd = "view";
00070 }
00071 $cmd .= "Object";
00072 $this->$cmd();
00073
00074 break;
00075 }
00076 return true;
00077 }
00078
00084 function viewObject()
00085 {
00086 global $rbacsystem;
00087
00088 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00089 {
00090 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00091 }
00092
00093
00094 $this->data = array();
00095 $this->data["data"] = array();
00096 $this->data["ctrl"] = array();
00097
00098 $this->data["cols"] = array("", "login", "firstname", "lastname", "email");
00099
00100 $usr_data = ilObjUser::_getAllUserData(array("login","firstname","lastname","email"));
00101
00102 foreach ($usr_data as $val)
00103 {
00104 if ($val["usr_id"] == ANONYMOUS_USER_ID)
00105 {
00106 continue;
00107 }
00108
00109
00110 $this->data["data"][] = array(
00111 "login" => $val["login"],
00112 "firstname" => $val["firstname"],
00113 "lastname" => $val["lastname"],
00114 "email" => $val["email"],
00115 "obj_id" => $val["usr_id"]
00116 );
00117 }
00118
00119 $this->maxcount = count($this->data["data"]);
00120
00121 if ($_GET["sort_by"] == "name")
00122 {
00123 $_GET["sort_by"] = "login";
00124 }
00125
00126
00127 $this->data["data"] = ilUtil::sortArray($this->data["data"],$_GET["sort_by"],$_GET["sort_order"]);
00128 $this->data["data"] = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00129
00130
00131 foreach ($this->data["data"] as $key => $val)
00132 {
00133 $this->data["ctrl"][$key] = array(
00134 "ref_id" => $this->id,
00135 "obj_id" => $val["obj_id"]
00136 );
00137 $tmp[] = $val["obj_id"];
00138 unset($this->data["data"][$key]["obj_id"]);
00139 }
00140
00141
00142 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00143
00144
00145 $this->tpl->setCurrentBlock("btn_cell");
00146 $this->tpl->setVariable("BTN_LINK","adm_object.php?ref_id=".$this->ref_id.$obj_str."&cmd=searchUserForm");
00147 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("search_user"));
00148 $this->tpl->parseCurrentBlock();
00149
00150 if (AUTH_CURRENT == AUTH_LOCAL)
00151 {
00152 $this->tpl->setCurrentBlock("btn_cell");
00153 $this->tpl->setVariable("BTN_LINK", "adm_object.php?ref_id=".$this->ref_id.$obj_str."&cmd=importUserForm");
00154 $this->tpl->setVariable("BTN_TXT", $this->lng->txt("import_users"));
00155 $this->tpl->parseCurrentBlock();
00156 }
00157
00158 $this->displayList();
00159 }
00160
00161
00167 function displayList()
00168 {
00169 include_once "./classes/class.ilTableGUI.php";
00170
00171
00172 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
00173
00174 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
00175
00176 $num = 0;
00177
00178 $obj_str = ($this->call_by_reference) ? "" : "&obj_id=".$this->obj_id;
00179 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$this->ref_id."$obj_str&cmd=gateway");
00180
00181
00182 $tbl = new ilTableGUI();
00183
00184
00185 $tbl->setTitle($this->object->getTitle(),"icon_".$this->object->getType()."_b.gif",
00186 $this->lng->txt("obj_".$this->object->getType()));
00187
00188
00189 foreach ($this->data["cols"] as $val)
00190 {
00191 $header_names[] = $this->lng->txt($val);
00192 }
00193
00194 $tbl->setHeaderNames($header_names);
00195
00196 $header_params = array("ref_id" => $this->ref_id);
00197 $tbl->setHeaderVars($this->data["cols"],$header_params);
00198 $tbl->setColumnWidth(array("","25%","25$%","25%","25%"));
00199
00200
00201
00202
00203 $tbl->setOrderColumn($_GET["sort_by"]);
00204 $tbl->setOrderDirection($_GET["sort_order"]);
00205 $tbl->setLimit($_GET["limit"]);
00206 $tbl->setOffset($_GET["offset"]);
00207 $tbl->setMaxCount($this->maxcount);
00208
00209
00210 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00211 #$tbl->disable("footer");
00212
00213
00214 $tbl->render();
00215
00216 if (is_array($this->data["data"][0]))
00217 {
00218
00219 for ($i=0; $i < count($this->data["data"]); $i++)
00220 {
00221 $data = $this->data["data"][$i];
00222 $ctrl = $this->data["ctrl"][$i];
00223
00224
00225 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
00226
00227 $this->tpl->setCurrentBlock("checkbox");
00228 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
00229
00230 $this->tpl->setVariable("CSS_ROW", $css_row);
00231 $this->tpl->parseCurrentBlock();
00232
00233 $this->tpl->setCurrentBlock("table_cell");
00234 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
00235 $this->tpl->parseCurrentBlock();
00236
00237 foreach ($data as $key => $val)
00238 {
00239
00240 $link = "adm_object.php?ref_id=7&obj_id=".$ctrl["obj_id"];
00241
00242
00243 $this->ids[] = $ctrl["obj_id"];
00244
00245 if ($key == "login")
00246 {
00247 $this->tpl->setCurrentBlock("begin_link");
00248 $this->tpl->setVariable("LINK_TARGET", $link);
00249 $this->tpl->parseCurrentBlock();
00250 $this->tpl->touchBlock("end_link");
00251 }
00252
00253 $this->tpl->setCurrentBlock("text");
00254 $this->tpl->setVariable("TEXT_CONTENT", $val);
00255 $this->tpl->parseCurrentBlock();
00256 $this->tpl->setCurrentBlock("table_cell");
00257 $this->tpl->parseCurrentBlock();
00258 }
00259
00260 $this->tpl->setCurrentBlock("tbl_content");
00261 $this->tpl->setVariable("CSS_ROW", $css_row);
00262 $this->tpl->parseCurrentBlock();
00263 }
00264 }
00265
00266 if (AUTH_CURRENT != AUTH_LOCAL)
00267 {
00268 $this->showActions(false);
00269 }
00270 else
00271 {
00272 $this->showActions(true);
00273 }
00274 }
00275
00282 function showActions($with_subobjects = false)
00283 {
00284 global $rbacsystem;
00285
00286 $operations = array();
00287
00288 if ($this->actions == "")
00289 {
00290 $d = $this->objDefinition->getActions($_GET["type"]);
00291 }
00292 else
00293 {
00294 $d = $this->actions;
00295 }
00296
00297 foreach ($d as $row)
00298 {
00299 if ($rbacsystem->checkAccess($row["name"],$this->object->getRefId()))
00300 {
00301 $operations[] = $row;
00302 }
00303 }
00304
00305 if (count($operations) > 0)
00306 {
00307 foreach ($operations as $val)
00308 {
00309 $this->tpl->setCurrentBlock("tbl_action_btn");
00310 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00311 $this->tpl->setVariable("BTN_NAME", $val["name"]);
00312 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt($val["lng"]));
00313 $this->tpl->parseCurrentBlock();
00314 }
00315 }
00316
00317 if ($with_subobjects === true)
00318 {
00319 $subobjs = $this->showPossibleSubObjects();
00320 }
00321
00322 if ((count($operations) > 0) or $subobjs === true)
00323 {
00324
00325 if (!empty($this->ids))
00326 {
00327
00328 $this->tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00329 $this->tpl->setVariable("JS_VARNAME","id");
00330 $this->tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($this->ids));
00331 $this->tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00332 $this->tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00333 $this->tpl->parseCurrentBlock();
00334 }
00335
00336 $this->tpl->setCurrentBlock("tbl_action_row");
00337 $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));
00338 $this->tpl->parseCurrentBlock();
00339 }
00340 }
00341
00348 function showPossibleSubObjects()
00349 {
00350 global $rbacsystem;
00351
00352 $d = $this->objDefinition->getCreatableSubObjects($this->object->getType());
00353
00354 if (!$rbacsystem->checkAccess('create_user',$this->object->getRefId()))
00355 {
00356 unset($d["usr"]);
00357 }
00358
00359 if (count($d) > 0)
00360 {
00361 foreach ($d as $row)
00362 {
00363 $count = 0;
00364 if ($row["max"] > 0)
00365 {
00366
00367 for ($i=0; $i<count($this->data["ctrl"]); $i++)
00368 {
00369 if ($this->data["ctrl"][$i]["type"] == $row["name"])
00370 {
00371 $count++;
00372 }
00373 }
00374 }
00375 if ($row["max"] == "" || $count < $row["max"])
00376 {
00377 $subobj[] = $row["name"];
00378 }
00379 }
00380 }
00381
00382 if (is_array($subobj))
00383 {
00384
00385 $opts = ilUtil::formSelect(12,"new_type",$subobj);
00386 $this->tpl->setCurrentBlock("add_object");
00387 $this->tpl->setVariable("SELECT_OBJTYPE", $opts);
00388 $this->tpl->setVariable("BTN_NAME", "create");
00389 $this->tpl->setVariable("TXT_ADD", $this->lng->txt("add"));
00390 $this->tpl->parseCurrentBlock();
00391
00392 return true;
00393 }
00394
00395 return false;
00396 }
00397
00403 function confirmedDeleteObject()
00404 {
00405 global $rbacsystem;
00406
00407
00408 if (!$rbacsystem->checkAccess('delete',$this->object->getRefId()))
00409 {
00410 $this->ilias->raiseError($this->lng->txt("msg_no_perm_delete"),$this->ilias->error_obj->WARNING);
00411 }
00412
00413 if (in_array($_SESSION["AccountId"],$_SESSION["saved_post"]))
00414 {
00415 $this->ilias->raiseError($this->lng->txt("msg_no_delete_yourself"),$this->ilias->error_obj->WARNING);
00416 }
00417
00418
00419 foreach ($_SESSION["saved_post"] as $id)
00420 {
00421
00422 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00423 $obj->delete();
00424 }
00425
00426
00427 sendInfo($this->lng->txt("user_deleted"),true);
00428
00429 ilUtil::redirect("adm_object.php?ref_id=".$_GET["ref_id"]);
00430 }
00431
00435 function deleteObject()
00436 {
00437 if(!isset($_POST["id"]))
00438 {
00439 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
00440 }
00441
00442 $_SESSION["saved_post"] = $_POST["id"];
00443
00444 unset($this->data);
00445 $this->data["cols"] = array("type", "title", "description", "last_change");
00446
00447 foreach($_POST["id"] as $id)
00448 {
00449 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
00450
00451 $this->data["data"]["$id"] = array(
00452 "type" => $obj_data->getType(),
00453 "title" => $obj_data->getTitle(),
00454 "desc" => $obj_data->getDescription(),
00455 "last_update" => $obj_data->getLastUpdateDate());
00456 }
00457
00458 $this->data["buttons"] = array( "cancelDelete" => $this->lng->txt("cancel"),
00459 "confirmedDelete" => $this->lng->txt("confirm"));
00460
00461 $this->getTemplateFile("confirm");
00462
00463 sendInfo($this->lng->txt("info_delete_sure"));
00464
00465 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=gateway");
00466
00467
00468 foreach ($this->data["cols"] as $key)
00469 {
00470 $this->tpl->setCurrentBlock("table_header");
00471 $this->tpl->setVariable("TEXT",$this->lng->txt($key));
00472 $this->tpl->parseCurrentBlock();
00473 }
00474
00475
00476
00477 $counter = 0;
00478
00479 foreach($this->data["data"] as $key => $value)
00480 {
00481
00482 foreach($value as $key => $cell_data)
00483 {
00484 $this->tpl->setCurrentBlock("table_cell");
00485
00486
00487 if($key == "type")
00488 {
00489 $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
00490 }
00491 else
00492 {
00493 $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
00494 }
00495 $this->tpl->parseCurrentBlock();
00496 }
00497
00498 $this->tpl->setCurrentBlock("table_row");
00499 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00500 $this->tpl->parseCurrentBlock();
00501
00502 }
00503
00504
00505
00506 foreach($this->data["buttons"] as $name => $value)
00507 {
00508 $this->tpl->setCurrentBlock("operation_btn");
00509 $this->tpl->setVariable("BTN_NAME",$name);
00510 $this->tpl->setVariable("BTN_VALUE",$value);
00511 $this->tpl->parseCurrentBlock();
00512 }
00513 }
00514
00520 function searchUserFormObject ()
00521 {
00522 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_search_form.html");
00523
00524 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$this->ref_id."&cmd=gateway");
00525 $this->tpl->setVariable("USERNAME_CHECKED", " checked=\"checked\"");
00526 $this->tpl->setVariable("FIRSTNAME_CHECKED", " checked=\"checked\"");
00527 $this->tpl->setVariable("LASTNAME_CHECKED", " checked=\"checked\"");
00528 $this->tpl->setVariable("EMAIL_CHECKED", " checked=\"checked\"");
00529 $this->tpl->setVariable("ACTIVE_CHECKED", " checked=\"checked\"");
00530 $this->tpl->setVariable("INACTIVE_CHECKED", " checked=\"checked\"");
00531 $this->tpl->setVariable("TXT_SEARCH_USER",$this->lng->txt("search_user"));
00532 $this->tpl->setVariable("TXT_SEARCH_IN",$this->lng->txt("search_in"));
00533 $this->tpl->setVariable("TXT_SEARCH_USERNAME",$this->lng->txt("username"));
00534 $this->tpl->setVariable("TXT_SEARCH_FIRSTNAME",$this->lng->txt("firstname"));
00535 $this->tpl->setVariable("TXT_SEARCH_LASTNAME",$this->lng->txt("lastname"));
00536 $this->tpl->setVariable("TXT_SEARCH_EMAIL",$this->lng->txt("email"));
00537 $this->tpl->setVariable("TXT_SEARCH_ACTIVE",$this->lng->txt("search_active"));
00538 $this->tpl->setVariable("TXT_SEARCH_INACTIVE",$this->lng->txt("search_inactive"));
00539 $this->tpl->setVariable("BUTTON_SEARCH",$this->lng->txt("search"));
00540 $this->tpl->setVariable("BUTTON_CANCEL",$this->lng->txt("cancel"));
00541 $this->tpl->setVariable("TXT_SEARCH_NOTE",$this->lng->txt("search_note"));
00542 }
00543
00544 function searchCancelledObject()
00545 {
00546 sendInfo($this->lng->txt("action_aborted"),true);
00547
00548 header("Location: adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=gateway");
00549 exit();
00550 }
00551
00552 function searchUserObject()
00553 {
00554 global $rbacreview;
00555
00556 $obj_str = "&obj_id=".$this->obj_id;
00557
00558 $_POST["search_string"] = $_POST["search_string"] ? $_POST["search_string"] : urldecode($_GET["search_string"]);
00559 $_POST["search_fields"] = $_POST["search_fields"] ? $_POST["search_fields"] : explode(",",urldecode($_GET["search_fields"]));
00560
00561 if (empty($_POST["search_string"]))
00562 {
00563 $_POST["search_string"] = "%";
00564 }
00565
00566 if (empty($_POST["search_fields"]))
00567 {
00568 $_POST["search_fields"] = array();
00569 }
00570
00571 if (count($search_result = ilObjUser::searchUsers($_POST["search_string"])) == 0)
00572 {
00573 sendInfo($this->lng->txt("msg_no_search_result")." ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'",true);
00574 header("Location: adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=searchUserForm");
00575 exit();
00576 }
00577
00578 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00579
00580
00581 $this->tpl->setCurrentBlock("btn_cell");
00582 $this->tpl->setVariable("BTN_LINK","adm_object.php?ref_id=".$this->ref_id."&cmd=searchUserForm");
00583 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("search_new"));
00584 $this->tpl->parseCurrentBlock();
00585
00586 $this->data["cols"] = array("", "login", "firstname", "lastname", "email", "active");
00587
00588 if (in_array("active", $_POST["search_fields"]))
00589 {
00590 $searchActive = true;
00591 }
00592 if (in_array("inactive", $_POST["search_fields"]))
00593 {
00594 $searchInactive = true;
00595 }
00596
00597 foreach ($search_result as $key => $val)
00598 {
00599 $val["active_text"] = $this->lng->txt("inactive");
00600 if ($val["active"])
00601 {
00602 $val["active_text"] = $this->lng->txt("active");
00603 }
00604
00605
00606 $searchStringToLower = strtolower($_POST["search_string"]);
00607 $displaySearchResult = false;
00608 if (in_array("username", $_POST["search_fields"]))
00609 if (strpos(strtolower($val["login"]), strtolower($_POST["search_string"])) !== false)
00610 $displaySearchResult = true;
00611 if (in_array("firstname", $_POST["search_fields"]))
00612 if (strpos(strtolower($val["firstname"]), strtolower($_POST["search_string"])) !== false)
00613 $displaySearchResult = true;
00614 if (in_array("lastname", $_POST["search_fields"]))
00615 if (strpos(strtolower($val["lastname"]), strtolower($_POST["search_string"])) !== false)
00616 $displaySearchResult = true;
00617 if (in_array("email", $_POST["search_fields"]))
00618 if (strpos(strtolower($val["email"]), strtolower($_POST["search_string"])) !== false)
00619 $displaySearchResult = true;
00620 if (($val["active"] == 1) && ($searchActive == true) ||
00621 ($val["active"] == 0) && ($searchInactive == true))
00622 {
00623 if ((strcmp($_POST["search_string"], "%") == 0) || $displaySearchResult)
00624 {
00625
00626 $this->data["data"][] = array(
00627 "login" => $val["login"],
00628 "firstname" => $val["firstname"],
00629 "lastname" => $val["lastname"],
00630 "email" => $val["email"],
00631 "active" => $val["active_text"],
00632 "obj_id" => $val["usr_id"]
00633 );
00634 }
00635 }
00636 }
00637 if (count($this->data["data"]) == 0)
00638 {
00639 sendInfo($this->lng->txt("msg_no_search_result")." ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'",true);
00640
00641 header("Location: adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=searchUserForm");
00642 exit();
00643 }
00644
00645 $this->maxcount = count($this->data["data"]);
00646
00647
00648 if ($_GET["sort_by"] == "name")
00649 {
00650 $_GET["sort_by"] = "login";
00651 }
00652
00653
00654 $this->data["data"] = ilUtil::sortArray($this->data["data"],$_GET["sort_by"],$_GET["sort_order"]);
00655 $this->data["data"] = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00656
00657
00658 foreach ($this->data["data"] as $key => $val)
00659 {
00660 $this->data["ctrl"][$key] = array(
00661 "ref_id" => $this->id,
00662 "obj_id" => $val["obj_id"]
00663 );
00664 $tmp[] = $val["obj_id"];
00665 unset($this->data["data"][$key]["obj_id"]);
00666 }
00667
00668
00669 $_SESSION["user_list"] = $tmp;
00670
00671
00672 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
00673
00674 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
00675
00676 $num = 0;
00677
00678 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$this->ref_id."&cmd=gateway&sort_by=name&sort_order=".$_GET["sort_order"]."&offset=".$_GET["offset"]);
00679
00680
00681 include_once "./classes/class.ilTableGUI.php";
00682 $tbl = new ilTableGUI();
00683
00684
00685 $tbl->setTitle($this->lng->txt("search_result"),"icon_".$this->object->getType()."_b.gif",$this->lng->txt("obj_".$this->object->getType()));
00686 $tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
00687
00688 foreach ($this->data["cols"] as $val)
00689 {
00690 $header_names[] = $this->lng->txt($val);
00691 }
00692
00693 $tbl->setHeaderNames($header_names);
00694
00695 $header_params = array(
00696 "ref_id" => $this->ref_id,
00697 "cmd" => "searchUser",
00698 "search_string" => urlencode($_POST["search_string"]),
00699 "search_fields" => urlencode(implode(",",$_POST["search_fields"]))
00700 );
00701
00702 $tbl->setHeaderVars($this->data["cols"],$header_params);
00703 $tbl->setColumnWidth(array("","25%","25$%","25%","25%"));
00704
00705
00706 $tbl->enable("hits");
00707 $tbl->setOrderColumn($_GET["sort_by"]);
00708 $tbl->setOrderDirection($_GET["sort_order"]);
00709 $tbl->setLimit($_GET["limit"]);
00710 $tbl->setOffset($_GET["offset"]);
00711 $tbl->setMaxCount($this->maxcount);
00712
00713 $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));
00714
00715
00716 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00717
00718
00719 $tbl->render();
00720
00721 if (is_array($this->data["data"][0]))
00722 {
00723
00724 for ($i=0; $i < count($this->data["data"]); $i++)
00725 {
00726 $data = $this->data["data"][$i];
00727 $ctrl = $this->data["ctrl"][$i];
00728
00729
00730 $this->ids[] = $ctrl["obj_id"];
00731
00732
00733 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
00734
00735 $this->tpl->setCurrentBlock("checkbox");
00736 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
00737
00738 $this->tpl->setVariable("CSS_ROW", $css_row);
00739 $this->tpl->parseCurrentBlock();
00740
00741 $this->tpl->setCurrentBlock("table_cell");
00742 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
00743 $this->tpl->parseCurrentBlock();
00744
00745 foreach ($data as $key => $val)
00746 {
00747
00748 $link = "adm_object.php?ref_id=7&obj_id=".$ctrl["obj_id"];
00749
00750 if ($key == "login")
00751 {
00752 $this->tpl->setCurrentBlock("begin_link");
00753 $this->tpl->setVariable("LINK_TARGET", $link);
00754 $this->tpl->parseCurrentBlock();
00755 $this->tpl->touchBlock("end_link");
00756 }
00757
00758 $this->tpl->setCurrentBlock("text");
00759 $this->tpl->setVariable("TEXT_CONTENT", $val);
00760 $this->tpl->parseCurrentBlock();
00761 $this->tpl->setCurrentBlock("table_cell");
00762 $this->tpl->parseCurrentBlock();
00763 }
00764
00765 $this->tpl->setCurrentBlock("tbl_content");
00766 $this->tpl->setVariable("CSS_ROW", $css_row);
00767 $this->tpl->parseCurrentBlock();
00768 }
00769
00770 $this->showActions(true);
00771 }
00772 }
00773
00777 function importUserFormObject ()
00778 {
00779 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_form.html");
00780
00781
00782 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormaction($this));
00783
00784 $this->tpl->setVariable("TXT_IMPORT_USERS", $this->lng->txt("import_users"));
00785 $this->tpl->setVariable("TXT_IMPORT_FILE", $this->lng->txt("import_file"));
00786 $this->tpl->setVariable("TXT_IMPORT_ROOT_USER", $this->lng->txt("import_root_user"));
00787
00788 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("upload"));
00789 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
00790 }
00791
00792
00798 function importCancelledObject()
00799 {
00800
00801 $import_dir = $this->getImportDir();
00802 if (@is_dir($import_dir))
00803 {
00804 ilUtil::delDir($import_dir);
00805 }
00806
00807 sendInfo($this->lng->txt("msg_cancel"),true);
00808
00809 if($this->ctrl->getTargetScript() == 'adm_object.php')
00810 {
00811 $return_location = $_GET["cmd_return_location"];
00812 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00813 }
00814 else
00815 {
00816 $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
00817 }
00818 }
00819
00823 function getImportDir()
00824 {
00825
00826
00827
00828 global $ilUser;
00829 $importDir = ilUtil::getDataDir().'/user_import/usr_'.$ilUser->getId().'_'.session_id();
00830 ilUtil::makeDirParents($importDir);
00831 return $importDir;
00832 }
00833
00837 function importUserRoleAssignmentObject ()
00838 {
00839 include_once './classes/class.ilObjRole.php';
00840 include_once './classes/class.ilUserImportParser.php';
00841
00842 global $rbacreview, $rbacsystem, $tree, $lng;
00843
00844
00845 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_roles.html");
00846
00847 $import_dir = $this->getImportDir();
00848
00849
00850 if (@is_dir($import_dir))
00851 {
00852 ilUtil::delDir($import_dir);
00853 }
00854 ilUtil::makeDir($import_dir);
00855
00856
00857 $file_name = $_FILES["importFile"]["name"];
00858 $parts = pathinfo($file_name);
00859 $full_path = $import_dir."/".$file_name;
00860
00861
00862 if (!is_file($_FILES["importFile"]["tmp_name"]))
00863 {
00864 ilUtil::delDir($import_dir);
00865 $this->ilias->raiseError($this->lng->txt("no_import_file_found")
00866 , $this->ilias->error_obj->MESSAGE);
00867 }
00868 ilUtil::moveUploadedFile($_FILES["importFile"]["tmp_name"],
00869 $_FILES["importFile"]["name"], $full_path);
00870
00871
00872 if (strtolower($parts["extension"]) == "zip")
00873 {
00874
00875 ilUtil::unzip($full_path);
00876
00877 $xml_file = null;
00878 $file_list = ilUtil::getDir($import_dir);
00879 foreach ($file_list as $a_file)
00880 {
00881 if (substr($a_file['entry'],-4) == '.xml')
00882 {
00883 $xml_file = $import_dir."/".$a_file['entry'];
00884 break;
00885 }
00886 }
00887 if (is_null($xml_file))
00888 {
00889 $subdir = basename($parts["basename"],".".$parts["extension"]);
00890 $xml_file = $import_dir."/".$subdir."/".$subdir.".xml";
00891 }
00892 }
00893
00894 else
00895 {
00896 $xml_file = $full_path;
00897 }
00898
00899
00900 if (!is_file($xml_file))
00901 {
00902 ilUtil::delDir($import_dir);
00903 $this->ilias->raiseError($this->lng->txt("no_xml_file_found_in_zip")
00904 ." ".$subdir."/".$subdir.".xml", $this->ilias->error_obj->MESSAGE);
00905 }
00906
00907 require_once("classes/class.ilUserImportParser.php");
00908
00909
00910
00911 $importParser = new ilUserImportParser($xml_file, IL_VERIFY);
00912 $importParser->startParsing();
00913
00914 switch ($importParser->getErrorLevel())
00915 {
00916 case IL_IMPORT_SUCCESS :
00917 break;
00918 case IL_IMPORT_WARNING :
00919 $this->tpl->setVariable("IMPORT_LOG", $importParser->getProtocolAsHTML($lng->txt("verification_warning_log")));
00920 break;
00921 case IL_IMPORT_FAILURE :
00922 ilUtil::delDir($import_dir);
00923 $this->ilias->raiseError(
00924 $lng->txt("verification_failed").$importParser->getProtocolAsHTML($lng->txt("verification_failure_log")),
00925 $this->ilias->error_obj->MESSAGE
00926 );
00927 return;
00928 }
00929
00930
00931
00932 $this->tpl->setCurrentBlock("role_selection_form");
00933 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00934 $this->tpl->setVariable("TXT_IMPORT_USERS", $this->lng->txt("import_users"));
00935 $this->tpl->setVariable("TXT_IMPORT_FILE", $this->lng->txt("import_file"));
00936 $this->tpl->setVariable("IMPORT_FILE", $file_name);
00937 $this->tpl->setVariable("TXT_USER_ELEMENT_COUNT", $this->lng->txt("num_users"));
00938 $this->tpl->setVariable("USER_ELEMENT_COUNT", $importParser->getUserCount());
00939 $this->tpl->setVariable("TXT_ROLE_ASSIGNMENT", $this->lng->txt("role_assignment"));
00940 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("import"));
00941 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
00942 $this->tpl->setVariable("XML_FILE_NAME", $xml_file);
00943
00944
00945 $importParser = new ilUserImportParser($xml_file, IL_EXTRACT_ROLES);
00946 $importParser->startParsing();
00947 $roles = $importParser->getCollectedRoles();
00948
00949
00950 $all_gl_roles = $rbacreview->getRoleListByObject(ROLE_FOLDER_ID);
00951 $gl_roles = array();
00952 foreach ($all_gl_roles as $obj_data)
00953 {
00954
00955 if($this->object->getRefId() != USER_FOLDER_ID)
00956 {
00957 if(!ilObjRole::_getAssignUsersStatus($obj_data['obj_id']))
00958 {
00959 continue;
00960 }
00961 }
00962
00963 if ($obj_data["obj_id"] != ANONYMOUS_ROLE_ID)
00964 {
00965
00966 if ($obj_data["obj_id"] != SYSTEM_ROLE_ID or in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]))
00967 {
00968 $gl_roles[$obj_data["obj_id"]] = $obj_data["title"];
00969 }
00970 }
00971 }
00972
00973
00974 $got_globals = false;
00975 foreach($roles as $role_id => $role)
00976 {
00977 if ($role["type"] == "Global")
00978 {
00979 if (! $got_globals)
00980 {
00981 $got_globals = true;
00982
00983 $this->tpl->setCurrentBlock("global_role_section");
00984 $this->tpl->setVariable("TXT_GLOBAL_ROLES_IMPORT", $this->lng->txt("roles_of_import_global"));
00985 $this->tpl->setVariable("TXT_GLOBAL_ROLES", $this->lng->txt("assign_global_role"));
00986 }
00987
00988
00989 $pre_select = array_search($role[name], $gl_roles);
00990 if (! $pre_select)
00991 {
00992 switch($role["name"])
00993 {
00994 case "Administrator":
00995 $pre_select = array_search("Administrator", $gl_roles);
00996 break;
00997
00998 case "Autor":
00999 $pre_select = array_search("User", $gl_roles);
01000 break;
01001
01002 case "Lerner":
01003 $pre_select = array_search("User", $gl_roles);
01004 break;
01005
01006 case "Gast":
01007 $pre_select = array_search("Guest", $gl_roles);
01008 break;
01009
01010 default:
01011 $pre_select = array_search("User", $gl_roles);
01012 break;
01013 }
01014 }
01015 $this->tpl->setCurrentBlock("global_role");
01016 $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $gl_roles, false, true);
01017 $this->tpl->setVariable("TXT_IMPORT_GLOBAL_ROLE", $role["name"]." [".$role_id."]");
01018 $this->tpl->setVariable("SELECT_GLOBAL_ROLE", $role_select);
01019 $this->tpl->parseCurrentBlock();
01020 }
01021 }
01022
01023
01024 $got_locals = false;
01025 foreach($roles as $role_id => $role)
01026 {
01027 if ($role["type"] == "Local")
01028 {
01029 $got_locals = true;
01030 break;
01031 }
01032 }
01033
01034 if ($got_locals)
01035 {
01036 $this->tpl->setCurrentBlock("local_role_section");
01037 $this->tpl->setVariable("TXT_LOCAL_ROLES_IMPORT", $this->lng->txt("roles_of_import_local"));
01038 $this->tpl->setVariable("TXT_LOCAL_ROLES", $this->lng->txt("assign_local_role"));
01039
01040
01041
01042 $loc_roles = $rbacreview->getAssignableRoles();
01043 $l_roles = array();
01044 $l_roles_searcharray = array();
01045 foreach ($loc_roles as $key => $loc_role)
01046 {
01047
01048 $rolf = $rbacreview->getFoldersAssignedToRole($loc_role["obj_id"],true);
01049
01050
01051
01052
01053
01054 if (!$rbacreview->isDeleted($rolf[0])
01055 && $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0]))
01056 && $rolf[0] != ROLE_FOLDER_ID
01057 )
01058 {
01059
01060
01061
01062
01063
01064
01065
01066
01067 $isInSubtree = $this->object->getRefId() == USER_FOLDER_ID;
01068
01069 $path = "";
01070 if ($this->tree->isInTree($rolf[0]))
01071 {
01072
01073
01074 $tmpPath = $this->tree->getPathFull($rolf[0]);
01075 for ($i = 1, $n = count($tmpPath) - 1; $i < $n; $i++)
01076 {
01077 if ($i > 1)
01078 {
01079 $path = $path.' > ';
01080 }
01081 if ($i < 3 || $i > $n - 3)
01082 {
01083 $path = $path.$tmpPath[$i]['title'];
01084 }
01085 else if ($i == 3 || $i == $n - 3)
01086 {
01087 $path = $path.'...';
01088 }
01089
01090 $isInSubtree |= $tmpPath[$i]['obj_id'] == $this->object->getId();
01091 }
01092 }
01093 else
01094 {
01095 $path = "<b>Rolefolder ".$rolf[0]." not found in tree! (Role ".$loc_role["obj_id"].")</b>";
01096 }
01097
01098 if ($loc_role["role_type"] != "Global" && $isInSubtree)
01099 {
01100 $l_roles[$loc_role['obj_id']] = $loc_role["title"]." ($path)";
01101 $l_roles_searcharray[$loc_role['obj_id']] = $loc_role["title"];
01102 }
01103 }
01104 }
01105
01106 $l_roles[""] = "";
01107 natsort($l_roles);
01108 $l_roles[""] = $this->lng->txt("usrimport_ignore_role");
01109
01110 foreach($roles as $role_id => $role)
01111 {
01112 if ($role["type"] == "Local")
01113 {
01114 $this->tpl->setCurrentBlock("local_role");
01115 $this->tpl->setVariable("TXT_IMPORT_LOCAL_ROLE", $role["name"]." [".$role_id."]");
01116 $pre_select = array_search($role_id, $l_roles_searcharray);
01117 if (!($pre_select !== false))
01118 {
01119 $pre_select = array_search($role['name'], $l_roles_searcharray);
01120 }
01121 $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $l_roles, false, true);
01122 $this->tpl->setVariable("SELECT_LOCAL_ROLE", $role_select);
01123 $this->tpl->parseCurrentBlock();
01124 }
01125 }
01126 }
01127
01128
01129 $this->tpl->setVariable("TXT_CONFLICT_HANDLING", $lng->txt("conflict_handling"));
01130 $handlers = array(
01131 IL_IGNORE_ON_CONFLICT => "ignore_on_conflict",
01132 IL_UPDATE_ON_CONFLICT => "update_on_conflict"
01133 );
01134 $this->tpl->setVariable("TXT_CONFLICT_HANDLING_INFO", str_replace('\n','<br>',$this->lng->txt("usrimport_conflict_handling_info")));
01135 $this->tpl->setVariable("TXT_CONFLICT_CHOICE", $lng->txt("conflict_handling"));
01136 $this->tpl->setVariable("SELECT_CONFLICT", ilUtil::formSelect(IL_IGNORE_ON_CONFLICT, "conflict_handling_choice", $handlers, false, false));
01137 }
01138
01142 function importUsersObject()
01143 {
01144 include_once './classes/class.ilObjRole.php';
01145 include_once './classes/class.ilUserImportParser.php';
01146
01147 global $rbacreview, $rbacsystem, $tree, $lng;
01148
01149 switch ($_POST["conflict_handling_choice"])
01150 {
01151 case "update_on_conflict" :
01152 $rule = IL_UPDATE_ON_CONFLICT;
01153 break;
01154 case "ignore_on_conflict" :
01155 default :
01156 $rule = IL_IGNORE_ON_CONFLICT;
01157 break;
01158 }
01159 $importParser = new ilUserImportParser($_POST["xml_file"], IL_USER_IMPORT, $rule);
01160 $importParser->setFolderId($this->object->getRefId());
01161 $import_dir = $this->getImportDir();
01162
01163
01164
01165
01166 if ($_POST["role_assign"])
01167 {
01168 $global_roles = $rbacreview->getGlobalRoles();
01169 foreach ($_POST["role_assign"] as $role_id)
01170 {
01171 if ($role_id != "")
01172 {
01173 if (in_array($role_id, $global_roles))
01174 {
01175 if ($role_id == SYSTEM_ROLE_ID && ! in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
01176 || ($this->object->getRefId() != USER_FOLDER_ID
01177 && ! ilObjRole::_getAssignUsersStatus($role_id))
01178 )
01179 {
01180 ilUtil::delDir($import_dir);
01181 $this->ilias->raiseError($this->lng->txt("usrimport_with_specified_role_not_permitted"),
01182 $this->ilias->error_obj->MESSAGE);
01183 }
01184 }
01185 else
01186 {
01187 $rolf = $rbacreview->getFoldersAssignedToRole($role_id,true);
01188 if ($rbacreview->isDeleted($rolf[0])
01189 || ! $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0])))
01190 {
01191 ilUtil::delDir($import_dir);
01192 $this->ilias->raiseError($this->lng->txt("usrimport_with_specified_role_not_permitted"),
01193 $this->ilias->error_obj->MESSAGE);
01194 return;
01195 }
01196 }
01197 }
01198 }
01199 }
01200
01201 $importParser->setRoleAssignment($_POST["role_assign"]);
01202 $importParser->startParsing();
01203
01204
01205 ilUtil::delDir($import_dir);
01206
01207 switch ($importParser->getErrorLevel())
01208 {
01209 case IL_IMPORT_SUCCESS :
01210 sendInfo($this->lng->txt("user_imported"), true);
01211 break;
01212 case IL_IMPORT_WARNING :
01213 sendInfo($this->lng->txt("user_imported_with_warnings").$importParser->getProtocolAsHTML($lng->txt("import_warning_log")), true);
01214 break;
01215 case IL_IMPORT_FAILURE :
01216 $this->ilias->raiseError(
01217 $this->lng->txt("user_import_failed")
01218 .$importParser->getProtocolAsHTML($lng->txt("import_failure_log")),
01219 $this->ilias->error_obj->MESSAGE
01220 );
01221 break;
01222 }
01223
01224 if($this->ctrl->getTargetScript() == 'adm_object.php')
01225 {
01226 ilUtil::redirect($this->ctrl->getLinkTarget($this));
01227 }
01228 else
01229 {
01230 $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
01231 }
01232 }
01233
01234
01235 function appliedUsersObject()
01236 {
01237 global $rbacsystem,$ilias;
01238
01239 unset($_SESSION['applied_users']);
01240
01241 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
01242 {
01243 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
01244 }
01245
01246 if(!count($app_users =& $ilias->account->getAppliedUsers()))
01247 {
01248 sendInfo($this->lng->txt('no_users_applied'));
01249
01250 return false;
01251 }
01252
01253 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_applied_users.html");
01254 $this->lng->loadLanguageModule('crs');
01255
01256 $counter = 0;
01257 foreach($app_users as $usr_id)
01258 {
01259 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01260
01261 $f_result[$counter][] = ilUtil::formCheckbox(0,"users[]",$usr_id);
01262 $f_result[$counter][] = $tmp_user->getLogin();
01263 $f_result[$counter][] = $tmp_user->getFirstname();
01264 $f_result[$counter][] = $tmp_user->getLastname();
01265
01266 if($tmp_user->getTimeLimitUnlimited())
01267 {
01268 $f_result[$counter][] = "<b>".$this->lng->txt('crs_unlimited')."</b>";
01269 }
01270 else
01271 {
01272 $limit = "<b>".$this->lng->txt('crs_from').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitFrom()).'<br />';
01273 $limit .= "<b>".$this->lng->txt('crs_to').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitUntil());
01274
01275 $f_result[$counter][] = $limit;
01276 }
01277 ++$counter;
01278 }
01279
01280 $this->__showAppliedUsersTable($f_result);
01281
01282 return true;
01283 }
01284
01285 function editAppliedUsersObject()
01286 {
01287 global $rbacsystem;
01288
01289 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01290 {
01291 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01292 }
01293
01294 $this->lng->loadLanguageModule('crs');
01295
01296 $_POST['users'] = $_SESSION['applied_users'] = ($_SESSION['applied_users'] ? $_SESSION['applied_users'] : $_POST['users']);
01297
01298 if(!isset($_SESSION['error_post_vars']))
01299 {
01300 sendInfo($this->lng->txt('time_limit_add_time_limit_for_selected'));
01301 }
01302
01303 if(!count($_POST["users"]))
01304 {
01305 sendInfo($this->lng->txt("time_limit_no_users_selected"));
01306 $this->appliedUsersObject();
01307
01308 return false;
01309 }
01310
01311 $counter = 0;
01312 foreach($_POST['users'] as $usr_id)
01313 {
01314 if($counter)
01315 {
01316 $title .= ', ';
01317 }
01318 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01319 $title .= $tmp_user->getLogin();
01320 ++$counter;
01321 }
01322 if(strlen($title) > 79)
01323 {
01324 $title = substr($title,0,80);
01325 $title .= '...';
01326 }
01327
01328
01329 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_edit_applied_users.html");
01330 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01331
01332
01333 $time_limit_unlimited = $_SESSION["error_post_vars"]["au"]["time_limit_unlimited"] ?
01334 1 : 0;
01335
01336 $time_limit_start = $_SESSION["error_post_vars"]["au"]["time_limit_start"] ?
01337 $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_start"]) :
01338 time();
01339 $time_limit_end = $_SESSION["error_post_vars"]["au"]["time_limit_end"] ?
01340 $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_end"]) :
01341 time();
01342
01343
01344
01345 $this->tpl->setVariable("ALT_IMG",$this->lng->txt("obj_usr"));
01346 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath("icon_usr_b.gif"));
01347 $this->tpl->setVariable("TITLE",$title);
01348 $this->tpl->setVariable("TXT_TIME_LIMIT",$this->lng->txt("time_limit"));
01349 $this->tpl->setVariable("TXT_TIME_LIMIT_START",$this->lng->txt("crs_start"));
01350 $this->tpl->setVariable("TXT_TIME_LIMIT_END",$this->lng->txt("crs_end"));
01351 $this->tpl->setVariable("CMD_SUBMIT","updateAppliedUsers");
01352 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
01353 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("submit"));
01354
01355
01356
01357 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_DAY",$this->__getDateSelect("day","au[time_limit_start][day]",
01358 date("d",$time_limit_start)));
01359 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MONTH",$this->__getDateSelect("month","au[time_limit_start][month]",
01360 date("m",$time_limit_start)));
01361 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_YEAR",$this->__getDateSelect("year","au[time_limit_start][year]",
01362 date("Y",$time_limit_start)));
01363 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_HOUR",$this->__getDateSelect("hour","au[time_limit_start][hour]",
01364 date("G",$time_limit_start)));
01365 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MINUTE",$this->__getDateSelect("minute","au[time_limit_start][minute]",
01366 date("i",$time_limit_start)));
01367 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_DAY",$this->__getDateSelect("day","au[time_limit_end][day]",
01368 date("d",$time_limit_end)));
01369 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MONTH",$this->__getDateSelect("month","au[time_limit_end][month]",
01370 date("m",$time_limit_end)));
01371 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_YEAR",$this->__getDateSelect("year","au[time_limit_end][year]",
01372 date("Y",$time_limit_end)));
01373 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_HOUR",$this->__getDateSelect("hour","au[time_limit_end][hour]",
01374 date("G",$time_limit_end)));
01375 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MINUTE",$this->__getDateSelect("minute","au[time_limit_end][minute]",
01376 date("i",$time_limit_end)));
01377 if($this->ilias->account->getTimeLimitUnlimited())
01378 {
01379 $this->tpl->setVariable("ROWSPAN",3);
01380 $this->tpl->setCurrentBlock("unlimited");
01381 $this->tpl->setVariable("TXT_TIME_LIMIT_UNLIMITED",$this->lng->txt("crs_unlimited"));
01382 $this->tpl->setVariable("TIME_LIMIT_UNLIMITED",ilUtil::formCheckbox($time_limit_unlimited,"au[time_limit_unlimited]",1));
01383 $this->tpl->parseCurrentBlock();
01384 }
01385 else
01386 {
01387 $this->tpl->setVariable("ROWSPAN",2);
01388 }
01389 }
01390
01391 function updateAppliedUsersObject()
01392 {
01393 global $rbacsystem;
01394
01395 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01396 {
01397 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01398 }
01399
01400 $start = $this->__toUnix($_POST['au']['time_limit_start']);
01401 $end = $this->__toUnix($_POST['au']['time_limit_end']);
01402
01403 if(!$_POST['au']['time_limit_unlimited'])
01404 {
01405 if($start > $end)
01406 {
01407 $_SESSION['error_post_vars'] = $_POST;
01408 sendInfo($this->lng->txt('time_limit_not_valid'));
01409 $this->editAppliedUsersObject();
01410
01411 return false;
01412 }
01413 }
01414 #if(!$this->ilias->account->getTimeLimitUnlimited())
01415 #{
01416 # if($start < $this->ilias->account->getTimeLimitFrom() or
01417 # $end > $this->ilias->account->getTimeLimitUntil())
01418 # {
01419 # $_SESSION['error_post_vars'] = $_POST;
01420 # sendInfo($this->lng->txt('time_limit_not_within_owners'));
01421 # $this->editAppliedUsersObject();
01422
01423 # return false;
01424 # }
01425 #}
01426
01427 foreach($_SESSION['applied_users'] as $usr_id)
01428 {
01429 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01430
01431 $tmp_user->setTimeLimitUnlimited((int) $_POST['au']['time_limit_unlimited']);
01432 $tmp_user->setTimeLimitFrom($start);
01433 $tmp_user->setTimeLimitUntil($end);
01434 $tmp_user->setTimeLimitMessage(0);
01435 $tmp_user->update();
01436
01437 unset($tmp_user);
01438 }
01439
01440 unset($_SESSION['applied_users']);
01441 sendInfo($this->lng->txt('time_limit_users_updated'));
01442 $this->appliedUsersObject();
01443
01444 return true;
01445 }
01446
01447 function __showAppliedUsersTable($a_result_set)
01448 {
01449 $tbl =& $this->__initTableGUI();
01450 $tpl =& $tbl->getTemplateObject();
01451
01452
01453 $tpl->setCurrentBlock("tbl_form_header");
01454
01455 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01456 $tpl->parseCurrentBlock();
01457
01458 $tpl->setCurrentBlock("tbl_action_btn");
01459 $tpl->setVariable("BTN_NAME",'editAppliedUsers');
01460 $tpl->setVariable("BTN_VALUE",$this->lng->txt('edit'));
01461 $tpl->parseCurrentBlock();
01462
01463 $tpl->setCurrentBlock("tbl_action_row");
01464 $tpl->setVariable("COLUMN_COUNTS",5);
01465 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01466 $tpl->parseCurrentBlock();
01467
01468
01469
01470 $tbl->setTitle($this->lng->txt("time_limit_applied_users"),"icon_usr_b.gif",$this->lng->txt("users"));
01471 $tbl->setHeaderNames(array('',
01472 $this->lng->txt("login"),
01473 $this->lng->txt("firstname"),
01474 $this->lng->txt("lastname"),
01475 $this->lng->txt("time_limits")));
01476 $tbl->setHeaderVars(array("",
01477 "login",
01478 "firstname",
01479 "lastname",
01480 "time_limit"),
01481 array("ref_id" => $this->object->getRefId(),
01482 "cmd" => "appliedUsers"));
01483 $tbl->setColumnWidth(array("3%","19%","19%","19%","40%"));
01484
01485
01486 $this->__setTableGUIBasicData($tbl,$a_result_set);
01487 $tbl->render();
01488
01489 $this->tpl->setVariable("APPLIED_USERS",$tbl->tpl->get());
01490
01491 return true;
01492 }
01493
01494 function &__initTableGUI()
01495 {
01496 include_once "./classes/class.ilTableGUI.php";
01497
01498 return new ilTableGUI(0,false);
01499 }
01500 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
01501 {
01502 $offset = $_GET["offset"];
01503 $order = $_GET["sort_by"];
01504 $direction = $_GET["sort_order"];
01505
01506
01507 $tbl->setOrderColumn($order);
01508 $tbl->setOrderDirection($direction);
01509 $tbl->setOffset($offset);
01510 $tbl->setLimit($_GET["limit"]);
01511 $tbl->setMaxCount(count($result_set));
01512 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01513 $tbl->setData($result_set);
01514 }
01515 function __getDateSelect($a_type,$a_varname,$a_selected)
01516 {
01517 switch($a_type)
01518 {
01519 case "minute":
01520 for($i=0;$i<=60;$i++)
01521 {
01522 $days[$i] = $i < 10 ? "0".$i : $i;
01523 }
01524 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01525
01526 case "hour":
01527 for($i=0;$i<24;$i++)
01528 {
01529 $days[$i] = $i < 10 ? "0".$i : $i;
01530 }
01531 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01532
01533 case "day":
01534 for($i=1;$i<32;$i++)
01535 {
01536 $days[$i] = $i < 10 ? "0".$i : $i;
01537 }
01538 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01539
01540 case "month":
01541 for($i=1;$i<13;$i++)
01542 {
01543 $month[$i] = $i < 10 ? "0".$i : $i;
01544 }
01545 return ilUtil::formSelect($a_selected,$a_varname,$month,false,true);
01546
01547 case "year":
01548 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
01549 {
01550 $year[$i] = $i;
01551 }
01552 return ilUtil::formSelect($a_selected,$a_varname,$year,false,true);
01553 }
01554 }
01555 function __toUnix($a_time_arr)
01556 {
01557 return mktime($a_time_arr["hour"],
01558 $a_time_arr["minute"],
01559 $a_time_arr["second"],
01560 $a_time_arr["month"],
01561 $a_time_arr["day"],
01562 $a_time_arr["year"]);
01563 }
01564
01565 function hitsperpageObject()
01566 {
01567 parent::hitsperpageObject();
01568 $this->viewObject();
01569 }
01570
01576 function settingsObject()
01577 {
01578 global $ilias;
01579
01580 $this->getTemplateFile("settings","usr");
01581
01582 $profile_fields = array(
01583 "gender",
01584 "password",
01585 "firstname",
01586 "lastname",
01587 "title",
01588 "upload",
01589 "institution",
01590 "department",
01591 "street",
01592 "city",
01593 "zipcode",
01594 "country",
01595 "phone_office",
01596 "phone_home",
01597 "phone_mobile",
01598 "fax",
01599 "email",
01600 "hobby",
01601 "matriculation",
01602 "referral_comment",
01603 "language",
01604 "skin_style"
01605 );
01606 foreach ($profile_fields as $field)
01607 {
01608 $this->tpl->setCurrentBlock("profile_settings");
01609 $this->tpl->setVariable("TXT_PROFILE_DATA", $this->lng->txt($field));
01610 $this->tpl->setVariable("PROFILE_OPTION_DISABLE", "disable_" . $field);
01611 $this->tpl->setVariable("PROFILE_OPTION_HIDE", "hide_" . $field);
01612 if ($ilias->getSetting("usr_settings_disable_" . $field) == 1)
01613 {
01614 $this->tpl->setVariable("CHECKED_DISABLE", " checked=\"checked\"");
01615 }
01616 if ($ilias->getSetting("usr_settings_hide_" . $field) == 1)
01617 {
01618 $this->tpl->setVariable("CHECKED_HIDE", " checked=\"checked\"");
01619 }
01620 $this->tpl->parseCurrentBlock();
01621 }
01622 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=gateway");
01623 $this->tpl->setVariable("TXT_HEADER_PROFILE", $this->lng->txt("usr_settings_header_profile"));
01624 $this->tpl->setVariable("TXT_EXPLANATION_PROFILE", $this->lng->txt("usr_settings_explanation_profile"));
01625 $this->tpl->setVariable("HEADER_PROFILE_DATA", $this->lng->txt("usr_settings_header_profile_profile"));
01626 $this->tpl->setVariable("HEADER_DISABLE", $this->lng->txt("disable"));
01627 $this->tpl->setVariable("HEADER_HIDE", $this->lng->txt("hide"));
01628 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
01629 }
01630
01631 function saveGlobalUserSettingsObject()
01632 {
01633 global $ilias;
01634
01635 $profile_fields = array(
01636 "gender",
01637 "password",
01638 "firstname",
01639 "lastname",
01640 "title",
01641 "upload",
01642 "institution",
01643 "department",
01644 "street",
01645 "city",
01646 "zipcode",
01647 "country",
01648 "phone_office",
01649 "phone_home",
01650 "phone_mobile",
01651 "fax",
01652 "email",
01653 "hobby",
01654 "matriculation",
01655 "referral_comment",
01656 "language",
01657 "skin_style"
01658 );
01659 foreach ($profile_fields as $field)
01660 {
01661 $ilias->deleteSetting("usr_settings_disable_" . $field);
01662 $ilias->deleteSetting("usr_settings_hide_" . $field);
01663 if ($_POST["chb"]["hide_" . $field])
01664 {
01665 $ilias->setSetting("usr_settings_hide_" . $field, "1");
01666 }
01667 if ($_POST["chb"]["disable_" . $field])
01668 {
01669 $ilias->setSetting("usr_settings_disable_" . $field, "1");
01670 }
01671 }
01672 sendInfo($this->lng->txt("usr_settings_saved"));
01673 $this->settingsObject();
01674 }
01675 }
01676 ?>