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 "./classes/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 $this->lng->loadLanguageModule('search');
00057 }
00058
00059 function setUserOwnerId($a_id)
00060 {
00061 $this->user_owner_id = $a_id;
00062 }
00063 function getUserOwnerId()
00064 {
00065 return $this->user_owner_id ? $this->user_owner_id : USER_FOLDER_ID;
00066 }
00067
00068 function &executeCommand()
00069 {
00070 $next_class = $this->ctrl->getNextClass($this);
00071 $cmd = $this->ctrl->getCmd();
00072
00073 $this->prepareOutput();
00074
00075 switch($next_class)
00076 {
00077 case 'ilpermissiongui':
00078 include_once("./classes/class.ilPermissionGUI.php");
00079 $perm_gui =& new ilPermissionGUI($this);
00080 $ret =& $this->ctrl->forwardCommand($perm_gui);
00081 break;
00082
00083 case 'iladminusersearchgui':
00084 include_once('./Services/Search/classes/class.ilAdminUserSearchGUI.php');
00085 $user_search =& new ilAdminUserSearchGUI();
00086 $user_search->setCallbackClass($this);
00087
00088 $this->tabs_gui->setTabActive('obj_usrf');
00089 $this->ctrl->setReturn($this,'view');
00090 $ret =& $this->ctrl->forwardCommand($user_search);
00091 break;
00092
00093 default:
00094 if(!$cmd)
00095 {
00096 $cmd = "view";
00097 }
00098 $cmd .= "Object";
00099
00100 $this->$cmd();
00101
00102 break;
00103 }
00104 return true;
00105 }
00106
00107 function learningProgressExcelExportObject()
00108 {
00109 global $ilErr,$rbacsystem;
00110
00111 if (!$rbacsystem->checkAccess("read",$this->object->getRefId()))
00112 {
00113 $ilErr->raiseError($this->lng->txt("permission_denied"),$ilErr->MESSAGE);
00114 }
00115
00116 include_once './classes/class.ilExcelWriterAdapter.php';
00117
00118 $pewa =& new ilExcelWriterAdapter('learning_progress.xls');
00119
00120
00121 $this->_addLearningProgressWorksheet($pewa);
00122
00123
00124
00125 $workbook =& $pewa->getWorkbook();
00126 $workbook->close();
00127 }
00128
00129 function _addLearningProgressWorksheet(&$pewa)
00130 {
00131 include_once 'classes/class.ilExcelUtils.php';
00132
00133 $workbook =& $pewa->getWorkbook();
00134 $worksheet =& $workbook->addWorksheet($this->lng->txt('objs_usr'));
00135
00136
00137 $worksheet->mergeCells(0,0,0,4);
00138 $worksheet->setColumn(1,0,32);
00139 $worksheet->setColumn(1,1,32);
00140 $worksheet->setColumn(1,2,32);
00141 $worksheet->setColumn(1,3,32);
00142 $worksheet->setColumn(1,4,32);
00143
00144 $title = $this->lng->txt('learning_progress');
00145 $title .= ' '.$this->lng->txt('as_of').': ';
00146 $title .= strftime('%Y-%m-%d %R',time());
00147
00148 $worksheet->writeString(0,0,ilExcelUtils::_convert_text($title),$pewa->getFormatTitle());
00149
00150 $worksheet->writeString(1,0,ilExcelUtils::_convert_text($this->lng->txt('login')),$pewa->getFormatHeader());
00151 $worksheet->writeString(1,1,ilExcelUtils::_convert_text($this->lng->txt('lastname')),$pewa->getFormatHeader());
00152 $worksheet->writeString(1,2,ilExcelUtils::_convert_text($this->lng->txt('firstname')),$pewa->getFormatHeader());
00153 $worksheet->writeString(1,3,ilExcelUtils::_convert_text($this->lng->txt('online_time')),$pewa->getFormatHeader());
00154 $worksheet->writeString(1,4,ilExcelUtils::_convert_text($this->lng->txt('last_login')),$pewa->getFormatHeader());
00155
00156
00157 $usr_data = ilObjUser::_getAllUserData(array("login","firstname","lastname",'last_login','online_time'),1);
00158 $usr_data = ilUtil::sortArray($usr_data,$_SESSION["usrf_sort_by"],$_SESSION["usrf_sort_order"]);
00159
00160 $counter = 2;
00161
00162 foreach($usr_data as $user)
00163 {
00164 $worksheet->writeString($counter,0,$user['login']);
00165 $worksheet->writeString($counter,1,$user['lastname']);
00166 $worksheet->writeString($counter,2,$user['firstname']);
00167 $worksheet->writeString($counter,3,ilFormat::_secondsToShortString($user['online_time']),
00168 $pewa->getFormatDayTime());
00169 $worksheet->writeString($counter,4,$user['last_login'],
00170 $pewa->getFormatDate());
00171
00172 ++$counter;
00173 }
00174 }
00175
00176
00177 function learningProgressObject()
00178 {
00179 include_once 'Services/Tracking/classes/class.ilOnlineTracking.php';
00180 include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
00181
00182 $lp_active = ilObjUserTracking::_enabledLearningProgress();
00183
00184 global $ilUser,$rbacsystem;
00185
00186 $this->max_count = $ilUser->getPref('hits_per_page');
00187
00188 if (!$rbacsystem->checkAccess("read",$this->object->getRefId()))
00189 {
00190 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00191 }
00192
00193 $_SESSION['usrf_sort_by'] = $_GET['sort_by'] ? $_GET['sort_by'] : ($_SESSION['usrf_sort_by'] ?
00194 $_SESSION['usrf_sort_by'] : 'login');
00195
00196 $_SESSION['usrf_sort_order'] = $_GET['sort_order'] ? $_GET['sort_order'] : ($_SESSION['usrf_sort_order'] ?
00197 $_SESSION['usrf_sort_order'] : 'asc');
00198
00199
00200
00201 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00202
00203
00204 $this->lng->loadLanguageModule('payment');
00205 $this->tpl->setCurrentBlock("btn_cell");
00206 $this->tpl->setVariable("BTN_LINK",
00207 $this->ctrl->getLinkTarget($this, "learningProgressExcelExport"));
00208 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("excel_export"));
00209 $this->tpl->parseCurrentBlock();
00210
00211
00212 $data["cols"] = array("login", "firstname", "lastname", "online_time",'last_login');
00213
00214 $usr_data = ilObjUser::_getAllUserData(array("login","firstname","lastname",'last_login','online_time'),1);
00215 $num_users = count($usr_data) - 1;
00216
00217
00218
00219 $usr_data = ilUtil::sortArray($usr_data,$_SESSION["usrf_sort_by"],$_SESSION["usrf_sort_order"]);
00220 $usr_data = array_slice($usr_data,$_GET["offset"],$this->max_count);
00221
00222 foreach ($usr_data as $val)
00223 {
00224 if ($val["usr_id"] == ANONYMOUS_USER_ID)
00225 {
00226 continue;
00227 }
00228
00229 $data["data"]["$val[usr_id]"] = array(
00230 "login" => $val["login"],
00231 "firstname" => $val["firstname"],
00232 "lastname" => $val["lastname"],
00233 "online_time" => ilFormat::_secondsToShortString($val['online_time']),
00234 "last_login" => $val['last_login']
00235 );
00236 }
00237
00238 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_list.html");
00239
00240
00241
00242 include_once "./Services/Table/classes/class.ilTableGUI.php";
00243 $this->tpl->addBlockfile("USR_TABLE", "user_table", "tpl.table.html");
00244 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.usr_tbl_row.html");
00245
00246 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00247
00248
00249 $tbl = new ilTableGUI();
00250
00251
00252 $tbl->setTitle($this->object->getTitle(),"icon_usr.gif",
00253 $this->lng->txt("obj_".$this->object->getType()));
00254
00255 foreach ($data["cols"] as $val)
00256 {
00257 $header_names[] = $this->lng->txt($val);
00258 }
00259
00260 $tbl->setHeaderNames($header_names);
00261
00262 $header_params = $this->ctrl->getParameterArray($this, "learningProgress");
00263 $tbl->setHeaderVars($data["cols"],$header_params);
00264 $tbl->setColumnWidth(array("20%","20$%","20%","20%"));
00265
00266
00267
00268
00269 $tbl->setOrderColumn($_GET["sort_by"]);
00270 $tbl->setOrderDirection($_GET["sort_order"]);
00271 $tbl->setLimit($this->max_count);
00272 $tbl->setOffset($_GET["offset"]);
00273 $tbl->setMaxCount($num_users);
00274
00275
00276 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00277
00278
00279 $tbl->render();
00280
00281
00282 $counter = 0;
00283 foreach($data['data'] as $usr_id => $fields)
00284 {
00285
00286 $css_row = ilUtil::switchColor($counter++,"tblrow1","tblrow2");
00287
00288 $this->tpl->setVariable("CSS_ROW", $css_row);
00289
00290 foreach ($fields as $key => $val)
00291 {
00292
00293
00294
00295 $this->ids[] = $ctrl["obj_id"];
00296
00297 if ($key == "login" and $lp_active)
00298 {
00299 $this->ctrl->setParameterByClass("illearningprogressgui", "ref_id",$this->object->getRefId());
00300 $this->ctrl->setParameterByClass("illearningprogressgui", "obj_id", $usr_id);
00301 $link = $this->ctrl->getLinkTargetByClass(array("ilobjusergui",'illearningprogressgui'), "");
00302
00303 $this->tpl->setCurrentBlock("begin_link");
00304 $this->tpl->setVariable("LINK_TARGET", $link);
00305 $this->tpl->parseCurrentBlock();
00306 $this->tpl->touchBlock("end_link");
00307 }
00308
00309 $this->tpl->setCurrentBlock("text");
00310 $this->tpl->setVariable("TEXT_CONTENT", $val);
00311 $this->tpl->parseCurrentBlock();
00312 $this->tpl->setCurrentBlock("table_cell");
00313 $this->tpl->parseCurrentBlock();
00314 }
00315
00316 $this->tpl->setCurrentBlock("tbl_content");
00317 $this->tpl->setVariable("CSS_ROW", $css_row);
00318 $this->tpl->parseCurrentBlock();
00319 }
00320 }
00321
00322 function resetFilterObject()
00323 {
00324 $this->viewObject(TRUE);
00325 }
00326
00332 function viewObject($reset_filter = FALSE)
00333 {
00334 global $rbacsystem;
00335 global $ilUser;
00336
00337 if ($reset_filter)
00338 {
00339 $_SESSION["user_filter"] = 1;
00340 }
00341 else
00342 {
00343 $_SESSION["usergui_cmd_node"] = $this->ctrl->getNodeIdForTargetClass($this->ctrl->getCmdNode(),"ilobjusergui");
00344 $this->ctrl->saveParameter($this, "user_filter_date_y");
00345 $this->ctrl->saveParameter($this, "user_filter_date_m");
00346 $this->ctrl->saveParameter($this, "user_filter_date_d");
00347 $this->ctrl->saveParameter($this, "selected_course");
00348 $this->ctrl->saveParameter($this, "selected_group");
00349 $this->ctrl->saveParameter($this, "selected_role");
00350 $this->ctrl->saveParameterByClass("ilAdminUserSearchGUI", "user_filter_date_y");
00351 $this->ctrl->saveParameterByClass("ilAdminUserSearchGUI", "user_filter_date_m");
00352 $this->ctrl->saveParameterByClass("ilAdminUserSearchGUI", "user_filter_date_d");
00353 $this->ctrl->saveParameterByClass("ilAdminUserSearchGUI", "selected_course");
00354 $this->ctrl->saveParameterByClass("ilAdminUserSearchGUI", "selected_group");
00355 $this->ctrl->saveParameterByClass("ilAdminUserSearchGUI", "selected_role");
00356 if (strlen($_GET["user_filter_date_y"].$_GET["user_filter_date_m"].$_GET["user_filter_date_d"]))
00357 {
00358 $_SESSION["user_filter_data"] = array(
00359 "y" => $_GET["user_filter_date_y"],
00360 "m" => $_GET["user_filter_date_m"],
00361 "d" => $_GET["user_filter_date_d"],
00362 );
00363 }
00364 if (strlen($_GET["selected_course"]))
00365 {
00366 $_SESSION["user_filter_data"] = $_GET["selected_course"];
00367 }
00368 if (strlen($_GET["selected_group"]))
00369 {
00370 $_SESSION["user_filter_data"] = $_GET["selected_group"];
00371 }
00372 if (strlen($_GET["selected_role"]))
00373 {
00374 $_SESSION["user_filter_data"] = $_GET["selected_role"];
00375 }
00376 if (isset($_POST["user_filter"]))
00377 {
00378 $_SESSION["user_filter"] = $_POST["user_filter"];
00379 switch ($_POST["user_filter"])
00380 {
00381 case 4:
00382 $_SESSION["user_filter_data"] = $_POST["date"];
00383 $this->ctrl->setParameterByClass("ilAdminUserSearchGUI", "user_filter_date_y", $_POST["date"]["y"]);
00384 $this->ctrl->setParameterByClass("ilAdminUserSearchGUI", "user_filter_date_m", $_POST["date"]["m"]);
00385 $this->ctrl->setParameterByClass("ilAdminUserSearchGUI", "user_filter_date_d", $_POST["date"]["d"]);
00386 $this->ctrl->setParameter($this, "user_filter_date_y", $_POST["date"]["y"]);
00387 $this->ctrl->setParameter($this, "user_filter_date_m", $_POST["date"]["m"]);
00388 $this->ctrl->setParameter($this, "user_filter_date_d", $_POST["date"]["d"]);
00389 break;
00390 case 5:
00391 $_SESSION["user_filter_data"] = $_POST["courseId"];
00392 $this->ctrl->setParameterByClass("ilAdminUserSearchGUI", "selected_course", $_POST["courseId"]);
00393 $this->ctrl->setParameter($this, "selected_course", $_POST["courseId"]);
00394 break;
00395 case 6:
00396 $_SESSION["user_filter_data"] = $_POST["groupId"];
00397 $this->ctrl->setParameterByClass("ilAdminUserSearchGUI", "selected_group", $_POST["groupId"]);
00398 $this->ctrl->setParameter($this, "selected_group", $_POST["groupId"]);
00399 break;
00400 case 7:
00401 $_SESSION["user_filter_data"] = $_POST["roleId"];
00402 $this->ctrl->setParameterByClass("ilAdminUserSearchGUI", "selected_role", $_POST["roleId"]);
00403 $this->ctrl->setParameter($this, "selected_role", $_POST["roleId"]);
00404 break;
00405 }
00406 }
00407 if (!isset($_SESSION["user_filter"]))
00408 {
00409 $_SESSION["user_filter"] = 1;
00410 }
00411 }
00412
00413
00414 if (isset($_GET["sort_by"]))
00415 {
00416 $_SESSION["user_folder_sort_by"] = $_GET["sort_by"];
00417 }
00418 if (isset($_GET["sort_order"]))
00419 {
00420 $_SESSION["user_folder_order"] = $_GET["sort_order"];
00421 }
00422 if (isset($_GET["offset"]))
00423 {
00424 $_SESSION["user_folder_offset"] = $_GET["offset"];
00425 }
00426 $_GET["offset"] = $_SESSION["user_folder_offset"];
00427 $_GET["sort_order"] = $_SESSION["user_folder_order"] ? $_SESSION["user_folder_order"] : "asc";
00428 $_GET["sort_by"] = $_SESSION["user_folder_sort_by"] ? $_SESSION["user_folder_sort_by"] : "login";
00429
00430 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00431 {
00432 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00433 }
00434
00435
00436 $this->data = array();
00437 $this->data["data"] = array();
00438 $this->data["ctrl"] = array();
00439
00440 $this->data["cols"] = array("", "login", "firstname", "lastname","email","access_until", "last_login");
00441
00442 $usr_data = ilObjUser::_getAllUserData(array("login","firstname","lastname","email","time_limit_until","time_limit_unlimited","last_login"), $_SESSION["user_filter"]);
00443
00444
00445 $current_time = time();
00446
00447 foreach ($usr_data as $val)
00448 {
00449 if ($val["usr_id"] == ANONYMOUS_USER_ID)
00450 {
00451 continue;
00452 }
00453
00454
00455 if ($val["time_limit_unlimited"])
00456 {
00457 $txt_access = $this->lng->txt("access_unlimited");
00458 }
00459 elseif ($val["time_limit_until"] < $current_time)
00460 {
00461 $txt_access = $this->lng->txt("access_expired");
00462 }
00463 else
00464 {
00465 $txt_access = ilFormat::formatUnixTime($val["time_limit_until"]);
00466 }
00467
00468
00469 $this->data["data"][] = array(
00470 "login" => $val["login"],
00471 "firstname" => $val["firstname"],
00472 "lastname" => $val["lastname"],
00473 "email" => $val["email"],
00474 "access_until" => $txt_access,
00475 "last_login" => $val["last_login"],
00476 "obj_id" => $val["usr_id"]
00477 );
00478 }
00479
00480 $this->maxcount = count($this->data["data"]);
00481
00482 if ($_GET["offset"] >= $this->maxcount)
00483 {
00484 $_GET["offset"] = $_SESSION["user_folder_offset"] = 0;
00485 }
00486
00487
00488 if ($_GET["sort_by"] == "name")
00489 {
00490 $_GET["sort_by"] = "login";
00491 }
00492
00493
00494
00495 $this->data["data"] = ilUtil::sortArray($this->data["data"],$_GET["sort_by"],$_GET["sort_order"]);
00496 $this->data["data"] = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00497
00498
00499 foreach ($this->data["data"] as $key => $val)
00500 {
00501 $this->data["ctrl"][$key] = array(
00502 "ref_id" => $this->id,
00503 "obj_id" => $val["obj_id"]
00504 );
00505 $tmp[] = $val["obj_id"];
00506 unset($this->data["data"][$key]["obj_id"]);
00507 }
00508
00509
00510 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00511
00512
00513 $this->tpl->setCurrentBlock("btn_cell");
00514 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTargetByClass('ilAdminUserSearchGUI','startExtended'));
00515 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("search_user_extended"));
00516 $this->tpl->parseCurrentBlock();
00517
00518 if ($_SESSION['rep_search']['usr'])
00519 {
00520 $this->tpl->setCurrentBlock("btn_cell");
00521 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTargetByClass('ilAdminUserSearchGUI','show'));
00522 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("last_search_result"));
00523 $this->tpl->parseCurrentBlock();
00524 }
00525
00526 $this->tpl->setCurrentBlock("btn_cell");
00527 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTarget($this, "importUserForm"));
00528 $this->tpl->setVariable("BTN_TXT", $this->lng->txt("import_users"));
00529 $this->tpl->parseCurrentBlock();
00530
00531 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_list.html");
00532
00533 switch ($_SESSION["user_filter"])
00534 {
00535 case 4:
00536 $this->tpl->setCurrentBlock("filter_date");
00537 $this->tpl->setVariable("DATE_SELECTION", ilUtil::makeDateSelect("date", $_SESSION["user_filter_data"]["y"], $_SESSION["user_filter_data"]["m"], $_SESSION["user_filter_data"]["d"]));
00538 $this->tpl->setVariable("TEXT_FILTER_DATE", $this->lng->txt("before"));
00539 $this->tpl->parseCurrentBlock();
00540 break;
00541 case 5:
00542 $this->tpl->setCurrentBlock("filter_course");
00543 $courses = ilUtil::_getObjectsByOperations("crs", "read", $ilUser->getId(), -1);
00544 $options = ilObject::_prepareCloneSelection($courses, "crs");
00545 $select = ilUtil::formSelect($_SESSION["user_filter_data"], "courseId" ,$options,false,true);
00546 $this->tpl->setVariable("COURSE_SELECTION", $select);
00547 $this->tpl->setVariable("TEXT_FILTER_COURSE", $this->lng->txt("course"));
00548 $this->tpl->parseCurrentBlock();
00549 break;
00550 case 6:
00551 $this->tpl->setCurrentBlock("filter_group");
00552 $groups = ilUtil::_getObjectsByOperations("grp", "read", $ilUser->getId(), -1);
00553 $options = ilObject::_prepareCloneSelection($groups, "grp");
00554 $select = ilUtil::formSelect($_SESSION["user_filter_data"], "groupId" ,$options,false,true);
00555 $this->tpl->setVariable("GROUP_SELECTION", $select);
00556 $this->tpl->setVariable("TEXT_FILTER_GROUP", $this->lng->txt("grp"));
00557 $this->tpl->parseCurrentBlock();
00558 break;
00559 case 7:
00560 global $rbacreview;
00561 $this->tpl->setCurrentBlock("filter_role");
00562 $roles = $rbacreview->getRolesByFilter(2, $ilUser->getId());
00563 $options = array();
00564 foreach ($roles as $role)
00565 {
00566 $options[$role["rol_id"]] = $role["title"];
00567 }
00568 $select = ilUtil::formSelect($_SESSION["user_filter_data"], "roleId" ,$options, false, true);
00569 $this->tpl->setVariable("ROLE_SELECTION", $select);
00570 $this->tpl->setVariable("TEXT_FILTER_ROLE", $this->lng->txt("role"));
00571 $this->tpl->parseCurrentBlock();
00572 break;
00573 }
00574 $this->tpl->setCurrentBlock("filter");
00575 $this->tpl->setVariable("FILTER_TXT_FILTER",$this->lng->txt('filter'));
00576 $this->tpl->setVariable("SELECT_FILTER",$this->__buildUserFilterSelect());
00577 $this->tpl->setVariable("FILTER_ACTION",$this->ctrl->getFormAction($this));
00578 $this->tpl->setVariable("FILTER_NAME",'view');
00579 $this->tpl->setVariable("FILTER_VALUE",$this->lng->txt('apply_filter'));
00580 $this->tpl->setVariable("FILTER_VALUE_RESET",$this->lng->txt('reset_filter'));
00581 $this->tpl->parseCurrentBlock();
00582
00583 $this->tpl->setCurrentBlock("search");
00584 $this->tpl->setVariable("SEARCH_TXT_SEARCH",$this->lng->txt('search'));
00585 $this->ctrl->setParameterByClass("ilAdminUserSearchGUI", "user_filter", $_SESSION["user_filter"]);
00586 $this->tpl->setVariable("SEARCH_ACTION",$this->ctrl->getFormActionByClass('ilAdminUserSearchGUI','startSimple'));
00587 $this->tpl->setVariable("SEARCH_NAME",'startSimple');
00588 $this->tpl->setVariable("SEARCH_VALUE",$this->lng->txt('search_users'));
00589 $this->tpl->parseCurrentBlock();
00590
00591 $this->displayList();
00592 }
00593
00594
00600 function displayList()
00601 {
00602 if (!is_array($this->data["data"][0]))
00603 {
00604 ilUtil::sendInfo($this->lng->txt("usr_filter_empty_result")); return;
00605 }
00606
00607 include_once "./Services/Table/classes/class.ilTableGUI.php";
00608
00609
00610 $this->tpl->addBlockfile("USR_TABLE", "user_table", "tpl.table.html");
00611
00612 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
00613
00614 $num = 0;
00615
00616
00617 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00618
00619
00620 $tbl = new ilTableGUI();
00621
00622
00623 $tbl->setTitle($this->object->getTitle(),"icon_usr.gif", $this->lng->txt("obj_".$this->object->getType()));
00624
00625 foreach ($this->data["cols"] as $val)
00626 {
00627 $header_names[] = $this->lng->txt($val);
00628 }
00629
00630 $tbl->setHeaderNames($header_names);
00631
00632 $header_params = $this->ctrl->getParameterArray($this, "view");
00633 $tbl->setHeaderVars($this->data["cols"],$header_params);
00634 $tbl->setColumnWidth(array("","15%","15%","15%","20%","15%","20%"));
00635
00636 $tbl->enable("select_all");
00637 $tbl->enable("numinfo_header");
00638 $tbl->setFormName("cmd");
00639 $tbl->setSelectAllCheckbox("id");
00640
00641
00642 $tbl->setOrderColumn($_GET["sort_by"]);
00643 $tbl->setOrderDirection($_GET["sort_order"]);
00644 $tbl->setLimit($_GET["limit"]);
00645 $tbl->setOffset($_GET["offset"]);
00646 $tbl->setMaxCount($this->maxcount);
00647
00648 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00649
00650
00651 $tbl->render();
00652
00653 if (is_array($this->data["data"][0]))
00654 {
00655
00656 for ($i=0; $i < count($this->data["data"]); $i++)
00657 {
00658 $data = $this->data["data"][$i];
00659 $ctrl = $this->data["ctrl"][$i];
00660
00661
00662 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
00663
00664 $this->tpl->setCurrentBlock("checkbox");
00665 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
00666 $this->tpl->setVariable("CSS_ROW", $css_row);
00667 $this->tpl->parseCurrentBlock();
00668
00669 $this->tpl->setCurrentBlock("table_cell");
00670 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
00671 $this->tpl->parseCurrentBlock();
00672
00673 foreach ($data as $key => $val)
00674 {
00675
00676 $this->ctrl->setParameterByClass("ilobjusergui", "ref_id", "7");
00677 $this->ctrl->setParameterByClass("ilobjusergui", "obj_id", $ctrl["obj_id"]);
00678 $link = $this->ctrl->getLinkTargetByClass("ilobjusergui", "view");
00679
00680
00681 $this->ids[] = $ctrl["obj_id"];
00682
00683 if ($key == "login")
00684 {
00685 $this->tpl->setCurrentBlock("begin_link");
00686 $this->tpl->setVariable("LINK_TARGET", $link);
00687 $this->tpl->parseCurrentBlock();
00688 $this->tpl->touchBlock("end_link");
00689 }
00690
00691 if ($key == "access_until")
00692 {
00693 if ($val == $this->lng->txt("access_unlimited"))
00694 {
00695 $val = "<span class=\"smallgreen\">".$val."</span>";
00696 }
00697 elseif ($val == $this->lng->txt("access_expired"))
00698 {
00699 $val = "<span class=\"smallred\">".$val."</span>";
00700 }
00701 else
00702 {
00703 $val = "<span class=\"small\">".$val."</span>";
00704 }
00705 }
00706
00707 if ($key == "last_login")
00708 {
00709 $val = ilFormat::formatDate($val);
00710 }
00711
00712 if ($key != "access_until")
00713 {
00714 $val = "<span class=\"small\">".$val."</span>";
00715 }
00716
00717 $this->tpl->setCurrentBlock("text");
00718 $this->tpl->setVariable("TEXT_CONTENT", $val);
00719 $this->tpl->parseCurrentBlock();
00720 $this->tpl->setCurrentBlock("table_cell");
00721 $this->tpl->parseCurrentBlock();
00722 }
00723
00724 $this->tpl->setCurrentBlock("tbl_content");
00725 $this->tpl->setVariable("CSS_ROW", $css_row);
00726 $this->tpl->parseCurrentBlock();
00727 }
00728 }
00729 $this->showActions(true);
00730 }
00731
00738 function showActions($with_subobjects = false)
00739 {
00740 global $rbacsystem;
00741
00742 $operations = array();
00743
00744 if ($this->actions == "")
00745 {
00746 $d = $this->objDefinition->getActions($this->object->getType());
00747 }
00748 else
00749 {
00750 $d = $this->actions;
00751 }
00752 foreach ($d as $row)
00753 {
00754 if ($rbacsystem->checkAccess($row["name"],$this->object->getRefId()))
00755 {
00756 $operations[] = $row;
00757 }
00758 }
00759
00760 if (count($operations) > 0)
00761 {
00762 $select = "<select name=\"selectedAction\">\n";
00763 foreach ($operations as $val)
00764 {
00765 $select .= "<option value=\"" . $val["name"] . "\"";
00766 if (strcmp($_POST["selectedAction"], $val["name"]) == 0)
00767 {
00768 $select .= " selected=\"selected\"";
00769 }
00770 $select .= ">";
00771 $select .= $this->lng->txt($val["lng"]);
00772 $select .= "</option>";
00773 }
00774 $select .= "</select>";
00775 $this->tpl->setCurrentBlock("tbl_action_select");
00776 $this->tpl->setVariable("SELECT_ACTION", $select);
00777 $this->tpl->setVariable("BTN_NAME", "userAction");
00778 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("submit"));
00779 $this->tpl->parseCurrentBlock();
00780 }
00781
00782 if ($with_subobjects === true)
00783 {
00784 $subobjs = $this->showPossibleSubObjects();
00785 }
00786
00787 if ((count($operations) > 0) or $subobjs === true)
00788 {
00789 $this->tpl->setCurrentBlock("tbl_action_row");
00790 $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));
00791 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00792 $this->tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
00793 $this->tpl->parseCurrentBlock();
00794 }
00795 }
00796
00803 function showPossibleSubObjects()
00804 {
00805 global $rbacsystem;
00806
00807 $d = $this->objDefinition->getCreatableSubObjects($this->object->getType());
00808
00809 if (!$rbacsystem->checkAccess('create_user',$this->object->getRefId()))
00810 {
00811 unset($d["usr"]);
00812 }
00813
00814 if (count($d) > 0)
00815 {
00816 foreach ($d as $row)
00817 {
00818 $count = 0;
00819 if ($row["max"] > 0)
00820 {
00821
00822 for ($i=0; $i<count($this->data["ctrl"]); $i++)
00823 {
00824 if ($this->data["ctrl"][$i]["type"] == $row["name"])
00825 {
00826 $count++;
00827 }
00828 }
00829 }
00830 if ($row["max"] == "" || $count < $row["max"])
00831 {
00832 $subobj[] = $row["name"];
00833 }
00834 }
00835 }
00836
00837 if (is_array($subobj))
00838 {
00839
00840 $opts = ilUtil::formSelect(12,"new_type",$subobj);
00841 $this->tpl->setCurrentBlock("add_object");
00842 $this->tpl->setVariable("SELECT_OBJTYPE", $opts);
00843 $this->tpl->setVariable("BTN_NAME", "create");
00844 $this->tpl->setVariable("TXT_ADD", $this->lng->txt("add"));
00845 $this->tpl->parseCurrentBlock();
00846
00847 return true;
00848 }
00849
00850 return false;
00851 }
00852
00853 function cancelUserFolderAction()
00854 {
00855 session_unregister("saved_post");
00856 ilUtil::sendInfo($this->lng->txt("msg_cancel"),true);
00857 $this->ctrl->returnToParent($this);
00858 }
00859
00865 function cancelactivateObject()
00866 {
00867 $this->cancelUserFolderAction();
00868 }
00869
00875 function confirmactivateObject()
00876 {
00877 global $rbacsystem, $ilUser;
00878
00879
00880 if (!$rbacsystem->checkAccess('write',$this->object->getRefId()))
00881 {
00882 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->WARNING);
00883 }
00884
00885 $_SESSION['saved_post'] = $_SESSION['saved_post'] ? $_SESSION['saved_post'] : array();
00886
00887
00888 foreach ($_SESSION["saved_post"] as $id)
00889 {
00890
00891 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00892 $obj->setActive(TRUE, $ilUser->getId());
00893 $obj->update();
00894 }
00895
00896
00897 ilUtil::sendInfo($this->lng->txt("user_activated"),true);
00898
00899 if ($_SESSION['user_activate_search'] == true)
00900 {
00901 session_unregister("user_activate_search");
00902 $script = $this->ctrl->getLinkTargetByClass('ilAdminUserSearchGUI','show');
00903 ilUtil::redirect($script);
00904 }
00905 else
00906 {
00907 $this->ctrl->redirect($this, "view");
00908 }
00909 }
00910
00916 function canceldeactivateObject()
00917 {
00918 $this->cancelUserFolderAction();
00919 }
00920
00926 function confirmdeactivateObject()
00927 {
00928 global $rbacsystem, $ilUser;
00929
00930
00931 if (!$rbacsystem->checkAccess('write',$this->object->getRefId()))
00932 {
00933 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->WARNING);
00934 }
00935
00936 $_SESSION['saved_post'] = $_SESSION['saved_post'] ? $_SESSION['saved_post'] : array();
00937
00938
00939 foreach ($_SESSION["saved_post"] as $id)
00940 {
00941
00942 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00943 $obj->setActive(FALSE, $ilUser->getId());
00944 $obj->update();
00945 }
00946
00947
00948 ilUtil::sendInfo($this->lng->txt("user_deactivated"),true);
00949
00950 if ($_SESSION['user_deactivate_search'] == true)
00951 {
00952 session_unregister("user_deactivate_search");
00953 $script = $this->ctrl->getLinkTargetByClass('ilAdminUserSearchGUI','show');
00954 ilUtil::redirect($script);
00955 }
00956 else
00957 {
00958 $this->ctrl->redirect($this, "view");
00959 }
00960 }
00961
00962 function cancelaccessFreeObject()
00963 {
00964 $this->cancelUserFolderAction();
00965 }
00966
00967 function confirmaccessFreeObject()
00968 {
00969 global $rbacsystem, $ilUser;
00970
00971
00972 if (!$rbacsystem->checkAccess('write',$this->object->getRefId()))
00973 {
00974 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->WARNING);
00975 }
00976
00977 $_SESSION['saved_post'] = $_SESSION['saved_post'] ? $_SESSION['saved_post'] : array();
00978
00979
00980 foreach ($_SESSION["saved_post"] as $id)
00981 {
00982
00983 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00984 $obj->setTimeLimitOwner($ilUser->getId());
00985 $obj->setTimeLimitUnlimited(1);
00986 $obj->setTimeLimitFrom("");
00987 $obj->setTimeLimitUntil("");
00988 $obj->setTimeLimitMessage(0);
00989 $obj->update();
00990 }
00991
00992
00993 ilUtil::sendInfo($this->lng->txt("access_free_granted"),true);
00994
00995 if ($_SESSION['user_accessFree_search'] == true)
00996 {
00997 session_unregister("user_accessFree_search");
00998 $script = $this->ctrl->getLinkTargetByClass('ilAdminUserSearchGUI','show');
00999 ilUtil::redirect($script);
01000 }
01001 else
01002 {
01003 $this->ctrl->redirect($this, "view");
01004 }
01005 }
01006
01007 function setAccessRestrictionObject()
01008 {
01009 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.confirm.html");
01010 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
01011 $this->tpl->setVariable("TXT_CONFIRM", $this->lng->txt("time_limit_add_time_limit_for_selected"));
01012 include_once "./classes/class.ilTemplate.php";
01013 $tsTemplate = new ilTemplate("tpl.time.limit.html", TRUE, TRUE);
01014 $from = (array_key_exists("from", $_GET)) ? $_GET["from"] : time();
01015 $until = (array_key_exists("until", $_GET)) ? $_GET["until"] : time();
01016 $fromA = getdate($from);
01017 $untilA = getdate($until);
01018 $fromDate = ilUtil::makeDateSelect("fromDate", $fromA["year"], $fromA["mon"], $fromA["mday"]);
01019 $fromTime = ilUtil::makeTimeSelect("fromTime", TRUE, $fromA["hours"], $fromA["minutes"]);
01020 $untilDate = ilUtil::makeDateSelect("untilDate", $untilA["year"], $untilA["mon"], $untilA["mday"]);
01021 $untilTime = ilUtil::makeTimeSelect("untilTime", TRUE, $untilA["hours"], $untilA["minutes"]);
01022 $tsTemplate->setVariable("TEXT_FROM", $this->lng->txt("access_from") . ": ");
01023 $tsTemplate->setVariable("TEXT_UNTIL", $this->lng->txt("access_until") . ": ");
01024 $tsTemplate->setVariable("DATE_FROM", $fromDate);
01025 $tsTemplate->setVariable("TIME_FROM", $fromTime);
01026 $tsTemplate->setVariable("DATE_UNTIL", $untilDate);
01027 $tsTemplate->setVariable("TIME_UNTIL", $untilTime);
01028 $this->tpl->setVariable("TXT_CONTENT", $tsTemplate->get());
01029 $this->tpl->setVariable("CMD_CANCEL", "cancelaccessRestrict");
01030 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
01031 $this->tpl->setVariable("CMD_OK", "confirmaccessRestrict");
01032 $this->tpl->setVariable("TXT_OK", $this->lng->txt("confirm"));
01033 $this->tpl->parseCurrentBlock();
01034 }
01035
01036 function cancelaccessRestrictObject()
01037 {
01038 $this->cancelUserFolderAction();
01039 }
01040
01041 function confirmaccessRestrictObject()
01042 {
01043 $timefrom = mktime($_POST["fromTime"]["h"], $_POST["fromTime"]["m"], 0, $_POST["fromDate"]["m"], $_POST["fromDate"]["d"], $_POST["fromDate"]["y"]);
01044 $timeuntil = mktime($_POST["untilTime"]["h"], $_POST["untilTime"]["m"], 0, $_POST["untilDate"]["m"], $_POST["untilDate"]["d"], $_POST["untilDate"]["y"]);
01045 if ($timeuntil <= $timefrom)
01046 {
01047 ilUtil::sendInfo($this->lng->txt("time_limit_not_valid"), TRUE);
01048 $this->ctrl->setParameter($this, "from", $timefrom);
01049 $this->ctrl->setParameter($this, "until", $timeuntil);
01050 $this->ctrl->redirect($this, "setAccessRestriction");
01051 }
01052
01053 global $rbacsystem, $ilUser;
01054
01055
01056 if (!$rbacsystem->checkAccess('write',$this->object->getRefId()))
01057 {
01058 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->WARNING);
01059 }
01060
01061 $_SESSION['saved_post'] = $_SESSION['saved_post'] ? $_SESSION['saved_post'] : array();
01062
01063
01064 foreach ($_SESSION["saved_post"] as $id)
01065 {
01066
01067 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
01068 $obj->setTimeLimitOwner($ilUser->getId());
01069 $obj->setTimeLimitUnlimited(0);
01070 $obj->setTimeLimitFrom($timefrom);
01071 $obj->setTimeLimitUntil($timeuntil);
01072 $obj->setTimeLimitMessage(0);
01073 $obj->update();
01074 }
01075
01076
01077 ilUtil::sendInfo($this->lng->txt("access_restricted"),true);
01078
01079 if ($_SESSION['user_accessRestrict_search'] == true)
01080 {
01081 session_unregister("user_accessRestrict_search");
01082 $script = $this->ctrl->getLinkTargetByClass('ilAdminUserSearchGUI','show');
01083 ilUtil::redirect($script);
01084 }
01085 else
01086 {
01087 $this->ctrl->redirect($this, "view");
01088 }
01089 }
01090
01096 function canceldeleteObject()
01097 {
01098 $this->cancelUserFolderAction();
01099 }
01100
01106 function confirmdeleteObject()
01107 {
01108 global $rbacsystem;
01109
01110
01111 if (!$rbacsystem->checkAccess('delete',$this->object->getRefId()))
01112 {
01113 $this->ilias->raiseError($this->lng->txt("msg_no_perm_delete"),$this->ilias->error_obj->WARNING);
01114 }
01115
01116 $_SESSION['saved_post'] = $_SESSION['saved_post'] ? $_SESSION['saved_post'] : array();
01117
01118 if (in_array($_SESSION["AccountId"],$_SESSION["saved_post"]))
01119 {
01120 $this->ilias->raiseError($this->lng->txt("msg_no_delete_yourself"),$this->ilias->error_obj->WARNING);
01121 }
01122
01123
01124 foreach ($_SESSION["saved_post"] as $id)
01125 {
01126
01127 $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
01128 $obj->delete();
01129 }
01130
01131
01132 ilUtil::sendInfo($this->lng->txt("user_deleted"),true);
01133
01134
01135 #unset($_SESSION['saved_post']);
01136
01137 if ($_SESSION['user_delete_search'] == true)
01138 {
01139 session_unregister("user_delete_search");
01140 $script = $this->ctrl->getLinkTargetByClass('ilAdminUserSearchGUI','show');
01141 ilUtil::redirect($script);
01142 }
01143 else
01144 {
01145 $this->ctrl->redirect($this, "view");
01146 }
01147 }
01148
01154 function cancelexportObject()
01155 {
01156 $this->cancelUserFolderAction();
01157 }
01158
01164 function confirmexportObject()
01165 {
01166 $user_data_filter = $_SESSION['saved_post'] ? $_SESSION['saved_post'] : array();
01167 session_unregister("saved_post");
01168 $this->object->buildExportFile($_POST["export_type"], $user_data_filter);
01169 ilUtil::redirect($this->ctrl->getLinkTargetByClass("ilobjuserfoldergui", "export"));
01170 }
01171
01175 function deleteObject()
01176 {
01177 if(!isset($_POST["id"]))
01178 {
01179 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
01180 }
01181
01182 $_SESSION["saved_post"] = $_POST["id"];
01183
01184 unset($this->data);
01185 $this->data["cols"] = array("type", "title", "description", "last_change");
01186
01187 foreach($_POST["id"] as $id)
01188 {
01189 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
01190
01191 $this->data["data"]["$id"] = array(
01192 "type" => $obj_data->getType(),
01193 "title" => $obj_data->getTitle(),
01194 "desc" => $obj_data->getDescription(),
01195 "last_update" => $obj_data->getLastUpdateDate());
01196 }
01197
01198 $this->data["buttons"] = array( "cancelDelete" => $this->lng->txt("cancel"),
01199 "confirmedDelete" => $this->lng->txt("confirm"));
01200
01201 $this->getTemplateFile("confirm");
01202
01203 ilUtil::sendInfo($this->lng->txt("info_delete_sure"));
01204
01205 $this->tpl->setVariable("FORMACTION",
01206 $this->ctrl->getFormAction($this));
01207
01208
01209 foreach ($this->data["cols"] as $key)
01210 {
01211 $this->tpl->setCurrentBlock("table_header");
01212 $this->tpl->setVariable("TEXT",$this->lng->txt($key));
01213 $this->tpl->parseCurrentBlock();
01214 }
01215
01216
01217
01218 $counter = 0;
01219
01220 foreach($this->data["data"] as $key => $value)
01221 {
01222
01223 foreach($value as $key => $cell_data)
01224 {
01225 $this->tpl->setCurrentBlock("table_cell");
01226
01227
01228 if($key == "type")
01229 {
01230 $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
01231 }
01232 else
01233 {
01234 $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
01235 }
01236 $this->tpl->parseCurrentBlock();
01237 }
01238
01239 $this->tpl->setCurrentBlock("table_row");
01240 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
01241 $this->tpl->parseCurrentBlock();
01242
01243 }
01244
01245
01246
01247 foreach($this->data["buttons"] as $name => $value)
01248 {
01249 $this->tpl->setCurrentBlock("operation_btn");
01250 $this->tpl->setVariable("BTN_NAME",$name);
01251 $this->tpl->setVariable("BTN_VALUE",$value);
01252 $this->tpl->parseCurrentBlock();
01253 }
01254 }
01255
01256 function selectExportFormat()
01257 {
01258 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.confirm.html");
01259 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
01260 $this->tpl->setVariable("TXT_CONFIRM", $this->lng->txt("export_format_selection"));
01261 $export_types = array("userfolder_export_excel_x86", "userfolder_export_csv", "userfolder_export_xml");
01262 $options = array();
01263 foreach ($export_types as $type)
01264 {
01265 $options[$type] = $this->lng->txt($type);
01266 }
01267 $select = ilUtil::formSelect("userfolder_export_xml", "export_type" ,$options, false, true);
01268 $this->tpl->setVariable("TXT_CONTENT", $this->lng->txt("export_format") . ": " . $select);
01269 $this->tpl->setVariable("CMD_CANCEL", "cancelexport");
01270 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
01271 $this->tpl->setVariable("CMD_OK", "confirmexport");
01272 $this->tpl->setVariable("TXT_OK", $this->lng->txt("confirm"));
01273 $this->tpl->parseCurrentBlock();
01274 }
01275
01279 function showActionConfirmation($action)
01280 {
01281 if(!isset($_POST["id"]))
01282 {
01283 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
01284 }
01285
01286 $_SESSION["saved_post"] = $_POST["id"];
01287
01288 if (strcmp($action, "export") == 0) return $this->selectExportFormat();
01289 if (strcmp($action, "accessRestrict") == 0) return $this->setAccessRestrictionObject();
01290
01291 unset($this->data);
01292 $this->data["cols"] = array("type", "title", "description", "last_change");
01293
01294 foreach($_POST["id"] as $id)
01295 {
01296 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
01297
01298 $this->data["data"]["$id"] = array(
01299 "type" => $obj_data->getType(),
01300 "title" => $obj_data->getTitle(),
01301 "desc" => $obj_data->getDescription(),
01302 "last_update" => $obj_data->getLastUpdateDate());
01303 }
01304
01305 $this->data["buttons"] = array( "cancel" . $action => $this->lng->txt("cancel"),
01306 "confirm" . $action => $this->lng->txt("confirm"));
01307
01308 $this->getTemplateFile("confirm");
01309
01310 ilUtil::sendInfo($this->lng->txt("info_" . $action . "_sure"));
01311
01312 $this->tpl->setVariable("FORMACTION",
01313 $this->ctrl->getFormAction($this));
01314
01315
01316 foreach ($this->data["cols"] as $key)
01317 {
01318 $this->tpl->setCurrentBlock("table_header");
01319 $this->tpl->setVariable("TEXT",$this->lng->txt($key));
01320 $this->tpl->parseCurrentBlock();
01321 }
01322
01323
01324
01325 $counter = 0;
01326
01327 foreach($this->data["data"] as $key => $value)
01328 {
01329
01330 foreach($value as $key => $cell_data)
01331 {
01332 $this->tpl->setCurrentBlock("table_cell");
01333
01334
01335 if($key == "type")
01336 {
01337 $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
01338 }
01339 else
01340 {
01341 $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
01342 }
01343 $this->tpl->parseCurrentBlock();
01344 }
01345
01346 $this->tpl->setCurrentBlock("table_row");
01347 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
01348 $this->tpl->parseCurrentBlock();
01349
01350 }
01351
01352
01353
01354 foreach($this->data["buttons"] as $name => $value)
01355 {
01356 $this->tpl->setCurrentBlock("operation_btn");
01357 $this->tpl->setVariable("BTN_NAME",$name);
01358 $this->tpl->setVariable("BTN_VALUE",$value);
01359 $this->tpl->parseCurrentBlock();
01360 }
01361 }
01362
01363
01364 function userActionObject()
01365 {
01366 $this->showActionConfirmation($_POST["selectedAction"]);
01367 }
01368
01374
01375
01376
01377 function searchUserFormObject ()
01378 {
01379 $this->tabs_gui->setTabActive('obj_usrf');
01380
01381 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_search_form.html");
01382
01383 $this->tpl->setVariable("FORMACTION",
01384 $this->ctrl->getFormAction($this));
01385 $this->tpl->setVariable("USERNAME_CHECKED", " checked=\"checked\"");
01386 $this->tpl->setVariable("FIRSTNAME_CHECKED", " checked=\"checked\"");
01387 $this->tpl->setVariable("LASTNAME_CHECKED", " checked=\"checked\"");
01388 $this->tpl->setVariable("EMAIL_CHECKED", " checked=\"checked\"");
01389 $this->tpl->setVariable("ACTIVE_CHECKED", " checked=\"checked\"");
01390 $this->tpl->setVariable("TXT_SEARCH_USER",$this->lng->txt("search_user"));
01391 $this->tpl->setVariable("TXT_SEARCH_IN",$this->lng->txt("search_in"));
01392 $this->tpl->setVariable("TXT_SEARCH_USERNAME",$this->lng->txt("username"));
01393 $this->tpl->setVariable("TXT_SEARCH_FIRSTNAME",$this->lng->txt("firstname"));
01394 $this->tpl->setVariable("TXT_SEARCH_LASTNAME",$this->lng->txt("lastname"));
01395 $this->tpl->setVariable("TXT_SEARCH_EMAIL",$this->lng->txt("email"));
01396 $this->tpl->setVariable("TXT_SEARCH_ACTIVE",$this->lng->txt("search_active"));
01397 $this->tpl->setVariable("TXT_SEARCH_INACTIVE",$this->lng->txt("search_inactive"));
01398 $this->tpl->setVariable("BUTTON_SEARCH",$this->lng->txt("search"));
01399 $this->tpl->setVariable("BUTTON_CANCEL",$this->lng->txt("cancel"));
01400 $this->tpl->setVariable("TXT_SEARCH_NOTE",$this->lng->txt("search_note"));
01401 $this->tpl->setVariable("ACTIVE_CHECKED","checked=\"checked\"");
01402 }
01403
01404
01405
01406
01407 function searchCancelledObject()
01408 {
01409 ilUtil::sendInfo($this->lng->txt("action_aborted"),true);
01410
01411 $this->ctrl->redirect($this, "view");
01412 }
01413
01414
01415
01416
01417 function searchUserObject()
01418 {
01419 global $rbacreview;
01420
01421 $obj_str = "&obj_id=".$this->obj_id;
01422
01423 $_POST["search_string"] = trim($_POST["search_string"]) ? trim($_POST["search_string"]) : trim(urldecode($_GET["search_string"]));
01424
01425 $_SESSION['us_active'] = isset($_POST['active']) ? $_POST['active'] : $_SESSION['us_active'];
01426
01427 $_POST["search_fields"] = array ("username","firstname","lastname","email");
01428
01429 if (empty($_POST["search_string"]))
01430 {
01431 $_POST["search_string"] = "%";
01432 }
01433
01434 if (empty($_POST["search_fields"]))
01435 {
01436 $_POST["search_fields"] = array();
01437 }
01438 if (count($search_result = ilObjUser::searchUsers($_POST["search_string"],$_SESSION['us_active'])) == 0)
01439 {
01440 if ($_POST["search_string"] == "%")
01441 {
01442 $_POST["search_string"] = "";
01443 }
01444 $msg = $this->lng->txt("msg_no_search_result");
01445 if ($_POST["search_string"] != "")
01446 {
01447 $msg .= " ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'";
01448 }
01449 ilUtil::sendInfo($msg, true);
01450 $this->ctrl->redirect($this, "searchUserForm");
01451 }
01452
01453 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
01454
01455
01456 $this->tpl->setCurrentBlock("btn_cell");
01457 $this->tpl->setVariable("BTN_LINK",
01458 $this->ctrl->getLinkTarget($this, "searchUserForm"));
01459 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("search_new"));
01460 $this->tpl->parseCurrentBlock();
01461
01462 $this->data["cols"] = array("", "login", "firstname", "lastname", "email", "active");
01463
01464 if($_SESSION['us_active'] == 1)
01465 {
01466 $searchActive = true;
01467 }
01468 else
01469 {
01470 $searchInactive = true;
01471 }
01472
01473 foreach ($search_result as $key => $val)
01474 {
01475 $val["active_text"] = $this->lng->txt("inactive");
01476 if ($val["active"])
01477 {
01478 $val["active_text"] = $this->lng->txt("active");
01479 }
01480
01481
01482 $searchStringToLower = strtolower($_POST["search_string"]);
01483 $displaySearchResult = false;
01484 if (in_array("username", $_POST["search_fields"]))
01485 if (strpos(strtolower($val["login"]), strtolower($_POST["search_string"])) !== false)
01486 $displaySearchResult = true;
01487 if (in_array("firstname", $_POST["search_fields"]))
01488 if (strpos(strtolower($val["firstname"]), strtolower($_POST["search_string"])) !== false)
01489 $displaySearchResult = true;
01490 if (in_array("lastname", $_POST["search_fields"]))
01491 if (strpos(strtolower($val["lastname"]), strtolower($_POST["search_string"])) !== false)
01492 $displaySearchResult = true;
01493 if (in_array("email", $_POST["search_fields"]))
01494 if (strpos(strtolower($val["email"]), strtolower($_POST["search_string"])) !== false)
01495 $displaySearchResult = true;
01496 if (($val["active"] == 1) && ($searchActive == true) ||
01497 ($val["active"] == 0) && ($searchInactive == true))
01498 {
01499 if ((strcmp($_POST["search_string"], "%") == 0) || $displaySearchResult)
01500 {
01501
01502 $this->data["data"][] = array(
01503 "login" => $val["login"],
01504 "firstname" => $val["firstname"],
01505 "lastname" => $val["lastname"],
01506 "email" => $val["email"],
01507 "active" => $val["active_text"],
01508 "obj_id" => $val["usr_id"]
01509 );
01510 }
01511 }
01512 }
01513 if (count($this->data["data"]) == 0)
01514 {
01515 ilUtil::sendInfo($this->lng->txt("msg_no_search_result")." ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'",true);
01516
01517 $this->ctrl->redirect($this, "searchUserForm");
01518 }
01519
01520 $this->maxcount = count($this->data["data"]);
01521
01522
01523 if ($_GET["sort_by"] == "name")
01524 {
01525 $_GET["sort_by"] = "login";
01526 }
01527
01528
01529 $this->data["data"] = ilUtil::sortArray($this->data["data"],$_GET["sort_by"],$_GET["sort_order"]);
01530 $this->data["data"] = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
01531
01532
01533 foreach ($this->data["data"] as $key => $val)
01534 {
01535 $this->data["ctrl"][$key] = array(
01536 "ref_id" => $this->id,
01537 "obj_id" => $val["obj_id"]
01538 );
01539 $tmp[] = $val["obj_id"];
01540 unset($this->data["data"][$key]["obj_id"]);
01541 }
01542
01543
01544 $_SESSION["user_list"] = $tmp;
01545
01546
01547 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
01548
01549 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
01550
01551 $num = 0;
01552
01553 $this->ctrl->setParameter($this, "sort_by", "name");
01554 $this->ctrl->setParameter($this, "sort_order", $_GET["sort_order"]);
01555 $this->ctrl->setParameter($this, "offset", $_GET["offset"]);
01556 $this->tpl->setVariable("FORMACTION",
01557 $this->ctrl->getFormAction($this));
01558
01559
01560 include_once "./Services/Table/classes/class.ilTableGUI.php";
01561 $tbl = new ilTableGUI();
01562
01563
01564 $tbl->setTitle($this->lng->txt("search_result"),"icon_".$this->object->getType().".gif",$this->lng->txt("obj_".$this->object->getType()));
01565 $tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
01566
01567 foreach ($this->data["cols"] as $val)
01568 {
01569 $header_names[] = $this->lng->txt($val);
01570 }
01571
01572 $tbl->setHeaderNames($header_names);
01573
01574 $header_params = $this->ctrl->getParameterArray($this, "searchUser");
01575 $header_params["search_string"] = urlencode($_POST["search_string"]);
01576 $header_params["search_fields"] = urlencode(implode(",",$_POST["search_fields"]));
01577
01578 $tbl->setHeaderVars($this->data["cols"],$header_params);
01579 $tbl->setColumnWidth(array("","25%","25$%","25%","25%"));
01580
01581
01582 $tbl->enable("hits");
01583 $tbl->setOrderColumn($_GET["sort_by"]);
01584 $tbl->setOrderDirection($_GET["sort_order"]);
01585 $tbl->setLimit($_GET["limit"]);
01586 $tbl->setOffset($_GET["offset"]);
01587 $tbl->setMaxCount($this->maxcount);
01588
01589 $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));
01590
01591
01592 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01593
01594
01595 $tbl->render();
01596
01597 if (is_array($this->data["data"][0]))
01598 {
01599
01600 for ($i=0; $i < count($this->data["data"]); $i++)
01601 {
01602 $data = $this->data["data"][$i];
01603 $ctrl = $this->data["ctrl"][$i];
01604
01605
01606 $this->ids[] = $ctrl["obj_id"];
01607
01608
01609 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
01610
01611 $this->tpl->setCurrentBlock("checkbox");
01612 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
01613
01614 $this->tpl->setVariable("CSS_ROW", $css_row);
01615 $this->tpl->parseCurrentBlock();
01616
01617 $this->tpl->setCurrentBlock("table_cell");
01618 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
01619 $this->tpl->parseCurrentBlock();
01620
01621 foreach ($data as $key => $val)
01622 {
01623
01624 $this->ctrl->setParameterByClass("ilobjusergui", "ref_id", "7");
01625 $this->ctrl->setParameterByClass("ilobjusergui", "obj_id", $ctrl["obj_id"]);
01626 $link = $this->ctrl->getLinkTargetByClass("ilobjusergui", "view");
01627
01628 if ($key == "login")
01629 {
01630 $this->tpl->setCurrentBlock("begin_link");
01631 $this->tpl->setVariable("LINK_TARGET", $link);
01632 $this->tpl->parseCurrentBlock();
01633 $this->tpl->touchBlock("end_link");
01634 }
01635
01636 $this->tpl->setCurrentBlock("text");
01637 $this->tpl->setVariable("TEXT_CONTENT", $val);
01638 $this->tpl->parseCurrentBlock();
01639 $this->tpl->setCurrentBlock("table_cell");
01640 $this->tpl->parseCurrentBlock();
01641 }
01642
01643 $this->tpl->setCurrentBlock("tbl_content");
01644 $this->tpl->setVariable("CSS_ROW", $css_row);
01645 $this->tpl->parseCurrentBlock();
01646 }
01647
01648 $this->showActions(true);
01649 }
01650 }
01651
01655 function importUserFormObject ()
01656 {
01657
01658 if($this->ctrl->getTargetScript() == 'repository.php')
01659 {
01660 $this->tabs_gui->clearTargets();
01661 }
01662
01663 $this->tabs_gui->setTabActive('obj_usrf');
01664 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_form.html");
01665
01666 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormaction($this));
01667
01668 $this->tpl->setVariable("TXT_IMPORT_USERS", $this->lng->txt("import_users"));
01669 $this->tpl->setVariable("TXT_IMPORT_FILE", $this->lng->txt("import_file"));
01670 $this->tpl->setVariable("TXT_IMPORT_ROOT_USER", $this->lng->txt("import_root_user"));
01671
01672 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("upload"));
01673 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
01674 }
01675
01676
01682 function importCancelledObject()
01683 {
01684
01685 $import_dir = $this->getImportDir();
01686 if (@is_dir($import_dir))
01687 {
01688 ilUtil::delDir($import_dir);
01689 }
01690
01691 ilUtil::sendInfo($this->lng->txt("msg_cancel"),true);
01692
01693 if (strtolower($_GET["baseClass"]) == 'iladministrationgui')
01694 {
01695 $this->ctrl->redirect($this, "view");
01696
01697 }
01698 else
01699 {
01700 $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
01701 }
01702 }
01703
01707 function getImportDir()
01708 {
01709
01710
01711
01712 global $ilUser;
01713 $importDir = ilUtil::getDataDir().'/user_import/usr_'.$ilUser->getId().'_'.session_id();
01714 ilUtil::makeDirParents($importDir);
01715 return $importDir;
01716 }
01717
01721 function importUserRoleAssignmentObject ()
01722 {
01723 global $ilUser,$rbacreview;
01724
01725
01726 if($this->ctrl->getTargetScript() == 'repository.php')
01727 {
01728 $this->tabs_gui->clearTargets();
01729 }
01730
01731 include_once './classes/class.ilObjRole.php';
01732 include_once './Services/User/classes/class.ilUserImportParser.php';
01733
01734 global $rbacreview, $rbacsystem, $tree, $lng;
01735
01736
01737 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_roles.html");
01738
01739 $import_dir = $this->getImportDir();
01740
01741
01742 if (@is_dir($import_dir))
01743 {
01744 ilUtil::delDir($import_dir);
01745 }
01746 ilUtil::makeDir($import_dir);
01747
01748
01749 $file_name = $_FILES["importFile"]["name"];
01750 $parts = pathinfo($file_name);
01751 $full_path = $import_dir."/".$file_name;
01752
01753
01754 if (!is_file($_FILES["importFile"]["tmp_name"]))
01755 {
01756 ilUtil::delDir($import_dir);
01757 $this->ilias->raiseError($this->lng->txt("no_import_file_found")
01758 , $this->ilias->error_obj->MESSAGE);
01759 }
01760 ilUtil::moveUploadedFile($_FILES["importFile"]["tmp_name"],
01761 $_FILES["importFile"]["name"], $full_path);
01762
01763
01764 if (strtolower($parts["extension"]) == "zip")
01765 {
01766
01767 ilUtil::unzip($full_path);
01768
01769 $xml_file = null;
01770 $file_list = ilUtil::getDir($import_dir);
01771 foreach ($file_list as $a_file)
01772 {
01773 if (substr($a_file['entry'],-4) == '.xml')
01774 {
01775 $xml_file = $import_dir."/".$a_file['entry'];
01776 break;
01777 }
01778 }
01779 if (is_null($xml_file))
01780 {
01781 $subdir = basename($parts["basename"],".".$parts["extension"]);
01782 $xml_file = $import_dir."/".$subdir."/".$subdir.".xml";
01783 }
01784 }
01785
01786 else
01787 {
01788 $xml_file = $full_path;
01789 }
01790
01791
01792 if (!is_file($xml_file))
01793 {
01794 ilUtil::delDir($import_dir);
01795 $this->ilias->raiseError($this->lng->txt("no_xml_file_found_in_zip")
01796 ." ".$subdir."/".$subdir.".xml", $this->ilias->error_obj->MESSAGE);
01797 }
01798
01799 require_once("./Services/User/classes/class.ilUserImportParser.php");
01800
01801
01802
01803 $importParser = new ilUserImportParser($xml_file, IL_VERIFY);
01804 $importParser->startParsing();
01805 switch ($importParser->getErrorLevel())
01806 {
01807 case IL_IMPORT_SUCCESS :
01808 break;
01809 case IL_IMPORT_WARNING :
01810 $this->tpl->setVariable("IMPORT_LOG", $importParser->getProtocolAsHTML($lng->txt("verification_warning_log")));
01811 break;
01812 case IL_IMPORT_FAILURE :
01813 ilUtil::delDir($import_dir);
01814 $this->ilias->raiseError(
01815 $lng->txt("verification_failed").$importParser->getProtocolAsHTML($lng->txt("verification_failure_log")),
01816 $this->ilias->error_obj->MESSAGE
01817 );
01818 return;
01819 }
01820
01821
01822
01823 $this->tpl->setCurrentBlock("role_selection_form");
01824 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01825 $this->tpl->setVariable("TXT_IMPORT_USERS", $this->lng->txt("import_users"));
01826 $this->tpl->setVariable("TXT_IMPORT_FILE", $this->lng->txt("import_file"));
01827 $this->tpl->setVariable("IMPORT_FILE", $file_name);
01828 $this->tpl->setVariable("TXT_USER_ELEMENT_COUNT", $this->lng->txt("num_users"));
01829 $this->tpl->setVariable("USER_ELEMENT_COUNT", $importParser->getUserCount());
01830 $this->tpl->setVariable("TXT_ROLE_ASSIGNMENT", $this->lng->txt("role_assignment"));
01831 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("import"));
01832 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
01833 $this->tpl->setVariable("XML_FILE_NAME", $xml_file);
01834
01835
01836 $importParser = new ilUserImportParser($xml_file, IL_EXTRACT_ROLES);
01837 $importParser->startParsing();
01838 $roles = $importParser->getCollectedRoles();
01839
01840
01841 $all_gl_roles = $rbacreview->getRoleListByObject(ROLE_FOLDER_ID);
01842 $gl_roles = array();
01843 foreach ($all_gl_roles as $obj_data)
01844 {
01845
01846 if($this->object->getRefId() != USER_FOLDER_ID)
01847 {
01848 if(!in_array(SYSTEM_ROLE_ID,$rbacreview->assignedRoles($ilUser->getId())) && !ilObjRole::_getAssignUsersStatus($obj_data['obj_id']))
01849 {
01850 continue;
01851 }
01852 }
01853
01854 if ($obj_data["obj_id"] != ANONYMOUS_ROLE_ID)
01855 {
01856
01857 if ($obj_data["obj_id"] != SYSTEM_ROLE_ID or in_array(SYSTEM_ROLE_ID,$rbacreview->assignedRoles($ilUser->getId())))
01858 {
01859 $gl_roles[$obj_data["obj_id"]] = $obj_data["title"];
01860 }
01861 }
01862 }
01863
01864
01865 $got_globals = false;
01866 foreach($roles as $role_id => $role)
01867 {
01868 if ($role["type"] == "Global")
01869 {
01870 if (! $got_globals)
01871 {
01872 $got_globals = true;
01873
01874 $this->tpl->setCurrentBlock("global_role_section");
01875 $this->tpl->setVariable("TXT_GLOBAL_ROLES_IMPORT", $this->lng->txt("roles_of_import_global"));
01876 $this->tpl->setVariable("TXT_GLOBAL_ROLES", $this->lng->txt("assign_global_role"));
01877 }
01878
01879
01880 $pre_select = array_search($role[name], $gl_roles);
01881 if (! $pre_select)
01882 {
01883 switch($role["name"])
01884 {
01885 case "Administrator":
01886 $pre_select = array_search("Administrator", $gl_roles);
01887 break;
01888
01889 case "Autor":
01890 $pre_select = array_search("User", $gl_roles);
01891 break;
01892
01893 case "Lerner":
01894 $pre_select = array_search("User", $gl_roles);
01895 break;
01896
01897 case "Gast":
01898 $pre_select = array_search("Guest", $gl_roles);
01899 break;
01900
01901 default:
01902 $pre_select = array_search("User", $gl_roles);
01903 break;
01904 }
01905 }
01906 $this->tpl->setCurrentBlock("global_role");
01907 $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $gl_roles, false, true);
01908 $this->tpl->setVariable("TXT_IMPORT_GLOBAL_ROLE", $role["name"]." [".$role_id."]");
01909 $this->tpl->setVariable("SELECT_GLOBAL_ROLE", $role_select);
01910 $this->tpl->parseCurrentBlock();
01911 }
01912 }
01913
01914
01915 $got_locals = false;
01916 foreach($roles as $role_id => $role)
01917 {
01918 if ($role["type"] == "Local")
01919 {
01920 $got_locals = true;
01921 break;
01922 }
01923 }
01924
01925 if ($got_locals)
01926 {
01927 $this->tpl->setCurrentBlock("local_role_section");
01928 $this->tpl->setVariable("TXT_LOCAL_ROLES_IMPORT", $this->lng->txt("roles_of_import_local"));
01929 $this->tpl->setVariable("TXT_LOCAL_ROLES", $this->lng->txt("assign_local_role"));
01930
01931
01932
01933
01934
01935
01936
01937 if ($this->object->getRefId() == USER_FOLDER_ID)
01938 {
01939 $loc_roles = $rbacreview->getAssignableRolesInSubtree(1);
01940 } else {
01941 $loc_roles = $rbacreview->getAssignableRolesInSubtree($this->object->getRefId());
01942 }
01943 $l_roles = array();
01944
01945
01946 $l_roles_mailbox_searcharray = array();
01947 foreach ($loc_roles as $key => $loc_role)
01948 {
01949
01950 $rolf = $rbacreview->getFoldersAssignedToRole($loc_role["obj_id"],true);
01951
01952
01953
01954
01955
01956 if (!$rbacreview->isDeleted($rolf[0])
01957 && $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0]))
01958 && $rolf[0] != ROLE_FOLDER_ID
01959 )
01960 {
01961
01962
01963
01964
01965
01966
01967
01968
01969 $isInSubtree = $this->object->getRefId() == USER_FOLDER_ID;
01970
01971 $path = "";
01972 if ($this->tree->isInTree($rolf[0]))
01973 {
01974
01975
01976 $tmpPath = $this->tree->getPathFull($rolf[0]);
01977 for ($i = 1, $n = count($tmpPath) - 1; $i < $n; $i++)
01978 {
01979 if ($i > 1)
01980 {
01981 $path = $path.' > ';
01982 }
01983 if ($i < 3 || $i > $n - 3)
01984 {
01985 $path = $path.$tmpPath[$i]['title'];
01986 }
01987 else if ($i == 3 || $i == $n - 3)
01988 {
01989 $path = $path.'...';
01990 }
01991
01992 $isInSubtree |= $tmpPath[$i]['obj_id'] == $this->object->getId();
01993 }
01994 }
01995 else
01996 {
01997 $path = "<b>Rolefolder ".$rolf[0]." not found in tree! (Role ".$loc_role["obj_id"].")</b>";
01998 }
01999 $roleMailboxAddress = $rbacreview->getRoleMailboxAddress($loc_role['obj_id']);
02000 $l_roles[$loc_role['obj_id']] = $roleMailboxAddress.', '.$path;
02001 }
02002 }
02003
02004 $l_roles[""] = "";
02005 natcasesort($l_roles);
02006 $l_roles[""] = $this->lng->txt("usrimport_ignore_role");
02007 foreach($roles as $role_id => $role)
02008 {
02009 if ($role["type"] == "Local")
02010 {
02011 $this->tpl->setCurrentBlock("local_role");
02012 $this->tpl->setVariable("TXT_IMPORT_LOCAL_ROLE", $role["name"]);
02013 $searchName = (substr($role['name'],0,1) == '#') ? $role['name'] : '#'.$role['name'];
02014 $matching_role_ids = $rbacreview->searchRolesByMailboxAddressList($searchName);
02015 $pre_select = count($matching_role_ids) == 1 ? $matching_role_ids[0] : "";
02016 if ($this->object->getRefId() == USER_FOLDER_ID) {
02017
02018
02019
02020 $selectable_roles = array();
02021 $selectable_roles[""] = $this->lng->txt("usrimport_ignore_role");
02022 foreach ($matching_role_ids as $id)
02023 {
02024 $selectable_roles[$id] = $l_roles[$id];
02025 }
02026 $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $selectable_roles, false, true);
02027 } else {
02028 $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $l_roles, false, true);
02029 }
02030 $this->tpl->setVariable("SELECT_LOCAL_ROLE", $role_select);
02031 $this->tpl->parseCurrentBlock();
02032 }
02033 }
02034 }
02035
02036
02037 $this->tpl->setVariable("TXT_CONFLICT_HANDLING", $lng->txt("conflict_handling"));
02038 $handlers = array(
02039 IL_IGNORE_ON_CONFLICT => "ignore_on_conflict",
02040 IL_UPDATE_ON_CONFLICT => "update_on_conflict"
02041 );
02042 $this->tpl->setVariable("TXT_CONFLICT_HANDLING_INFO", str_replace('\n','<br>',$this->lng->txt("usrimport_conflict_handling_info")));
02043 $this->tpl->setVariable("TXT_CONFLICT_CHOICE", $lng->txt("conflict_handling"));
02044 $this->tpl->setVariable("SELECT_CONFLICT", ilUtil::formSelect(IL_IGNORE_ON_CONFLICT, "conflict_handling_choice", $handlers, false, false));
02045
02046
02047 $this->lng->loadLanguageModule("mail");
02048 include_once './Services/User/classes/class.ilObjUserFolder.php';
02049 $amail = ilObjUserFolder::_lookupNewAccountMail($this->lng->getDefaultLanguage());
02050 if (trim($amail["body"]) != "" && trim($amail["subject"]) != "")
02051 {
02052 $this->tpl->setCurrentBlock("inform_user");
02053 $this->tpl->setVariable("TXT_ACCOUNT_MAIL", $lng->txt("mail_account_mail"));
02054 if (true)
02055 {
02056 $this->tpl->setVariable("SEND_MAIL", " checked=\"checked\"");
02057 }
02058 $this->tpl->setVariable("TXT_INFORM_USER_MAIL",
02059 $this->lng->txt("user_send_new_account_mail"));
02060 $this->tpl->parseCurrentBlock();
02061 }
02062 }
02063
02067 function importUsersObject()
02068 {
02069 global $rbacreview,$ilUser;
02070
02071
02072 if($this->ctrl->getTargetScript() == 'repository.php')
02073 {
02074 $this->tabs_gui->clearTargets();
02075 }
02076
02077 include_once './classes/class.ilObjRole.php';
02078 include_once './Services/User/classes/class.ilUserImportParser.php';
02079
02080 global $rbacreview, $rbacsystem, $tree, $lng;
02081
02082 switch ($_POST["conflict_handling_choice"])
02083 {
02084 case "update_on_conflict" :
02085 $rule = IL_UPDATE_ON_CONFLICT;
02086 break;
02087 case "ignore_on_conflict" :
02088 default :
02089 $rule = IL_IGNORE_ON_CONFLICT;
02090 break;
02091 }
02092 $importParser = new ilUserImportParser($_POST["xml_file"], IL_USER_IMPORT, $rule);
02093 $importParser->setFolderId($this->getUserOwnerId());
02094 $import_dir = $this->getImportDir();
02095
02096
02097
02098
02099 if ($_POST["role_assign"])
02100 {
02101 $global_roles = $rbacreview->getGlobalRoles();
02102 foreach ($_POST["role_assign"] as $role_id)
02103 {
02104 if ($role_id != "")
02105 {
02106 if (in_array($role_id, $global_roles))
02107 {
02108 if(!in_array(SYSTEM_ROLE_ID,$rbacreview->assignedRoles($ilUser->getId())))
02109 {
02110 if ($role_id == SYSTEM_ROLE_ID && ! in_array(SYSTEM_ROLE_ID,$rbacreview->assignedRoles($ilUser->getId()))
02111 || ($this->object->getRefId() != USER_FOLDER_ID
02112 && ! ilObjRole::_getAssignUsersStatus($role_id))
02113 )
02114 {
02115 ilUtil::delDir($import_dir);
02116 $this->ilias->raiseError($this->lng->txt("usrimport_with_specified_role_not_permitted"),
02117 $this->ilias->error_obj->MESSAGE);
02118 }
02119 }
02120 }
02121 else
02122 {
02123 $rolf = $rbacreview->getFoldersAssignedToRole($role_id,true);
02124 if ($rbacreview->isDeleted($rolf[0])
02125 || ! $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0])))
02126 {
02127 ilUtil::delDir($import_dir);
02128 $this->ilias->raiseError($this->lng->txt("usrimport_with_specified_role_not_permitted"),
02129 $this->ilias->error_obj->MESSAGE);
02130 return;
02131 }
02132 }
02133 }
02134 }
02135 }
02136
02137 $importParser->setRoleAssignment($_POST["role_assign"]);
02138 $importParser->startParsing();
02139
02140
02141 ilUtil::delDir($import_dir);
02142
02143 switch ($importParser->getErrorLevel())
02144 {
02145 case IL_IMPORT_SUCCESS :
02146 ilUtil::sendInfo($this->lng->txt("user_imported"), true);
02147 break;
02148 case IL_IMPORT_WARNING :
02149 ilUtil::sendInfo($this->lng->txt("user_imported_with_warnings").$importParser->getProtocolAsHTML($lng->txt("import_warning_log")), true);
02150 break;
02151 case IL_IMPORT_FAILURE :
02152 $this->ilias->raiseError(
02153 $this->lng->txt("user_import_failed")
02154 .$importParser->getProtocolAsHTML($lng->txt("import_failure_log")),
02155 $this->ilias->error_obj->MESSAGE
02156 );
02157 break;
02158 }
02159
02160 if (strtolower($_GET["baseClass"]) == "iladministrationgui")
02161 {
02162 $this->ctrl->redirect($this, "view");
02163
02164 }
02165 else
02166 {
02167 $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
02168 }
02169 }
02170
02171
02172 function appliedUsersObject()
02173 {
02174 global $rbacsystem,$ilias;
02175
02176 unset($_SESSION['applied_users']);
02177
02178 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
02179 {
02180 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
02181 }
02182
02183 if(!count($app_users =& $ilias->account->getAppliedUsers()))
02184 {
02185 ilUtil::sendInfo($this->lng->txt('no_users_applied'));
02186
02187 return false;
02188 }
02189
02190 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_applied_users.html");
02191 $this->lng->loadLanguageModule('crs');
02192
02193 $counter = 0;
02194 foreach($app_users as $usr_id)
02195 {
02196 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
02197
02198 $f_result[$counter][] = ilUtil::formCheckbox(0,"users[]",$usr_id);
02199 $f_result[$counter][] = $tmp_user->getLogin();
02200 $f_result[$counter][] = $tmp_user->getFirstname();
02201 $f_result[$counter][] = $tmp_user->getLastname();
02202
02203 if($tmp_user->getTimeLimitUnlimited())
02204 {
02205 $f_result[$counter][] = "<b>".$this->lng->txt('crs_unlimited')."</b>";
02206 }
02207 else
02208 {
02209 $limit = "<b>".$this->lng->txt('crs_from').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitFrom()).'<br />';
02210 $limit .= "<b>".$this->lng->txt('crs_to').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitUntil());
02211
02212 $f_result[$counter][] = $limit;
02213 }
02214 ++$counter;
02215 }
02216
02217 $this->__showAppliedUsersTable($f_result);
02218
02219 return true;
02220 }
02221
02222 function editAppliedUsersObject()
02223 {
02224 global $rbacsystem;
02225
02226 if(!$rbacsystem->checkAccess("write", $this->ref_id))
02227 {
02228 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02229 }
02230
02231 $this->lng->loadLanguageModule('crs');
02232
02233 $_POST['users'] = $_SESSION['applied_users'] = ($_SESSION['applied_users'] ? $_SESSION['applied_users'] : $_POST['users']);
02234
02235 if(!isset($_SESSION['error_post_vars']))
02236 {
02237 ilUtil::sendInfo($this->lng->txt('time_limit_add_time_limit_for_selected'));
02238 }
02239
02240 if(!count($_POST["users"]))
02241 {
02242 ilUtil::sendInfo($this->lng->txt("time_limit_no_users_selected"));
02243 $this->appliedUsersObject();
02244
02245 return false;
02246 }
02247
02248 $counter = 0;
02249 foreach($_POST['users'] as $usr_id)
02250 {
02251 if($counter)
02252 {
02253 $title .= ', ';
02254 }
02255 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
02256 $title .= $tmp_user->getLogin();
02257 ++$counter;
02258 }
02259 if(strlen($title) > 79)
02260 {
02261 $title = substr($title,0,80);
02262 $title .= '...';
02263 }
02264
02265
02266 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_edit_applied_users.html");
02267 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02268
02269
02270 $time_limit_unlimited = $_SESSION["error_post_vars"]["au"]["time_limit_unlimited"] ?
02271 1 : 0;
02272
02273 $time_limit_start = $_SESSION["error_post_vars"]["au"]["time_limit_start"] ?
02274 $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_start"]) :
02275 time();
02276 $time_limit_end = $_SESSION["error_post_vars"]["au"]["time_limit_end"] ?
02277 $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_end"]) :
02278 time();
02279
02280
02281
02282 $this->tpl->setVariable("ALT_IMG",$this->lng->txt("obj_usr"));
02283 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath("icon_usr_b.gif"));
02284 $this->tpl->setVariable("TITLE",$title);
02285 $this->tpl->setVariable("TXT_TIME_LIMIT",$this->lng->txt("time_limit"));
02286 $this->tpl->setVariable("TXT_TIME_LIMIT_START",$this->lng->txt("crs_start"));
02287 $this->tpl->setVariable("TXT_TIME_LIMIT_END",$this->lng->txt("crs_end"));
02288 $this->tpl->setVariable("CMD_SUBMIT","updateAppliedUsers");
02289 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
02290 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("submit"));
02291
02292
02293
02294 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_DAY",$this->__getDateSelect("day","au[time_limit_start][day]",
02295 date("d",$time_limit_start)));
02296 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MONTH",$this->__getDateSelect("month","au[time_limit_start][month]",
02297 date("m",$time_limit_start)));
02298 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_YEAR",$this->__getDateSelect("year","au[time_limit_start][year]",
02299 date("Y",$time_limit_start)));
02300 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_HOUR",$this->__getDateSelect("hour","au[time_limit_start][hour]",
02301 date("G",$time_limit_start)));
02302 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MINUTE",$this->__getDateSelect("minute","au[time_limit_start][minute]",
02303 date("i",$time_limit_start)));
02304 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_DAY",$this->__getDateSelect("day","au[time_limit_end][day]",
02305 date("d",$time_limit_end)));
02306 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MONTH",$this->__getDateSelect("month","au[time_limit_end][month]",
02307 date("m",$time_limit_end)));
02308 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_YEAR",$this->__getDateSelect("year","au[time_limit_end][year]",
02309 date("Y",$time_limit_end)));
02310 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_HOUR",$this->__getDateSelect("hour","au[time_limit_end][hour]",
02311 date("G",$time_limit_end)));
02312 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MINUTE",$this->__getDateSelect("minute","au[time_limit_end][minute]",
02313 date("i",$time_limit_end)));
02314 if($this->ilias->account->getTimeLimitUnlimited())
02315 {
02316 $this->tpl->setVariable("ROWSPAN",3);
02317 $this->tpl->setCurrentBlock("unlimited");
02318 $this->tpl->setVariable("TXT_TIME_LIMIT_UNLIMITED",$this->lng->txt("crs_unlimited"));
02319 $this->tpl->setVariable("TIME_LIMIT_UNLIMITED",ilUtil::formCheckbox($time_limit_unlimited,"au[time_limit_unlimited]",1));
02320 $this->tpl->parseCurrentBlock();
02321 }
02322 else
02323 {
02324 $this->tpl->setVariable("ROWSPAN",2);
02325 }
02326 }
02327
02328 function updateAppliedUsersObject()
02329 {
02330 global $rbacsystem;
02331
02332 if(!$rbacsystem->checkAccess("write", $this->ref_id))
02333 {
02334 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02335 }
02336
02337 $start = $this->__toUnix($_POST['au']['time_limit_start']);
02338 $end = $this->__toUnix($_POST['au']['time_limit_end']);
02339
02340 if(!$_POST['au']['time_limit_unlimited'])
02341 {
02342 if($start > $end)
02343 {
02344 $_SESSION['error_post_vars'] = $_POST;
02345 ilUtil::sendInfo($this->lng->txt('time_limit_not_valid'));
02346 $this->editAppliedUsersObject();
02347
02348 return false;
02349 }
02350 }
02351 #if(!$this->ilias->account->getTimeLimitUnlimited())
02352 #{
02353 # if($start < $this->ilias->account->getTimeLimitFrom() or
02354 # $end > $this->ilias->account->getTimeLimitUntil())
02355 # {
02356 # $_SESSION['error_post_vars'] = $_POST;
02357 # ilUtil::sendInfo($this->lng->txt('time_limit_not_within_owners'));
02358 # $this->editAppliedUsersObject();
02359
02360 # return false;
02361 # }
02362 #}
02363
02364 foreach($_SESSION['applied_users'] as $usr_id)
02365 {
02366 $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
02367
02368 $tmp_user->setTimeLimitUnlimited((int) $_POST['au']['time_limit_unlimited']);
02369 $tmp_user->setTimeLimitFrom($start);
02370 $tmp_user->setTimeLimitUntil($end);
02371 $tmp_user->setTimeLimitMessage(0);
02372 $tmp_user->update();
02373
02374 unset($tmp_user);
02375 }
02376
02377 unset($_SESSION['applied_users']);
02378 ilUtil::sendInfo($this->lng->txt('time_limit_users_updated'));
02379 $this->appliedUsersObject();
02380
02381 return true;
02382 }
02383
02384 function __showAppliedUsersTable($a_result_set)
02385 {
02386 $tbl =& $this->__initTableGUI();
02387 $tpl =& $tbl->getTemplateObject();
02388
02389
02390 $tpl->setCurrentBlock("tbl_form_header");
02391
02392 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02393 $tpl->parseCurrentBlock();
02394
02395 $tpl->setCurrentBlock("tbl_action_btn");
02396 $tpl->setVariable("BTN_NAME",'editAppliedUsers');
02397 $tpl->setVariable("BTN_VALUE",$this->lng->txt('edit'));
02398 $tpl->parseCurrentBlock();
02399
02400 $tpl->setCurrentBlock("tbl_action_row");
02401 $tpl->setVariable("COLUMN_COUNTS",5);
02402 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
02403 $tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
02404 $tpl->parseCurrentBlock();
02405
02406
02407
02408 $tbl->setTitle($this->lng->txt("time_limit_applied_users"),"icon_usr_b.gif",$this->lng->txt("users"));
02409 $tbl->setHeaderNames(array('',
02410 $this->lng->txt("login"),
02411 $this->lng->txt("firstname"),
02412 $this->lng->txt("lastname"),
02413 $this->lng->txt("time_limits")));
02414 $header_params = $this->ctrl->getParameterArray($this, "appliedUsers");
02415 $tbl->setHeaderVars(array("",
02416 "login",
02417 "firstname",
02418 "lastname",
02419 "time_limit"),
02420 array($header_params));
02421 $tbl->setColumnWidth(array("3%","19%","19%","19%","40%"));
02422
02423
02424 $this->__setTableGUIBasicData($tbl,$a_result_set);
02425 $tbl->render();
02426
02427 $this->tpl->setVariable("APPLIED_USERS",$tbl->tpl->get());
02428
02429 return true;
02430 }
02431
02432 function &__initTableGUI()
02433 {
02434 include_once "./Services/Table/classes/class.ilTableGUI.php";
02435
02436 return new ilTableGUI(0,false);
02437 }
02438
02439 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
02440 {
02441 $offset = $_GET["offset"];
02442 $order = $_GET["sort_by"];
02443 $direction = $_GET["sort_order"];
02444
02445
02446 $tbl->setOrderColumn($order);
02447 $tbl->setOrderDirection($direction);
02448 $tbl->setOffset($offset);
02449 $tbl->setLimit($_GET["limit"]);
02450 $tbl->setMaxCount(count($result_set));
02451 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
02452 $tbl->setData($result_set);
02453 }
02454
02455 function __getDateSelect($a_type,$a_varname,$a_selected)
02456 {
02457 switch($a_type)
02458 {
02459 case "minute":
02460 for($i=0;$i<=60;$i++)
02461 {
02462 $days[$i] = $i < 10 ? "0".$i : $i;
02463 }
02464 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
02465
02466 case "hour":
02467 for($i=0;$i<24;$i++)
02468 {
02469 $days[$i] = $i < 10 ? "0".$i : $i;
02470 }
02471 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
02472
02473 case "day":
02474 for($i=1;$i<32;$i++)
02475 {
02476 $days[$i] = $i < 10 ? "0".$i : $i;
02477 }
02478 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
02479
02480 case "month":
02481 for($i=1;$i<13;$i++)
02482 {
02483 $month[$i] = $i < 10 ? "0".$i : $i;
02484 }
02485 return ilUtil::formSelect($a_selected,$a_varname,$month,false,true);
02486
02487 case "year":
02488 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
02489 {
02490 $year[$i] = $i;
02491 }
02492 return ilUtil::formSelect($a_selected,$a_varname,$year,false,true);
02493 }
02494 }
02495 function __toUnix($a_time_arr)
02496 {
02497 return mktime($a_time_arr["hour"],
02498 $a_time_arr["minute"],
02499 $a_time_arr["second"],
02500 $a_time_arr["month"],
02501 $a_time_arr["day"],
02502 $a_time_arr["year"]);
02503 }
02504
02505 function hitsperpageObject()
02506 {
02507 parent::hitsperpageObject();
02508 $this->viewObject();
02509 }
02510
02511
02512
02513 function listUserDefinedFieldsObject()
02514 {
02515 global $lng;
02516
02517 $lng->loadLanguageModule("administration");
02518
02519 unset($_SESSION['select_num_values']);
02520 unset($_SESSION['num_values']);
02521
02522 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02523
02524 $this->setSubTabs('settings');
02525 $this->tabs_gui->setTabActive('global_settings');
02526 $this->tabs_gui->setSubTabActive('user_defined_fields');
02527
02528 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_list_user_defined.html');
02529 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02530
02531 if ($this->confirm_change == 1)
02532 {
02533 $this->tpl->setVariable("CONFIRM_MESSAGE", $this->lng->txt("confirm_message_course_export"));
02534 $this->tpl->setVariable("BUTTON_CONFIRM", $this->lng->txt("confirm"));
02535 $this->tpl->setVariable("BUTTON_CANCEL", $this->lng->txt("cancel"));
02536 }
02537
02538 $this->tpl->setVariable("TXT_OVERVIEW",$this->lng->txt('user_defined_list'));
02539
02540 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('add_user_defined_field'));
02541
02542 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02543
02544 if(!count($definitions = $user_field_definitions->getDefinitions()))
02545 {
02546 $this->tpl->setCurrentBlock("no_content");
02547 $this->tpl->setVariable("NO_FIELDS",$this->lng->txt('no_user_defined_fields_defined'));
02548 $this->tpl->parseCurrentBlock();
02549 }
02550 else
02551 {
02552 $this->tpl->setVariable("BTN_SAVE",$this->lng->txt('save'));
02553 }
02554
02555 foreach($definitions as $field_id => $definition)
02556 {
02557 $this->tpl->setCurrentBlock("user_defined");
02558 $this->tpl->setVariable("TXT_VISIBLE", $this->lng->txt("visible"));
02559 $this->tpl->setVariable("TXT_CHANGE", $this->lng->txt("changeable"));
02560 $this->tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required_field"));
02561 $this->tpl->setVariable("TXT_SEARCHABLE", $this->lng->txt("header_searchable"));
02562 $this->tpl->setVariable("TXT_EXPORT", $this->lng->txt("export"));
02563 $this->tpl->setVariable("TXT_COURSE_EXPORT", $lng->txt("course_export"));
02564
02565 $this->tpl->setVariable("NAME",$definition['field_name']);
02566
02567 if ($_POST["cmd"]["updateFields"] != "")
02568 {
02569 $definition['visible'] = isset($_POST['def'][$field_id]['visible']) ? 1 : 0;
02570 $definition['changeable'] = isset($_POST['def'][$field_id]['changeable']) ? 1 : 0;
02571 $definition['required'] = isset($_POST['def'][$field_id]['required']) ? 1 : 0;
02572 $definition['searchable'] = isset($_POST['def'][$field_id]['searchable']) ? 1 : 0;
02573 $definition['export'] = isset($_POST['def'][$field_id]['export']) ? 1 : 0;
02574 $definition['course_export'] = isset($_POST['def'][$field_id]['course_export']) ? 1 : 0;
02575 }
02576
02577 $this->tpl->setVariable("VISIBLE",ilUtil::formCheckbox($definition['visible'],"def[$field_id][visible]",1));
02578 $this->tpl->setVariable("CHANGE",ilUtil::formCheckbox($definition['changeable'],"def[$field_id][changeable]",1));
02579 $this->tpl->setVariable("REQUIRED",ilUtil::formCheckbox($definition['required'],"def[$field_id][required]",1));
02580 $this->tpl->setVariable("SEARCHABLE",ilUtil::formCheckbox($definition['searchable'],"def[$field_id][searchable]",1));
02581 $this->tpl->setVariable("EXPORT",ilUtil::formCheckbox($definition['export'],"def[$field_id][export]",1));
02582 $this->tpl->setVariable("COURSE_EXPORT",ilUtil::formCheckbox($definition['course_export'],"def[$field_id][course_export]",1));
02583
02584 $this->ctrl->setParameter($this,'field_id',$field_id);
02585
02586
02587 switch($definition['field_type'])
02588 {
02589 case UDF_TYPE_TEXT:
02590 $this->tpl->setVariable("EDIT_LINK",$this->ctrl->getLinkTarget($this,'editTextField'));
02591 break;
02592
02593 case UDF_TYPE_SELECT:
02594 $this->tpl->setVariable("EDIT_LINK",$this->ctrl->getLinkTarget($this,'editSelectField'));
02595 break;
02596 }
02597 $this->tpl->setVariable("EDIT",$this->lng->txt('edit'));
02598
02599 $this->tpl->setVariable("DELETE_LINK",$this->ctrl->getLinkTarget($this,'askDeleteField'));
02600 $this->tpl->setVariable("DELETE",$this->lng->txt('delete'));
02601 $this->tpl->parseCurrentBlock();
02602 }
02603 }
02604
02605 function editTextFieldObject()
02606 {
02607 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02608 $udf =& ilUserDefinedFields::_getInstance();
02609 $definition = $udf->getDefinition((int) $_GET['field_id']);
02610
02611
02612 $this->ctrl->setParameter($this,'field_id',(int) $_GET['field_id']);
02613
02614 $this->setSubTabs('settings');
02615 $this->tabs_gui->setTabActive('global_settings');
02616 $this->tabs_gui->setSubTabActive('user_defined_fields');
02617
02618 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_update_text_field.html');
02619
02620 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02621 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('udf_update_text_field'));
02622 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02623
02624 $this->tpl->setVariable("FIELD_NAME",$definition['field_name']);
02625
02626 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('cancel'));
02627 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('update'));
02628
02629 return true;
02630 }
02631
02632 function updateTextFieldObject()
02633 {
02634 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02635
02636 $udf =& ilUserDefinedFields::_getInstance();
02637 $definition = $udf->getDefinition((int) $_GET['field_id']);
02638
02639 $udf->setFieldName(ilUtil::stripslashes($_POST['field_name']));
02640 $udf->setFieldType($definition['field_type']);
02641 $udf->setFieldValues($definition['field_values']);
02642 $udf->enableVisible($definition['visible']);
02643 $udf->enableChangeable($definition['changeable']);
02644 $udf->enableRequired($definition['required']);
02645 $udf->enableSearchable($definition['searchable']);
02646 $udf->enableExport($definition['export']);
02647 $udf->enableCourseExport($definition['course_export']);
02648
02649 $udf->update($definition['field_id']);
02650
02651 ilUtil::sendInfo($this->lng->txt('udf_update_success'));
02652
02653 $this->listUserDefinedFieldsObject();
02654 }
02655
02656 function editSelectFieldObject()
02657 {
02658 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02659
02660 $_SESSION['select_num_values'] = $_SESSION['select_num_values'] ? $_SESSION['select_num_values'] : 0;
02661
02662 $udf =& ilUserDefinedFields::_getInstance();
02663 $definition = $udf->getDefinition((int) $_GET['field_id']);
02664
02665
02666 $this->ctrl->setParameter($this,'field_id',(int) $_GET['field_id']);
02667
02668 $this->setSubTabs('settings');
02669 $this->tabs_gui->setTabActive('global_settings');
02670 $this->tabs_gui->setSubTabActive('user_defined_fields');
02671
02672 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_update_select_field.html');
02673
02674
02675 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02676 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('udf_update_select_field'));
02677 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02678
02679 $this->tpl->setVariable("FIELD_NAME_VALUE",$definition['field_name']);
02680
02681
02682 $counter = 0;
02683 foreach($definition['field_values'] as $value)
02684 {
02685 $this->tpl->setCurrentBlock("values");
02686 $this->tpl->setVariable("COUNTER",$counter++);
02687 $this->tpl->setVariable("TXT_VALUES",$this->lng->txt('udf_value').' '.($counter));
02688 $this->tpl->setVariable("FIELD_NAME",$value);
02689
02690 $this->ctrl->setParameter($this,'value_id',$counter-1);
02691 $this->tpl->setVariable("DELETE_LINK",$this->ctrl->getLinkTarget($this,'deleteValue'));
02692 $this->tpl->setVariable("DELETE",$this->lng->txt('delete'));
02693 $this->tpl->parseCurrentBlock();
02694 }
02695
02696
02697 for($i = 0; $i < $_SESSION['select_num_values'];$i++)
02698 {
02699 $this->tpl->setCurrentBlock("new_values");
02700 $this->tpl->setVariable("NEW_COUNTER",$counter++);
02701 $this->tpl->setVariable("TXT_NEW_VALUES",$this->lng->txt('udf_value').' '.($counter));
02702 $this->tpl->setVariable("NEW_FIELD_NAME",$_POST['field_values'][$counter-1]);
02703 $this->tpl->parseCurrentBlock();
02704 }
02705 $this->tpl->setVariable("BTN_NEW_VALUE",$this->lng->txt('btn_new_value'));
02706 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('cancel'));
02707 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('save'));
02708
02709 return true;
02710 }
02711
02712 function updateSelectFieldObject()
02713 {
02714 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02715
02716
02717 $_POST['field_values'] = is_array($_POST['field_values']) ? $_POST['field_values'] : array();
02718
02719 $udf =& ilUserDefinedFields::_getInstance();
02720 $definition = $udf->getDefinition((int) $_GET['field_id']);
02721
02722
02723 $udf->setFieldName(ilUtil::stripslashes($_POST['field_name']));
02724 $udf->setFieldValues(array_merge($definition['field_values'],$_POST['field_values']));
02725 $udf->setFieldType($definition['field_type']);
02726 $udf->enableVisible($definition['visible']);
02727 $udf->enableChangeable($definition['changeable']);
02728 $udf->enableRequired($definition['required']);
02729 $udf->enableSearchable($definition['searchable']);
02730 $udf->enableExport($definition['export']);
02731 $udf->enableCourseExport($definition['course_export']);
02732
02733 if($error = $udf->validateValues())
02734 {
02735 switch($error)
02736 {
02737 case UDF_DUPLICATE_VALUES:
02738 ilUtil::sendInfo($this->lng->txt('udf_duplicate_entries'));
02739 $this->editSelectFieldObject();
02740 return false;
02741
02742 case UDF_NO_VALUES:
02743 ilUtil::sendInfo($this->lng->txt('udf_no_entries'));
02744 $this->editSelectFieldObject();
02745 return false;
02746 }
02747 }
02748
02749 $udf->update($definition['field_id']);
02750 ilUtil::sendInfo($this->lng->txt('udf_update_success'));
02751
02752 unset($_SESSION['select_num_values']);
02753 $this->editSelectFieldObject();
02754 }
02755
02756
02757 function deleteValueObject()
02758 {
02759 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02760
02761 $udf =& ilUserDefinedFields::_getInstance();
02762 $udf->deleteValue((int) $_GET['field_id'],(int) $_GET['value_id']);
02763
02764 ilUtil::sendInfo($this->lng->txt('udf_value_deleted'));
02765 $this->editSelectFieldObject();
02766
02767 return true;
02768 }
02769
02770 function addSelectValueObject()
02771 {
02772 $_SESSION['select_num_values'] += 1;
02773 $this->editSelectFieldObject();
02774 return true;
02775 }
02776
02777 function askDeleteFieldObject()
02778 {
02779 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02780
02781 ilUtil::sendInfo($this->lng->txt('udf_delete_sure'));
02782
02783 $this->setSubTabs('settings');
02784 $this->tabs_gui->setTabActive('global_settings');
02785 $this->tabs_gui->setSubTabActive('user_defined_fields');
02786
02787 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_ask_delete.html');
02788
02789 $this->ctrl->setParameter($this,'field_id',(int) $_GET['field_id']);
02790 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02791 $this->tpl->setVariable("TXT_DELETE_FIELD",$this->lng->txt('udf_delete_header'));
02792 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02793
02794 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02795 $definition = $user_field_definitions->getDefinition((int) $_GET['field_id']);
02796
02797 $this->tpl->setVariable("FIELD_NAME",$definition['field_name']);
02798 $this->tpl->setVariable("BTN_DELETE",$this->lng->txt('delete'));
02799 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt('cancel'));
02800
02801 return true;
02802 }
02803
02804 function deleteFieldObject()
02805 {
02806 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02807 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02808
02809 $user_field_definitions->delete((int) $_GET['field_id']);
02810
02811 ilUtil::sendInfo($this->lng->txt('udf_field_deleted'));
02812 $this->listUserDefinedFieldsObject();
02813
02814 return true;
02815 }
02816
02817 function confirmSavedUDFObject()
02818 {
02819 $this->updateFieldsObject("save");
02820 }
02821
02822 function updateFieldsObject($action = "")
02823 {
02824 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02825
02826 $user_field_definitions =& ilUserDefinedFields::_getInstance();
02827 $a_fields = $user_field_definitions->getDefinitions();
02828
02829
02830 if ($action != 'save')
02831 {
02832 include_once 'Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
02833 $privacy = ilPrivacySettings::_getInstance();
02834 if ($privacy->enabledExport() == true && $privacy->confirmationRequired() == true)
02835 {
02836 foreach($a_fields as $field_id => $definition)
02837 {
02838 if ($definition['course_export'] == 0 && (int) $_POST['def'][$field_id]['course_export'] == 1)
02839 {
02840 $this->confirm_change = 1;
02841 $this->listUserDefinedFieldsObject();
02842 return true;
02843 }
02844 }
02845 }
02846 }
02847
02848
02849 if ($action == 'save')
02850 {
02851 include_once('Modules/Course/classes/class.ilCourseAgreement.php');
02852 ilCourseAgreement::_reset();
02853 }
02854
02855 foreach($a_fields as $field_id => $definition)
02856 {
02857 $user_field_definitions->setFieldName($definition['field_name']);
02858 $user_field_definitions->setFieldType($definition['field_type']);
02859 $user_field_definitions->setFieldValues($definition['field_values']);
02860 $user_field_definitions->enableVisible((int) $_POST['def'][$field_id]['visible']);
02861 $user_field_definitions->enableChangeable((int) $_POST['def'][$field_id]['changeable']);
02862 $user_field_definitions->enableRequired((int) $_POST['def'][$field_id]['required']);
02863 $user_field_definitions->enableSearchable((int) $_POST['def'][$field_id]['searchable']);
02864 $user_field_definitions->enableExport((int) $_POST['def'][$field_id]['export']);
02865 $user_field_definitions->enableCourseExport((int) $_POST['def'][$field_id]['course_export']);
02866 $user_field_definitions->update($field_id);
02867 }
02868
02869 ilUtil::sendInfo($this->lng->txt('settings_saved'));
02870 $this->listUserDefinedFieldsObject();
02871
02872 return true;
02873 }
02874
02875 function chooseFieldTypeObject()
02876 {
02877 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02878
02879
02880 $_SESSION['num_values'] = 3;
02881
02882 $this->setSubTabs('settings');
02883 $this->tabs_gui->setTabActive('global_settings');
02884 $this->tabs_gui->setSubTabActive('user_defined_fields');
02885
02886 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_select_field_type.html');
02887
02888 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('add_new_user_defined_field'));
02889 $this->tpl->setVariable("FIELD_TYPE",$this->lng->txt('field_type'));
02890 $this->tpl->setVariable("TYPE_TEXT",ilUtil::formRadioButton(1,'field_type',UDF_TYPE_TEXT));
02891 $this->tpl->setVariable("TYPE_SELECT",ilUtil::formRadioButton(0,'field_type',UDF_TYPE_SELECT));
02892 $this->tpl->setVariable("TXT_TEXT",$this->lng->txt('udf_type_text'));
02893 $this->tpl->setVariable("TXT_SELECT",$this->lng->txt('udf_type_select'));
02894 $this->tpl->setVariable("BTN_MORE",$this->lng->txt('btn_next'));
02895 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt('cancel'));
02896
02897 return true;
02898 }
02899
02900 function chooseDefinitionsObject()
02901 {
02902 include_once './Services/User/classes/class.ilUserDefinedFields.php';
02903
02904 $this->setSubTabs('settings');
02905 $this->tabs_gui->setTabActive('global_settings');
02906 $this->tabs_gui->setSubTabActive('user_defined_fields');
02907
02908 switch($field_type = (int) $_REQUEST['field_type'])
02909 {
02910 case UDF_TYPE_TEXT:
02911 $this->__showTextTable();
02912 break;
02913
02914 case UDF_TYPE_SELECT:
02915 $this->__showSelectTable();
02916 break;
02917 }
02918 }
02919
02920 function __showTextTable()
02921 {
02922 global $lng;
02923
02924 $lng->loadLanguageModule("administration");
02925 $lng->loadLanguageModule("ps");
02926
02927 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_edit_text_field.html');
02928
02929 include_once("Modules/Course/classes/class.ilCourseAgreement.php");
02930 if (ilCourseAgreement::_hasAgreements())
02931 {
02932 $this->tpl->setCurrentBlock('warning_modify');
02933 $this->tpl->setVariable('TXT_WARNING', $lng->txt('ps_warning_modify'));
02934 $this->tpl->parseCurrentBlock();
02935 }
02936
02937
02938 $this->ctrl->setParameter($this,'field_type',(int) $_REQUEST['field_type']);
02939 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02940
02941 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('udf_add_field'));
02942 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('btn_previous'));
02943 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('add_new_user_defined_text_field'));
02944 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02945 $this->tpl->setVariable("FIELD_NAME",$_POST['field_name']);
02946
02947 $this->tpl->setVariable("TXT_VISIBLE", $this->lng->txt("visible"));
02948 $this->tpl->setVariable("TXT_CHANGE", $this->lng->txt("changeable"));
02949 $this->tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required_field"));
02950 $this->tpl->setVariable("TXT_SEARCHABLE", $this->lng->txt("header_searchable"));
02951 $this->tpl->setVariable("TXT_EXPORT", $this->lng->txt("export"));
02952 $this->tpl->setVariable("TXT_COURSE_EXPORT", $lng->txt("course_export"));
02953
02954 $this->tpl->setVariable("VISIBLE",ilUtil::formCheckbox($_POST['def']['visible'],"def[visible]",1));
02955 $this->tpl->setVariable("CHANGE",ilUtil::formCheckbox($_POST['def']['changeable'],"def[changeable]",1));
02956 $this->tpl->setVariable("REQUIRED",ilUtil::formCheckbox($_POST['def']['required'],"def[required]",1));
02957 $this->tpl->setVariable("SEARCHABLE",ilUtil::formCheckbox($_POST['def']['searchable'],"def[searchable]",1));
02958 $this->tpl->setVariable("EXPORT",ilUtil::formCheckbox($_POST['def']['export'],"def[export]",1));
02959 $this->tpl->setVariable("COURSE_EXPORT",ilUtil::formCheckbox($_POST['def']['course_export'],"def[course_export]",1));
02960
02961 return true;
02962 }
02963
02964 function __showSelectTable()
02965 {
02966 global $lng;
02967
02968 $lng->loadLanguageModule("administration");
02969 $lng->loadLanguageModule("ps");
02970
02971 include_once("Modules/Course/classes/class.ilCourseAgreement.php");
02972 if (ilCourseAgreement::_hasAgreements())
02973 {
02974 $this->tpl->setCurrentBlock('warning_modify');
02975 $this->tpl->setVariable('TXT_WARNING', $lng->txt('ps_warning_modify'));
02976 $this->tpl->parseCurrentBlock();
02977 }
02978
02979 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_edit_select_field.html');
02980
02981
02982 $this->ctrl->setParameter($this,'field_type',(int) $_REQUEST['field_type']);
02983 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02984 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('udf_add_field'));
02985 $this->tpl->setVariable("BTN_PREVIOUS",$this->lng->txt('btn_previous'));
02986 $this->tpl->setVariable("TXT_SELECT_TYPE",$this->lng->txt('add_new_user_defined_select_field'));
02987 $this->tpl->setVariable("TXT_FIELD_NAME",$this->lng->txt('field_name'));
02988 $this->tpl->setVariable("FIELD_NAME_VALUE",$_POST['field_name']);
02989 $this->tpl->setVariable("TXT_EXPORT", $this->lng->txt("export"));
02990 $this->tpl->setVariable("TXT_COURSE_EXPORT", $lng->txt("course_export"));
02991
02992 $this->tpl->setVariable("TXT_VISIBLE", $this->lng->txt("visible"));
02993 $this->tpl->setVariable("TXT_CHANGE", $this->lng->txt("changeable"));
02994 $this->tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required_field"));
02995 $this->tpl->setVariable("TXT_SEARCHABLE", $this->lng->txt("header_searchable"));
02996
02997 $this->tpl->setVariable("VISIBLE",ilUtil::formCheckbox($_POST['def']['visible'],"def[visible]",1));
02998 $this->tpl->setVariable("CHANGE",ilUtil::formCheckbox($_POST['def']['changeable'],"def[changeable]",1));
02999 $this->tpl->setVariable("REQUIRED",ilUtil::formCheckbox($_POST['def']['required'],"def[required]",1));
03000 $this->tpl->setVariable("SEARCHABLE",ilUtil::formCheckbox($_POST['def']['searchable'],"def[searchable]",1));
03001 $this->tpl->setVariable("EXPORT",ilUtil::formCheckbox($_POST['def']['export'],"def[export]",1));
03002 $this->tpl->setVariable("COURSE_EXPORT",ilUtil::formCheckbox($_POST['def']['course_export'],"def[course_export]",1));
03003
03004 $this->tpl->setVariable("BTN_NEW_VALUE",$this->lng->txt('btn_new_value'));
03005
03006 for($i = 0; $i < $_SESSION['num_values']; $i++)
03007 {
03008 $this->tpl->setCurrentBlock("values");
03009 $this->tpl->setVariable("TXT_VALUES",$this->lng->txt('udf_value').' '.($i+1));
03010 $this->tpl->setVariable("COUNTER",$i);
03011 $this->tpl->setVariable("FIELD_NAME",$_POST['field_values'][$i]);
03012 $this->tpl->parseCurrentBlock();
03013 }
03014
03015
03016 }
03017
03018 function addValueObject()
03019 {
03020 $_SESSION['num_values'] += 1;
03021 $this->chooseDefinitionsObject();
03022 return true;
03023 }
03024
03025 function saveFieldObject()
03026 {
03027 include_once './Services/User/classes/class.ilUserDefinedFields.php';
03028 $user_field_definitions =& ilUserDefinedFields::_getInstance();
03029
03030 if (!strlen($_POST['field_name']))
03031 {
03032 ilUtil::sendInfo($this->lng->txt('udf_no_name_given'));
03033 $this->chooseDefinitionsObject();
03034 return false;
03035 }
03036
03037 if($user_field_definitions->nameExists($_POST['field_name']))
03038 {
03039 ilUtil::sendInfo($this->lng->txt('udf_name_already_exists'));
03040 $this->chooseDefinitionsObject();
03041 return false;
03042 }
03043
03044
03045 if($_REQUEST['field_type'] == UDF_TYPE_TEXT)
03046 {
03047 $user_field_definitions->setFieldType(UDF_TYPE_TEXT);
03048 }
03049 if($_REQUEST['field_type'] == UDF_TYPE_SELECT)
03050 {
03051 $user_field_definitions->setFieldType(UDF_TYPE_SELECT);
03052 $user_field_definitions->setFieldValues($_POST['field_values']);
03053 if($error = $user_field_definitions->validateValues())
03054 {
03055 switch($error)
03056 {
03057 case UDF_DUPLICATE_VALUES:
03058 ilUtil::sendInfo($this->lng->txt('udf_duplicate_entries'));
03059 $this->chooseDefinitionsObject();
03060 return false;
03061
03062 case UDF_NO_VALUES:
03063 ilUtil::sendInfo($this->lng->txt('udf_no_entries'));
03064 $this->chooseDefinitionsObject();
03065 return false;
03066 }
03067 }
03068 }
03069
03070 $user_field_definitions->setFieldName($_POST['field_name']);
03071 $user_field_definitions->enableVisible($_POST['def']['visible']);
03072 $user_field_definitions->enableChangeable($_POST['def']['changeable']);
03073 $user_field_definitions->enableRequired($_POST['def']['required']);
03074 $user_field_definitions->enableSearchable($_POST['def']['searchable']);
03075 $user_field_definitions->enableExport($_POST['def']['export']);
03076 $user_field_definitions->enableCourseExport($_POST['def']['course_export']);
03077 $user_field_definitions->add();
03078
03079 if ((int) $_POST['def']['course_export'] == 1)
03080 {
03081 include_once('Modules/Course/classes/class.ilCourseAgreement.php');
03082 ilCourseAgreement::_reset();
03083 }
03084
03085 ilUtil::sendInfo($this->lng->txt('udf_added_field'));
03086 $this->listUserDefinedFieldsObject();
03087
03088 return true;
03089 }
03090
03101 function settingsObject()
03102 {
03103 include_once 'Services/Search/classes/class.ilUserSearchOptions.php';
03104
03105 global $ilias;
03106 global $lng;
03107
03108 $lng->loadLanguageModule("administration");
03109
03110 $this->getTemplateFile("settings","usr");
03111 $this->setSubTabs('settings');
03112
03113 $profile_fields =& $this->object->getProfileFields();
03114
03115
03116 $fixed_required_fields = array(
03117 "firstname" => 1,
03118 "lastname" => 1,
03119 "upload" => 0,
03120 "password" => 0,
03121 "language" => 0,
03122 "skin_style" => 0,
03123 "hits_per_page" => 0,
03124 "show_users_online" => 0,
03125 "instant_messengers" => 0,
03126 "hide_own_online_status" => 0
03127 );
03128 $no_export_fields = array(
03129 "hits_per_page",
03130 "show_users_online",
03131 "hide_own_online_status"
03132 );
03133
03134
03135 $course_export_fields = array(
03136 "gender" => 1, "firstname" => 2,
03137 "lastname" => 2, "title" => 1,
03138 "upload" => 0, "password" => 0,
03139 "institution" => 1, "department" => 1,
03140 "street" => 1, "zipcode" => 1,
03141 "city" => 1, "country" => 1,
03142 "phone_office" => 1, "phone_home" => 1,
03143 "phone_mobile" => 1, "fax" => 1,
03144 "email" => 1, "hobby" => 1,
03145 "referral_comment" => 0, "matriculation" => 1,
03146 "language" => 0, "skin_style" => 0,
03147 "hits_per_page" => 0, "show_users_online" => 0,
03148 "instant_messengers" => 0
03149 );
03150 foreach ($profile_fields as $field)
03151 {
03152 $this->tpl->setCurrentBlock("profile_settings");
03153
03154 $txt = strcasecmp($field,"upload") == 0 ? "personal_picture" : $field;
03155 $this->tpl->setVariable("TXT_PROFILE_DATA", $this->lng->txt($txt));
03156
03157 $this->tpl->setVariable("PROFILE_OPTION_ENABLED", "enabled_" . $field);
03158 $this->tpl->setVariable("PROFILE_OPTION_VISIBLE", "visible_" . $field);
03159 $this->tpl->setVariable("PROFILE_OPTION_REQUIRED", "required_" . $field);
03160
03161
03162 $this->tpl->setVariable("HEADER_PROFILE_DATA", $this->lng->txt("usr_settings_header_profile_profile"));
03163 $this->tpl->setVariable("HEADER_ENABLED", $this->lng->txt("changeable"));
03164 $this->tpl->setVariable("HEADER_VISIBLE", $this->lng->txt("visible"));
03165 $this->tpl->setVariable("HEADER_REQUIRED", $this->lng->txt("required_field"));
03166 $this->tpl->setVariable("HEADER_EXPORT", $this->lng->txt("export"));
03167
03168
03169 if(ilUserSearchOptions::_isSearchable($field))
03170 {
03171 $this->tpl->setVariable("HEADER_SEARCH",$this->lng->txt('header_searchable'));
03172 $checked = ($_POST["cmd"]["saveGlobalUserSettings"] && $this->confirm_change == 1) ?
03173 $_POST["cbh"][$field]["searchable"] : ilUserSearchOptions::_isEnabled($field);
03174 $this->tpl->setVariable("CHECK_SEARCH",ilUtil::formCheckbox($checked,
03175 "cbh[$field][searchable]",
03176 1));
03177 }
03178
03179
03180 if ($ilias->getSetting("usr_settings_disable_".$field) != "1" ||
03181 ($this->confirm_change == 1 && ! $_POST["chb"]["enabled_" . $field]))
03182 {
03183 $this->tpl->setVariable("CHECKED_ENABLED", " checked=\"checked\"");
03184 }
03185
03186
03187 if ($ilias->getSetting("usr_settings_hide_".$field) != "1" ||
03188 ($this->confirm_change == 1 && ! $_POST["chb"]["visible_" . $field]))
03189 {
03190 $this->tpl->setVariable("CHECKED_VISIBLE", " checked=\"checked\"");
03191 }
03192
03193 if (!in_array($field, $no_export_fields))
03194 {
03195 $this->tpl->setVariable("PROFILE_OPTION_EXPORT", "export_" . $field);
03196
03197 if ($ilias->getSetting("usr_settings_export_".$field) == "1" ||
03198 ($this->confirm_change == 1 && $_POST["chb"]["export_" . $field] == "1"))
03199 {
03200 $this->tpl->setVariable("CHECKED_EXPORT", " checked=\"checked\"");
03201 }
03202
03203 }
03204
03205 $is_fixed = array_key_exists($field, $fixed_required_fields);
03206 if ($is_fixed && $fixed_required_fields[$field] || ! $is_fixed &&
03207 ($ilias->getSetting("require_".$field) == "1" ||
03208 ($this->confirm_change == 1 && $_POST["chb"]["required_" . $field] == "1")))
03209 {
03210 $this->tpl->setVariable("CHECKED_REQUIRED", " checked=\"checked\"");
03211 }
03212 if ($is_fixed)
03213 {
03214 $this->tpl->setVariable("DISABLE_REQUIRED", " disabled=\"disabled\"");
03215 }
03216
03217
03218
03219 if (is_array($course_export_fields))
03220 {
03221 if (in_array($field, $course_export_fields) && $course_export_fields[$field] != 0)
03222 {
03223 $this->tpl->setVariable("HEADER_COURSE_EXPORT", $lng->txt("course_export"));
03224 $this->tpl->setVariable("PROFILE_OPTION_COURSE_EXPORT", "course_export_" . $field);
03225
03226 if ($course_export_fields[$field] == 2)
03227 {
03228 $this->tpl->setVariable("CHECKED_COURSE_EXPORT", " checked=\"checked\"");
03229 $this->tpl->setVariable("DISABLE_COURSE_EXPORT", " disabled=\"disabled\"");
03230 }
03231 else
03232 {
03233 if ($ilias->getSetting("usr_settings_course_export_".$field) == "1" ||
03234 ($this->confirm_change == 1 && $_POST["chb"]["course_export_" . $field] == "1"))
03235 {
03236 $this->tpl->setVariable("CHECKED_COURSE_EXPORT", " checked=\"checked\"");
03237 }
03238 }
03239 }
03240 }
03241
03242
03243
03244 if ($field == "hits_per_page")
03245 {
03246 $this->tpl->setVariable("PROFILE_OPTION_DEFAULT_VALUE", "default_" . $field);
03247 $options = array(2,10,15,20,30,40,50,100,9999);
03248 $selected_option = $ilias->getSetting("hits_per_page");
03249 if ($selected_option == null) $selected_option = 10;
03250 $this->tpl->setCurrentBlock("default_value_option");
03251 foreach ($options as $option)
03252 {
03253 if ($option == $selected_option)
03254 {
03255 $this->tpl->setVariable("OPTION_SELECTED", " selected=\"selected\"");
03256 }
03257
03258 $this->tpl->setVariable("OPTION_VALUE", $option);
03259 $this->tpl->setVariable("OPTION_TEXT", ($option == 9999) ? $this->lng->txt("no_limit") : $option);
03260 $this->tpl->parseCurrentBlock();
03261 }
03262 $this->tpl->setCurrentBlock("profile_settings");
03263 $this->tpl->setVariable("HEADER_DEFAULT_VALUE", $this->lng->txt("default_value"));
03264 }
03265
03266
03267
03268 else if ($field == "show_users_online")
03269 {
03270 $this->tpl->setVariable("PROFILE_OPTION_DEFAULT_VALUE", "default_" . $field);
03271 $options = array('y','associated','n');
03272 $selected_option = $ilias->getSetting("show_users_online");
03273 if ($selected_option == "") $selected_option = "y";
03274 $this->tpl->setCurrentBlock("default_value_option");
03275 foreach ($options as $option)
03276 {
03277 if ($option == $selected_option)
03278 {
03279 $this->tpl->setVariable("OPTION_SELECTED", " selected=\"selected\"");
03280 }
03281
03282 $this->tpl->setVariable("OPTION_VALUE", $option);
03283 $this->tpl->setVariable("OPTION_TEXT", $this->lng->txt("users_online_show_short_".$option));
03284 $this->tpl->parseCurrentBlock();
03285 }
03286 $this->tpl->setCurrentBlock("profile_settings");
03287 $this->tpl->setVariable("HEADER_DEFAULT_VALUE", $this->lng->txt("default_value"));
03288 }
03289
03290
03291 $this->tpl->parseCurrentBlock();
03292 }
03293 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
03294 $this->tpl->setVariable("TXT_HEADER_PROFILE", $this->lng->txt("usr_settings_header_profile"));
03295 $this->tpl->setVariable("TXT_EXPLANATION_PROFILE", $this->lng->txt("usr_settings_explanation_profile"));
03296 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
03297
03298 if ($this->confirm_change == 1)
03299 {
03300 $this->tpl->setVariable("CONFIRM_MESSAGE", $this->lng->txt("confirm_message_course_export"));
03301 $this->tpl->setVariable("BUTTON_CONFIRM", $this->lng->txt("confirm"));
03302 $this->tpl->setVariable("BUTTON_CANCEL", $this->lng->txt("cancel"));
03303 }
03304 }
03305
03306 function confirmSavedObject()
03307 {
03308 $this->saveGlobalUserSettingsObject("save");
03309 }
03310
03311 function saveGlobalUserSettingsObject($action = "")
03312 {
03313 include_once 'Services/Search/classes/class.ilUserSearchOptions.php';
03314 include_once 'Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
03315
03316 global $ilias;
03317
03318 $profile_fields =& $this->object->getProfileFields();
03319
03320 $fixed_required_fields = array(
03321 "firstname" => 1,
03322 "lastname" => 1,
03323 "upload" => 0,
03324 "password" => 0,
03325 "language" => 0,
03326 "skin_style" => 0,
03327 "hits_per_page" => 0,
03328 "show_users_online" => 0,
03329 "hide_own_online_status" => 0
03330 );
03331
03332
03333 $privacy = ilPrivacySettings::_getInstance();
03334 if ($privacy->enabledExport() == true &&
03335 $privacy->confirmationRequired() == true &&
03336 $action != "save")
03337 {
03338 foreach ($profile_fields as $field)
03339 {
03340 if (! $ilias->getSetting("usr_settings_course_export_" . $field) && $_POST["chb"]["course_export_" . $field] == "1")
03341 {
03342 $this->confirm_change = 1;
03343 $this->settingsObject();
03344 return;
03345 }
03346 }
03347 }
03348
03349 if($action == 'save')
03350 {
03351 include_once('Modules/Course/classes/class.ilCourseAgreement.php');
03352 ilCourseAgreement::_reset();
03353 }
03354
03355 foreach ($profile_fields as $field)
03356 {
03357
03358 if(ilUserSearchOptions::_isSearchable($field))
03359 {
03360 ilUserSearchOptions::_saveStatus($field,(bool) $_POST['cbh'][$field]['searchable']);
03361 }
03362
03363 if (! $_POST["chb"]["visible_".$field])
03364 {
03365 $ilias->setSetting("usr_settings_hide_".$field, "1");
03366 }
03367 else
03368 {
03369 $ilias->deleteSetting("usr_settings_hide_".$field);
03370 }
03371
03372 if (! $_POST["chb"]["enabled_" . $field])
03373 {
03374 $ilias->setSetting("usr_settings_disable_".$field, "1");
03375 }
03376 else
03377 {
03378 $ilias->deleteSetting("usr_settings_disable_".$field);
03379 }
03380
03381 if ($_POST["chb"]["export_" . $field])
03382 {
03383 $ilias->setSetting("usr_settings_export_".$field, "1");
03384 }
03385 else
03386 {
03387 $ilias->deleteSetting("usr_settings_export_".$field);
03388 }
03389
03390 if ($_POST["chb"]["course_export_" . $field])
03391 {
03392 $ilias->setSetting("usr_settings_course_export_".$field, "1");
03393 }
03394 else
03395 {
03396 $ilias->deleteSetting("usr_settings_course_export_".$field);
03397 }
03398
03399 $is_fixed = array_key_exists($field, $fixed_required_fields);
03400 if ($is_fixed && $fixed_required_fields[$field] || ! $is_fixed && $_POST["chb"]["required_".$field])
03401 {
03402 $ilias->setSetting("require_".$field, "1");
03403 }
03404 else
03405 {
03406 $ilias->deleteSetting("require_" . $field);
03407 }
03408 }
03409
03410 if ($_POST["select"]["default_hits_per_page"])
03411 {
03412 $ilias->setSetting("hits_per_page",$_POST["select"]["default_hits_per_page"]);
03413 }
03414
03415 if ($_POST["select"]["default_show_users_online"])
03416 {
03417 $ilias->setSetting("show_users_online",$_POST["select"]["default_show_users_online"]);
03418 }
03419
03420 ilUtil::sendInfo($this->lng->txt("usr_settings_saved"));
03421 $this->settingsObject();
03422 }
03423
03424
03428 function __buildUserFilterSelect()
03429 {
03430 $action[-1] = $this->lng->txt('all_users');
03431 $action[1] = $this->lng->txt('usr_active_only');
03432 $action[0] = $this->lng->txt('usr_inactive_only');
03433 $action[2] = $this->lng->txt('usr_limited_access_only');
03434 $action[3] = $this->lng->txt('usr_without_courses');
03435 $action[4] = $this->lng->txt('usr_filter_lastlogin');
03436 $action[5] = $this->lng->txt("usr_filter_coursemember");
03437 $action[6] = $this->lng->txt("usr_filter_groupmember");
03438 $action[7] = $this->lng->txt("usr_filter_role");
03439
03440 return ilUtil::formSelect($_SESSION['user_filter'],"user_filter",$action,false,true);
03441 }
03442
03449 function downloadExportFileObject()
03450 {
03451 if(!isset($_POST["file"]))
03452 {
03453 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
03454 }
03455
03456 if (count($_POST["file"]) > 1)
03457 {
03458 $this->ilias->raiseError($this->lng->txt("select_max_one_item"),$this->ilias->error_obj->MESSAGE);
03459 }
03460
03461
03462 $export_dir = $this->object->getExportDirectory();
03463 ilUtil::deliverFile($export_dir."/".$_POST["file"][0],
03464 $_POST["file"][0]);
03465 }
03466
03470 function confirmDeleteExportFileObject()
03471 {
03472 if(!isset($_POST["file"]))
03473 {
03474 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
03475 }
03476
03477
03478 $_SESSION["ilExportFiles"] = $_POST["file"];
03479
03480 $this->getTemplateFile("confirm_delete_export","usr");
03481
03482 ilUtil::sendInfo($this->lng->txt("info_delete_sure"));
03483
03484 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
03485
03486
03487 $this->tpl->setCurrentBlock("table_header");
03488 $this->tpl->setVariable("TEXT",$this->lng->txt("objects"));
03489 $this->tpl->parseCurrentBlock();
03490
03491
03492 $counter = 0;
03493 foreach($_POST["file"] as $file)
03494 {
03495 $this->tpl->setCurrentBlock("table_row");
03496 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
03497 $this->tpl->setVariable("IMG_OBJ",ilUtil::getImagePath("icon_usrf.gif"));
03498 $this->tpl->setVariable("TEXT_CONTENT", $file);
03499 $this->tpl->parseCurrentBlock();
03500 }
03501
03502
03503 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03504 $this->tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
03505 $buttons = array( "cancelDeleteExportFile" => $this->lng->txt("cancel"),
03506 "deleteExportFile" => $this->lng->txt("confirm"));
03507 foreach ($buttons as $name => $value)
03508 {
03509 $this->tpl->setCurrentBlock("operation_btn");
03510 $this->tpl->setVariable("BTN_NAME",$name);
03511 $this->tpl->setVariable("BTN_VALUE",$value);
03512 $this->tpl->parseCurrentBlock();
03513 }
03514 }
03515
03516
03520 function cancelDeleteExportFileObject()
03521 {
03522 session_unregister("ilExportFiles");
03523 ilUtil::redirect($this->ctrl->getLinkTargetByClass("ilobjuserfoldergui", "export"));
03524 }
03525
03526
03530 function deleteExportFileObject()
03531 {
03532 $export_dir = $this->object->getExportDirectory();
03533 foreach($_SESSION["ilExportFiles"] as $file)
03534 {
03535 $exp_file = $export_dir."/".$file;
03536 if (@is_file($exp_file))
03537 {
03538 unlink($exp_file);
03539 }
03540 }
03541 ilUtil::redirect($this->ctrl->getLinkTargetByClass("ilobjuserfoldergui", "export"));
03542 }
03543
03554 function exportObject()
03555 {
03556 global $ilias;
03557 if ($_POST["cmd"]["export"])
03558 {
03559 $this->object->buildExportFile($_POST["export_type"]);
03560 ilUtil::redirect($this->ctrl->getLinkTargetByClass("ilobjuserfoldergui", "export"));
03561 exit;
03562 }
03563
03564 $this->getTemplateFile("export","usr");
03565
03566 $export_types = array(
03567 "userfolder_export_excel_x86",
03568 "userfolder_export_csv",
03569 "userfolder_export_xml"
03570 );
03571
03572
03573 include_once("./Services/Table/classes/class.ilTableGUI.php");
03574 $tbl = new ilTableGUI();
03575
03576
03577 $this->tpl->addBlockfile("EXPORT_FILES", "export_files", "tpl.table.html");
03578
03579
03580 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.usr_export_file_row.html");
03581
03582 $num = 0;
03583
03584 $tbl->setTitle($this->lng->txt("userfolder_export_files"));
03585
03586 $tbl->setHeaderNames(array("", $this->lng->txt("userfolder_export_file"),
03587 $this->lng->txt("userfolder_export_file_size"), $this->lng->txt("date") ));
03588
03589 $tbl->enabled["sort"] = false;
03590 $tbl->setColumnWidth(array("1%", "49%", "25%", "25%"));
03591
03592
03593 $tbl->setOrderColumn($_GET["sort_by"]);
03594 $tbl->setOrderDirection($_GET["sort_order"]);
03595 $tbl->setLimit($_GET["limit"]);
03596 $tbl->setOffset($_GET["offset"]);
03597 $tbl->setMaxCount($this->maxcount);
03598
03599
03600 $this->tpl->setVariable("COLUMN_COUNTS", 4);
03601
03602
03603 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
03604 $this->tpl->setVariable("ALT_ARROW", $this->lng->txt("actions"));
03605 $this->tpl->setCurrentBlock("tbl_action_btn");
03606 $this->tpl->setVariable("BTN_NAME", "confirmDeleteExportFile");
03607 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("delete"));
03608 $this->tpl->parseCurrentBlock();
03609
03610 $this->tpl->setCurrentBlock("tbl_action_btn");
03611 $this->tpl->setVariable("BTN_NAME", "downloadExportFile");
03612 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("download"));
03613 $this->tpl->parseCurrentBlock();
03614
03615
03616 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
03617
03618
03619 $export_files = $this->object->getExportFiles();
03620
03621 $tbl->setMaxCount(count($export_files));
03622 $export_files = array_slice($export_files, $_GET["offset"], $_GET["limit"]);
03623
03624 $tbl->render();
03625
03626 if(count($export_files) > 0)
03627 {
03628 $i=0;
03629 foreach($export_files as $exp_file)
03630 {
03631 $this->tpl->setCurrentBlock("tbl_content");
03632 $this->tpl->setVariable("TXT_FILENAME", $exp_file["filename"]);
03633
03634 $css_row = ilUtil::switchColor($i++, "tblrow1", "tblrow2");
03635 $this->tpl->setVariable("CSS_ROW", $css_row);
03636
03637 $this->tpl->setVariable("TXT_SIZE", $exp_file["filesize"]);
03638 $this->tpl->setVariable("CHECKBOX_ID", $exp_file["filename"]);
03639
03640 $file_arr = explode("__", $exp_file["filename"]);
03641 $this->tpl->setVariable("TXT_DATE", date("Y-m-d H:i:s",$file_arr[0]));
03642
03643 $this->tpl->parseCurrentBlock();
03644 }
03645
03646 $this->tpl->setCurrentBlock("selectall");
03647 $this->tpl->setVariable("SELECT_ALL", $this->lng->txt("select_all"));
03648 $this->tpl->setVariable("CSS_ROW", $css_row);
03649 $this->tpl->parseCurrentBlock();
03650 }
03651 else
03652 {
03653 $this->tpl->setCurrentBlock("notfound");
03654 $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
03655 $this->tpl->setVariable("NUM_COLS", 3);
03656 $this->tpl->parseCurrentBlock();
03657 }
03658
03659 $this->tpl->parseCurrentBlock();
03660
03661
03662 foreach ($export_types as $export_type)
03663 {
03664 $this->tpl->setCurrentBlock("option");
03665 $this->tpl->setVariable("OPTION_VALUE", $export_type);
03666 $this->tpl->setVariable("OPTION_TEXT", $this->lng->txt($export_type));
03667 $this->tpl->parseCurrentBlock();
03668 }
03669
03670 $this->tpl->setVariable("EXPORT_BUTTON", $this->lng->txt("create_export_file"));
03671 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
03672 }
03673
03677 function newAccountMailObject()
03678 {
03679 global $lng;
03680
03681 $this->setSubTabs('settings');
03682 $this->tabs_gui->setTabActive('global_settings');
03683 $this->tabs_gui->setSubTabActive('user_new_account_mail');
03684
03685 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.usrf_new_account_mail.html');
03686 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
03687 $this->tpl->setVariable("IMG_MAIL", ilUtil::getImagePath("icon_mail.gif"));
03688
03689 $lng->loadLanguageModule("meta");
03690 $lng->loadLanguageModule("mail");
03691 $this->tpl->setVariable("TXT_NEW_USER_ACCOUNT_MAIL", $lng->txt("user_new_account_mail"));
03692 $this->tpl->setVariable("TXT_NEW_USER_ACCOUNT_MAIL_DESC", $lng->txt("user_new_account_mail_desc"));
03693
03694
03695 $this->tpl->setVariable("TXT_USE_PLACEHOLDERS", $lng->txt("mail_nacc_use_placeholder"));
03696 $this->tpl->setVariable("TXT_MAIL_SALUTATION", $lng->txt("mail_nacc_salutation"));
03697 $this->tpl->setVariable("TXT_FIRST_NAME", $lng->txt("firstname"));
03698 $this->tpl->setVariable("TXT_LAST_NAME", $lng->txt("lastname"));
03699 $this->tpl->setVariable("TXT_LOGIN", $lng->txt("mail_nacc_login"));
03700 $this->tpl->setVariable("TXT_PASSWORD", $lng->txt("password"));
03701 $this->tpl->setVariable("TXT_PASSWORD_BLOCK", $lng->txt("mail_nacc_pw_block"));
03702 $this->tpl->setVariable("TXT_NOPASSWORD_BLOCK", $lng->txt("mail_nacc_no_pw_block"));
03703 $this->tpl->setVariable("TXT_ADMIN_MAIL", $lng->txt("mail_nacc_admin_mail"));
03704 $this->tpl->setVariable("TXT_ILIAS_URL", $lng->txt("mail_nacc_ilias_url"));
03705 $this->tpl->setVariable("TXT_CLIENT_NAME", $lng->txt("mail_nacc_client_name"));
03706 $this->tpl->setVariable("TXT_TARGET", $lng->txt("mail_nacc_target"));
03707 $this->tpl->setVariable("TXT_TARGET_TITLE", $lng->txt("mail_nacc_target_title"));
03708 $this->tpl->setVariable("TXT_TARGET_TYPE", $lng->txt("mail_nacc_target_type"));
03709 $this->tpl->setVariable("TXT_TARGET_BLOCK", $lng->txt("mail_nacc_target_block"));
03710
03711 $langs = $lng->getInstalledLanguages();
03712 foreach($langs as $lang_key)
03713 {
03714 $amail = $this->object->_lookupNewAccountMail($lang_key);
03715 $this->tpl->setCurrentBlock("mail_block");
03716 $add = "";
03717 if ($lang_key == $lng->getDefaultLanguage())
03718 {
03719 $add = " (".$lng->txt("default").")";
03720 }
03721 $this->tpl->setVariable("TXT_LANGUAGE",
03722 $lng->txt("meta_l_".$lang_key).$add);
03723 $this->tpl->setVariable("TXT_BODY", $lng->txt("message_content"));
03724 $this->tpl->setVariable("TA_BODY", "body_".$lang_key);
03725 $this->tpl->setVariable("VAL_BODY",
03726 ilUtil::prepareFormOutput($amail["body"]));
03727 $this->tpl->setVariable("TXT_SUBJECT", $lng->txt("subject"));
03728 $this->tpl->setVariable("INPUT_SUBJECT", "subject_".$lang_key);
03729 $this->tpl->setVariable("VAL_SUBJECT",
03730 ilUtil::prepareFormOutput($amail["subject"]));
03731 $this->tpl->setVariable("TXT_SAL_G", $lng->txt("mail_salutation_general"));
03732 $this->tpl->setVariable("INPUT_SAL_G", "sal_g_".$lang_key);
03733 $this->tpl->setVariable("VAL_SAL_G",
03734 ilUtil::prepareFormOutput($amail["sal_g"]));
03735 $this->tpl->setVariable("TXT_SAL_M", $lng->txt("mail_salutation_male"));
03736 $this->tpl->setVariable("INPUT_SAL_M", "sal_m_".$lang_key);
03737 $this->tpl->setVariable("VAL_SAL_M",
03738 ilUtil::prepareFormOutput($amail["sal_m"]));
03739 $this->tpl->setVariable("TXT_SAL_F", $lng->txt("mail_salutation_female"));
03740 $this->tpl->setVariable("INPUT_SAL_F", "sal_f_".$lang_key);
03741 $this->tpl->setVariable("VAL_SAL_F",
03742 ilUtil::prepareFormOutput($amail["sal_f"]));
03743 $this->tpl->parseCurrentBlock();
03744 }
03745 $this->tpl->setVariable("TXT_CANCEL", $lng->txt("cancel"));
03746 $this->tpl->setVariable("TXT_SAVE", $lng->txt("save"));
03747 }
03748
03749 function cancelNewAccountMailObject()
03750 {
03751 ilUtil::sendInfo($this->lng->txt("action_aborted"), true);
03752 $this->ctrl->redirect($this, "settings");
03753 }
03754
03755 function saveNewAccountMailObject()
03756 {
03757 global $lng;
03758
03759 ilUtil::sendInfo($this->lng->txt("msg_obj_modified"), true);
03760 $langs = $lng->getInstalledLanguages();
03761 foreach($langs as $lang_key)
03762 {
03763 $this->object->_writeNewAccountMail($lang_key,
03764 ilUtil::stripSlashes($_POST["subject_".$lang_key]),
03765 ilUtil::stripSlashes($_POST["sal_g_".$lang_key]),
03766 ilUtil::stripSlashes($_POST["sal_f_".$lang_key]),
03767 ilUtil::stripSlashes($_POST["sal_m_".$lang_key]),
03768 ilUtil::stripSlashes($_POST["body_".$lang_key]));
03769 }
03770 $this->ctrl->redirect($this, "newAccountMail");
03771 }
03772
03773 function getAdminTabs(&$tabs_gui)
03774 {
03775 $this->getTabs($tabs_gui);
03776 }
03777
03783 function getTabs(&$tabs_gui)
03784 {
03785 include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
03786
03787 global $rbacsystem;
03788
03789 if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
03790 {
03791 $tabs_gui->addTarget("obj_usrf",
03792 $this->ctrl->getLinkTarget($this, "view"), array("view","delete","resetFilter", "userAction", ""), "", "");
03793 }
03794
03795 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
03796 {
03797 $tabs_gui->addTarget("global_settings",
03798 $this->ctrl->getLinkTarget($this, "settings"), array("settings", "saveGlobalUserSettings"), "", "");
03799
03800 $tabs_gui->addTarget("export",
03801 $this->ctrl->getLinkTarget($this, "export"), "export", "", "");
03802
03803 if((ilObjUserTracking::_enabledLearningProgress() or
03804 ilObjUserTracking::_enabledTracking())
03805 and ilObjUserTracking::_enabledUserRelatedData())
03806 {
03807 $tabs_gui->addTarget("learning_progress",
03808 $this->ctrl->getLinkTarget($this, "learningProgress"), "learningProgress", "", "");
03809 }
03810 }
03811
03812 if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
03813 {
03814 $tabs_gui->addTarget("perm_settings",
03815 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
03816 array("perm","info","owner"), 'ilpermissiongui');
03817 }
03818 }
03819
03820
03824 function setSubTabs($a_tab)
03825 {
03826 global $rbacsystem,$ilUser;
03827
03828 switch($a_tab)
03829 {
03830 case "settings":
03831 $this->tabs_gui->addSubTabTarget("standard_fields",
03832 $this->ctrl->getLinkTarget($this,'settings'),
03833 array("settings", "saveGlobalUserSettings"), get_class($this));
03834 $this->tabs_gui->addSubTabTarget("user_defined_fields",
03835 $this->ctrl->getLinkTarget($this,'listUserDefinedFields'),
03836 "listUserDefinedFields",get_class($this));
03837 $this->tabs_gui->addSubTabTarget("user_new_account_mail",
03838 $this->ctrl->getLinkTarget($this,'newAccountMail'),
03839 "newAccountMail",get_class($this));
03840 break;
03841 }
03842 }
03843
03844
03845
03846
03847
03848 }
03849 ?>