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

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

Generated on Fri Dec 13 2013 13:52:08 for ILIAS Release_3_7_x_branch .rev 46817 by  doxygen 1.7.1