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

Generated on Fri Dec 13 2013 09:06:34 for ILIAS Release_3_4_x_branch .rev 46804 by  doxygen 1.7.1