• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

Services/User/classes/class.ilObjUserFolderGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2006 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
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                 // TODO: move this to class.ilias.php
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                 // add/fill worksheet
00121                 $this->_addLearningProgressWorksheet($pewa);
00122 
00123                 // HEADER SENT
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                 // SHOW HEADER
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                 // Excel export
00201                 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00202 
00203                 // display button
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                 //prepare objectlist
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                 // sort and slice array
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                 // Show Table
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                 // create table
00249                 $tbl = new ilTableGUI();
00250 
00251                 // title & header columns
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                 // control
00268         //$tbl->enable("hits");
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                 // footer
00276                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00277 
00278                 // render table
00279                 $tbl->render();
00280                 
00281                 //table cell
00282                 $counter = 0;
00283                 foreach($data['data'] as $usr_id => $fields)
00284                 {
00285                         // color changing
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                                 //build link
00293                                         
00294                                 // dirty workaround to have ids for function showActions (checkbox toggle option)
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                         } //foreach
00315                         
00316                         $this->tpl->setCurrentBlock("tbl_content");
00317                         $this->tpl->setVariable("CSS_ROW", $css_row);
00318                         $this->tpl->parseCurrentBlock();
00319                 } //for
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                 // keep offset/sorting
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                 //prepare objectlist
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                 // fetch current time outside loop
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                         // determine txt_access
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                         //visible data part
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                 // TODO: correct this in objectGUI
00488                 if ($_GET["sort_by"] == "name")
00489                 {
00490                         $_GET["sort_by"] = "login";
00491                 }
00492                 
00493                 //var_dump("<pre>",$this->data["data"],"</pre>");
00494                 // sorting array
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                 //var_dump("<pre>",$this->data["data"],"</pre>");
00498                 // now compute control information
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                 //add template for buttons
00510                 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00511 
00512                 // search user new functionality
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                 // last search result
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         } //function
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                 // load template for table
00610                 $this->tpl->addBlockfile("USR_TABLE", "user_table", "tpl.table.html");
00611                 // load template for table content data
00612                 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
00613 
00614                 $num = 0;
00615 
00616                 //$obj_str = ($this->call_by_reference) ? "" : "&obj_id=".$this->obj_id;
00617                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00618 
00619                 // create table
00620                 $tbl = new ilTableGUI();
00621 
00622                 // title & header columns
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                 // control
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                 // footer
00648                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00649                 
00650                 // render table
00651                 $tbl->render();
00652                 
00653                 if (is_array($this->data["data"][0]))
00654                 {
00655                         //table cell
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                                 // color changing
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                                         //build link
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                                         // dirty workaround to have ids for function showActions (checkbox toggle option)
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                                 } //foreach
00723 
00724                                 $this->tpl->setCurrentBlock("tbl_content");
00725                                 $this->tpl->setVariable("CSS_ROW", $css_row);
00726                                 $this->tpl->parseCurrentBlock();
00727                         } //for
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                                         //how many elements are present?
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                         //build form
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                 // FOR NON_REF_OBJECTS WE CHECK ACCESS ONLY OF PARENT OBJECT ONCE
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                 // FOR ALL SELECTED OBJECTS
00888                 foreach ($_SESSION["saved_post"] as $id)
00889                 {
00890                         // instatiate correct object class (usr)
00891                         $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00892                         $obj->setActive(TRUE, $ilUser->getId());
00893                         $obj->update();
00894                 }
00895 
00896                 // Feedback
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                 // FOR NON_REF_OBJECTS WE CHECK ACCESS ONLY OF PARENT OBJECT ONCE
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                 // FOR ALL SELECTED OBJECTS
00939                 foreach ($_SESSION["saved_post"] as $id)
00940                 {
00941                         // instatiate correct object class (usr)
00942                         $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00943                         $obj->setActive(FALSE, $ilUser->getId());
00944                         $obj->update();
00945                 }
00946 
00947                 // Feedback
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                 // FOR NON_REF_OBJECTS WE CHECK ACCESS ONLY OF PARENT OBJECT ONCE
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                 // FOR ALL SELECTED OBJECTS
00980                 foreach ($_SESSION["saved_post"] as $id)
00981                 {
00982                         // instatiate correct object class (usr)
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                 // Feedback
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                 // FOR NON_REF_OBJECTS WE CHECK ACCESS ONLY OF PARENT OBJECT ONCE
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                 // FOR ALL SELECTED OBJECTS
01064                 foreach ($_SESSION["saved_post"] as $id)
01065                 {
01066                         // instatiate correct object class (usr)
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                 // Feedback
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                 // FOR NON_REF_OBJECTS WE CHECK ACCESS ONLY OF PARENT OBJECT ONCE
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                 // FOR ALL SELECTED OBJECTS
01124                 foreach ($_SESSION["saved_post"] as $id)
01125                 {
01126                         // instatiate correct object class (usr)
01127                         $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
01128                         $obj->delete();
01129                 }
01130 
01131                 // Feedback
01132                 ilUtil::sendInfo($this->lng->txt("user_deleted"),true);
01133                 
01134                 // now unset the delete users in session
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                 // SAVE POST VALUES
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                 // BEGIN TABLE HEADER
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                 // END TABLE HEADER
01216 
01217                 // BEGIN TABLE DATA
01218                 $counter = 0;
01219 
01220                 foreach($this->data["data"] as $key => $value)
01221                 {
01222                         // BEGIN TABLE CELL
01223                         foreach($value as $key => $cell_data)
01224                         {
01225                                 $this->tpl->setCurrentBlock("table_cell");
01226 
01227                                 // CREATE TEXT STRING
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                         // END TABLE CELL
01243                 }
01244                 // END TABLE DATA
01245 
01246                 // BEGIN OPERATION_BTN
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                 // SAVE POST VALUES
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                 // BEGIN TABLE HEADER
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                 // END TABLE HEADER
01323 
01324                 // BEGIN TABLE DATA
01325                 $counter = 0;
01326 
01327                 foreach($this->data["data"] as $key => $value)
01328                 {
01329                         // BEGIN TABLE CELL
01330                         foreach($value as $key => $cell_data)
01331                         {
01332                                 $this->tpl->setCurrentBlock("table_cell");
01333 
01334                                 // CREATE TEXT STRING
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                         // END TABLE CELL
01350                 }
01351                 // END TABLE DATA
01352 
01353                 // BEGIN OPERATION_BTN
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         // presumably deprecated
01375         // functionality moved to search/classes/iladminusersearch
01376         // dont't if this method is used elsewhere too  - saschahofmann@gmx.de 6.6.07
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         // presumably deprecated
01405         // functionality moved to search/classes/iladminusersearch
01406         // dont't if this method is used elsewhere too  - saschahofmann@gmx.de 6.6.07
01407         function searchCancelledObject()
01408         {
01409                 ilUtil::sendInfo($this->lng->txt("action_aborted"),true);
01410 
01411                 $this->ctrl->redirect($this, "view");
01412         }
01413 
01414         // presumably deprecated
01415         // functionality moved to search/classes/iladminusersearch
01416         // dont't if this method is used elsewhere too  - saschahofmann@gmx.de 6.6.07
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         //$_POST["search_fields"] = $_POST["search_fields"] ? $_POST["search_fields"] : explode(",",urldecode($_GET["search_fields"]));
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                 //add template for buttons
01453                 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
01454                 
01455                 // display button
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                         // check if the fields are set
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                                         //visible data part
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                 // TODO: correct this in objectGUI
01523                 if ($_GET["sort_by"] == "name")
01524                 {
01525                         $_GET["sort_by"] = "login";
01526                 }
01527 
01528                 // sorting array
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                 // now compute control information
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                 // remember filtered users
01544                 $_SESSION["user_list"] = $tmp;          
01545         
01546                 // load template for table
01547                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
01548                 // load template for table content data
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                 // create table
01560                 include_once "./Services/Table/classes/class.ilTableGUI.php";
01561                 $tbl = new ilTableGUI();
01562 
01563                 // title & header columns
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                 // control
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                 // footer
01592                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01593 
01594                 // render table
01595                 $tbl->render();
01596 
01597                 if (is_array($this->data["data"][0]))
01598                 {
01599                         //table cell
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                                 // dirty workaround to have ids for function showActions (checkbox toggle option)
01606                                 $this->ids[] = $ctrl["obj_id"];
01607                                         
01608                                 // color changing
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                                 //$this->tpl->setVariable("CHECKED", $checked);
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                                         //build link
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                                 } //foreach
01642 
01643                                 $this->tpl->setCurrentBlock("tbl_content");
01644                                 $this->tpl->setVariable("CSS_ROW", $css_row);
01645                                 $this->tpl->parseCurrentBlock();
01646                         } //for
01647                         
01648                         $this->showActions(true);
01649                 }
01650         }
01651 
01655         function importUserFormObject ()
01656         {
01657                 // Blind out tabs for local user import
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                 // purge user import directory
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                         //ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
01697                 }
01698                 else
01699                 {
01700                         $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
01701                 }
01702         }
01703 
01707         function getImportDir()
01708         {
01709                 // For each user session a different directory must be used to prevent
01710                 // that one user session overwrites the import data that another session
01711                 // is currently importing.
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                 // Blind out tabs for local user import
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                 // recreate user import directory
01742                 if (@is_dir($import_dir))
01743                 {
01744                         ilUtil::delDir($import_dir);
01745                 }
01746                 ilUtil::makeDir($import_dir);
01747 
01748                 // move uploaded file to user import directory
01749                 $file_name = $_FILES["importFile"]["name"];
01750                 $parts = pathinfo($file_name);
01751                 $full_path = $import_dir."/".$file_name;
01752 
01753                 // check if import file exists
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                 // handle zip file              
01764                 if (strtolower($parts["extension"]) == "zip")
01765                 {
01766                         // unzip file
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                 // handle xml file
01786                 else
01787                 {
01788                         $xml_file = $full_path;
01789                 }
01790 
01791                 // check xml file               
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                 // Verify the data
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                 // Create the role selection form
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                 // Extract the roles
01836                 $importParser = new ilUserImportParser($xml_file, IL_EXTRACT_ROLES);
01837                 $importParser->startParsing();
01838                 $roles = $importParser->getCollectedRoles();
01839 
01840                 // get global roles
01841                 $all_gl_roles = $rbacreview->getRoleListByObject(ROLE_FOLDER_ID);
01842                 $gl_roles = array();
01843                 foreach ($all_gl_roles as $obj_data)
01844                 {
01845                         // check assignment permission if called from local admin
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                         // exclude anonymous role from list
01854                         if ($obj_data["obj_id"] != ANONYMOUS_ROLE_ID)
01855                         {
01856                                 // do not allow to assign users to administrator role if current user does not has SYSTEM_ROLE_ID
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                 // global roles
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                                 // pre selection for role
01880                                 $pre_select = array_search($role[name], $gl_roles);
01881                                 if (! $pre_select)
01882                                 {
01883                                         switch($role["name"])
01884                                         {
01885                                                 case "Administrator":   // ILIAS 2/3 Administrator
01886                                                         $pre_select = array_search("Administrator", $gl_roles);
01887                                                         break;
01888 
01889                                                 case "Autor":                   // ILIAS 2 Author
01890                                                         $pre_select = array_search("User", $gl_roles);
01891                                                         break;
01892 
01893                                                 case "Lerner":                  // ILIAS 2 Learner
01894                                                         $pre_select = array_search("User", $gl_roles);
01895                                                         break;
01896 
01897                                                 case "Gast":                    // ILIAS 2 Guest
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                 // Check if local roles need to be assigned
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                         // get local roles
01933                         // A local role is only displayed, if it is contained in the subtree of 
01934                         // the localy administrated category. If the import function has been 
01935                         // invoked from the user folder object, we show all local roles, because
01936                         // the user folder object is considered the parent of all local roles.
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                         // create a search array with  .
01946                         $l_roles_mailbox_searcharray = array();
01947                         foreach ($loc_roles as $key => $loc_role)
01948                         {
01949                                 // fetch context path of role
01950                                 $rolf = $rbacreview->getFoldersAssignedToRole($loc_role["obj_id"],true);
01951 
01952                                 // only process role folders that are not set to status "deleted" 
01953                                 // and for which the user has write permissions.
01954                                 // We also don't show the roles which are in the ROLE_FOLDER_ID folder.
01955                                 // (The ROLE_FOLDER_ID folder contains the global roles).
01956                                 if (!$rbacreview->isDeleted($rolf[0])
01957                                 && $rbacsystem->checkAccess('write',$tree->getParentId($rolf[0]))
01958                                 && $rolf[0] != ROLE_FOLDER_ID
01959                                 )
01960                                 {
01961                                         // A local role is only displayed, if it is contained in the subtree of 
01962                                         // the localy administrated category. If the import function has been 
01963                                         // invoked from the user folder object, we show all local roles, because
01964                                         // the user folder object is considered the parent of all local roles.
01965                                         // Thus, if we start from the user folder object, we initialize the
01966                                         // isInSubtree variable with true. In all other cases it is initialized 
01967                                         // with false, and only set to true if we find the object id of the
01968                                         // locally administrated category in the tree path to the local role.
01969                                         $isInSubtree = $this->object->getRefId() == USER_FOLDER_ID;
01970                                         
01971                                         $path = "";
01972                                         if ($this->tree->isInTree($rolf[0]))
01973                                         {
01974                                                 // Create path. Paths which have more than 4 segments
01975                                                 // are truncated in the middle.
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                         } //foreach role
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                                                 // There are too many roles in a large ILIAS installation
02018                                                 // that's why whe show only a choice with the the option "ignore",
02019                                                 // and the matching roles.
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                 // new account mail
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                 // Blind out tabs for local user import
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                 // Catch hack attempts
02097                 // We check here again, if the role folders are in the tree, and if the
02098                 // user has permission on the roles.
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                 // purge user import directory
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                         //ilUtil::redirect($this->ctrl->getLinkTarget($this));
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                 // LOAD SAVED DATA IN CASE OF ERROR
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                 // SET TEXT VARIABLES
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                 // SET FORMAACTION
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         //$tbl->enable("hits");
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         // Functions for user defined fields
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                         // Show edit link (depends on type)
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                 // Save paremeter
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                 // Save paremeter
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                 //$this->tpl->setVariable("TXT_WARNING",$this->lng->txt('udf_warn_delete'));
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                 // OLD VALUES
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                 // new values
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                 // check if a course export state of any user defined field has been added
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                 // Reset user confirmation
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                 // number of values defaults to 3
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                 // Save field_type
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                 // Save field_type
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                 // Text fields
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                 // For the following fields, the required state can not be changed.
03115                 // key = field, value = 1 (field is required), 0 (field is not required)
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                 // Settings for the course export state
03134                 // key = field, value = 2 (field is disabled but checked), value = 1 (field is changeable), 0 (checkbox is not shown)
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                         // Headers which are always displayed in a row
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                         // Check searchable
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                         // BEGIN Enable field in Personal Profile
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                         // END Enable field in Personal Profile
03186                         // BEGIN Show field in Personal Profile
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                         // END Show field in Personal Profile
03193                         if (!in_array($field, $no_export_fields))
03194                         {
03195                                 $this->tpl->setVariable("PROFILE_OPTION_EXPORT", "export_" . $field);
03196                                 // BEGIN Export field of Personal Profile
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                                 // END Export field of Personal Profile
03203                         }
03204                         // BEGIN Require field in Personal Profile
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                         // END Require field in Personal Profile
03217                         
03218                         // BEGIN Course Export field in Personal Profile
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                         // END Course Export field in Personal Profile                  
03242 
03243                         // BEGIN Default value for hits per pages field in Personal Profile
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                         // END Default value for language field in Personal Profile
03266 
03267                         // BEGIN Show Users Online
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                         // END Show Users Online
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                 // For the following fields, the required state can not be changed
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                 // check if a course export state of any field has been added
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                 // Reset user confirmation
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                         // Enable disable searchable
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                 // SAVE POST VALUES
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                 // BEGIN TABLE HEADER
03487                 $this->tpl->setCurrentBlock("table_header");
03488                 $this->tpl->setVariable("TEXT",$this->lng->txt("objects"));
03489                 $this->tpl->parseCurrentBlock();
03490 
03491                 // BEGIN TABLE DATA
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                 // cancel/confirm button
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                 // create table
03573                 include_once("./Services/Table/classes/class.ilTableGUI.php");
03574                 $tbl = new ilTableGUI();
03575 
03576                 // load files templates
03577                 $this->tpl->addBlockfile("EXPORT_FILES", "export_files", "tpl.table.html");
03578 
03579                 // load template for table content data
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                 // control
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                 // delete button
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                 // footer
03616                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
03617                 //$tbl->disable("footer");
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                 } //if is_array
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                 // placeholder help text
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         function showUpperIcon()
03845         {
03846                 var_dump($this->ctrl->getCmd());
03847         }*/
03848 } // END class.ilObjUserFolderGUI
03849 ?>

Generated on Fri Dec 13 2013 17:57:02 for ILIAS Release_3_9_x_branch .rev 46835 by  doxygen 1.7.1