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
00038 require_once "class.ilObjectGUI.php";
00039
00040 class ilObjUserFolderGUI extends ilObjectGUI
00041 {
00042 var $ctrl;
00043
00048 function ilObjUserFolderGUI($a_data,$a_id,$a_call_by_reference, $a_prepare_output = true)
00049 {
00050
00051 define('USER_FOLDER_ID',7);
00052
00053 $this->type = "usrf";
00054 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,false);
00055 }
00056
00057 function setUserOwnerId($a_id)
00058 {
00059 $this->user_owner_id = $a_id;
00060 }
00061 function getUserOwnerId()
00062 {
00063 return $this->user_owner_id ? $this->user_owner_id : USER_FOLDER_ID;
00064 }
00065
00066 function &executeCommand()
00067 {
00068 $next_class = $this->ctrl->getNextClass($this);
00069 $cmd = $this->ctrl->getCmd();
00070
00071 $this->prepareOutput();
00072
00073 switch($next_class)
00074 {
00075 case 'ilpermissiongui':
00076 include_once("./classes/class.ilPermissionGUI.php");
00077 $perm_gui =& new ilPermissionGUI($this);
00078 $ret =& $this->ctrl->forwardCommand($perm_gui);
00079 break;
00080
00081 default:
00082 if(!$cmd)
00083 {
00084 $cmd = "view";
00085 }
00086 $cmd .= "Object";
00087 $this->$cmd();
00088
00089 break;
00090 }
00091 return true;
00092 }
00093
00094 function learningProgressExcelExportObject()
00095 {
00096 global $ilErr,$rbacsystem;
00097
00098 if (!$rbacsystem->checkAccess("read",$this->object->getRefId()))
00099 {
00100 $ilErr->raiseError($this->lng->txt("permission_denied"),$ilErr->MESSAGE);
00101 }
00102
00103 include_once './classes/class.ilExcelWriterAdapter.php';
00104
00105 $pewa =& new ilExcelWriterAdapter('learning_progress.xls');
00106
00107
00108 $this->_addLearningProgressWorksheet($pewa);
00109
00110
00111
00112 $workbook =& $pewa->getWorkbook();
00113 $workbook->close();
00114 }
00115
00116 function _addLearningProgressWorksheet(&$pewa)
00117 {
00118 include_once 'classes/class.ilExcelUtils.php';
00119
00120 $workbook =& $pewa->getWorkbook();
00121 $worksheet =& $workbook->addWorksheet($this->lng->txt('objs_usr'));
00122
00123
00124 $worksheet->mergeCells(0,0,0,4);
00125 $worksheet->setColumn(1,0,32);
00126 $worksheet->setColumn(1,1,32);
00127 $worksheet->setColumn(1,2,32);
00128 $worksheet->setColumn(1,3,32);
00129 $worksheet->setColumn(1,4,32);
00130
00131 $title = $this->lng->txt('learning_progress');
00132 $title .= ' '.$this->lng->txt('as_of').': ';
00133 $title .= strftime('%Y-%m-%d %R',time());
00134
00135 $worksheet->writeString(0,0,ilExcelUtils::_convert_text($title),$pewa->getFormatTitle());
00136
00137 $worksheet->writeString(1,0,ilExcelUtils::_convert_text($this->lng->txt('login')),$pewa->getFormatHeader());
00138 $worksheet->writeString(1,1,ilExcelUtils::_convert_text($this->lng->txt('lastname')),$pewa->getFormatHeader());
00139 $worksheet->writeString(1,2,ilExcelUtils::_convert_text($this->lng->txt('firstname')),$pewa->getFormatHeader());
00140 $worksheet->writeString(1,3,ilExcelUtils::_convert_text($this->lng->txt('online_time')),$pewa->getFormatHeader());
00141 $worksheet->writeString(1,4,ilExcelUtils::_convert_text($this->lng->txt('last_login')),$pewa->getFormatHeader());
00142
00143
00144 $usr_data = ilObjUser::_getAllUserData(array("login","firstname","lastname",'last_login','online_time'),1);
00145 $usr_data = ilUtil::sortArray($usr_data,$_SESSION["usrf_sort_by"],$_SESSION["usrf_sort_order"]);
00146
00147 $counter = 2;
00148
00149 foreach($usr_data as $user)
00150 {
00151 $worksheet->writeString($counter,0,$user['login']);
00152 $worksheet->writeString($counter,1,$user['lastname']);
00153 $worksheet->writeString($counter,2,$user['firstname']);
00154 $worksheet->writeString($counter,3,ilFormat::_secondsToShortString($user['online_time']),
00155 $pewa->getFormatDayTime());
00156 $worksheet->writeString($counter,4,$user['last_login'],
00157 $pewa->getFormatDate());
00158
00159 ++$counter;
00160 }
00161 }
00162
00163
00164 function learningProgressObject()
00165 {
00166 include_once 'Services/Tracking/classes/class.ilOnlineTracking.php';
00167 include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
00168
00169 $lp_active = ilObjUserTracking::_enabledLearningProgress();
00170
00171 global $ilUser,$rbacsystem;
00172
00173 $this->max_count = $ilUser->getPref('hits_per_page');
00174
00175 if (!$rbacsystem->checkAccess("read",$this->object->getRefId()))
00176 {
00177 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00178 }
00179
00180 $_SESSION['usrf_sort_by'] = $_GET['sort_by'] ? $_GET['sort_by'] : ($_SESSION['usrf_sort_by'] ?
00181 $_SESSION['usrf_sort_by'] : 'login');
00182
00183 $_SESSION['usrf_sort_order'] = $_GET['sort_order'] ? $_GET['sort_order'] : ($_SESSION['usrf_sort_order'] ?
00184 $_SESSION['usrf_sort_order'] : 'asc');
00185
00186
00187
00188 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00189
00190
00191 $this->lng->loadLanguageModule('payment');
00192 $this->tpl->setCurrentBlock("btn_cell");
00193 $this->tpl->setVariable("BTN_LINK",
00194 $this->ctrl->getLinkTarget($this, "learningProgressExcelExport"));
00195 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("excel_export"));
00196 $this->tpl->parseCurrentBlock();
00197
00198
00199 $data["cols"] = array("login", "firstname", "lastname", "online_time",'last_login');
00200
00201 $usr_data = ilObjUser::_getAllUserData(array("login","firstname","lastname",'last_login','online_time'),1);
00202 $num_users = count($usr_data) - 1;
00203
00204
00205
00206 $usr_data = ilUtil::sortArray($usr_data,$_SESSION["usrf_sort_by"],$_SESSION["usrf_sort_order"]);
00207 $usr_data = array_slice($usr_data,$_GET["offset"],$this->max_count);
00208
00209 foreach ($usr_data as $val)
00210 {
00211 if ($val["usr_id"] == ANONYMOUS_USER_ID)
00212 {
00213 continue;
00214 }
00215
00216 $data["data"]["$val[usr_id]"] = array(
00217 "login" => $val["login"],
00218 "firstname" => $val["firstname"],
00219 "lastname" => $val["lastname"],
00220 "online_time" => ilFormat::_secondsToShortString($val['online_time']),
00221 "last_login" => $val['last_login']
00222 );
00223 }
00224
00225 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_list.html");
00226
00227
00228
00229 include_once "./classes/class.ilTableGUI.php";
00230 $this->tpl->addBlockfile("USR_TABLE", "user_table", "tpl.table.html");
00231 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.usr_tbl_row.html");
00232
00233 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00234
00235
00236 $tbl = new ilTableGUI();
00237
00238
00239 $tbl->setTitle($this->object->getTitle(),"icon_usr.gif",
00240 $this->lng->txt("obj_".$this->object->getType()));
00241
00242 foreach ($data["cols"] as $val)
00243 {
00244 $header_names[] = $this->lng->txt($val);
00245 }
00246
00247 $tbl->setHeaderNames($header_names);
00248
00249 $header_params = $this->ctrl->getParameterArray($this, "learningProgress");
00250 $tbl->setHeaderVars($data["cols"],$header_params);
00251 $tbl->setColumnWidth(array("20%","20$%","20%","20%"));
00252
00253
00254
00255
00256 $tbl->setOrderColumn($_GET["sort_by"]);
00257 $tbl->setOrderDirection($_GET["sort_order"]);
00258 $tbl->setLimit($this->max_count);
00259 $tbl->setOffset($_GET["offset"]);
00260 $tbl->setMaxCount($num_users);
00261
00262
00263 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00264
00265
00266 $tbl->render();
00267
00268
00269 $counter = 0;
00270 foreach($data['data'] as $usr_id => $fields)
00271 {
00272
00273 $css_row = ilUtil::switchColor($counter++,"tblrow1","tblrow2");
00274
00275 $this->tpl->setVariable("CSS_ROW", $css_row);
00276
00277 foreach ($fields as $key => $val)
00278 {
00279
00280
00281
00282 $this->ids[] = $ctrl["obj_id"];
00283
00284 if ($key == "login" and $lp_active)
00285 {
00286 $this->ctrl->setParameterByClass("illearningprogressgui", "ref_id",$this->object->getRefId());
00287 $this->ctrl->setParameterByClass("illearningprogressgui", "obj_id", $usr_id);
00288 $link = $this->ctrl->getLinkTargetByClass(array("ilobjusergui",'illearningprogressgui'), "");
00289
00290 $this->tpl->setCurrentBlock("begin_link");
00291 $this->tpl->setVariable("LINK_TARGET", $link);
00292 $this->tpl->parseCurrentBlock();
00293 $this->tpl->touchBlock("end_link");
00294 }
00295
00296 $this->tpl->setCurrentBlock("text");
00297 $this->tpl->setVariable("TEXT_CONTENT", $val);
00298 $this->tpl->parseCurrentBlock();
00299 $this->tpl->setCurrentBlock("table_cell");
00300 $this->tpl->parseCurrentBlock();
00301 }
00302
00303 $this->tpl->setCurrentBlock("tbl_content");
00304 $this->tpl->setVariable("CSS_ROW", $css_row);
00305 $this->tpl->parseCurrentBlock();
00306 }
00307 }
00308
00314 function viewObject()
00315 {
00316 global $rbacsystem;
00317
00318 if (isset($_POST["user_filter"]))
00319 {
00320 $_SESSION["user_filter"] = $_POST["user_filter"];
00321 }
00322 if (!isset($_SESSION["user_filter"]))
00323 {
00324 $_SESSION["user_filter"] = 1;
00325 }
00326
00327
00328 if (isset($_GET["sort_by"]))
00329 {
00330 $_SESSION["user_folder_sort_by"] = $_GET["sort_by"];
00331 }
00332 if (isset($_GET["sort_order"]))
00333 {
00334 $_SESSION["user_folder_order"] = $_GET["sort_order"];
00335 }
00336 if (isset($_GET["offset"]))
00337 {
00338 $_SESSION["user_folder_offset"] = $_GET["offset"];
00339 }
00340 $_GET["offset"] = $_SESSION["user_folder_offset"];
00341 $_GET["sort_order"] = $_SESSION["user_folder_order"] ? $_SESSION["user_folder_order"] : "asc";
00342 $_GET["sort_by"] = $_SESSION["user_folder_sort_by"] ? $_SESSION["user_folder_sort_by"] : "login";
00343
00344 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00345 {
00346 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00347 }
00348
00349
00350 $this->data = array();
00351 $this->data["data"] = array();
00352 $this->data["ctrl"] = array();
00353
00354 $this->data["cols"] = array("", "login", "firstname", "lastname", "email");
00355
00356 $usr_data = ilObjUser::_getAllUserData(array("login","firstname","lastname","email"), $_SESSION["user_filter"]);
00357
00358 foreach ($usr_data as $val)
00359 {
00360 if ($val["usr_id"] == ANONYMOUS_USER_ID)
00361 {
00362 continue;
00363 }
00364
00365
00366 $this->data["data"][] = array(
00367 "login" => $val["login"],
00368 "firstname" => $val["firstname"],
00369 "lastname" => $val["lastname"],
00370 "email" => $val["email"],
00371 "obj_id" => $val["usr_id"]
00372 );
00373 }
00374
00375 $this->maxcount = count($this->data["data"]);
00376
00377 if ($_GET["offset"] >= $this->maxcount)
00378 {
00379 $_GET["offset"] = $_SESSION["user_folder_offset"] = 0;
00380 }
00381
00382
00383 if ($_GET["sort_by"] == "name")
00384 {
00385 $_GET["sort_by"] = "login";
00386 }
00387
00388
00389 $this->data["data"] = ilUtil::sortArray($this->data["data"],$_GET["sort_by"],$_GET["sort_order"]);
00390 $this->data["data"] = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00391
00392
00393 foreach ($this->data["data"] as $key => $val)
00394 {
00395 $this->data["ctrl"][$key] = array(
00396 "ref_id" => $this->id,
00397 "obj_id" => $val["obj_id"]
00398 );
00399 $tmp[] = $val["obj_id"];
00400 unset($this->data["data"][$key]["obj_id"]);
00401 }
00402
00403
00404 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00405
00406
00407 $this->tpl->setCurrentBlock("btn_cell");
00408 $this->tpl->setVariable("BTN_LINK",
00409 $this->ctrl->getLinkTarget($this, "searchUserForm"));
00410 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("search_user"));
00411 $this->tpl->parseCurrentBlock();
00412
00413
00414
00415 $this->tpl->setCurrentBlock("btn_cell");
00416 $this->tpl->setVariable("BTN_LINK",
00417 $this->ctrl->getLinkTarget($this, "importUserForm"));
00418 $this->tpl->setVariable("BTN_TXT", $this->lng->txt("import_users"));
00419 $this->tpl->parseCurrentBlock();
00420
00421
00422 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_list.html");
00423
00424 $this->tpl->setCurrentBlock("filter");
00425 $this->tpl->setVariable("FILTER_TXT_FILTER",$this->lng->txt('filter'));
00426 $this->tpl->setVariable("SELECT_FILTER",$this->__buildUserFilterSelect());
00427 $this->tpl->setVariable("FILTER_ACTION",$this->ctrl->getFormAction($this));
00428 $this->tpl->setVariable("FILTER_NAME",'view');
00429 $this->tpl->setVariable("FILTER_VALUE",$this->lng->txt('apply_filter'));
00430 $this->tpl->parseCurrentBlock();
00431
00432 $this->displayList();
00433 }
00434
00435
00441 function displayList()
00442 {
00443 include_once "./classes/class.ilTableGUI.php";
00444
00445
00446 $this->tpl->addBlockfile("USR_TABLE", "user_table", "tpl.table.html");
00447
00448 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
00449
00450 $num = 0;
00451
00452
00453 $this->tpl->setVariable("FORMACTION",
00454 $this->ctrl->getFormAction($this));
00455
00456
00457 $tbl = new ilTableGUI();
00458
00459
00460 $tbl->setTitle($this->object->getTitle(),"icon_usr.gif",
00461 $this->lng->txt("obj_".$this->object->getType()));
00462
00463
00464 foreach ($this->data["cols"] as $val)
00465 {
00466 $header_names[] = $this->lng->txt($val);
00467 }
00468
00469 $tbl->setHeaderNames($header_names);
00470
00471
00472 $header_params = $this->ctrl->getParameterArray($this, "view");
00473 $tbl->setHeaderVars($this->data["cols"],$header_params);
00474 $tbl->setColumnWidth(array("","25%","25$%","25%","25%"));
00475
00476
00477
00478
00479 $tbl->setOrderColumn($_GET["sort_by"]);
00480 $tbl->setOrderDirection($_GET["sort_order"]);
00481 $tbl->setLimit($_GET["limit"]);
00482 $tbl->setOffset($_GET["offset"]);
00483 $tbl->setMaxCount($this->maxcount);
00484
00485
00486 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00487 #$tbl->disable("footer");
00488
00489
00490 $tbl->render();
00491
00492 if (is_array($this->data["data"][0]))
00493 {
00494
00495 for ($i=0; $i < count($this->data["data"]); $i++)
00496 {
00497 $data = $this->data["data"][$i];
00498 $ctrl = $this->data["ctrl"][$i];
00499
00500
00501 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
00502
00503 $this->tpl->setCurrentBlock("checkbox");
00504 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
00505
00506 $this->tpl->setVariable("CSS_ROW", $css_row);
00507 $this->tpl->parseCurrentBlock();
00508
00509 $this->tpl->setCurrentBlock("table_cell");
00510 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
00511 $this->tpl->parseCurrentBlock();
00512
00513 foreach ($data as $key => $val)
00514 {
00515
00516 $this->ctrl->setParameterByClass("ilobjusergui", "ref_id", "7");
00517 $this->ctrl->setParameterByClass("ilobjusergui", "obj_id", $ctrl["obj_id"]);
00518 $link = $this->ctrl->getLinkTargetByClass("ilobjusergui", "view");
00519
00520
00521 $this->ids[] = $ctrl["obj_id"];
00522
00523 if ($key == "login")
00524 {
00525 $this->tpl->setCurrentBlock("begin_link");
00526 $this->tpl->setVariable("LINK_TARGET", $link);
00527 $this->tpl->parseCurrentBlock();
00528 $this->tpl->touchBlock("end_link");
00529 }
00530
00531 $this->tpl->setCurrentBlock("text");
00532 $this->tpl->setVariable("TEXT_CONTENT", $val);
00533 $this->tpl->parseCurrentBlock();
00534 $this->tpl->setCurrentBlock("table_cell");
00535 $this->tpl->parseCurrentBlock();
00536 }
00537
00538 $this->tpl->setCurrentBlock("tbl_content");
00539 $this->tpl->setVariable("CSS_ROW", $css_row);
00540 $this->tpl->parseCurrentBlock();
00541 }
00542 }
00543
00544
00545
00546
00547
00548
00549 {
00550 $this->showActions(true);
00551 }
00552 }
00553
00560 function showActions($with_subobjects = false)
00561 {
00562 global $rbacsystem;
00563
00564 $operations = array();
00565
00566 if ($this->actions == "")
00567 {
00568 $d = $this->objDefinition->getActions($this->object->getType());
00569 }
00570 else
00571 {
00572 $d = $this->actions;
00573 }
00574
00575 foreach ($d as $row)
00576 {
00577 if ($rbacsystem->checkAccess($row["name"],$this->object->getRefId()))
00578 {
00579 $operations[] = $row;
00580 }
00581 }
00582
00583 if (count($operations) > 0)
00584 {
00585 foreach ($operations as $val)
00586 {
00587 $this->tpl->setCurrentBlock("tbl_action_btn");
00588 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00589 $this->tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
00590 $this->tpl->setVariable("BTN_NAME", $val["name"]);
00591 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt($val["lng"]));
00592 $this->tpl->parseCurrentBlock();
00593 }
00594 }
00595
00596 if ($with_subobjects === true)
00597 {
00598 $subobjs = $this->showPossibleSubObjects();
00599 }
00600
00601 if ((count($operations) > 0) or $subobjs === true)
00602 {
00603
00604 if (!empty($this->ids))
00605 {
00606 $this->tpl->setCurrentBlock("tbl_select_all");
00607 $this->tpl->setVariable("COLUMN_COUNTS",
00608 count($this->data["cols"]));
00609 $this->tpl->setVariable("TXT_SELECT_ALL", $this->lng->txt("select_all"));
00610 $this->tpl->parseCurrentBlock();
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620 }
00621
00622 $this->tpl->setCurrentBlock("tbl_action_row");
00623 $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));
00624 $this->tpl->parseCurrentBlock();
00625 }
00626 }
00627
00634 function showPossibleSubObjects()
00635 {
00636 global $rbacsystem;
00637
00638 $d = $this->objDefinition->getCreatableSubObjects($this->object->getType());
00639
00640 if (!$rbacsystem->checkAccess('create_user',$this->object->getRefId()))
00641 {
00642 unset($d["usr"]);
00643 }
00644
00645 if (count($d) > 0)
00646 {
00647 foreach ($d as $row)
00648 {
00649 $count = 0;
00650 if ($row["max"] > 0)
00651 {
00652
00653 for ($i=0; $i<count($this->data["ctrl"]); $i++)
00654 {
00655 if ($this->data["ctrl"][$i]["type"] == $row["name"])
00656 {
00657 $count++;
00658 }
00659 }
00660 }
00661 if ($row["max"] == "" || $count < $row["max"])
00662 {
00663 $subobj[] = $row["name"];
00664 }
00665 }
00666 }
00667
00668 if (is_array($subobj))
00669 {
00670
00671 $opts = ilUtil::formSelect(12,"new_type",$subobj);
00672 $this->tpl->setCurrentBlock("add_object");
00673 $this->tpl->setVariable("SELECT_OBJTYPE", $opts);
00674 $this->tpl->setVariable("BTN_NAME", "create");
00675 $this->tpl->setVariable("TXT_ADD", $this->lng->txt("add"));
00676 $this->tpl->parseCurrentBlock();
00677
00678 return true;
00679 }
00680
00681 return false;
00682 }
00683
00689 function confirmedDeleteObject()
00690 {
00691 global $rbacsystem;
00692
00693
00694 if (!$rbacsystem->checkAccess('delete',$this->object->getRefId()))
00695 {
00696 $this->ilias->raiseError($this->lng->txt("msg_no_perm_delete"),$this->ilias->error_obj->WARNING);
00697 }
00698
00699 if (in_array($_SESSION["AccountId"],$_SESSION["saved_post"]))
00700 {
00701 $this->ilias->raiseError($this->lng->txt("msg_no_delete_yourself"),$this->ilias->error_obj->WARNING);
00702 }
00703
00704
00705 foreach ($_SESSION["saved_post"] as $id)
00706 {
00707
00708 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00709 $obj->delete();
00710 }
00711
00712
00713 sendInfo($this->lng->txt("user_deleted"),true);
00714
00715 $this->ctrl->redirect($this, "view");
00716 }
00717
00721 function deleteObject()
00722 {
00723 if(!isset($_POST["id"]))
00724 {
00725 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
00726 }
00727
00728 $_SESSION["saved_post"] = $_POST["id"];
00729
00730 unset($this->data);
00731 $this->data["cols"] = array("type", "title", "description", "last_change");
00732
00733 foreach($_POST["id"] as $id)
00734 {
00735 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
00736
00737 $this->data["data"]["$id"] = array(
00738 "type" => $obj_data->getType(),
00739 "title" => $obj_data->getTitle(),
00740 "desc" => $obj_data->getDescription(),
00741 "last_update" => $obj_data->getLastUpdateDate());
00742 }
00743
00744 $this->data["buttons"] = array( "cancelDelete" => $this->lng->txt("cancel"),
00745 "confirmedDelete" => $this->lng->txt("confirm"));
00746
00747 $this->getTemplateFile("confirm");
00748
00749 sendInfo($this->lng->txt("info_delete_sure"));
00750
00751 $this->tpl->setVariable("FORMACTION",
00752 $this->ctrl->getFormAction($this));
00753
00754
00755 foreach ($this->data["cols"] as $key)
00756 {
00757 $this->tpl->setCurrentBlock("table_header");
00758 $this->tpl->setVariable("TEXT",$this->lng->txt($key));
00759 $this->tpl->parseCurrentBlock();
00760 }
00761
00762
00763
00764 $counter = 0;
00765
00766 foreach($this->data["data"] as $key => $value)
00767 {
00768
00769 foreach($value as $key => $cell_data)
00770 {
00771 $this->tpl->setCurrentBlock("table_cell");
00772
00773
00774 if($key == "type")
00775 {
00776 $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
00777 }
00778 else
00779 {
00780 $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
00781 }
00782 $this->tpl->parseCurrentBlock();
00783 }
00784
00785 $this->tpl->setCurrentBlock("table_row");
00786 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00787 $this->tpl->parseCurrentBlock();
00788
00789 }
00790
00791
00792
00793 foreach($this->data["buttons"] as $name => $value)
00794 {
00795 $this->tpl->setCurrentBlock("operation_btn");
00796 $this->tpl->setVariable("BTN_NAME",$name);
00797 $this->tpl->setVariable("BTN_VALUE",$value);
00798 $this->tpl->parseCurrentBlock();
00799 }
00800 }
00801
00807 function searchUserFormObject ()
00808 {
00809 $this->tabs_gui->setTabActive('obj_usrf');
00810
00811 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_search_form.html");
00812
00813 $this->tpl->setVariable("FORMACTION",
00814 $this->ctrl->getFormAction($this));
00815 $this->tpl->setVariable("USERNAME_CHECKED", " checked=\"checked\"");
00816 $this->tpl->setVariable("FIRSTNAME_CHECKED", " checked=\"checked\"");
00817 $this->tpl->setVariable("LASTNAME_CHECKED", " checked=\"checked\"");
00818 $this->tpl->setVariable("EMAIL_CHECKED", " checked=\"checked\"");
00819 $this->tpl->setVariable("ACTIVE_CHECKED", " checked=\"checked\"");
00820 $this->tpl->setVariable("TXT_SEARCH_USER",$this->lng->txt("search_user"));
00821 $this->tpl->setVariable("TXT_SEARCH_IN",$this->lng->txt("search_in"));
00822 $this->tpl->setVariable("TXT_SEARCH_USERNAME",$this->lng->txt("username"));
00823 $this->tpl->setVariable("TXT_SEARCH_FIRSTNAME",$this->lng->txt("firstname"));
00824 $this->tpl->setVariable("TXT_SEARCH_LASTNAME",$this->lng->txt("lastname"));
00825 $this->tpl->setVariable("TXT_SEARCH_EMAIL",$this->lng->txt("email"));
00826 $this->tpl->setVariable("TXT_SEARCH_ACTIVE",$this->lng->txt("search_active"));
00827 $this->tpl->setVariable("TXT_SEARCH_INACTIVE",$this->lng->txt("search_inactive"));
00828 $this->tpl->setVariable("BUTTON_SEARCH",$this->lng->txt("search"));
00829 $this->tpl->setVariable("BUTTON_CANCEL",$this->lng->txt("cancel"));
00830 $this->tpl->setVariable("TXT_SEARCH_NOTE",$this->lng->txt("search_note"));
00831 $this->tpl->setVariable("ACTIVE_CHECKED","checked=\"checked\"");
00832 }
00833
00834 function searchCancelledObject()
00835 {
00836 sendInfo($this->lng->txt("action_aborted"),true);
00837
00838 $this->ctrl->redirect($this, "view");
00839 }
00840
00841 function searchUserObject()
00842 {
00843 global $rbacreview;
00844
00845 $obj_str = "&obj_id=".$this->obj_id;
00846
00847 $_POST["search_string"] = trim($_POST["search_string"]) ? trim($_POST["search_string"]) : trim(urldecode($_GET["search_string"]));
00848 $_POST["search_fields"] = $_POST["search_fields"] ? $_POST["search_fields"] : explode(",",urldecode($_GET["search_fields"]));
00849 $_SESSION['us_active'] = isset($_POST['active']) ? $_POST['active'] : $_SESSION['us_active'];
00850
00851 if (empty($_POST["search_string"]))
00852 {
00853 $_POST["search_string"] = "%";
00854 }
00855
00856 if (empty($_POST["search_fields"]))
00857 {
00858 $_POST["search_fields"] = array();
00859 }
00860 if (count($search_result = ilObjUser::searchUsers($_POST["search_string"],$_SESSION['us_active'])) == 0)
00861 {
00862 if ($_POST["search_string"] == "%")
00863 {
00864 $_POST["search_string"] = "";
00865 }
00866 $msg = $this->lng->txt("msg_no_search_result");
00867 if ($_POST["search_string"] != "")
00868 {
00869 $msg .= " ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'";
00870 }
00871 sendInfo($msg, true);
00872 $this->ctrl->redirect($this, "searchUserForm");
00873 }
00874
00875 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00876
00877
00878 $this->tpl->setCurrentBlock("btn_cell");
00879 $this->tpl->setVariable("BTN_LINK",
00880 $this->ctrl->getLinkTarget($this, "searchUserForm"));
00881 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("search_new"));
00882 $this->tpl->parseCurrentBlock();
00883
00884 $this->data["cols"] = array("", "login", "firstname", "lastname", "email", "active");
00885
00886 if($_SESSION['us_active'] == 1)
00887 {
00888 $searchActive = true;
00889 }
00890 else
00891 {
00892 $searchInactive = true;
00893 }
00894
00895 foreach ($search_result as $key => $val)
00896 {
00897 $val["active_text"] = $this->lng->txt("inactive");
00898 if ($val["active"])
00899 {
00900 $val["active_text"] = $this->lng->txt("active");
00901 }
00902
00903
00904 $searchStringToLower = strtolower($_POST["search_string"]);
00905 $displaySearchResult = false;
00906 if (in_array("username", $_POST["search_fields"]))
00907 if (strpos(strtolower($val["login"]), strtolower($_POST["search_string"])) !== false)
00908 $displaySearchResult = true;
00909 if (in_array("firstname", $_POST["search_fields"]))
00910 if (strpos(strtolower($val["firstname"]), strtolower($_POST["search_string"])) !== false)
00911 $displaySearchResult = true;
00912 if (in_array("lastname", $_POST["search_fields"]))
00913 if (strpos(strtolower($val["lastname"]), strtolower($_POST["search_string"])) !== false)
00914 $displaySearchResult = true;
00915 if (in_array("email", $_POST["search_fields"]))
00916 if (strpos(strtolower($val["email"]), strtolower($_POST["search_string"])) !== false)
00917 $displaySearchResult = true;
00918 if (($val["active"] == 1) && ($searchActive == true) ||
00919 ($val["active"] == 0) && ($searchInactive == true))
00920 {
00921 if ((strcmp($_POST["search_string"], "%") == 0) || $displaySearchResult)
00922 {
00923
00924 $this->data["data"][] = array(
00925 "login" => $val["login"],
00926 "firstname" => $val["firstname"],
00927 "lastname" => $val["lastname"],
00928 "email" => $val["email"],
00929 "active" => $val["active_text"],
00930 "obj_id" => $val["usr_id"]
00931 );
00932 }
00933 }
00934 }
00935 if (count($this->data["data"]) == 0)
00936 {
00937 sendInfo($this->lng->txt("msg_no_search_result")." ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'",true);
00938
00939 $this->ctrl->redirect($this, "searchUserForm");
00940 }
00941
00942 $this->maxcount = count($this->data["data"]);
00943
00944
00945 if ($_GET["sort_by"] == "name")
00946 {
00947 $_GET["sort_by"] = "login";
00948 }
00949
00950
00951 $this->data["data"] = ilUtil::sortArray($this->data["data"],$_GET["sort_by"],$_GET["sort_order"]);
00952 $this->data["data"] = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00953
00954
00955 foreach ($this->data["data"] as $key => $val)
00956 {
00957 $this->data["ctrl"][$key] = array(
00958 "ref_id" => $this->id,
00959 "obj_id" => $val["obj_id"]
00960 );
00961 $tmp[] = $val["obj_id"];
00962 unset($this->data["data"][$key]["obj_id"]);
00963 }
00964
00965
00966 $_SESSION["user_list"] = $tmp;
00967
00968
00969 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
00970
00971 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
00972
00973 $num = 0;
00974
00975 $this->ctrl->setParameter($this, "sort_by", "name");
00976 $this->ctrl->setParameter($this, "sort_order", $_GET["sort_order"]);
00977 $this->ctrl->setParameter($this, "offset", $_GET["offset"]);
00978 $this->tpl->setVariable("FORMACTION",
00979 $this->ctrl->getFormAction($this));
00980
00981
00982 include_once "./classes/class.ilTableGUI.php";
00983 $tbl = new ilTableGUI();
00984
00985
00986 $tbl->setTitle($this->lng->txt("search_result"),"icon_".$this->object->getType().".gif",$this->lng->txt("obj_".$this->object->getType()));
00987 $tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
00988
00989 foreach ($this->data["cols"] as $val)
00990 {
00991 $header_names[] = $this->lng->txt($val);
00992 }
00993
00994 $tbl->setHeaderNames($header_names);
00995
00996 $header_params = $this->ctrl->getParameterArray($this, "searchUser");
00997 $header_params["search_string"] = urlencode($_POST["search_string"]);
00998 $header_params["search_fields"] = urlencode(implode(",",$_POST["search_fields"]));
00999
01000 $tbl->setHeaderVars($this->data["cols"],$header_params);
01001 $tbl->setColumnWidth(array("","25%","25$%","25%","25%"));
01002
01003
01004 $tbl->enable("hits");
01005 $tbl->setOrderColumn($_GET["sort_by"]);
01006 $tbl->setOrderDirection($_GET["sort_order"]);
01007 $tbl->setLimit($_GET["limit"]);
01008 $tbl->setOffset($_GET["offset"]);
01009 $tbl->setMaxCount($this->maxcount);
01010
01011 $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));
01012
01013
01014 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01015
01016
01017 $tbl->render();
01018
01019 if (is_array($this->data["data"][0]))
01020 {
01021
01022 for ($i=0; $i < count($this->data["data"]); $i++)
01023 {
01024 $data = $this->data["data"][$i];
01025 $ctrl = $this->data["ctrl"][$i];
01026
01027
01028 $this->ids[] = $ctrl["obj_id"];
01029
01030
01031 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
01032
01033 $this->tpl->setCurrentBlock("checkbox");
01034 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
01035
01036 $this->tpl->setVariable("CSS_ROW", $css_row);
01037 $this->tpl->parseCurrentBlock();
01038
01039 $this->tpl->setCurrentBlock("table_cell");
01040 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
01041 $this->tpl->parseCurrentBlock();
01042
01043 foreach ($data as $key => $val)
01044 {
01045
01046 $this->ctrl->setParameterByClass("ilobjusergui", "ref_id", "7");
01047 $this->ctrl->setParameterByClass("ilobjusergui", "obj_id", $ctrl["obj_id"]);
01048 $link = $this->ctrl->getLinkTargetByClass("ilobjusergui", "view");
01049
01050 if ($key == "login")
01051 {
01052 $this->tpl->setCurrentBlock("begin_link");
01053 $this->tpl->setVariable("LINK_TARGET", $link);
01054 $this->tpl->parseCurrentBlock();
01055 $this->tpl->touchBlock("end_link");
01056 }
01057
01058 $this->tpl->setCurrentBlock("text");
01059 $this->tpl->setVariable("TEXT_CONTENT", $val);
01060 $this->tpl->parseCurrentBlock();
01061 $this->tpl->setCurrentBlock("table_cell");
01062 $this->tpl->parseCurrentBlock();
01063 }
01064
01065 $this->tpl->setCurrentBlock("tbl_content");
01066 $this->tpl->setVariable("CSS_ROW", $css_row);
01067 $this->tpl->parseCurrentBlock();
01068 }
01069
01070 $this->showActions(true);
01071 }
01072 }
01073
01077 function importUserFormObject ()
01078 {
01079
01080 if($this->ctrl->getTargetScript() == 'repository.php')
01081 {
01082 $this->tabs_gui->clearTargets();
01083 }
01084
01085 $this->tabs_gui->setTabActive('obj_usrf');
01086 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_form.html");
01087
01088 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormaction($this));
01089
01090 $this->tpl->setVariable("TXT_IMPORT_USERS", $this->lng->txt("import_users"));
01091 $this->tpl->setVariable("TXT_IMPORT_FILE", $this->lng->txt("import_file"));
01092 $this->tpl->setVariable("TXT_IMPORT_ROOT_USER", $this->lng->txt("import_root_user"));
01093
01094 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("upload"));
01095 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
01096 }
01097
01098
01104 function importCancelledObject()
01105 {
01106
01107 $import_dir = $this->getImportDir();
01108 if (@is_dir($import_dir))
01109 {
01110 ilUtil::delDir($import_dir);
01111 }
01112
01113 sendInfo($this->lng->txt("msg_cancel"),true);
01114
01115 if (strtolower($_GET["baseClass"]) == 'iladministrationgui')
01116 {
01117 $this->ctrl->redirect($this, "view");
01118
01119 }
01120 else
01121 {
01122 $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
01123 }
01124 }
01125
01129 function getImportDir()
01130 {
01131
01132
01133
01134 global $ilUser;
01135 $importDir = ilUtil::getDataDir().'/user_import/usr_'.$ilUser->getId().'_'.session_id();
01136 ilUtil::makeDirParents($importDir);
01137 return $importDir;
01138 }
01139
01143 function importUserRoleAssignmentObject ()
01144 {
01145
01146 if($this->ctrl->getTargetScript() == 'repository.php')
01147 {
01148 $this->tabs_gui->clearTargets();
01149 }
01150
01151 include_once './classes/class.ilObjRole.php';
01152 include_once './classes/class.ilUserImportParser.php';
01153
01154 global $rbacreview, $rbacsystem, $tree, $lng;
01155
01156
01157 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_roles.html");
01158
01159 $import_dir = $this->getImportDir();
01160
01161
01162 if (@is_dir($import_dir))
01163 {
01164 ilUtil::delDir($import_dir);
01165 }
01166 ilUtil::makeDir($import_dir);
01167
01168
01169 $file_name = $_FILES["importFile"]["name"];
01170 $parts = pathinfo($file_name);
01171 $full_path = $import_dir."/".$file_name;
01172
01173
01174 if (!is_file($_FILES["importFile"]["tmp_name"]))
01175 {
01176 ilUtil::delDir($import_dir);
01177 $this->ilias->raiseError($this->lng->txt("no_import_file_found")
01178 , $this->ilias->error_obj->MESSAGE);
01179 }
01180 ilUtil::moveUploadedFile($_FILES["importFile"]["tmp_name"],
01181 $_FILES["importFile"]["name"], $full_path);
01182
01183
01184 if (strtolower($parts["extension"]) == "zip")
01185 {
01186
01187 ilUtil::unzip($full_path);
01188
01189 $xml_file = null;
01190 $file_list = ilUtil::getDir($import_dir);
01191 foreach ($file_list as $a_file)
01192 {
01193 if (substr($a_file['entry'],-4) == '.xml')
01194 {
01195 $xml_file = $import_dir."/".$a_file['entry'];
01196 break;
01197 }
01198 }
01199 if (is_null($xml_file))
01200 {
01201 $subdir = basename($parts["basename"],".".$parts["extension"]);
01202 $xml_file = $import_dir."/".$subdir."/".$subdir.".xml";
01203 }
01204 }
01205
01206 else
01207 {
01208 $xml_file = $full_path;
01209 }
01210
01211
01212 if (!is_file($xml_file))
01213 {
01214 ilUtil::delDir($import_dir);
01215 $this->ilias->raiseError($this->lng->txt("no_xml_file_found_in_zip")
01216 ." ".$subdir."/".$subdir.".xml", $this->ilias->error_obj->MESSAGE);
01217 }
01218
01219 require_once("classes/class.ilUserImportParser.php");
01220
01221
01222
01223 $importParser = new ilUserImportParser($xml_file, IL_VERIFY);
01224 $importParser->startParsing();
01225 switch ($importParser->getErrorLevel())
01226 {
01227 case IL_IMPORT_SUCCESS :
01228 break;
01229 case IL_IMPORT_WARNING :
01230 $this->tpl->setVariable("IMPORT_LOG", $importParser->getProtocolAsHTML($lng->txt("verification_warning_log")));
01231 break;
01232 case IL_IMPORT_FAILURE :
01233 ilUtil::delDir($import_dir);
01234 $this->ilias->raiseError(
01235 $lng->txt("verification_failed").$importParser->getProtocolAsHTML($lng->txt("verification_failure_log")),
01236 $this->ilias->error_obj->MESSAGE
01237 );
01238 return;
01239 }
01240
01241
01242
01243 $this->tpl->setCurrentBlock("role_selection_form");
01244 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01245 $this->tpl->setVariable("TXT_IMPORT_USERS", $this->lng->txt("import_users"));
01246 $this->tpl->setVariable("TXT_IMPORT_FILE", $this->lng->txt("import_file"));
01247 $this->tpl->setVariable("IMPORT_FILE", $file_name);
01248 $this->tpl->setVariable("TXT_USER_ELEMENT_COUNT", $this->lng->txt("num_users"));
01249 $this->tpl->setVariable("USER_ELEMENT_COUNT", $importParser->getUserCount());
01250 $this->tpl->setVariable("TXT_ROLE_ASSIGNMENT", $this->lng->txt("role_assignment"));
01251 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("import"));
01252 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
01253 $this->tpl->setVariable("XML_FILE_NAME", $xml_file);
01254
01255
01256 $importParser = new ilUserImportParser($xml_file, IL_EXTRACT_ROLES);
01257 $importParser->startParsing();
01258 $roles = $importParser->getCollectedRoles();
01259
01260
01261 $all_gl_roles = $rbacreview->getRoleListByObject(ROLE_FOLDER_ID);
01262 $gl_roles = array();
01263 foreach ($all_gl_roles as $obj_data)
01264 {
01265
01266 if($this->object->getRefId() != USER_FOLDER_ID)
01267 {
01268 if(!ilObjRole::_getAssignUsersStatus($obj_data['obj_id']))
01269 {
01270 continue;
01271 }
01272 }
01273
01274 if ($obj_data["obj_id"] != ANONYMOUS_ROLE_ID)
01275 {
01276
01277 if ($obj_data["obj_id"] != SYSTEM_ROLE_ID or in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]))
01278 {
01279 $gl_roles[$obj_data["obj_id"]] = $obj_data["title"];
01280 }
01281 }
01282 }
01283
01284
01285 $got_globals = false;
01286 foreach($roles as $role_id => $role)
01287 {
01288 if ($role["type"] == "Global")
01289 {
01290 if (! $got_globals)
01291 {
01292 $got_globals = true;
01293
01294 $this->tpl->setCurrentBlock("global_role_section");
01295 $this->tpl->setVariable("TXT_GLOBAL_ROLES_IMPORT", $this->lng->txt("roles_of_import_global"));
01296 $this->tpl->setVariable("TXT_GLOBAL_ROLES", $this->lng->txt("assign_global_role"));
01297 }
01298
01299
01300 $pre_select = array_search($role[name], $gl_roles);
01301 if (! $pre_select)
01302 {
01303 switch($role["name"])
01304 {
01305 case "Administrator":
01306 $pre_select = array_search("Administrator", $gl_roles);
01307 break;
01308
01309 case "Autor":
01310 $pre_select = array_search("User", $gl_roles);
01311 break;
01312
01313 case "Lerner":
01314 $pre_select = array_search("User", $gl_roles);
01315 break;
01316
01317 case "Gast":
01318 $pre_select = array_search("Guest", $gl_roles);
01319 break;
01320
01321 default:
01322 $pre_select = array_search("User", $gl_roles);
01323 break;
01324 }
01325 }
01326 $this->tpl->setCurrentBlock("global_role");
01327 $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $gl_roles, false, true);
01328 $this->tpl->setVariable("TXT_IMPORT_GLOBAL_ROLE", $role["name"]." [".$role_id."]");
01329 $this->tpl->setVariable("SELECT_GLOBAL_ROLE", $role_select);
01330 $this->tpl->parseCurrentBlock();
01331 }
01332 }
01333
01334
01335 $got_locals = false;
01336 foreach($roles as $role_id => $role)
01337 {
01338 if ($role["type"] == "Local")
01339 {
01340 $got_locals = true;
01341 break;
01342 }
01343 }
01344
01345 if ($got_locals)
01346 {
01347 $this->tpl->setCurrentBlock("local_role_section");
01348 $this->tpl->setVariable("TXT_LOCAL_ROLES_IMPORT", $this->lng->txt("roles_of_import_local"));
01349 $this->tpl->setVariable("TXT_LOCAL_ROLES", $this->lng->txt("assign_local_role"));
01350
01351
01352
01353 $loc_roles = $rbacreview->getAssignableRoles();
01354 $l_roles = array();
01355 $l_roles_searcharray = array();
01356 foreach ($loc_roles as $key => $loc_role)
01357 {
01358
01359 $rolf = $rbacreview->getFoldersAssignedToRole($loc_role["obj_id"],true);
01360
01361
01362
01363
01364
01365 if (!$rbacreview->isDeleted($rolf[0])
01366 && $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0]))
01367 && $rolf[0] != ROLE_FOLDER_ID
01368 )
01369 {
01370
01371
01372
01373
01374
01375
01376
01377
01378 $isInSubtree = $this->object->getRefId() == USER_FOLDER_ID;
01379
01380 $path = "";
01381 if ($this->tree->isInTree($rolf[0]))
01382 {
01383
01384
01385 $tmpPath = $this->tree->getPathFull($rolf[0]);
01386 for ($i = 1, $n = count($tmpPath) - 1; $i < $n; $i++)
01387 {
01388 if ($i > 1)
01389 {
01390 $path = $path.' > ';
01391 }
01392 if ($i < 3 || $i > $n - 3)
01393 {
01394 $path = $path.$tmpPath[$i]['title'];
01395 }
01396 else if ($i == 3 || $i == $n - 3)
01397 {
01398 $path = $path.'...';
01399 }
01400
01401 $isInSubtree |= $tmpPath[$i]['obj_id'] == $this->object->getId();
01402 }
01403 }
01404 else
01405 {
01406 $path = "<b>Rolefolder ".$rolf[0]." not found in tree! (Role ".$loc_role["obj_id"].")</b>";
01407 }
01408
01409 if ($loc_role["role_type"] != "Global" && $isInSubtree)
01410 {
01411 $l_roles[$loc_role['obj_id']] = $loc_role["title"]." ($path)";
01412 $l_roles_searcharray[$loc_role['obj_id']] = $loc_role["title"];
01413 }
01414 }
01415 }
01416
01417 $l_roles[""] = "";
01418 natsort($l_roles);
01419 $l_roles[""] = $this->lng->txt("usrimport_ignore_role");
01420
01421 foreach($roles as $role_id => $role)
01422 {
01423 if ($role["type"] == "Local")
01424 {
01425 $this->tpl->setCurrentBlock("local_role");
01426 $this->tpl->setVariable("TXT_IMPORT_LOCAL_ROLE", $role["name"]." [".$role_id."]");
01427 $pre_select = array_search($role_id, $l_roles_searcharray);
01428 if (!($pre_select !== false))
01429 {
01430 $pre_select = array_search($role['name'], $l_roles_searcharray);
01431 }
01432 $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $l_roles, false, true);
01433 $this->tpl->setVariable("SELECT_LOCAL_ROLE", $role_select);
01434 $this->tpl->parseCurrentBlock();
01435 }
01436 }
01437 }
01438
01439
01440 $this->tpl->setVariable("TXT_CONFLICT_HANDLING", $lng->txt("conflict_handling"));
01441 $handlers = array(
01442 IL_IGNORE_ON_CONFLICT => "ignore_on_conflict",
01443 IL_UPDATE_ON_CONFLICT => "update_on_conflict"
01444 );
01445 $this->tpl->setVariable("TXT_CONFLICT_HANDLING_INFO", str_replace('\n','<br>',$this->lng->txt("usrimport_conflict_handling_info")));
01446 $this->tpl->setVariable("TXT_CONFLICT_CHOICE", $lng->txt("conflict_handling"));
01447 $this->tpl->setVariable("SELECT_CONFLICT", ilUtil::formSelect(IL_IGNORE_ON_CONFLICT, "conflict_handling_choice", $handlers, false, false));
01448
01449
01450 $this->lng->loadLanguageModule("mail");
01451 include_once './classes/class.ilObjUserFolder.php';
01452 $amail = ilObjUserFolder::_lookupNewAccountMail($this->lng->getDefaultLanguage());
01453 if (trim($amail["body"]) != "" && trim($amail["subject"]) != "")
01454 {
01455 $this->tpl->setCurrentBlock("inform_user");
01456 $this->tpl->setVariable("TXT_ACCOUNT_MAIL", $lng->txt("mail_account_mail"));
01457 if (true)
01458 {
01459 $this->tpl->setVariable("SEND_MAIL", " checked=\"checked\"");
01460 }
01461 $this->tpl->setVariable("TXT_INFORM_USER_MAIL",
01462 $this->lng->txt("user_send_new_account_mail"));
01463 $this->tpl->parseCurrentBlock();
01464 }
01465 }
01466
01470 function importUsersObject()
01471 {
01472
01473 if($this->ctrl->getTargetScript() == 'repository.php')
01474 {
01475 $this->tabs_gui->clearTargets();
01476 }
01477
01478 include_once './classes/class.ilObjRole.php';
01479 include_once './classes/class.ilUserImportParser.php';
01480
01481 global $rbacreview, $rbacsystem, $tree, $lng;
01482
01483 switch ($_POST["conflict_handling_choice"])
01484 {
01485 case "update_on_conflict" :
01486 $rule = IL_UPDATE_ON_CONFLICT;
01487 break;
01488 case "ignore_on_conflict" :
01489 default :
01490 $rule = IL_IGNORE_ON_CONFLICT;
01491 break;
01492 }
01493 $importParser = new ilUserImportParser($_POST["xml_file"], IL_USER_IMPORT, $rule);
01494 $importParser->setFolderId($this->getUserOwnerId());
01495 $import_dir = $this->getImportDir();
01496
01497
01498
01499
01500 if ($_POST["role_assign"])
01501 {
01502 $global_roles = $rbacreview->getGlobalRoles();
01503 foreach ($_POST["role_assign"] as $role_id)
01504 {
01505 if ($role_id != "")
01506 {
01507 if (in_array($role_id, $global_roles))
01508 {
01509 if ($role_id == SYSTEM_ROLE_ID && ! in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
01510 || ($this->object->getRefId() != USER_FOLDER_ID
01511 && ! ilObjRole::_getAssignUsersStatus($role_id))
01512 )
01513 {
01514 ilUtil::delDir($import_dir);
01515 $this->ilias->raiseError($this->lng->txt("usrimport_with_specified_role_not_permitted"),
01516 $this->ilias->error_obj->MESSAGE);
01517 }
01518 }
01519 else
01520 {
01521 $rolf = $rbacreview->getFoldersAssignedToRole($role_id,true);
01522 if ($rbacreview->isDeleted($rolf[0])
01523 || ! $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0])))
01524 {
01525 ilUtil::delDir($import_dir);
01526 $this->ilias->raiseError($this->lng->txt("usrimport_with_specified_role_not_permitted"),
01527 $this->ilias->error_obj->MESSAGE);
01528 return;
01529 }
01530 }
01531 }
01532 }
01533 }
01534
01535 $importParser->setRoleAssignment($_POST["role_assign"]);
01536 $importParser->startParsing();
01537
01538
01539 ilUtil::delDir($import_dir);
01540
01541 switch ($importParser->getErrorLevel())
01542 {
01543 case IL_IMPORT_SUCCESS :
01544 sendInfo($this->lng->txt("user_imported"), true);
01545 break;
01546 case IL_IMPORT_WARNING :
01547 sendInfo($this->lng->txt("user_imported_with_warnings").$importParser->getProtocolAsHTML($lng->txt("import_warning_log")), true);
01548 break;
01549 case IL_IMPORT_FAILURE :
01550 $this->ilias->raiseError(
01551 $this->lng->txt("user_import_failed")
01552 .$importParser->getProtocolAsHTML($lng->txt("import_failure_log")),
01553 $this->ilias->error_obj->MESSAGE
01554 );
01555 break;
01556 }
01557
01558 if (strtolower($_GET["baseClass"]) == "iladministrationgui")
01559 {
01560 $this->ctrl->redirect($this, "view");
01561
01562 }
01563 else
01564 {
01565 $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
01566 }
01567 }
01568
01569
01570 function appliedUsersObject()
01571 {
01572 global $rbacsystem,$ilias;
01573
01574 unset($_SESSION['applied_users']);
01575
01576 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
01577 {
01578 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
01579 }
01580
01581 if(!count($app_users =& $ilias->account->getAppliedUsers()))
01582 {
01583 sendInfo($this->lng->txt('no_users_applied'));
01584
01585 return false;
01586 }
01587
01588 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_applied_users.html");
01589 $this->lng->loadLanguageModule('crs');
01590
01591 $counter = 0;
01592 foreach($app_users as $usr_id)
01593 {
01594 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01595
01596 $f_result[$counter][] = ilUtil::formCheckbox(0,"users[]",$usr_id);
01597 $f_result[$counter][] = $tmp_user->getLogin();
01598 $f_result[$counter][] = $tmp_user->getFirstname();
01599 $f_result[$counter][] = $tmp_user->getLastname();
01600
01601 if($tmp_user->getTimeLimitUnlimited())
01602 {
01603 $f_result[$counter][] = "<b>".$this->lng->txt('crs_unlimited')."</b>";
01604 }
01605 else
01606 {
01607 $limit = "<b>".$this->lng->txt('crs_from').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitFrom()).'<br />';
01608 $limit .= "<b>".$this->lng->txt('crs_to').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitUntil());
01609
01610 $f_result[$counter][] = $limit;
01611 }
01612 ++$counter;
01613 }
01614
01615 $this->__showAppliedUsersTable($f_result);
01616
01617 return true;
01618 }
01619
01620 function editAppliedUsersObject()
01621 {
01622 global $rbacsystem;
01623
01624 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01625 {
01626 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01627 }
01628
01629 $this->lng->loadLanguageModule('crs');
01630
01631 $_POST['users'] = $_SESSION['applied_users'] = ($_SESSION['applied_users'] ? $_SESSION['applied_users'] : $_POST['users']);
01632
01633 if(!isset($_SESSION['error_post_vars']))
01634 {
01635 sendInfo($this->lng->txt('time_limit_add_time_limit_for_selected'));
01636 }
01637
01638 if(!count($_POST["users"]))
01639 {
01640 sendInfo($this->lng->txt("time_limit_no_users_selected"));
01641 $this->appliedUsersObject();
01642
01643 return false;
01644 }
01645
01646 $counter = 0;
01647 foreach($_POST['users'] as $usr_id)
01648 {
01649 if($counter)
01650 {
01651 $title .= ', ';
01652 }
01653 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01654 $title .= $tmp_user->getLogin();
01655 ++$counter;
01656 }
01657 if(strlen($title) > 79)
01658 {
01659 $title = substr($title,0,80);
01660 $title .= '...';
01661 }
01662
01663
01664 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_edit_applied_users.html");
01665 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01666
01667
01668 $time_limit_unlimited = $_SESSION["error_post_vars"]["au"]["time_limit_unlimited"] ?
01669 1 : 0;
01670
01671 $time_limit_start = $_SESSION["error_post_vars"]["au"]["time_limit_start"] ?
01672 $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_start"]) :
01673 time();
01674 $time_limit_end = $_SESSION["error_post_vars"]["au"]["time_limit_end"] ?
01675 $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_end"]) :
01676 time();
01677
01678
01679
01680 $this->tpl->setVariable("ALT_IMG",$this->lng->txt("obj_usr"));
01681 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath("icon_usr_b.gif"));
01682 $this->tpl->setVariable("TITLE",$title);
01683 $this->tpl->setVariable("TXT_TIME_LIMIT",$this->lng->txt("time_limit"));
01684 $this->tpl->setVariable("TXT_TIME_LIMIT_START",$this->lng->txt("crs_start"));
01685 $this->tpl->setVariable("TXT_TIME_LIMIT_END",$this->lng->txt("crs_end"));
01686 $this->tpl->setVariable("CMD_SUBMIT","updateAppliedUsers");
01687 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
01688 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("submit"));
01689
01690
01691
01692 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_DAY",$this->__getDateSelect("day","au[time_limit_start][day]",
01693 date("d",$time_limit_start)));
01694 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MONTH",$this->__getDateSelect("month","au[time_limit_start][month]",
01695 date("m",$time_limit_start)));
01696 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_YEAR",$this->__getDateSelect("year","au[time_limit_start][year]",
01697 date("Y",$time_limit_start)));
01698 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_HOUR",$this->__getDateSelect("hour","au[time_limit_start][hour]",
01699 date("G",$time_limit_start)));
01700 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MINUTE",$this->__getDateSelect("minute","au[time_limit_start][minute]",
01701 date("i",$time_limit_start)));
01702 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_DAY",$this->__getDateSelect("day","au[time_limit_end][day]",
01703 date("d",$time_limit_end)));
01704 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MONTH",$this->__getDateSelect("month","au[time_limit_end][month]",
01705 date("m",$time_limit_end)));
01706 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_YEAR",$this->__getDateSelect("year","au[time_limit_end][year]",
01707 date("Y",$time_limit_end)));
01708 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_HOUR",$this->__getDateSelect("hour","au[time_limit_end][hour]",
01709 date("G",$time_limit_end)));
01710 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MINUTE",$this->__getDateSelect("minute","au[time_limit_end][minute]",
01711 date("i",$time_limit_end)));
01712 if($this->ilias->account->getTimeLimitUnlimited())
01713 {
01714 $this->tpl->setVariable("ROWSPAN",3);
01715 $this->tpl->setCurrentBlock("unlimited");
01716 $this->tpl->setVariable("TXT_TIME_LIMIT_UNLIMITED",$this->lng->txt("crs_unlimited"));
01717 $this->tpl->setVariable("TIME_LIMIT_UNLIMITED",ilUtil::formCheckbox($time_limit_unlimited,"au[time_limit_unlimited]",1));
01718 $this->tpl->parseCurrentBlock();
01719 }
01720 else
01721 {
01722 $this->tpl->setVariable("ROWSPAN",2);
01723 }
01724 }
01725
01726 function updateAppliedUsersObject()
01727 {
01728 global $rbacsystem;
01729
01730 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01731 {
01732 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01733 }
01734
01735 $start = $this->__toUnix($_POST['au']['time_limit_start']);
01736 $end = $this->__toUnix($_POST['au']['time_limit_end']);
01737
01738 if(!$_POST['au']['time_limit_unlimited'])
01739 {
01740 if($start > $end)
01741 {
01742 $_SESSION['error_post_vars'] = $_POST;
01743 sendInfo($this->lng->txt('time_limit_not_valid'));
01744 $this->editAppliedUsersObject();
01745
01746 return false;
01747 }
01748 }
01749 #if(!$this->ilias->account->getTimeLimitUnlimited())
01750 #{
01751 # if($start < $this->ilias->account->getTimeLimitFrom() or
01752 # $end > $this->ilias->account->getTimeLimitUntil())
01753 # {
01754 # $_SESSION['error_post_vars'] = $_POST;
01755 # sendInfo($this->lng->txt('time_limit_not_within_owners'));
01756 # $this->editAppliedUsersObject();
01757
01758 # return false;
01759 # }
01760 #}
01761
01762 foreach($_SESSION['applied_users'] as $usr_id)
01763 {
01764 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01765
01766 $tmp_user->setTimeLimitUnlimited((int) $_POST['au']['time_limit_unlimited']);
01767 $tmp_user->setTimeLimitFrom($start);
01768 $tmp_user->setTimeLimitUntil($end);
01769 $tmp_user->setTimeLimitMessage(0);
01770 $tmp_user->update();
01771
01772 unset($tmp_user);
01773 }
01774
01775 unset($_SESSION['applied_users']);
01776 sendInfo($this->lng->txt('time_limit_users_updated'));
01777 $this->appliedUsersObject();
01778
01779 return true;
01780 }
01781
01782 function __showAppliedUsersTable($a_result_set)
01783 {
01784 $tbl =& $this->__initTableGUI();
01785 $tpl =& $tbl->getTemplateObject();
01786
01787
01788 $tpl->setCurrentBlock("tbl_form_header");
01789
01790 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01791 $tpl->parseCurrentBlock();
01792
01793 $tpl->setCurrentBlock("tbl_action_btn");
01794 $tpl->setVariable("BTN_NAME",'editAppliedUsers');
01795 $tpl->setVariable("BTN_VALUE",$this->lng->txt('edit'));
01796 $tpl->parseCurrentBlock();
01797
01798 $tpl->setCurrentBlock("tbl_action_row");
01799 $tpl->setVariable("COLUMN_COUNTS",5);
01800 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01801 $tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
01802 $tpl->parseCurrentBlock();
01803
01804
01805
01806 $tbl->setTitle($this->lng->txt("time_limit_applied_users"),"icon_usr_b.gif",$this->lng->txt("users"));
01807 $tbl->setHeaderNames(array('',
01808 $this->lng->txt("login"),
01809 $this->lng->txt("firstname"),
01810 $this->lng->txt("lastname"),
01811 $this->lng->txt("time_limits")));
01812 $header_params = $this->ctrl->getParameterArray($this, "appliedUsers");
01813 $tbl->setHeaderVars(array("",
01814 "login",
01815 "firstname",
01816 "lastname",
01817 "time_limit"),
01818 array($header_params));
01819 $tbl->setColumnWidth(array("3%","19%","19%","19%","40%"));
01820
01821
01822 $this->__setTableGUIBasicData($tbl,$a_result_set);
01823 $tbl->render();
01824
01825 $this->tpl->setVariable("APPLIED_USERS",$tbl->tpl->get());
01826
01827 return true;
01828 }
01829
01830 function &__initTableGUI()
01831 {
01832 include_once "./classes/class.ilTableGUI.php";
01833
01834 return new ilTableGUI(0,false);
01835 }
01836
01837 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
01838 {
01839 $offset = $_GET["offset"];
01840 $order = $_GET["sort_by"];
01841 $direction = $_GET["sort_order"];
01842
01843
01844 $tbl->setOrderColumn($order);
01845 $tbl->setOrderDirection($direction);
01846 $tbl->setOffset($offset);
01847 $tbl->setLimit($_GET["limit"]);
01848 $tbl->setMaxCount(count($result_set));
01849 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01850 $tbl->setData($result_set);
01851 }
01852
01853 function __getDateSelect($a_type,$a_varname,$a_selected)
01854 {
01855 switch($a_type)
01856 {
01857 case "minute":
01858 for($i=0;$i<=60;$i++)
01859 {
01860 $days[$i] = $i < 10 ? "0".$i : $i;
01861 }
01862 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01863
01864 case "hour":
01865 for($i=0;$i<24;$i++)
01866 {
01867 $days[$i] = $i < 10 ? "0".$i : $i;
01868 }
01869 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01870
01871 case "day":
01872 for($i=1;$i<32;$i++)
01873 {
01874 $days[$i] = $i < 10 ? "0".$i : $i;
01875 }
01876 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01877
01878 case "month":
01879 for($i=1;$i<13;$i++)
01880 {
01881 $month[$i] = $i < 10 ? "0".$i : $i;
01882 }
01883 return ilUtil::formSelect($a_selected,$a_varname,$month,false,true);
01884
01885 case "year":
01886 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
01887 {
01888 $year[$i] = $i;
01889 }
01890 return ilUtil::formSelect($a_selected,$a_varname,$year,false,true);
01891 }
01892 }
01893 function __toUnix($a_time_arr)
01894 {
01895 return mktime($a_time_arr["hour"],
01896 $a_time_arr["minute"],
01897 $a_time_arr["second"],
01898 $a_time_arr["month"],
01899 $a_time_arr["day"],
01900 $a_time_arr["year"]);
01901 }
01902
01903 function hitsperpageObject()
01904 {
01905 parent::hitsperpageObject();
01906 $this->viewObject();
01907 }
01908
01909
01910
01911 function listUserDefinedFieldsObject()
01912 {
01913 unset($_SESSION['select_num_values']);
01914 unset($_SESSION['num_values']);
01915
01916 include_once './classes/class.ilUserDefinedFields.php';
01917
01918 $this->setSubTabs('settings');
01919 $this->tabs_gui->setTabActive('global_settings');
01920 $this->tabs_gui->setSubTabActive('user_defined_fields');
01921
01922 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_list_user_defined.html');
01923 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01924 $this->tpl->setVariable("TXT_OVERVIEW",$this->lng->txt('user_defined_list'));
01925
01926 $this->tpl->setVariable("TXT_NAME", $this->lng->txt("field_name"));
01927 $this->tpl->setVariable("TXT_VISIBLE", $this->lng->txt("visible"));
01928 $this->tpl->setVariable("TXT_CHANGE", $this->lng->txt("changeable"));
01929 $this->tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required_field"));
01930 $this->tpl->setVariable("TXT_SEARCHABLE", $this->lng->txt("header_searchable"));
01931 $this->tpl->setVariable("TXT_OPTIONS",$this->lng->txt('options'));
01932
01933 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('add_user_defined_field'));
01934
01935 $user_field_definitions =& ilUserDefinedFields::_getInstance();
01936
01937 if(!count($definitions = $user_field_definitions->getDefinitions()))
01938 {
01939 $this->tpl->setCurrentBlock("no_content");
01940 $this->tpl->setVariable("NO_FIELDS",$this->lng->txt('no_user_defined_fields_defined'));
01941 $this->tpl->parseCurrentBlock();
01942 }
01943 else
01944 {
01945 $this->tpl->setVariable("BTN_SAVE",$this->lng->txt('save'));
01946 }
01947
01948 foreach($definitions as $field_id => $definition)
01949 {
01950 $this->tpl->setCurrentBlock("user_defined");
01951 $this->tpl->setVariable("NAME",$definition['field_name']);
01952 $this->tpl->setVariable("VISIBLE",ilUtil::formCheckbox($definition['visible'],"def[$field_id][visible]",1));
01953 $this->tpl->setVariable("CHANGE",ilUtil::formCheckbox($definition['changeable'],"def[$field_id][changeable]",1));
01954 $this->tpl->setVariable("REQUIRED",ilUtil::formCheckbox($definition['required'],"def[$field_id][required]",1));
01955 $this->tpl->setVariable("SEARCHABLE",ilUtil::formCheckbox($definition['searchable'],"def[$field_id][searchable]",1));
01956
01957 $this->ctrl->setParameter($this,'field_id',$field_id);
01958
01959
01960 switch($definition['field_type'])
01961 {
01962 case UDF_TYPE_TEXT:
01963 $this->tpl->setVariable("EDIT_LINK",$this->ctrl->getLinkTarget($this,'editTextField'));
01964 break;
01965
01966 case UDF_TYPE_SELECT:
01967 $this->tpl->setVariable("EDIT_LINK",$this->ctrl->getLinkTarget($this,'editSelectField'));
01968 break;
01969 }
01970 $this->tpl->setVariable("EDIT",$this->lng->txt('edit'));
01971
01972 $this->tpl->setVariable("DELETE_LINK",$this->ctrl->getLinkTarget($this,'askDeleteField'));
01973 $this->tpl->setVariable("DELETE",$this->lng->txt('delete'));
01974 $this->tpl->parseCurrentBlock();
01975 }
01976 }
01977
01978 function editTextFieldObject()
01979 {
01980 include_once './classes/class.ilUserDefinedFields.php';
01981 $udf =& ilUserDefinedFields::_getInstance();
01982 $definition = $udf->getDefinition((int) $_GET['field_id']);
01983
01984
01985 $this->ctrl->setParameter($this,'field_id',(int) $_GET['field_id']);
01986
01987 $this->setSubTabs('settings');
01988 $this->tabs_gui->setTabActive('global_settings');
01989 $this->tabs_gui->setSubTabActive('user_defined_fields');
01990
01991 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_update_text_field.html');
01992
01993 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01994 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('udf_update_text_field'));
01995 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
01996
01997 $this->tpl->setVariable("FIELD_NAME",$definition['field_name']);
01998
01999 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('cancel'));
02000 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('update'));
02001
02002 return true;
02003 }
02004
02005 function updateTextFieldObject()
02006 {
02007 include_once './classes/class.ilUserDefinedFields.php';
02008
02009 $udf =& ilUserDefinedFields::_getInstance();
02010 $definition = $udf->getDefinition((int) $_GET['field_id']);
02011
02012 $udf->setFieldName(ilUtil::stripslashes($_POST['field_name']));
02013 $udf->setFieldType($definition['field_type']);
02014 $udf->setFieldValues($definition['field_values']);
02015 $udf->enableVisible($definition['visible']);
02016 $udf->enableChangeable($definition['changeable']);
02017 $udf->enableRequired($definition['required']);
02018 $udf->enableSearchable($definition['searchable']);
02019
02020 $udf->update($definition['field_id']);
02021
02022 sendInfo($this->lng->txt('udf_update_success'));
02023
02024 $this->listUserDefinedFieldsObject();
02025 }
02026
02027 function editSelectFieldObject()
02028 {
02029 include_once './classes/class.ilUserDefinedFields.php';
02030
02031 $_SESSION['select_num_values'] = $_SESSION['select_num_values'] ? $_SESSION['select_num_values'] : 0;
02032
02033 $udf =& ilUserDefinedFields::_getInstance();
02034 $definition = $udf->getDefinition((int) $_GET['field_id']);
02035
02036
02037 $this->ctrl->setParameter($this,'field_id',(int) $_GET['field_id']);
02038
02039 $this->setSubTabs('settings');
02040 $this->tabs_gui->setTabActive('global_settings');
02041 $this->tabs_gui->setSubTabActive('user_defined_fields');
02042
02043 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_update_select_field.html');
02044
02045
02046 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02047 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('udf_update_select_field'));
02048 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02049
02050 $this->tpl->setVariable("FIELD_NAME_VALUE",$definition['field_name']);
02051
02052
02053 $counter = 0;
02054 foreach($definition['field_values'] as $value)
02055 {
02056 $this->tpl->setCurrentBlock("values");
02057 $this->tpl->setVariable("COUNTER",$counter++);
02058 $this->tpl->setVariable("TXT_VALUES",$this->lng->txt('udf_value').' '.($counter));
02059 $this->tpl->setVariable("FIELD_NAME",$value);
02060
02061 $this->ctrl->setParameter($this,'value_id',$counter-1);
02062 $this->tpl->setVariable("DELETE_LINK",$this->ctrl->getLinkTarget($this,'deleteValue'));
02063 $this->tpl->setVariable("DELETE",$this->lng->txt('delete'));
02064 $this->tpl->parseCurrentBlock();
02065 }
02066
02067
02068 for($i = 0; $i < $_SESSION['select_num_values'];$i++)
02069 {
02070 $this->tpl->setCurrentBlock("new_values");
02071 $this->tpl->setVariable("NEW_COUNTER",$counter++);
02072 $this->tpl->setVariable("TXT_NEW_VALUES",$this->lng->txt('udf_value').' '.($counter));
02073 $this->tpl->setVariable("NEW_FIELD_NAME",$_POST['field_values'][$counter-1]);
02074 $this->tpl->parseCurrentBlock();
02075 }
02076 $this->tpl->setVariable("BTN_NEW_VALUE",$this->lng->txt('btn_new_value'));
02077 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('cancel'));
02078 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('save'));
02079
02080 return true;
02081 }
02082
02083 function updateSelectFieldObject()
02084 {
02085 include_once './classes/class.ilUserDefinedFields.php';
02086
02087
02088 $_POST['field_values'] = is_array($_POST['field_values']) ? $_POST['field_values'] : array();
02089
02090 $udf =& ilUserDefinedFields::_getInstance();
02091 $definition = $udf->getDefinition((int) $_GET['field_id']);
02092
02093
02094 $udf->setFieldName(ilUtil::stripslashes($_POST['field_name']));
02095 $udf->setFieldValues(array_merge($definition['field_values'],$_POST['field_values']));
02096 $udf->setFieldType($definition['field_type']);
02097 $udf->enableVisible($definition['visible']);
02098 $udf->enableChangeable($definition['changeable']);
02099 $udf->enableRequired($definition['required']);
02100 $udf->enableSearchable($definition['searchable']);
02101
02102 if($error = $udf->validateValues())
02103 {
02104 switch($error)
02105 {
02106 case UDF_DUPLICATE_VALUES:
02107 sendInfo($this->lng->txt('udf_duplicate_entries'));
02108 $this->editSelectFieldObject();
02109 return false;
02110
02111 case UDF_NO_VALUES:
02112 sendInfo($this->lng->txt('udf_no_entries'));
02113 $this->editSelectFieldObject();
02114 return false;
02115 }
02116 }
02117
02118 $udf->update($definition['field_id']);
02119 sendInfo($this->lng->txt('udf_update_success'));
02120
02121 unset($_SESSION['select_num_values']);
02122 $this->editSelectFieldObject();
02123 }
02124
02125
02126 function deleteValueObject()
02127 {
02128 include_once './classes/class.ilUserDefinedFields.php';
02129
02130 $udf =& ilUserDefinedFields::_getInstance();
02131 $udf->deleteValue((int) $_GET['field_id'],(int) $_GET['value_id']);
02132
02133 sendInfo($this->lng->txt('udf_value_deleted'));
02134 $this->editSelectFieldObject();
02135
02136 return true;
02137 }
02138
02139 function addSelectValueObject()
02140 {
02141 $_SESSION['select_num_values'] += 1;
02142 $this->editSelectFieldObject();
02143 return true;
02144 }
02145
02146
02147
02148
02149 function askDeleteFieldObject()
02150 {
02151 include_once './classes/class.ilUserDefinedFields.php';
02152
02153 sendInfo($this->lng->txt('udf_delete_sure'));
02154
02155 $this->setSubTabs('settings');
02156 $this->tabs_gui->setTabActive('global_settings');
02157 $this->tabs_gui->setSubTabActive('user_defined_fields');
02158
02159 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_ask_delete.html');
02160
02161 $this->ctrl->setParameter($this,'field_id',(int) $_GET['field_id']);
02162 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02163 $this->tpl->setVariable("TXT_DELETE_FIELD",$this->lng->txt('udf_delete_header'));
02164 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02165
02166 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02167 $definition = $user_field_definitions->getDefinition((int) $_GET['field_id']);
02168
02169 $this->tpl->setVariable("FIELD_NAME",$definition['field_name']);
02170 $this->tpl->setVariable("BTN_DELETE",$this->lng->txt('delete'));
02171 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt('cancel'));
02172
02173 return true;
02174 }
02175
02176 function deleteFieldObject()
02177 {
02178 include_once './classes/class.ilUserDefinedFields.php';
02179 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02180
02181 $user_field_definitions->delete((int) $_GET['field_id']);
02182
02183 sendInfo($this->lng->txt('udf_field_deleted'));
02184 $this->listUserDefinedFieldsObject();
02185
02186 return true;
02187 }
02188
02189
02190 function updateFieldsObject()
02191 {
02192 include_once './classes/class.ilUserDefinedFields.php';
02193 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02194
02195 foreach($user_field_definitions->getDefinitions() as $field_id => $definition)
02196 {
02197 $user_field_definitions->setFieldName($definition['field_name']);
02198 $user_field_definitions->setFieldType($definition['field_type']);
02199 $user_field_definitions->setFieldValues($definition['field_values']);
02200 $user_field_definitions->enableVisible((int) $_POST['def'][$field_id]['visible']);
02201 $user_field_definitions->enableChangeable((int) $_POST['def'][$field_id]['changeable']);
02202 $user_field_definitions->enableRequired((int) $_POST['def'][$field_id]['required']);
02203 $user_field_definitions->enableSearchable((int) $_POST['def'][$field_id]['searchable']);
02204 $user_field_definitions->update($field_id);
02205 }
02206
02207 sendInfo($this->lng->txt('settings_saved'));
02208 $this->listUserDefinedFieldsObject();
02209
02210 return true;
02211 }
02212
02213 function chooseFieldTypeObject()
02214 {
02215 include_once './classes/class.ilUserDefinedFields.php';
02216
02217
02218 $_SESSION['num_values'] = 3;
02219
02220 $this->setSubTabs('settings');
02221 $this->tabs_gui->setTabActive('global_settings');
02222 $this->tabs_gui->setSubTabActive('user_defined_fields');
02223
02224 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_select_field_type.html');
02225
02226 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('add_new_user_defined_field'));
02227 $this->tpl->setVariable("FIELD_TYPE",$this->lng->txt('field_type'));
02228 $this->tpl->setVariable("TYPE_TEXT",ilUtil::formRadioButton(1,'field_type',UDF_TYPE_TEXT));
02229 $this->tpl->setVariable("TYPE_SELECT",ilUtil::formRadioButton(0,'field_type',UDF_TYPE_SELECT));
02230 $this->tpl->setVariable("TXT_TEXT",$this->lng->txt('udf_type_text'));
02231 $this->tpl->setVariable("TXT_SELECT",$this->lng->txt('udf_type_select'));
02232 $this->tpl->setVariable("BTN_MORE",$this->lng->txt('btn_next'));
02233 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt('cancel'));
02234
02235 return true;
02236 }
02237
02238 function chooseDefinitionsObject()
02239 {
02240 include_once './classes/class.ilUserDefinedFields.php';
02241
02242 $this->setSubTabs('settings');
02243 $this->tabs_gui->setTabActive('global_settings');
02244 $this->tabs_gui->setSubTabActive('user_defined_fields');
02245
02246 switch($field_type = (int) $_REQUEST['field_type'])
02247 {
02248 case UDF_TYPE_TEXT:
02249 $this->__showTextTable();
02250 break;
02251
02252 case UDF_TYPE_SELECT:
02253 $this->__showSelectTable();
02254 break;
02255 }
02256 }
02257
02258 function __showTextTable()
02259 {
02260 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_edit_text_field.html');
02261
02262
02263 $this->ctrl->setParameter($this,'field_type',(int) $_REQUEST['field_type']);
02264 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02265
02266 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('udf_add_field'));
02267 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('btn_previous'));
02268 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('add_new_user_defined_text_field'));
02269 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02270 $this->tpl->setVariable("FIELD_NAME",$_POST['field_name']);
02271
02272 $this->tpl->setVariable("TXT_VISIBLE", $this->lng->txt("visible"));
02273 $this->tpl->setVariable("TXT_CHANGE", $this->lng->txt("changeable"));
02274 $this->tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required_field"));
02275 $this->tpl->setVariable("TXT_SEARCHABLE", $this->lng->txt("header_searchable"));
02276
02277 $this->tpl->setVariable("VISIBLE",ilUtil::formCheckbox($_POST['def']['visible'],"def[visible]",1));
02278 $this->tpl->setVariable("CHANGE",ilUtil::formCheckbox($_POST['def']['changeable'],"def[changeable]",1));
02279 $this->tpl->setVariable("REQUIRED",ilUtil::formCheckbox($_POST['def']['required'],"def[required]",1));
02280 $this->tpl->setVariable("SEARCHABLE",ilUtil::formCheckbox($_POST['def']['searchable'],"def[searchable]",1));
02281
02282 return true;
02283 }
02284
02285 function __showSelectTable()
02286 {
02287 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_edit_select_field.html');
02288
02289
02290 $this->ctrl->setParameter($this,'field_type',(int) $_REQUEST['field_type']);
02291 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02292 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('udf_add_field'));
02293 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('btn_previous'));
02294 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('add_new_user_defined_select_field'));
02295 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02296 $this->tpl->setVariable("FIELD_NAME_VALUE",$_POST['field_name']);
02297
02298 $this->tpl->setVariable("TXT_VISIBLE", $this->lng->txt("visible"));
02299 $this->tpl->setVariable("TXT_CHANGE", $this->lng->txt("changeable"));
02300 $this->tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required_field"));
02301 $this->tpl->setVariable("TXT_SEARCHABLE", $this->lng->txt("header_searchable"));
02302
02303 $this->tpl->setVariable("VISIBLE",ilUtil::formCheckbox($_POST['def']['visible'],"def[visible]",1));
02304 $this->tpl->setVariable("CHANGE",ilUtil::formCheckbox($_POST['def']['changeable'],"def[changeable]",1));
02305 $this->tpl->setVariable("REQUIRED",ilUtil::formCheckbox($_POST['def']['required'],"def[required]",1));
02306 $this->tpl->setVariable("SEARCHABLE",ilUtil::formCheckbox($_POST['def']['searchable'],"def[searchable]",1));
02307
02308 $this->tpl->setVariable("BTN_NEW_VALUE",$this->lng->txt('btn_new_value'));
02309
02310 for($i = 0; $i < $_SESSION['num_values']; $i++)
02311 {
02312 $this->tpl->setCurrentBlock("values");
02313 $this->tpl->setVariable("TXT_VALUES",$this->lng->txt('udf_value').' '.($i+1));
02314 $this->tpl->setVariable("COUNTER",$i);
02315 $this->tpl->setVariable("FIELD_NAME",$_POST['field_values'][$i]);
02316 $this->tpl->parseCurrentBlock();
02317 }
02318
02319
02320 }
02321
02322 function addValueObject()
02323 {
02324 $_SESSION['num_values'] += 1;
02325 $this->chooseDefinitionsObject();
02326 return true;
02327 }
02328
02329 function saveFieldObject()
02330 {
02331 include_once './classes/class.ilUserDefinedFields.php';
02332 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02333
02334 if(!strlen($_POST['field_name']))
02335 {
02336 sendInfo($this->lng->txt('udf_no_name_given'));
02337 $this->chooseDefinitionsObject();
02338 return false;
02339 }
02340
02341 if($user_field_definitions->nameExists($_POST['field_name']))
02342 {
02343 sendInfo($this->lng->txt('udf_name_already_exists'));
02344 $this->chooseDefinitionsObject();
02345 return false;
02346 }
02347
02348
02349 if($_REQUEST['field_type'] == UDF_TYPE_TEXT)
02350 {
02351 $user_field_definitions->setFieldType(UDF_TYPE_TEXT);
02352 }
02353 if($_REQUEST['field_type'] == UDF_TYPE_SELECT)
02354 {
02355 $user_field_definitions->setFieldType(UDF_TYPE_SELECT);
02356 $user_field_definitions->setFieldValues($_POST['field_values']);
02357 if($error = $user_field_definitions->validateValues())
02358 {
02359 switch($error)
02360 {
02361 case UDF_DUPLICATE_VALUES:
02362 sendInfo($this->lng->txt('udf_duplicate_entries'));
02363 $this->chooseDefinitionsObject();
02364 return false;
02365
02366 case UDF_NO_VALUES:
02367 sendInfo($this->lng->txt('udf_no_entries'));
02368 $this->chooseDefinitionsObject();
02369 return false;
02370 }
02371 }
02372 }
02373 $user_field_definitions->setFieldName($_POST['field_name']);
02374 $user_field_definitions->enableVisible($_POST['def']['visible']);
02375 $user_field_definitions->enableChangeable($_POST['def']['changeable']);
02376 $user_field_definitions->enableRequired($_POST['def']['required']);
02377 $user_field_definitions->enableSearchable($_POST['def']['searchable']);
02378 $user_field_definitions->add();
02379
02380 sendInfo($this->lng->txt('udf_added_field'));
02381 $this->listUserDefinedFieldsObject();
02382
02383 return true;
02384 }
02385
02396 function settingsObject()
02397 {
02398 include_once 'Services/Search/classes/class.ilUserSearchOptions.php';
02399
02400 global $ilias;
02401
02402 $this->getTemplateFile("settings","usr");
02403 $this->setSubTabs('settings');
02404
02405 $profile_fields =& $this->object->getProfileFields();
02406
02407
02408 $fixed_required_fields = array(
02409 "gender" => 1,
02410 "firstname" => 1,
02411 "lastname" => 1,
02412 "upload" => 0,
02413 "email" => 1,
02414 "password" => 0,
02415 "language" => 0,
02416 "skin_style" => 0,
02417 "hits_per_page" => 0,
02418 "show_users_online" => 0
02419 );
02420 $no_export_fields = array(
02421 "hits_per_page",
02422 "show_users_online"
02423 );
02424 foreach ($profile_fields as $field)
02425 {
02426 $this->tpl->setCurrentBlock("profile_settings");
02427 $this->tpl->setVariable("TXT_PROFILE_DATA", $this->lng->txt($field));
02428 $this->tpl->setVariable("PROFILE_OPTION_ENABLED", "enabled_" . $field);
02429 $this->tpl->setVariable("PROFILE_OPTION_VISIBLE", "visible_" . $field);
02430 $this->tpl->setVariable("PROFILE_OPTION_REQUIRED", "required_" . $field);
02431
02432
02433 if(ilUserSearchOptions::_isSearchable($field))
02434 {
02435 $this->tpl->setVariable("CHECK_SEARCH",ilUtil::formCheckbox(ilUserSearchOptions::_isEnabled($field),
02436 "cbh[$field][searchable]",
02437 1));
02438 }
02439
02440
02441 if ($ilias->getSetting("usr_settings_disable_".$field) != "1")
02442 {
02443 $this->tpl->setVariable("CHECKED_ENABLED", " checked=\"checked\"");
02444 }
02445
02446
02447 if ($ilias->getSetting("usr_settings_hide_".$field) != "1")
02448 {
02449 $this->tpl->setVariable("CHECKED_VISIBLE", " checked=\"checked\"");
02450 }
02451
02452 if (!in_array($field, $no_export_fields))
02453 {
02454 $this->tpl->setVariable("PROFILE_OPTION_EXPORT", "export_" . $field);
02455
02456 if ($ilias->getSetting("usr_settings_export_".$field) == "1")
02457 {
02458 $this->tpl->setVariable("CHECKED_EXPORT", " checked=\"checked\"");
02459 }
02460
02461 }
02462
02463 $is_fixed = array_key_exists($field, $fixed_required_fields);
02464 if ($is_fixed && $fixed_required_fields[$field] || ! $is_fixed && $ilias->getSetting("require_".$field) == "1")
02465 {
02466 $this->tpl->setVariable("CHECKED_REQUIRED", " checked=\"checked\"");
02467 }
02468 if ($is_fixed)
02469 {
02470 $this->tpl->setVariable("DISABLE_REQUIRED", " disabled=\"disabled\"");
02471 }
02472
02473
02474
02475 if ($field == "hits_per_page")
02476 {
02477 $this->tpl->setVariable("PROFILE_OPTION_DEFAULT_VALUE", "default_" . $field);
02478 $options = array(2,10,15,20,30,40,50,100,9999);
02479 $selected_option = $ilias->getSetting("hits_per_page");
02480 if ($selected_option == null) $selected_option = 10;
02481 $this->tpl->setCurrentBlock("default_value_option");
02482 foreach ($options as $option)
02483 {
02484 if ($option == $selected_option)
02485 {
02486 $this->tpl->setVariable("OPTION_SELECTED", " selected=\"selected\"");
02487 }
02488
02489 $this->tpl->setVariable("OPTION_VALUE", $option);
02490 $this->tpl->setVariable("OPTION_TEXT", ($option == 9999) ? $this->lng->txt("no_limit") : $option);
02491 $this->tpl->parseCurrentBlock();
02492 }
02493 $this->tpl->setCurrentBlock("profile_settings");
02494 }
02495
02496
02497
02498 else if ($field == "show_users_online")
02499 {
02500 $this->tpl->setVariable("PROFILE_OPTION_DEFAULT_VALUE", "default_" . $field);
02501 $options = array('y','associated','n');
02502 $selected_option = $ilias->getSetting("show_users_online");
02503 if ($selected_option == "") $selected_option = "y";
02504 $this->tpl->setCurrentBlock("default_value_option");
02505 foreach ($options as $option)
02506 {
02507 if ($option == $selected_option)
02508 {
02509 $this->tpl->setVariable("OPTION_SELECTED", " selected=\"selected\"");
02510 }
02511
02512 $this->tpl->setVariable("OPTION_VALUE", $option);
02513 $this->tpl->setVariable("OPTION_TEXT", $this->lng->txt("users_online_show_".$option));
02514 $this->tpl->parseCurrentBlock();
02515 }
02516 $this->tpl->setCurrentBlock("profile_settings");
02517 }
02518
02519
02520 $this->tpl->parseCurrentBlock();
02521 }
02522 $this->tpl->setVariable("FORMACTION",
02523 $this->ctrl->getFormAction($this));
02524 $this->tpl->setVariable("TXT_HEADER_PROFILE", $this->lng->txt("usr_settings_header_profile"));
02525 $this->tpl->setVariable("TXT_EXPLANATION_PROFILE", $this->lng->txt("usr_settings_explanation_profile"));
02526 $this->tpl->setVariable("HEADER_PROFILE_DATA", $this->lng->txt("usr_settings_header_profile_profile"));
02527 $this->tpl->setVariable("HEADER_ENABLED", $this->lng->txt("changeable"));
02528 $this->tpl->setVariable("HEADER_VISIBLE", $this->lng->txt("visible"));
02529 $this->tpl->setVariable("HEADER_SEARCH",$this->lng->txt('header_searchable'));
02530 $this->tpl->setVariable("HEADER_REQUIRED", $this->lng->txt("required_field"));
02531 $this->tpl->setVariable("HEADER_EXPORT", $this->lng->txt("export"));
02532 $this->tpl->setVariable("HEADER_DEFAULT_VALUE", $this->lng->txt("default_value"));
02533 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
02534 }
02535
02536 function saveGlobalUserSettingsObject()
02537 {
02538 include_once 'Services/Search/classes/class.ilUserSearchOptions.php';
02539
02540 global $ilias;
02541
02542 $profile_fields =& $this->object->getProfileFields();
02543
02544 $fixed_required_fields = array(
02545 "gender" => 1,
02546 "firstname" => 1,
02547 "lastname" => 1,
02548 "upload" => 0,
02549 "email" => 1,
02550 "password" => 0,
02551 "language" => 0,
02552 "skin_style" => 0,
02553 "hits_per_page" => 0,
02554 "show_users_online" => 0
02555 );
02556
02557 foreach ($profile_fields as $field)
02558 {
02559
02560 if(ilUserSearchOptions::_isSearchable($field))
02561 {
02562 ilUserSearchOptions::_saveStatus($field,(bool) $_POST['cbh'][$field]['searchable']);
02563 }
02564
02565 if (! $_POST["chb"]["visible_".$field])
02566 {
02567 $ilias->setSetting("usr_settings_hide_".$field, "1");
02568 }
02569 else
02570 {
02571 $ilias->deleteSetting("usr_settings_hide_".$field);
02572 }
02573
02574 if (! $_POST["chb"]["enabled_" . $field])
02575 {
02576 $ilias->setSetting("usr_settings_disable_".$field, "1");
02577 }
02578 else
02579 {
02580 $ilias->deleteSetting("usr_settings_disable_".$field);
02581 }
02582
02583 if ($_POST["chb"]["export_" . $field])
02584 {
02585 $ilias->setSetting("usr_settings_export_".$field, "1");
02586 }
02587 else
02588 {
02589 $ilias->deleteSetting("usr_settings_export_".$field);
02590 }
02591
02592 $is_fixed = array_key_exists($field, $fixed_required_fields);
02593 if ($is_fixed && $fixed_required_fields[$field] || ! $is_fixed && $_POST["chb"]["required_".$field])
02594 {
02595 $ilias->setSetting("require_".$field, "1");
02596 }
02597 else
02598 {
02599 $ilias->deleteSetting("require_" . $field);
02600 }
02601 }
02602
02603 if ($_POST["select"]["default_hits_per_page"])
02604 {
02605 $ilias->setSetting("hits_per_page",$_POST["select"]["default_hits_per_page"]);
02606 }
02607
02608 if ($_POST["select"]["default_show_users_online"])
02609 {
02610 $ilias->setSetting("show_users_online",$_POST["select"]["default_show_users_online"]);
02611 }
02612
02613 sendInfo($this->lng->txt("usr_settings_saved"));
02614 $this->settingsObject();
02615 }
02616
02617
02621 function __buildUserFilterSelect()
02622 {
02623 $action[-1] = $this->lng->txt('all_users');
02624 $action[1] = $this->lng->txt('usr_active_only');
02625 $action[0] = $this->lng->txt('usr_inactive_only');
02626
02627 return ilUtil::formSelect($_SESSION['user_filter'],"user_filter",$action,false,true);
02628 }
02629
02636 function downloadExportFileObject()
02637 {
02638 if(!isset($_POST["file"]))
02639 {
02640 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
02641 }
02642
02643 if (count($_POST["file"]) > 1)
02644 {
02645 $this->ilias->raiseError($this->lng->txt("select_max_one_item"),$this->ilias->error_obj->MESSAGE);
02646 }
02647
02648
02649 $export_dir = $this->object->getExportDirectory();
02650 ilUtil::deliverFile($export_dir."/".$_POST["file"][0],
02651 $_POST["file"][0]);
02652 }
02653
02657 function confirmDeleteExportFileObject()
02658 {
02659 if(!isset($_POST["file"]))
02660 {
02661 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
02662 }
02663
02664
02665 $_SESSION["ilExportFiles"] = $_POST["file"];
02666
02667 $this->getTemplateFile("confirm_delete_export","usr");
02668
02669 sendInfo($this->lng->txt("info_delete_sure"));
02670
02671 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
02672
02673
02674 $this->tpl->setCurrentBlock("table_header");
02675 $this->tpl->setVariable("TEXT",$this->lng->txt("objects"));
02676 $this->tpl->parseCurrentBlock();
02677
02678
02679 $counter = 0;
02680 foreach($_POST["file"] as $file)
02681 {
02682 $this->tpl->setCurrentBlock("table_row");
02683 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
02684 $this->tpl->setVariable("IMG_OBJ",ilUtil::getImagePath("icon_usrf.gif"));
02685 $this->tpl->setVariable("TEXT_CONTENT", $file);
02686 $this->tpl->parseCurrentBlock();
02687 }
02688
02689
02690 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
02691 $this->tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
02692 $buttons = array( "cancelDeleteExportFile" => $this->lng->txt("cancel"),
02693 "deleteExportFile" => $this->lng->txt("confirm"));
02694 foreach ($buttons as $name => $value)
02695 {
02696 $this->tpl->setCurrentBlock("operation_btn");
02697 $this->tpl->setVariable("BTN_NAME",$name);
02698 $this->tpl->setVariable("BTN_VALUE",$value);
02699 $this->tpl->parseCurrentBlock();
02700 }
02701 }
02702
02703
02707 function cancelDeleteExportFileObject()
02708 {
02709 session_unregister("ilExportFiles");
02710 ilUtil::redirect($this->ctrl->getLinkTargetByClass("ilobjuserfoldergui", "export"));
02711 }
02712
02713
02717 function deleteExportFileObject()
02718 {
02719 $export_dir = $this->object->getExportDirectory();
02720 foreach($_SESSION["ilExportFiles"] as $file)
02721 {
02722 $exp_file = $export_dir."/".$file;
02723 if (@is_file($exp_file))
02724 {
02725 unlink($exp_file);
02726 }
02727 }
02728 ilUtil::redirect($this->ctrl->getLinkTargetByClass("ilobjuserfoldergui", "export"));
02729 }
02730
02741 function exportObject()
02742 {
02743 global $ilias;
02744 if ($_POST["cmd"]["export"])
02745 {
02746 $this->object->buildExportFile($_POST["export_type"]);
02747 ilUtil::redirect($this->ctrl->getLinkTargetByClass("ilobjuserfoldergui", "export"));
02748 exit;
02749 }
02750
02751 $this->getTemplateFile("export","usr");
02752
02753 $export_types = array(
02754 "userfolder_export_excel_x86",
02755 "userfolder_export_csv",
02756 "userfolder_export_xml"
02757 );
02758
02759
02760 include_once("./classes/class.ilTableGUI.php");
02761 $tbl = new ilTableGUI();
02762
02763
02764 $this->tpl->addBlockfile("EXPORT_FILES", "export_files", "tpl.table.html");
02765
02766
02767 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.usr_export_file_row.html");
02768
02769 $num = 0;
02770
02771 $tbl->setTitle($this->lng->txt("userfolder_export_files"));
02772
02773 $tbl->setHeaderNames(array("", $this->lng->txt("userfolder_export_file"),
02774 $this->lng->txt("userfolder_export_file_size"), $this->lng->txt("date") ));
02775
02776 $tbl->enabled["sort"] = false;
02777 $tbl->setColumnWidth(array("1%", "49%", "25%", "25%"));
02778
02779
02780 $tbl->setOrderColumn($_GET["sort_by"]);
02781 $tbl->setOrderDirection($_GET["sort_order"]);
02782 $tbl->setLimit($_GET["limit"]);
02783 $tbl->setOffset($_GET["offset"]);
02784 $tbl->setMaxCount($this->maxcount);
02785
02786
02787 $this->tpl->setVariable("COLUMN_COUNTS", 4);
02788
02789
02790 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
02791 $this->tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
02792 $this->tpl->setCurrentBlock("tbl_action_btn");
02793 $this->tpl->setVariable("BTN_NAME", "confirmDeleteExportFile");
02794 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("delete"));
02795 $this->tpl->parseCurrentBlock();
02796
02797 $this->tpl->setCurrentBlock("tbl_action_btn");
02798 $this->tpl->setVariable("BTN_NAME", "downloadExportFile");
02799 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("download"));
02800 $this->tpl->parseCurrentBlock();
02801
02802
02803 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
02804
02805
02806 $export_files = $this->object->getExportFiles();
02807
02808 $tbl->setMaxCount(count($export_files));
02809 $export_files = array_slice($export_files, $_GET["offset"], $_GET["limit"]);
02810
02811 $tbl->render();
02812
02813 if(count($export_files) > 0)
02814 {
02815 $i=0;
02816 foreach($export_files as $exp_file)
02817 {
02818 $this->tpl->setCurrentBlock("tbl_content");
02819 $this->tpl->setVariable("TXT_FILENAME", $exp_file["filename"]);
02820
02821 $css_row = ilUtil::switchColor($i++, "tblrow1", "tblrow2");
02822 $this->tpl->setVariable("CSS_ROW", $css_row);
02823
02824 $this->tpl->setVariable("TXT_SIZE", $exp_file["filesize"]);
02825 $this->tpl->setVariable("CHECKBOX_ID", $exp_file["filename"]);
02826
02827 $file_arr = explode("__", $exp_file["filename"]);
02828 $this->tpl->setVariable("TXT_DATE", date("Y-m-d H:i:s",$file_arr[0]));
02829
02830 $this->tpl->parseCurrentBlock();
02831 }
02832
02833 $this->tpl->setCurrentBlock("selectall");
02834 $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
02835 $this->tpl->setVariable("CSS_ROW", $css_row);
02836 $this->tpl->parseCurrentBlock();
02837 }
02838 else
02839 {
02840 $this->tpl->setCurrentBlock("notfound");
02841 $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
02842 $this->tpl->setVariable("NUM_COLS", 3);
02843 $this->tpl->parseCurrentBlock();
02844 }
02845
02846 $this->tpl->parseCurrentBlock();
02847
02848
02849 foreach ($export_types as $export_type)
02850 {
02851 $this->tpl->setCurrentBlock("option");
02852 $this->tpl->setVariable("OPTION_VALUE", $export_type);
02853 $this->tpl->setVariable("OPTION_TEXT", $this->lng->txt($export_type));
02854 $this->tpl->parseCurrentBlock();
02855 }
02856
02857 $this->tpl->setVariable("EXPORT_BUTTON", $this->lng->txt("create_export_file"));
02858 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
02859 }
02860
02864 function newAccountMailObject()
02865 {
02866 global $lng;
02867
02868 $this->setSubTabs('settings');
02869 $this->tabs_gui->setTabActive('global_settings');
02870 $this->tabs_gui->setSubTabActive('user_new_account_mail');
02871
02872 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_new_account_mail.html');
02873 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
02874 $this->tpl->setVariable("IMG_MAIL", ilUtil::getImagePath("icon_mail.gif"));
02875
02876 $lng->loadLanguageModule("meta");
02877 $lng->loadLanguageModule("mail");
02878 $this->tpl->setVariable("TXT_NEW_USER_ACCOUNT_MAIL", $lng->txt("user_new_account_mail"));
02879 $this->tpl->setVariable("TXT_NEW_USER_ACCOUNT_MAIL_DESC", $lng->txt("user_new_account_mail_desc"));
02880
02881
02882 $this->tpl->setVariable("TXT_USE_PLACEHOLDERS", $lng->txt("mail_nacc_use_placeholder"));
02883 $this->tpl->setVariable("TXT_MAIL_SALUTATION", $lng->txt("mail_nacc_salutation"));
02884 $this->tpl->setVariable("TXT_FIRST_NAME", $lng->txt("firstname"));
02885 $this->tpl->setVariable("TXT_LAST_NAME", $lng->txt("lastname"));
02886 $this->tpl->setVariable("TXT_LOGIN", $lng->txt("mail_nacc_login"));
02887 $this->tpl->setVariable("TXT_PASSWORD", $lng->txt("password"));
02888 $this->tpl->setVariable("TXT_PASSWORD_BLOCK", $lng->txt("mail_nacc_pw_block"));
02889 $this->tpl->setVariable("TXT_NOPASSWORD_BLOCK", $lng->txt("mail_nacc_no_pw_block"));
02890 $this->tpl->setVariable("TXT_ADMIN_MAIL", $lng->txt("mail_nacc_admin_mail"));
02891 $this->tpl->setVariable("TXT_ILIAS_URL", $lng->txt("mail_nacc_ilias_url"));
02892 $this->tpl->setVariable("TXT_CLIENT_NAME", $lng->txt("mail_nacc_client_name"));
02893 $this->tpl->setVariable("TXT_TARGET", $lng->txt("mail_nacc_target"));
02894 $this->tpl->setVariable("TXT_TARGET_TITLE", $lng->txt("mail_nacc_target_title"));
02895 $this->tpl->setVariable("TXT_TARGET_TYPE", $lng->txt("mail_nacc_target_type"));
02896 $this->tpl->setVariable("TXT_TARGET_BLOCK", $lng->txt("mail_nacc_target_block"));
02897
02898 $langs = $lng->getInstalledLanguages();
02899 foreach($langs as $lang_key)
02900 {
02901 $amail = $this->object->_lookupNewAccountMail($lang_key);
02902 $this->tpl->setCurrentBlock("mail_block");
02903 $add = "";
02904 if ($lang_key == $lng->getDefaultLanguage())
02905 {
02906 $add = " (".$lng->txt("default").")";
02907 }
02908 $this->tpl->setVariable("TXT_LANGUAGE",
02909 $lng->txt("meta_l_".$lang_key).$add);
02910 $this->tpl->setVariable("TXT_BODY", $lng->txt("message_content"));
02911 $this->tpl->setVariable("TA_BODY", "body_".$lang_key);
02912 $this->tpl->setVariable("VAL_BODY",
02913 ilUtil::prepareFormOutput($amail["body"]));
02914 $this->tpl->setVariable("TXT_SUBJECT", $lng->txt("subject"));
02915 $this->tpl->setVariable("INPUT_SUBJECT", "subject_".$lang_key);
02916 $this->tpl->setVariable("VAL_SUBJECT",
02917 ilUtil::prepareFormOutput($amail["subject"]));
02918 $this->tpl->setVariable("TXT_SAL_G", $lng->txt("mail_salutation_general"));
02919 $this->tpl->setVariable("INPUT_SAL_G", "sal_g_".$lang_key);
02920 $this->tpl->setVariable("VAL_SAL_G",
02921 ilUtil::prepareFormOutput($amail["sal_g"]));
02922 $this->tpl->setVariable("TXT_SAL_M", $lng->txt("mail_salutation_male"));
02923 $this->tpl->setVariable("INPUT_SAL_M", "sal_m_".$lang_key);
02924 $this->tpl->setVariable("VAL_SAL_M",
02925 ilUtil::prepareFormOutput($amail["sal_m"]));
02926 $this->tpl->setVariable("TXT_SAL_F", $lng->txt("mail_salutation_female"));
02927 $this->tpl->setVariable("INPUT_SAL_F", "sal_f_".$lang_key);
02928 $this->tpl->setVariable("VAL_SAL_F",
02929 ilUtil::prepareFormOutput($amail["sal_f"]));
02930 $this->tpl->parseCurrentBlock();
02931 }
02932 $this->tpl->setVariable("TXT_CANCEL", $lng->txt("cancel"));
02933 $this->tpl->setVariable("TXT_SAVE", $lng->txt("save"));
02934 }
02935
02936 function cancelNewAccountMailObject()
02937 {
02938 sendInfo($this->lng->txt("action_aborted"), true);
02939 $this->ctrl->redirect($this, "settings");
02940 }
02941
02942 function saveNewAccountMailObject()
02943 {
02944 global $lng;
02945
02946 sendInfo($this->lng->txt("msg_obj_modified"), true);
02947 $langs = $lng->getInstalledLanguages();
02948 foreach($langs as $lang_key)
02949 {
02950 $this->object->_writeNewAccountMail($lang_key,
02951 ilUtil::stripSlashes($_POST["subject_".$lang_key]),
02952 ilUtil::stripSlashes($_POST["sal_g_".$lang_key]),
02953 ilUtil::stripSlashes($_POST["sal_f_".$lang_key]),
02954 ilUtil::stripSlashes($_POST["sal_m_".$lang_key]),
02955 ilUtil::stripSlashes($_POST["body_".$lang_key]));
02956 }
02957 $this->ctrl->redirect($this, "newAccountMail");
02958 }
02959
02960 function getAdminTabs(&$tabs_gui)
02961 {
02962 $this->getTabs($tabs_gui);
02963 }
02964
02970 function getTabs(&$tabs_gui)
02971 {
02972 include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
02973
02974
02975 global $rbacsystem;
02976
02977 if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
02978 {
02979 $tabs_gui->addTarget("obj_usrf",
02980 $this->ctrl->getLinkTarget($this, "view"), array("view","delete",""), "", "");
02981 }
02982
02983 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
02984 {
02985 $tabs_gui->addTarget("global_settings",
02986 $this->ctrl->getLinkTarget($this, "settings"), array("settings", "saveGlobalUserSettings"), "", "");
02987
02988 $tabs_gui->addTarget("export",
02989 $this->ctrl->getLinkTarget($this, "export"), "export", "", "");
02990
02991 if((ilObjUserTracking::_enabledLearningProgress() or
02992 ilObjUserTracking::_enabledTracking())
02993 and ilObjUserTracking::_enabledUserRelatedData())
02994 {
02995 $tabs_gui->addTarget("learning_progress",
02996 $this->ctrl->getLinkTarget($this, "learningProgress"), "learningProgress", "", "");
02997 }
02998 }
02999
03000 if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
03001 {
03002 $tabs_gui->addTarget("perm_settings",
03003 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
03004 array("perm","info","owner"), 'ilpermissiongui');
03005 }
03006 }
03007
03008
03012 function setSubTabs($a_tab)
03013 {
03014 global $rbacsystem,$ilUser;
03015
03016 switch($a_tab)
03017 {
03018 case "settings":
03019 $this->tabs_gui->addSubTabTarget("standard_fields",
03020 $this->ctrl->getLinkTarget($this,'settings'),
03021 array("settings", "saveGlobalUserSettings"), get_class($this));
03022 $this->tabs_gui->addSubTabTarget("user_defined_fields",
03023 $this->ctrl->getLinkTarget($this,'listUserDefinedFields'),
03024 "listUserDefinedFields",get_class($this));
03025 $this->tabs_gui->addSubTabTarget("user_new_account_mail",
03026 $this->ctrl->getLinkTarget($this,'newAccountMail'),
03027 "newAccountMail",get_class($this));
03028 break;
03029 }
03030 }
03031
03032 }
03033 ?>