• 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                 if (AUTH_CURRENT != AUTH_LOCAL)
00210                 {
00211                         $this->showActions(false);
00212                 }
00213                 else
00214                 {
00215                         $this->showActions(true);
00216                 }
00217                 
00218                 // footer
00219                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00220                 #$tbl->disable("footer");
00221 
00222                 // render table
00223                 $tbl->render();
00224                 
00225                 if (is_array($this->data["data"][0]))
00226                 {
00227                         //table cell
00228                         for ($i=0; $i < count($this->data["data"]); $i++)
00229                         {
00230                                 $data = $this->data["data"][$i];
00231                                 $ctrl = $this->data["ctrl"][$i];
00232 
00233                                 // color changing
00234                                 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
00235 
00236                                 $this->tpl->setCurrentBlock("checkbox");
00237                                 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
00238                                 //$this->tpl->setVariable("CHECKED", $checked);
00239                                 $this->tpl->setVariable("CSS_ROW", $css_row);
00240                                 $this->tpl->parseCurrentBlock();
00241 
00242                                 $this->tpl->setCurrentBlock("table_cell");
00243                                 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
00244                                 $this->tpl->parseCurrentBlock();
00245 
00246                                 foreach ($data as $key => $val)
00247                                 {
00248                                         //build link
00249                                         $link = "adm_object.php?ref_id=7&obj_id=".$ctrl["obj_id"];
00250 
00251                                         if ($key == "login")
00252                                         {
00253                                                 $this->tpl->setCurrentBlock("begin_link");
00254                                                 $this->tpl->setVariable("LINK_TARGET", $link);
00255                                                 $this->tpl->parseCurrentBlock();
00256                                                 $this->tpl->touchBlock("end_link");
00257                                         }
00258 
00259                                         $this->tpl->setCurrentBlock("text");
00260                                         $this->tpl->setVariable("TEXT_CONTENT", $val);
00261                                         $this->tpl->parseCurrentBlock();
00262                                         $this->tpl->setCurrentBlock("table_cell");
00263                                         $this->tpl->parseCurrentBlock();
00264                                 } //foreach
00265 
00266                                 $this->tpl->setCurrentBlock("tbl_content");
00267                                 $this->tpl->setVariable("CSS_ROW", $css_row);
00268                                 $this->tpl->parseCurrentBlock();
00269                         } //for
00270                 }
00271 
00272 
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                         $this->tpl->setCurrentBlock("tbl_action_row");
00325                         $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));
00326                         $this->tpl->parseCurrentBlock();
00327                 }
00328         }
00329 
00336         function showPossibleSubObjects()
00337         {
00338                 global $rbacsystem;
00339 
00340                 $d = $this->objDefinition->getCreatableSubObjects($this->object->getType());
00341                 
00342                 if (!$rbacsystem->checkAccess('create_user',$this->object->getRefId()))
00343                 {
00344                         unset($d["usr"]);                       
00345                 }
00346 
00347                 if (count($d) > 0)
00348                 {
00349                         foreach ($d as $row)
00350                         {
00351                             $count = 0;
00352                                 if ($row["max"] > 0)
00353                                 {
00354                                         //how many elements are present?
00355                                         for ($i=0; $i<count($this->data["ctrl"]); $i++)
00356                                         {
00357                                                 if ($this->data["ctrl"][$i]["type"] == $row["name"])
00358                                                 {
00359                                                     $count++;
00360                                                 }
00361                                         }
00362                                 }
00363                                 if ($row["max"] == "" || $count < $row["max"])
00364                                 {
00365                                         $subobj[] = $row["name"];
00366                                 }
00367                         }
00368                 }
00369 
00370                 if (is_array($subobj))
00371                 {
00372                         //build form
00373                         $opts = ilUtil::formSelect(12,"new_type",$subobj);
00374                         $this->tpl->setCurrentBlock("add_object");
00375                         $this->tpl->setVariable("SELECT_OBJTYPE", $opts);
00376                         $this->tpl->setVariable("BTN_NAME", "create");
00377                         $this->tpl->setVariable("TXT_ADD", $this->lng->txt("add"));
00378                         $this->tpl->parseCurrentBlock();
00379                         
00380                         return true;
00381                 }
00382 
00383                 return false;
00384         }
00385 
00391         function confirmedDeleteObject()
00392         {
00393                 global $rbacsystem;
00394 
00395                 // FOR NON_REF_OBJECTS WE CHECK ACCESS ONLY OF PARENT OBJECT ONCE
00396                 if (!$rbacsystem->checkAccess('delete',$this->object->getRefId()))
00397                 {
00398                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_delete"),$this->ilias->error_obj->WARNING);
00399                 }
00400 
00401                 if (in_array($_SESSION["AccountId"],$_SESSION["saved_post"]))
00402                 {
00403                         $this->ilias->raiseError($this->lng->txt("msg_no_delete_yourself"),$this->ilias->error_obj->WARNING);
00404                 }
00405 
00406                 // FOR ALL SELECTED OBJECTS
00407                 foreach ($_SESSION["saved_post"] as $id)
00408                 {
00409                         // instatiate correct object class (usr)
00410                         $obj =& $this->ilias->obj_factory->getInstanceByObjId($id);
00411                         $obj->delete();
00412                 }
00413 
00414                 // Feedback
00415                 sendInfo($this->lng->txt("user_deleted"),true);
00416 
00417                 ilUtil::redirect("adm_object.php?ref_id=".$_GET["ref_id"]);
00418         }
00419 
00423         function deleteObject()
00424         {
00425                 if(!isset($_POST["id"]))
00426                 {
00427                         $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
00428                 }
00429                 // SAVE POST VALUES
00430                 $_SESSION["saved_post"] = $_POST["id"];
00431 
00432                 unset($this->data);
00433                 $this->data["cols"] = array("type", "title", "description", "last_change");
00434 
00435                 foreach($_POST["id"] as $id)
00436                 {
00437                         $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
00438 
00439                         $this->data["data"]["$id"] = array(
00440                                 "type"        => $obj_data->getType(),
00441                                 "title"       => $obj_data->getTitle(),
00442                                 "desc"        => $obj_data->getDescription(),
00443                                 "last_update" => $obj_data->getLastUpdateDate());
00444                 }
00445 
00446                 $this->data["buttons"] = array( "cancelDelete"  => $this->lng->txt("cancel"),
00447                                                                   "confirmedDelete"  => $this->lng->txt("confirm"));
00448 
00449                 $this->getTemplateFile("confirm");
00450 
00451                 sendInfo($this->lng->txt("info_delete_sure"));
00452 
00453                 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=gateway");
00454 
00455                 // BEGIN TABLE HEADER
00456                 foreach ($this->data["cols"] as $key)
00457                 {
00458                         $this->tpl->setCurrentBlock("table_header");
00459                         $this->tpl->setVariable("TEXT",$this->lng->txt($key));
00460                         $this->tpl->parseCurrentBlock();
00461                 }
00462                 // END TABLE HEADER
00463 
00464                 // BEGIN TABLE DATA
00465                 $counter = 0;
00466 
00467                 foreach($this->data["data"] as $key => $value)
00468                 {
00469                         // BEGIN TABLE CELL
00470                         foreach($value as $key => $cell_data)
00471                         {
00472                                 $this->tpl->setCurrentBlock("table_cell");
00473 
00474                                 // CREATE TEXT STRING
00475                                 if($key == "type")
00476                                 {
00477                                         $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
00478                                 }
00479                                 else
00480                                 {
00481                                         $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
00482                                 }
00483                                 $this->tpl->parseCurrentBlock();
00484                         }
00485 
00486                         $this->tpl->setCurrentBlock("table_row");
00487                         $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00488                         $this->tpl->parseCurrentBlock();
00489                         // END TABLE CELL
00490                 }
00491                 // END TABLE DATA
00492 
00493                 // BEGIN OPERATION_BTN
00494                 foreach($this->data["buttons"] as $name => $value)
00495                 {
00496                         $this->tpl->setCurrentBlock("operation_btn");
00497                         $this->tpl->setVariable("BTN_NAME",$name);
00498                         $this->tpl->setVariable("BTN_VALUE",$value);
00499                         $this->tpl->parseCurrentBlock();
00500                 }
00501         }
00502         
00508         function searchUserFormObject ()
00509         {
00510                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_search_form.html");
00511 
00512                 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$this->ref_id."&cmd=gateway");
00513                 $this->tpl->setVariable("USERNAME_CHECKED", " checked=\"checked\"");
00514                 $this->tpl->setVariable("FIRSTNAME_CHECKED", " checked=\"checked\"");
00515                 $this->tpl->setVariable("LASTNAME_CHECKED", " checked=\"checked\"");
00516                 $this->tpl->setVariable("EMAIL_CHECKED", " checked=\"checked\"");
00517                 $this->tpl->setVariable("ACTIVE_CHECKED", " checked=\"checked\"");
00518                 $this->tpl->setVariable("INACTIVE_CHECKED", " checked=\"checked\"");
00519                 $this->tpl->setVariable("TXT_SEARCH_USER",$this->lng->txt("search_user"));
00520                 $this->tpl->setVariable("TXT_SEARCH_IN",$this->lng->txt("search_in"));
00521                 $this->tpl->setVariable("TXT_SEARCH_USERNAME",$this->lng->txt("username"));
00522                 $this->tpl->setVariable("TXT_SEARCH_FIRSTNAME",$this->lng->txt("firstname"));
00523                 $this->tpl->setVariable("TXT_SEARCH_LASTNAME",$this->lng->txt("lastname"));
00524                 $this->tpl->setVariable("TXT_SEARCH_EMAIL",$this->lng->txt("email"));
00525         $this->tpl->setVariable("TXT_SEARCH_ACTIVE",$this->lng->txt("search_active"));
00526         $this->tpl->setVariable("TXT_SEARCH_INACTIVE",$this->lng->txt("search_inactive"));
00527                 $this->tpl->setVariable("BUTTON_SEARCH",$this->lng->txt("search"));
00528                 $this->tpl->setVariable("BUTTON_CANCEL",$this->lng->txt("cancel"));
00529         $this->tpl->setVariable("TXT_SEARCH_NOTE",$this->lng->txt("search_note"));
00530         }
00531 
00532         function searchCancelledObject()
00533         {
00534                 sendInfo($this->lng->txt("action_aborted"),true);
00535 
00536                 header("Location: adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=gateway");
00537                 exit();
00538         }
00539 
00540         function searchUserObject()
00541         {
00542                 global $rbacreview;
00543 
00544                 $obj_str = "&obj_id=".$this->obj_id;
00545         
00546                 $_POST["search_string"] = $_POST["search_string"] ? $_POST["search_string"] : urldecode($_GET["search_string"]);
00547         $_POST["search_fields"] = $_POST["search_fields"] ? $_POST["search_fields"] : urldecode($_GET["search_fields"]);
00548 
00549         if (empty($_POST["search_string"]))
00550         {
00551             $_POST["search_string"] = "%";
00552         }
00553 
00554                 if (count($search_result = ilObjUser::searchUsers($_POST["search_string"])) == 0)
00555                 {
00556                         sendInfo($this->lng->txt("msg_no_search_result")." ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'",true);
00557 
00558                         header("Location: adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=searchUserForm");
00559                         exit();         
00560                 }
00561                 //add template for buttons
00562                 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00563                 
00564                 // display button
00565                 $this->tpl->setCurrentBlock("btn_cell");
00566                 $this->tpl->setVariable("BTN_LINK","adm_object.php?ref_id=".$this->ref_id."&cmd=searchUserForm");
00567                 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("search_new"));
00568                 $this->tpl->parseCurrentBlock();
00569 
00570         $this->data["cols"] = array("", "login", "firstname", "lastname", "email", "active");
00571 
00572         if (in_array("active", $_POST["search_fields"]))
00573         {
00574             $searchActive = true;
00575         }
00576         if (in_array("inactive", $_POST["search_fields"]))
00577         {
00578             $searchInactive = true;
00579         }
00580 
00581                 foreach ($search_result as $key => $val)
00582                 {
00583             $val["active_text"] = $this->lng->txt("inactive");
00584             if ($val["active"])
00585             {
00586                 $val["active_text"] = $this->lng->txt("active");
00587             }
00588 
00589                                                 // check if the fields are set
00590                                                 $searchStringToLower = strtolower($_POST["search_string"]);
00591                                                 $displaySearchResult = false;
00592                                                 if (in_array("username", $_POST["search_fields"]))
00593                                                         if (strpos(strtolower($val["login"]), strtolower($_POST["search_string"])) !== false)
00594                                                                 $displaySearchResult = true;
00595                                                 if (in_array("firstname", $_POST["search_fields"]))
00596                                                         if (strpos(strtolower($val["firstname"]), strtolower($_POST["search_string"])) !== false)
00597                                                                 $displaySearchResult = true;
00598                                                 if (in_array("lastname", $_POST["search_fields"]))
00599                                                         if (strpos(strtolower($val["lastname"]), strtolower($_POST["search_string"])) !== false)
00600                                                                 $displaySearchResult = true;
00601                                                 if (in_array("email", $_POST["search_fields"]))
00602                                                         if (strpos(strtolower($val["email"]), strtolower($_POST["search_string"])) !== false)
00603                                                                 $displaySearchResult = true;
00604                                                 if (($val["active"] == 1) && ($searchActive == true) ||
00605                     ($val["active"] == 0) && ($searchInactive == true))
00606             {
00607                                                                 if ((strcmp($_POST["search_string"], "%") == 0) || $displaySearchResult)
00608                                                                 {
00609                                                                         //visible data part
00610                                                                         $this->data["data"][] = array(
00611                                                                                                         "login"         => $val["login"],
00612                                                                                                         "firstname"     => $val["firstname"],
00613                                                                                                         "lastname"      => $val["lastname"],
00614                                                                                                         "email"         => $val["email"],
00615                                                                                                         "active"        => $val["active_text"],
00616                                                                                                         "obj_id"        => $val["usr_id"]
00617                                                                                                         );
00618                                                                 }
00619             }
00620                 }
00621                 if (count($this->data["data"]) == 0)
00622                 {
00623                         sendInfo($this->lng->txt("msg_no_search_result")." ".$this->lng->txt("with")." '".htmlspecialchars($_POST["search_string"])."'",true);
00624 
00625                         header("Location: adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=searchUserForm");
00626                         exit();         
00627                 }
00628                 
00629                 $this->maxcount = count($this->data["data"]);
00630 
00631                 // TODO: correct this in objectGUI
00632                 if ($_GET["sort_by"] == "name")
00633                 {
00634                         $_GET["sort_by"] = "login";
00635                 }
00636 
00637                 // sorting array
00638                 $this->data["data"] = ilUtil::sortArray($this->data["data"],$_GET["sort_by"],$_GET["sort_order"]);
00639                 $this->data["data"] = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00640 
00641                 // now compute control information
00642                 foreach ($this->data["data"] as $key => $val)
00643                 {
00644                         $this->data["ctrl"][$key] = array(
00645                                                                                                 "ref_id"        => $this->id,
00646                                                                                                 "obj_id"        => $val["obj_id"]
00647                                                                                         );
00648                         $tmp[] = $val["obj_id"];
00649                         unset($this->data["data"][$key]["obj_id"]);
00650                 }
00651 
00652                 // remember filtered users
00653                 $_SESSION["user_list"] = $tmp;          
00654         
00655                 // load template for table
00656                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
00657                 // load template for table content data
00658                 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
00659 
00660                 $num = 0;
00661 
00662                 $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"]);
00663 
00664                 // create table
00665                 include_once "./classes/class.ilTableGUI.php";
00666                 $tbl = new ilTableGUI();
00667 
00668                 // title & header columns
00669                 $tbl->setTitle($this->lng->txt("search_result"),"icon_".$this->object->getType()."_b.gif",$this->lng->txt("obj_".$this->object->getType()));
00670                 $tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
00671                 
00672                 foreach ($this->data["cols"] as $val)
00673                 {
00674                         $header_names[] = $this->lng->txt($val);
00675                 }
00676                 
00677                 $tbl->setHeaderNames($header_names);
00678 
00679                 $header_params = array(
00680                                                         "ref_id"                => $this->ref_id,
00681                                                         "cmd"                   => "searchUser",
00682                                                         "search_string" => urlencode($_POST["search_string"])
00683                                                         );
00684 
00685                 $tbl->setHeaderVars($this->data["cols"],$header_params);
00686                 $tbl->setColumnWidth(array("","25%","25$%","25%","25%"));
00687 
00688                 // control
00689         $tbl->enable("hits");
00690                 $tbl->setOrderColumn($_GET["sort_by"]);
00691                 $tbl->setOrderDirection($_GET["sort_order"]);
00692                 $tbl->setLimit($_GET["limit"]);
00693                 $tbl->setOffset($_GET["offset"]);
00694                 $tbl->setMaxCount($this->maxcount);
00695 
00696                 $this->tpl->setVariable("COLUMN_COUNTS",count($this->data["cols"]));    
00697 
00698                 $this->showActions(true);
00699                 
00700                 // footer
00701                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00702 
00703                 // render table
00704                 $tbl->render();
00705 
00706                 if (is_array($this->data["data"][0]))
00707                 {
00708                         //table cell
00709                         for ($i=0; $i < count($this->data["data"]); $i++)
00710                         {
00711                                 $data = $this->data["data"][$i];
00712                                 $ctrl = $this->data["ctrl"][$i];
00713 
00714                                 // color changing
00715                                 $css_row = ilUtil::switchColor($i+1,"tblrow1","tblrow2");
00716 
00717                                 $this->tpl->setCurrentBlock("checkbox");
00718                                 $this->tpl->setVariable("CHECKBOX_ID", $ctrl["obj_id"]);
00719                                 //$this->tpl->setVariable("CHECKED", $checked);
00720                                 $this->tpl->setVariable("CSS_ROW", $css_row);
00721                                 $this->tpl->parseCurrentBlock();
00722 
00723                                 $this->tpl->setCurrentBlock("table_cell");
00724                                 $this->tpl->setVariable("CELLSTYLE", "tblrow1");
00725                                 $this->tpl->parseCurrentBlock();
00726 
00727                                 foreach ($data as $key => $val)
00728                                 {
00729                                         //build link
00730                                         $link = "adm_object.php?ref_id=7&obj_id=".$ctrl["obj_id"];
00731 
00732                                         if ($key == "login")
00733                                         {
00734                                                 $this->tpl->setCurrentBlock("begin_link");
00735                                                 $this->tpl->setVariable("LINK_TARGET", $link);
00736                                                 $this->tpl->parseCurrentBlock();
00737                                                 $this->tpl->touchBlock("end_link");
00738                                         }
00739 
00740                                         $this->tpl->setCurrentBlock("text");
00741                                         $this->tpl->setVariable("TEXT_CONTENT", $val);
00742                                         $this->tpl->parseCurrentBlock();
00743                                         $this->tpl->setCurrentBlock("table_cell");
00744                                         $this->tpl->parseCurrentBlock();
00745                                 } //foreach
00746 
00747                                 $this->tpl->setCurrentBlock("tbl_content");
00748                                 $this->tpl->setVariable("CSS_ROW", $css_row);
00749                                 $this->tpl->parseCurrentBlock();
00750                         } //for
00751                 }
00752         }
00753 
00757         function importUserFormObject ()
00758         {
00759                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_form.html");
00760 
00761                 //$this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$this->ref_id."&cmd=gateway");
00762                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormaction($this));
00763 
00764                 $this->tpl->setVariable("TXT_IMPORT_USERS", $this->lng->txt("import_users"));
00765                 $this->tpl->setVariable("TXT_IMPORT_FILE", $this->lng->txt("import_file"));
00766                 $this->tpl->setVariable("TXT_IMPORT_ROOT_USER", $this->lng->txt("import_root_user"));
00767 
00768                 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("import"));
00769                 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
00770         }
00771 
00772 
00778         function importCancelledObject()
00779         {
00780 
00781                 sendInfo($this->lng->txt("msg_cancel"),true);
00782 
00783                 if($this->ctrl->getTargetScript() == 'adm_object.php')
00784                 {
00785                         $return_location = $_GET["cmd_return_location"];
00786                         ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00787                 }
00788                 else
00789                 {
00790                         $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
00791                 }
00792         }
00793 
00797         function getImportDir()
00798         {
00799                 return ilUtil::getDataDir()."/user_import";
00800         }
00801 
00805         function importUserRoleAssignmentObject ()
00806         {
00807                 include_once './classes/class.ilObjRole.php';
00808 
00809                 global $rbacreview;
00810                 
00811 
00812                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.usr_import_roles.html");
00813 
00814                 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00815                 #$this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$this->ref_id."&cmd=gateway");
00816                 $this->tpl->setVariable("TXT_ROLES_IMPORT", $this->lng->txt("roles_of_import_global"));
00817                 $this->tpl->setVariable("TXT_ROLES", $this->lng->txt("assign_global_role"));
00818                 $this->tpl->setVariable("TXT_ROLE_ASSIGNMENT", $this->lng->txt("role_assignment"));
00819                 $this->tpl->setVariable("BTN_IMPORT", $this->lng->txt("import"));
00820                 $this->tpl->setVariable("BTN_CANCEL", $this->lng->txt("cancel"));
00821 
00822                 $import_dir = $this->getImportDir();
00823 
00824                 // create user import directory if necessary
00825                 if (!@is_dir($import_dir))
00826                 {
00827                         ilUtil::createDirectory($import_dir);
00828                 }
00829 
00830                 // move uploaded file to user import directory
00831                 $file_name = $_FILES["importFile"]["name"];
00832                 $parts = pathinfo($file_name);
00833                 $full_path = $import_dir."/".$file_name;
00834 
00835                 // check zip file               
00836                 if (!is_file($_FILES["importFile"]["tmp_name"]) ||
00837                         strtolower($parts["extension"]) != "zip")
00838                 {
00839                         $this->ilias->raiseError($this->lng->txt("no_zip_file"),$this->ilias->error_obj->MESSAGE);
00840                 }
00841                 
00842                 ilUtil::moveUploadedFile($_FILES["importFile"]["tmp_name"],
00843                         $_FILES["importFile"]["name"], $full_path);
00844                 
00845                 // unzip file
00846                 ilUtil::unzip($full_path);
00847 
00848                 $subdir = basename($parts["basename"],".".$parts["extension"]);
00849                 $xml_file = $import_dir."/".$subdir."/".$subdir.".xml";
00850                 
00851                 // check xml file               
00852                 if (!is_file($xml_file))
00853                 {
00854                         $this->ilias->raiseError($this->lng->txt("no_xml_file_found_in_zip")
00855                                 ." ".$subdir."/".$subdir.".xml", $this->ilias->error_obj->MESSAGE);
00856                 }
00857 
00858                 $this->tpl->setVariable("XML_FILE_NAME", $xml_file);
00859 
00860                 require_once("classes/class.ilUserImportParser.php");
00861                 $importParser = new ilUserImportParser($xml_file, IL_EXTRACT_ROLES);
00862                 $importParser->startParsing();
00863                 $roles = $importParser->getCollectedRoles();
00864 
00865                 // get global roles
00866                 $all_gl_roles = $rbacreview->getRoleListByObject(ROLE_FOLDER_ID);
00867                 $gl_roles = array();
00868                 foreach ($all_gl_roles as $obj_data)
00869                 {
00870                         // check assignmetn permission if called from lokal admin
00871                         if($this->object->getRefId() != USER_FOLDER_ID and !in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]))
00872                         {
00873                                 if(!ilObjRole::_getAssignUsersStatus($obj_data['obj_id']))
00874                                 {
00875                                         continue;
00876                                 }
00877                         }
00878                         // exclude anonymous role from list
00879                         if ($obj_data["obj_id"] != ANONYMOUS_ROLE_ID)
00880                         {
00881                                 // do not allow to assign users to administrator role if current user does not has SYSTEM_ROLE_ID
00882                                 if ($obj_data["obj_id"] != SYSTEM_ROLE_ID or in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]))
00883                                 {
00884                                         $gl_roles[$obj_data["obj_id"]] = $obj_data["title"];
00885                                 }
00886                         }
00887                 }
00888 
00889                 // global roles
00890                 foreach($roles as $role_id => $role)
00891                 {
00892                         if ($role["type"] == "Local")
00893                         {
00894                                 continue;
00895                         }
00896 
00897                         // pre selection for "known" roles
00898                         switch($role["name"])
00899                         {
00900                                 case "Administrator":   // ILIAS 2/3 Administrator
00901                                         $pre_select = array_search("Administrator", $gl_roles);
00902                                         break;
00903 
00904                                 case "Autor":                   // ILIAS 2 Author
00905                                         $pre_select = array_search("User", $gl_roles);
00906                                         break;
00907 
00908                                 case "Lerner":                  // ILIAS 2 Learner
00909                                         $pre_select = array_search("User", $gl_roles);
00910                                         break;
00911 
00912                                 case "Gast":                    // ILIAS 2 Guest
00913                                         $pre_select = array_search("Guest", $gl_roles);
00914                                         break;
00915 
00916                                 default:
00917                                         $pre_select = array_search("User", $gl_roles);
00918                                         break;
00919                         }
00920                         $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $gl_roles, false, true);
00921                         $this->tpl->setCurrentBlock("role");
00922                         $this->tpl->setVariable("TXT_IMPORT_ROLE", $role["name"]." [".$role_id."]");
00923                         $this->tpl->setVariable("SELECT_ROLE", $role_select);
00924                         $this->tpl->parseCurrentBlock();
00925                 }
00926                 $this->tpl->setCurrentBlock("role_section");
00927                 $this->tpl->parseCurrentBlock();
00928 
00929 
00930                 // get local roles
00931                 $loc_roles = $rbacreview->getAssignableRoles();
00932                 $l_roles = array();
00933                 foreach ($loc_roles as $key => $loc_role)
00934                 {
00935                         if (substr($loc_role["title"],0,3) != "il_")
00936                         {
00937                                 // fetch context path of role
00938                                 $rolf = $rbacreview->getFoldersAssignedToRole($loc_role["obj_id"],true);
00939 
00940                                 // only list roles that are not set to status "deleted"
00941                                 if (!$rbacreview->isDeleted($rolf[0]))
00942                                 {
00943                                         $path = "";
00944                                         if ($this->tree->isInTree($rolf[0]))
00945                                         {
00946                                                 $tmpPath = $this->tree->getPathFull($rolf[0]);
00947                                                 // count -1, to exclude the role folder itself
00948                                                 for ($i = 1; $i < (count($tmpPath)-1); $i++)
00949                                                 {
00950                                                         if ($path != "")
00951                                                         {
00952                                                                 $path .= " > ";
00953                                                         }
00954 
00955                                                         $path .= $tmpPath[$i]["title"];
00956                                                 }
00957                                         }
00958                                         else
00959                                         {
00960                                                 $path = "<b>Rolefolder ".$rolf[0]." not found in tree! (Role ".$loc_role["obj_id"].")</b>";
00961                                         }
00962                                         /*
00963                                         $l_roles[] = array(
00964                                                                 "type"                  => $loc_role["type"],
00965                                                                 "role"                  => $loc_role["title"]."#separator#".$loc_role["desc"],
00966                                                                 "role_type"             => $loc_role["role_type"],
00967                                                                 "context"               => $path,
00968                                                                 "obj_id"                => $loc_role["obj_id"]
00969                                                         );*/
00970                                         if ($loc_role["role_type"] != "global")
00971                                         {
00972                                                 $l_roles[$loc_role["obj_id"]] = $loc_role["title"];
00973                                         }
00974                                 }
00975                         } // if substr
00976                 } //foreach role
00977 
00978                 // local roles
00979                 $got_locals = false;
00980                 foreach($roles as $role_id => $role)
00981                 {
00982                         if ($role["type"] == "Global")
00983                         {
00984                                 continue;
00985                         }
00986                         $got_locals = true;
00987 
00988                         $role_select = ilUtil::formSelect($pre_select, "role_assign[".$role_id."]", $l_roles, false, true);
00989                         $this->tpl->setCurrentBlock("role");
00990                         $this->tpl->setVariable("TXT_IMPORT_ROLE", $role["name"]." [".$role_id."]");
00991                         $this->tpl->setVariable("SELECT_ROLE", $role_select);
00992                         $this->tpl->parseCurrentBlock();
00993                 }
00994                 if ($got_locals)
00995                 {
00996                         $this->tpl->setCurrentBlock("role_section");
00997                         $this->tpl->setVariable("TXT_ROLES_IMPORT", $this->lng->txt("roles_of_import_local"));
00998                         $this->tpl->setVariable("TXT_ROLES", $this->lng->txt("assign_local_role"));
00999                         $this->tpl->parseCurrentBlock();
01000                 }
01001         }
01002 
01006         function importUsersObject()
01007         {
01008                 require_once("classes/class.ilUserImportParser.php");
01009                 $importParser = new ilUserImportParser($_POST["xml_file"]);
01010                 $importParser->setFolderId($this->object->getRefId());
01011                 $importParser->setRoleAssignment($_POST["role_assign"]);
01012                 $importParser->startParsing();
01013 
01014                 sendInfo($this->lng->txt("user_imported"), true);
01015 
01016                 if($this->ctrl->getTargetScript() == 'adm_object.php')
01017                 {
01018                         ilUtil::redirect($this->ctrl->getLinkTarget($this));
01019                 }
01020                 else
01021                 {
01022                         $this->ctrl->redirectByClass('ilobjcategorygui','listUsers');
01023                 }
01024         }
01025 
01026 
01027         function appliedUsersObject()
01028         {
01029                 global $rbacsystem,$ilias;
01030 
01031                 unset($_SESSION['applied_users']);
01032 
01033                 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
01034                 {
01035                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
01036                 }
01037                 
01038                 if(!count($app_users =& $ilias->account->getAppliedUsers()))
01039                 {
01040                         sendInfo($this->lng->txt('no_users_applied'));
01041 
01042                         return false;
01043                 }
01044 
01045                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_applied_users.html");
01046                 $this->lng->loadLanguageModule('crs');
01047                 
01048                 $counter = 0;
01049                 foreach($app_users as $usr_id)
01050                 {
01051                         $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01052 
01053                         $f_result[$counter][]   = ilUtil::formCheckbox(0,"users[]",$usr_id);
01054                         $f_result[$counter][]   = $tmp_user->getLogin();
01055                         $f_result[$counter][]   = $tmp_user->getFirstname();
01056                         $f_result[$counter][]   = $tmp_user->getLastname();
01057                         
01058                         if($tmp_user->getTimeLimitUnlimited())
01059                         {
01060                                 $f_result[$counter][]   = "<b>".$this->lng->txt('crs_unlimited')."</b>";
01061                         }
01062                         else
01063                         {
01064                                 $limit = "<b>".$this->lng->txt('crs_from').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitFrom()).'<br />';
01065                                 $limit .= "<b>".$this->lng->txt('crs_to').'</b> '.strftime("%Y-%m-%d %R",$tmp_user->getTimeLimitUntil());
01066 
01067                                 $f_result[$counter][]   = $limit;
01068                         }
01069                         ++$counter;
01070                 }
01071 
01072                 $this->__showAppliedUsersTable($f_result);
01073 
01074                 return true;
01075         }
01076 
01077         function editAppliedUsersObject()
01078         {
01079                 global $rbacsystem;
01080 
01081                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01082                 {
01083                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01084                 }
01085 
01086                 $this->lng->loadLanguageModule('crs');
01087 
01088                 $_POST['users'] = $_SESSION['applied_users'] = ($_SESSION['applied_users'] ? $_SESSION['applied_users'] : $_POST['users']);
01089 
01090                 if(!isset($_SESSION['error_post_vars']))
01091                 {
01092                         sendInfo($this->lng->txt('time_limit_add_time_limit_for_selected'));
01093                 }
01094 
01095                 if(!count($_POST["users"]))
01096                 {
01097                         sendInfo($this->lng->txt("time_limit_no_users_selected"));
01098                         $this->appliedUsersObject();
01099 
01100                         return false;
01101                 }
01102                 
01103                 $counter = 0;
01104                 foreach($_POST['users'] as $usr_id)
01105                 {
01106                         if($counter)
01107                         {
01108                                 $title .= ', ';
01109                         }
01110                         $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01111                         $title .= $tmp_user->getLogin();
01112                         ++$counter;
01113                 }
01114                 if(strlen($title) > 79)
01115                 {
01116                         $title = substr($title,0,80);
01117                         $title .= '...';
01118                 }
01119 
01120 
01121                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_edit_applied_users.html");
01122                 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01123 
01124                 // LOAD SAVED DATA IN CASE OF ERROR
01125                 $time_limit_unlimited = $_SESSION["error_post_vars"]["au"]["time_limit_unlimited"] ? 
01126                         1 : 0;
01127 
01128                 $time_limit_start = $_SESSION["error_post_vars"]["au"]["time_limit_start"] ? 
01129                         $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_start"]) :
01130                         time();
01131                 $time_limit_end = $_SESSION["error_post_vars"]["au"]["time_limit_end"] ? 
01132                         $this->__toUnix($_SESSION["error_post_vars"]["au"]["time_limit_end"]) :
01133                         time();
01134 
01135                 
01136                 // SET TEXT VARIABLES
01137                 $this->tpl->setVariable("ALT_IMG",$this->lng->txt("obj_usr"));
01138                 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath("icon_usr_b.gif"));
01139                 $this->tpl->setVariable("TITLE",$title);
01140                 $this->tpl->setVariable("TXT_TIME_LIMIT",$this->lng->txt("time_limit"));
01141                 $this->tpl->setVariable("TXT_TIME_LIMIT_START",$this->lng->txt("crs_start"));
01142                 $this->tpl->setVariable("TXT_TIME_LIMIT_END",$this->lng->txt("crs_end"));
01143                 $this->tpl->setVariable("CMD_SUBMIT","updateAppliedUsers");
01144                 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
01145                 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("submit"));
01146                 
01147 
01148 
01149                 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_DAY",$this->__getDateSelect("day","au[time_limit_start][day]",
01150                                                                                                                                                                          date("d",$time_limit_start)));
01151                 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MONTH",$this->__getDateSelect("month","au[time_limit_start][month]",
01152                                                                                                                                                                            date("m",$time_limit_start)));
01153                 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_YEAR",$this->__getDateSelect("year","au[time_limit_start][year]",
01154                                                                                                                                                                           date("Y",$time_limit_start)));
01155                 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_HOUR",$this->__getDateSelect("hour","au[time_limit_start][hour]",
01156                                                                                                                                                                           date("G",$time_limit_start)));
01157                 $this->tpl->setVariable("SELECT_TIME_LIMIT_START_MINUTE",$this->__getDateSelect("minute","au[time_limit_start][minute]",
01158                                                                                                                                                                           date("i",$time_limit_start)));
01159                 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_DAY",$this->__getDateSelect("day","au[time_limit_end][day]",
01160                                                                                                                                                                    date("d",$time_limit_end)));
01161                 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MONTH",$this->__getDateSelect("month","au[time_limit_end][month]",
01162                                                                                                                                                                          date("m",$time_limit_end)));
01163                 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_YEAR",$this->__getDateSelect("year","au[time_limit_end][year]",
01164                                                                                                                                                                         date("Y",$time_limit_end)));
01165                 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_HOUR",$this->__getDateSelect("hour","au[time_limit_end][hour]",
01166                                                                                                                                                                           date("G",$time_limit_end)));
01167                 $this->tpl->setVariable("SELECT_TIME_LIMIT_END_MINUTE",$this->__getDateSelect("minute","au[time_limit_end][minute]",
01168                                                                                                                                                                           date("i",$time_limit_end)));
01169                 if($this->ilias->account->getTimeLimitUnlimited())
01170                 {
01171                         $this->tpl->setVariable("ROWSPAN",3);
01172                         $this->tpl->setCurrentBlock("unlimited");
01173                         $this->tpl->setVariable("TXT_TIME_LIMIT_UNLIMITED",$this->lng->txt("crs_unlimited"));
01174                         $this->tpl->setVariable("TIME_LIMIT_UNLIMITED",ilUtil::formCheckbox($time_limit_unlimited,"au[time_limit_unlimited]",1));
01175                         $this->tpl->parseCurrentBlock();
01176                 }
01177                 else
01178                 {
01179                         $this->tpl->setVariable("ROWSPAN",2);
01180                 }
01181         }
01182 
01183         function updateAppliedUsersObject()
01184         {
01185                 global $rbacsystem;
01186 
01187                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01188                 {
01189                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01190                 }
01191 
01192                 $start  = $this->__toUnix($_POST['au']['time_limit_start']);
01193                 $end    = $this->__toUnix($_POST['au']['time_limit_end']);
01194 
01195                 if(!$_POST['au']['time_limit_unlimited'])
01196                 {
01197                         if($start > $end)
01198                         {
01199                                 $_SESSION['error_post_vars'] = $_POST;
01200                                 sendInfo($this->lng->txt('time_limit_not_valid'));
01201                                 $this->editAppliedUsersObject();
01202 
01203                                 return false;
01204                         }
01205                 }
01206                 #if(!$this->ilias->account->getTimeLimitUnlimited())
01207                 #{
01208                 #       if($start < $this->ilias->account->getTimeLimitFrom() or
01209                 #          $end > $this->ilias->account->getTimeLimitUntil())
01210                 #       {
01211                 #               $_SESSION['error_post_vars'] = $_POST;
01212                 #               sendInfo($this->lng->txt('time_limit_not_within_owners'));
01213                 #               $this->editAppliedUsersObject();
01214 
01215                 #               return false;
01216                 #       }
01217                 #}
01218 
01219                 foreach($_SESSION['applied_users'] as $usr_id)
01220                 {
01221                         $tmp_user =& ilObjectFactory::getInstanceByObjId($usr_id);
01222 
01223                         $tmp_user->setTimeLimitUnlimited((int) $_POST['au']['time_limit_unlimited']);
01224                         $tmp_user->setTimeLimitFrom($start);
01225                         $tmp_user->setTimeLimitUntil($end);
01226                         $tmp_user->setTimeLimitMessage(0);
01227                         $tmp_user->update();
01228 
01229                         unset($tmp_user);
01230                 }
01231 
01232                 unset($_SESSION['applied_users']);
01233                 sendInfo($this->lng->txt('time_limit_users_updated'));
01234                 $this->appliedUsersObject();
01235                 
01236                 return true;
01237         }
01238 
01239         function __showAppliedUsersTable($a_result_set)
01240         {
01241                 $tbl =& $this->__initTableGUI();
01242                 $tpl =& $tbl->getTemplateObject();
01243 
01244                 // SET FORMAACTION
01245                 $tpl->setCurrentBlock("tbl_form_header");
01246 
01247                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01248                 $tpl->parseCurrentBlock();
01249 
01250                 $tpl->setCurrentBlock("tbl_action_btn");
01251                 $tpl->setVariable("BTN_NAME",'editAppliedUsers');
01252                 $tpl->setVariable("BTN_VALUE",$this->lng->txt('edit'));
01253                 $tpl->parseCurrentBlock();
01254 
01255                 $tpl->setCurrentBlock("tbl_action_row");
01256                 $tpl->setVariable("COLUMN_COUNTS",5);
01257                 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01258                 $tpl->parseCurrentBlock();
01259 
01260 
01261 
01262                 $tbl->setTitle($this->lng->txt("time_limit_applied_users"),"icon_usr_b.gif",$this->lng->txt("users"));
01263                 $tbl->setHeaderNames(array('',
01264                                                                    $this->lng->txt("login"),
01265                                                                    $this->lng->txt("firstname"),
01266                                                                    $this->lng->txt("lastname"),
01267                                                                    $this->lng->txt("time_limits")));
01268                 $tbl->setHeaderVars(array("",
01269                                                                   "login",
01270                                                                   "firstname",
01271                                                                   "lastname",
01272                                                                   "time_limit"),
01273                                                         array("ref_id" => $this->object->getRefId(),
01274                                                                   "cmd" => "appliedUsers"));
01275                 $tbl->setColumnWidth(array("3%","19%","19%","19%","40%"));
01276 
01277 
01278                 $this->__setTableGUIBasicData($tbl,$a_result_set);
01279                 $tbl->render();
01280 
01281                 $this->tpl->setVariable("APPLIED_USERS",$tbl->tpl->get());
01282 
01283                 return true;
01284         }
01285 
01286         function &__initTableGUI()
01287         {
01288                 include_once "./classes/class.ilTableGUI.php";
01289 
01290                 return new ilTableGUI(0,false);
01291         }
01292         function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
01293         {
01294                 $offset = $_GET["offset"];
01295                 $order = $_GET["sort_by"];
01296                 $direction = $_GET["sort_order"];
01297 
01298         //$tbl->enable("hits");
01299                 $tbl->setOrderColumn($order);
01300                 $tbl->setOrderDirection($direction);
01301                 $tbl->setOffset($offset);
01302                 $tbl->setLimit($_GET["limit"]);
01303                 $tbl->setMaxCount(count($result_set));
01304                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01305                 $tbl->setData($result_set);
01306         }
01307         function __getDateSelect($a_type,$a_varname,$a_selected)
01308     {
01309         switch($a_type)
01310         {
01311             case "minute":
01312                 for($i=0;$i<=60;$i++)
01313                 {
01314                     $days[$i] = $i < 10 ? "0".$i : $i;
01315                 }
01316                 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01317 
01318             case "hour":
01319                 for($i=0;$i<24;$i++)
01320                 {
01321                     $days[$i] = $i < 10 ? "0".$i : $i;
01322                 }
01323                 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01324 
01325             case "day":
01326                 for($i=1;$i<32;$i++)
01327                 {
01328                     $days[$i] = $i < 10 ? "0".$i : $i;
01329                 }
01330                 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
01331 
01332             case "month":
01333                 for($i=1;$i<13;$i++)
01334                 {
01335                     $month[$i] = $i < 10 ? "0".$i : $i;
01336                 }
01337                 return ilUtil::formSelect($a_selected,$a_varname,$month,false,true);
01338 
01339             case "year":
01340                 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
01341                 {
01342                     $year[$i] = $i;
01343                 }
01344                 return ilUtil::formSelect($a_selected,$a_varname,$year,false,true);
01345         }
01346     }
01347         function __toUnix($a_time_arr)
01348     {
01349         return mktime($a_time_arr["hour"],
01350                       $a_time_arr["minute"],
01351                       $a_time_arr["second"],
01352                       $a_time_arr["month"],
01353                       $a_time_arr["day"],
01354                       $a_time_arr["year"]);
01355     }
01356 
01357         function hitsperpageObject()
01358         {
01359         parent::hitsperpageObject();
01360         $this->viewObject();
01361         }
01362 
01368         function settingsObject()
01369         {
01370                 global $ilias;
01371                 
01372                 $this->getTemplateFile("settings","usr");
01373 
01374                 $profile_fields = array(
01375                         "gender",
01376                         "password",
01377                         "firstname",
01378                         "lastname",
01379                         "title",
01380                         "upload",
01381                         "institution",
01382                         "department",
01383                         "street",
01384                         "city",
01385                         "zipcode",
01386                         "country",
01387                         "phone_office",
01388                         "phone_home",
01389                         "phone_mobile",
01390                         "fax",
01391                         "email",
01392                         "hobby",
01393                         "matriculation",
01394                         "referral_comment",
01395                         "language",
01396                         "skin_style"
01397                 );
01398                 foreach ($profile_fields as $field)
01399                 {
01400                         $this->tpl->setCurrentBlock("profile_settings");
01401                         $this->tpl->setVariable("TXT_PROFILE_DATA", $this->lng->txt($field));
01402                         $this->tpl->setVariable("PROFILE_OPTION_DISABLE", "disable_" . $field);
01403                         $this->tpl->setVariable("PROFILE_OPTION_HIDE", "hide_" . $field);
01404                         if ($ilias->getSetting("usr_settings_disable_" . $field) == 1)
01405                         {
01406                                 $this->tpl->setVariable("CHECKED_DISABLE", " checked=\"checked\"");
01407                         }
01408                         if ($ilias->getSetting("usr_settings_hide_" . $field) == 1)
01409                         {
01410                                 $this->tpl->setVariable("CHECKED_HIDE", " checked=\"checked\"");
01411                         }
01412                         $this->tpl->parseCurrentBlock();
01413                 }
01414                 $this->tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=gateway");
01415                 $this->tpl->setVariable("TXT_HEADER_PROFILE", $this->lng->txt("usr_settings_header_profile"));
01416                 $this->tpl->setVariable("TXT_EXPLANATION_PROFILE", $this->lng->txt("usr_settings_explanation_profile"));
01417                 $this->tpl->setVariable("HEADER_PROFILE_DATA", $this->lng->txt("usr_settings_header_profile_profile"));
01418                 $this->tpl->setVariable("HEADER_DISABLE", $this->lng->txt("disable"));
01419                 $this->tpl->setVariable("HEADER_HIDE", $this->lng->txt("hide"));
01420                 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
01421         }
01422         
01423         function saveGlobalUserSettingsObject()
01424         {
01425                 global $ilias;
01426                 
01427                 $profile_fields = array(
01428                         "gender",
01429                         "password",
01430                         "firstname",
01431                         "lastname",
01432                         "title",
01433                         "upload",
01434                         "institution",
01435                         "department",
01436                         "street",
01437                         "city",
01438                         "zipcode",
01439                         "country",
01440                         "phone_office",
01441                         "phone_home",
01442                         "phone_mobile",
01443                         "fax",
01444                         "email",
01445                         "hobby",
01446                         "matriculation",
01447                         "referral_comment",
01448                         "language",
01449                         "skin_style"
01450                 );
01451                 foreach ($profile_fields as $field)
01452                 {
01453                         $ilias->deleteSetting("usr_settings_disable_" . $field);
01454                         $ilias->deleteSetting("usr_settings_hide_" . $field);
01455                         if ($_POST["chb"]["hide_" . $field])
01456                         {
01457                                 $ilias->setSetting("usr_settings_hide_" . $field, "1");
01458                         }
01459                         if ($_POST["chb"]["disable_" . $field])
01460                         {
01461                                 $ilias->setSetting("usr_settings_disable_" . $field, "1");
01462                         }
01463                 }
01464                 sendInfo($this->lng->txt("usr_settings_saved"));
01465                 $this->settingsObject();
01466         }
01467 } // END class.ilObjUserFolderGUI
01468 ?>

Generated on Fri Dec 13 2013 08:00:15 for ILIAS Release_3_3_x_branch .rev 46803 by  doxygen 1.7.1