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

classes/class.ilObjGroupGUI.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 
00038 include_once "class.ilContainerGUI.php";
00039 include_once "class.ilRegisterGUI.php";
00040 
00041 class ilObjGroupGUI extends ilContainerGUI
00042 {
00047         function ilObjGroupGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = false)
00048         {
00049                 $this->type = "grp";
00050                 $this->ilContainerGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00051                 
00052                 $this->lng->loadLanguageModule('grp');
00053         }
00054 
00055         function viewObject()
00056         {
00057                 global $tree;
00058 
00059                 if (strtolower($_GET["baseClass"]) == "iladministrationgui")
00060                 {
00061                         parent::viewObject();
00062                         return true;
00063                 }
00064                 else if(!$tree->checkForParentType($this->ref_id,'crs'))
00065                 {
00066                         $this->renderObject();
00067                         //$this->ctrl->returnToParent($this);
00068                 }
00069                 else
00070                 {
00071                         $this->initCourseContentInterface();
00072                         $this->cci_obj->cci_setContainer($this);
00073                         $this->cci_obj->cci_view();
00074                 }
00075 
00076                 $this->tabs_gui->setTabActive('view_content');
00077                 return true;
00078         }
00079 
00080 
00081         function &executeCommand()
00082         {
00083                 global $rbacsystem,$ilAccess;
00084 
00085                 $next_class = $this->ctrl->getNextClass($this);
00086                 $cmd = $this->ctrl->getCmd();
00087                 $this->prepareOutput();
00088 
00089                 switch($next_class)
00090                 {
00091                         case "ilconditionhandlerinterface":
00092                                 include_once './classes/class.ilConditionHandlerInterface.php';
00093 
00094                                 if($_GET['item_id'])
00095                                 {
00096                                         $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
00097                                         $this->__setSubTabs('activation');
00098                                         $this->tabs_gui->setTabActive('view_content');
00099 
00100                                         $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
00101                                         $this->ctrl->forwardCommand($new_gui);
00102                                 }
00103                                 else
00104                                 {
00105                                         $new_gui =& new ilConditionHandlerInterface($this);
00106                                         $this->ctrl->forwardCommand($new_gui);
00107                                 }
00108                                 break;
00109 
00110                         case "ilregistergui":
00111                                 $this->ctrl->setReturn($this, "");   // ###
00112                                 $reg_gui = new ilRegisterGUI();
00113                                 $ret =& $this->ctrl->forwardCommand($reg_gui);
00114                                 break;
00115 
00116                         case 'ilpermissiongui':
00117                                 include_once("./classes/class.ilPermissionGUI.php");
00118                                 $perm_gui =& new ilPermissionGUI($this);
00119                                 $ret =& $this->ctrl->forwardCommand($perm_gui);
00120                                 break;
00121 
00122                         default:
00123                                 if (!$this->getCreationMode() and !$ilAccess->checkAccess('visible','',$this->object->getRefId(),'grp'))
00124                                 {
00125                                         $ilErr->raiseError($this->lng->txt("msg_no_perm_read"),$ilErr->MESSAGE);
00126                                 }
00127                                 
00128                                 if (!$this->getCreationMode()
00129                                         && !$rbacsystem->checkAccess('read',$this->object->getRefId())
00130                                         || $cmd == 'join')
00131                                 {
00132                                         $this->ctrl->redirectByClass("ilRegisterGUI", "showRegistrationForm");
00133                                 }
00134                                 
00135                                 if(!$cmd)
00136                                 {
00137                                         $cmd = 'view';
00138                                 }
00139                                 $cmd .= 'Object';
00140                                 $this->$cmd();
00141                                 break;
00142                 }
00143         }
00144 
00145         function listExportFilesObject()
00146         {
00147                 global $rbacsystem;
00148 
00149                 $this->lng->loadLanguageModule('content');
00150 
00151                 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
00152                 {
00153                         $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00154                 }
00155 
00156                 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00157                 $this->__exportMenu();
00158 
00159                 $this->object->__initFileObject();
00160                 $export_files = $this->object->file_obj->getExportFiles();
00161                 
00162                 require_once("classes/class.ilTableGUI.php");
00163                 $tbl = new ilTableGUI();
00164 
00165                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
00166                 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.grp_export_file_row.html");
00167 
00168                 $num = 0;
00169 
00170                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00171 
00172                 $tbl->setTitle($this->lng->txt("cont_export_files"));
00173                 $tbl->setHeaderNames(array("", $this->lng->txt("type"),
00174                         $this->lng->txt("cont_file"),
00175                         $this->lng->txt("cont_size"), $this->lng->txt("date") ));
00176 
00177                 $cols = array("", "type", "file", "size", "date");
00178                 $header_params = array("ref_id" => $_GET["ref_id"],
00179                                                            "cmd" => "listExportFiles", "cmdClass" => strtolower(get_class($this)));
00180                 $tbl->setHeaderVars($cols, $header_params);
00181                 $tbl->setColumnWidth(array("1%", "9%", "40%", "25%", "25%"));
00182                 
00183                 // control
00184                 $tbl->setOrderColumn($_GET["sort_by"]);
00185                 $tbl->setOrderDirection($_GET["sort_order"]);
00186                 $tbl->setLimit($_GET["limit"]);
00187                 $tbl->setOffset($_GET["offset"]);
00188                 $tbl->setMaxCount($this->maxcount);             // ???
00189                 $tbl->disable("sort");
00190 
00191                 $this->tpl->setVariable("COLUMN_COUNTS", 5);
00192 
00193                 // delete button
00194                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00195                 $this->tpl->setCurrentBlock("tbl_action_btn");
00196                 $this->tpl->setVariable("BTN_NAME", "confirmDeleteExportFile");
00197                 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("delete"));
00198                 $this->tpl->parseCurrentBlock();
00199 
00200                 $this->tpl->setCurrentBlock("tbl_action_btn");
00201                 $this->tpl->setVariable("BTN_NAME", "downloadExportFile");
00202                 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("download"));
00203                 $this->tpl->parseCurrentBlock();
00204 
00205                 // footer
00206                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00207 
00208                 $tbl->setMaxCount(count($export_files));
00209                 $export_files = array_slice($export_files, $_GET["offset"], $_GET["limit"]);
00210                 $tbl->render();
00211                 foreach($export_files as $exp_file)
00212                 {
00213                         $this->tpl->setCurrentBlock("tbl_content");
00214                         $this->tpl->setVariable("TXT_FILENAME", $exp_file["file"]);
00215                         
00216                         $css_row = ilUtil::switchColor($i++, "tblrow1", "tblrow2");
00217                         $this->tpl->setVariable("CSS_ROW", $css_row);
00218 
00219                         $this->tpl->setVariable("TXT_SIZE", $exp_file["size"]);
00220                         $this->tpl->setVariable("TXT_TYPE", $exp_file["type"]);
00221                         $this->tpl->setVariable("CHECKBOX_ID",$exp_file["file"]);
00222 
00223                         $file_arr = explode("__", $exp_file["file"]);
00224                         $this->tpl->setVariable("TXT_DATE", date("Y-m-d H:i:s",$file_arr[0]));
00225 
00226                         $this->tpl->parseCurrentBlock();
00227                 }
00228                 if(!count($export_files))
00229                 {
00230                         $tbl->disable('footer');
00231                         $this->tpl->setCurrentBlock("notfound");
00232                         $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
00233                         $this->tpl->setVariable("NUM_COLS", 4);
00234                         $this->tpl->parseCurrentBlock();
00235                 }
00236 
00237                 $this->tpl->parseCurrentBlock();
00238         }
00239 
00240         function __exportMenu()
00241         {
00242                 // create xml export file button
00243                 $this->tpl->setCurrentBlock("btn_cell");
00244                 $this->tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this, "exportXML"));
00245                 $this->tpl->setVariable("BTN_TXT", $this->lng->txt("cont_create_export_file_xml"));
00246                 $this->tpl->parseCurrentBlock();
00247         }
00248 
00249         function exportXMLObject()
00250         {
00251                 global $rbacsystem;
00252 
00253                 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
00254                 {
00255                         $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00256                 }
00257 
00258                 $this->object->exportXML();
00259                 
00260                 $this->listExportFilesObject();
00261 
00262                 return true;
00263         }
00264 
00265         function confirmDeleteExportFileObject()
00266         {
00267                 global $rbacsystem;
00268 
00269                 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
00270                 {
00271                         $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00272                 }
00273 
00274                 if(!count($_POST['file']))
00275                 {
00276                         sendInfo('grp_select_one_file');
00277                 }
00278                 else
00279                 {
00280                         $this->object->deleteExportFiles($_POST['file']);
00281                         sendInfo('grp_deleted_export_files');
00282                 }
00283 
00284                 $this->listExportFilesObject();
00285 
00286                 return true;
00287         }
00288 
00289         function downloadExportFileObject()
00290         {
00291                 if(!count($_POST['file']))
00292                 {
00293                         sendInfo('grp_select_one_file');
00294                         $this->listExportFilesObject();
00295                         return false;
00296                 }
00297                 if(count($_POST['file']) > 1)
00298                 {
00299                         sendInfo('grp_select_one_file_only');
00300                         $this->listExportFilesObject();
00301                         return false;
00302                 }
00303                 
00304                 $this->object->downloadExportFile($_POST['file'][0]);
00305                 
00306                 // If file wasn't sent
00307                 sendInfo('grp_error_sending_file');
00308                 
00309                 return true;
00310         }
00311                         
00312 
00316         function createObject()
00317         {
00318                 global $rbacsystem;
00319 
00320                 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
00321 
00322                 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], $new_type))
00323                 {
00324                         $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00325                 }
00326 
00327                 $data = array();
00328 
00329                 if ($_SESSION["error_post_vars"])
00330                 {
00331                         // fill in saved values in case of error
00332                         $data["fields"]["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00333                         $data["fields"]["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00334                         $data["fields"]["password"] = $_SESSION["error_post_vars"]["password"];
00335                         $data["fields"]["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];
00336                         $data["fields"]["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];
00337                 }
00338                 else
00339                 {
00340                         $data["fields"]["title"] = "";
00341                         $data["fields"]["desc"] = "";
00342                         $data["fields"]["password"] = "";
00343                         $data["fields"]["expirationdate"] = "";
00344                         $data["fields"]["expirationtime"] = "";
00345                 }
00346 
00347                 $this->getTemplateFile("edit",$new_type);
00348 
00349                 foreach ($data["fields"] as $key => $val)
00350                 {
00351                         $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00352                         $this->tpl->setVariable(strtoupper($key), $val);
00353 
00354                         if ($this->prepare_output)
00355                         {
00356                                 $this->tpl->parseCurrentBlock();
00357                         }
00358                 }
00359 
00360                 $stati  = array(0=>$this->lng->txt("group_status_public"),1=>$this->lng->txt("group_status_closed"));
00361 
00362                 $grp_status = $_SESSION["error_post_vars"]["group_status"];
00363 
00364                 $checked = array(0=>0,1=>0,2=>0);
00365 
00366                 switch ($_SESSION["error_post_vars"]["enable_registration"])
00367                 {
00368                         case 0:
00369                                 $checked[0]=1;
00370                                 break;
00371 
00372                         case 1:
00373                                 $checked[1]=1;
00374                                 break;
00375 
00376                         case 2:
00377                                 $checked[2]=1;
00378                                 break;
00379 
00380                         default:
00381                                 $checked[0]=1;
00382                                 break;
00383                 }
00384 
00385                 //build form
00386                 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00387                 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00388                 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00389 
00390                 $opts   = ilUtil::formSelect(1,"group_status",$stati,false,true);
00391 
00392                 $this->tpl->setVariable("FORMACTION", $this->getFormAction("save",$this->ctrl->getFormAction($this)."&new_type=".$new_type));
00393 
00394                 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($new_type."_new"));
00395                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00396                 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration"));
00397                 $this->tpl->setVariable("TXT_REGISTRATION_MODE", $this->lng->txt("group_registration_mode"));
00398                 $this->tpl->setVariable("TXT_REGISTRATION_TIME", $this->lng->txt("group_registration_time"));
00399 
00400                 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00401                 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($new_type."_add"));
00402                 $this->tpl->setVariable("CMD_SUBMIT", "save");
00403                 $this->tpl->setVariable("CMD_CANCEL", "cancel");
00404                 $this->tpl->setVariable("TARGET", $this->getTargetFrame("save"));
00405                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00406 
00407                 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("group_req_direct"));
00408                 $this->tpl->setVariable("TXT_REGISTRATION_UNLIMITED", $this->lng->txt("grp_registration_unlimited"));
00409                 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00410                 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("group_req_registration"));
00411                 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00412                 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("group_req_password"));
00413                 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00414 
00415                 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00416                 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));
00417                 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00418                 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00419 
00420                 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00421                 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00422                 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00423                 $this->tpl->setVariable("SELECT_GROUPSTATUS", $opts);
00424                 $this->tpl->setVariable("TXT_GROUP_STATUS", $this->lng->txt("group_status"));
00425                 $this->tpl->setVariable("TXT_GROUP_STATUS_DESC", $this->lng->txt("group_status_desc"));
00426 
00427                 // IMPORT
00428                 $this->tpl->setCurrentBlock("create");
00429                 $this->tpl->setVariable("TXT_IMPORT_GRP", $this->lng->txt("import_grp"));
00430                 $this->tpl->setVariable("TXT_GRP_FILE", $this->lng->txt("file"));
00431                 $this->tpl->setVariable("TXT_IMPORT", $this->lng->txt("import"));
00432 
00433                 // get the value for the maximal uploadable filesize from the php.ini (if available)
00434                 $umf=get_cfg_var("upload_max_filesize");
00435                 // get the value for the maximal post data from the php.ini (if available)
00436                 $pms=get_cfg_var("post_max_size");
00437 
00438                 // use the smaller one as limit
00439                 $max_filesize=min($umf, $pms);
00440                 if (!$max_filesize) 
00441                         $max_filesize=max($umf, $pms);
00442         
00443                 // gives out the limit as a littel notice :)
00444                 $this->tpl->setVariable("TXT_FILE_INFO", $this->lng->txt("file_notice").$max_filesize);
00445                 $this->tpl->parseCurrentBlock();
00446 
00447                 $this->tpl->setCurrentBlock("fileinfo");
00448                 $this->tpl->setVariable("TXT_FILE_INFO", $this->lng->txt("file_notice").$max_filesize);
00449                 $this->tpl->parseCurrentBlock();
00450         }
00451 
00452 
00457         function canceledObject()
00458         {
00459                 $return_location = $_GET["cmd_return_location"];
00460                 if (strcmp($return_location, "") == 0)
00461                 {
00462                         $return_location = "";
00463                 }
00464 
00465                 sendInfo($this->lng->txt("action_aborted"),true);
00466                 $this->ctrl->redirect($this, $return_location);
00467         }
00468 
00473         function cancelMemberObject()
00474         {
00475                 unset($_SESSION['grp_usr_search_result']);
00476                 $return_location = "members";
00477                 
00478                 sendInfo($this->lng->txt("action_aborted"),true);
00479                 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00480         }
00481         
00486         function saveObject()
00487         {
00488                 global $rbacadmin;
00489 
00490                 // check required fields
00491                 if (empty($_POST["Fobject"]["title"]))
00492                 {
00493                         $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00494                 }
00495 
00496                 // check registration & password
00497                 if ($_POST["enable_registration"] == 2 and empty($_POST["password"]))
00498                 {
00499                         $this->ilErr->raiseError($this->lng->txt("no_password"),$this->ilErr->MESSAGE);
00500                 }
00501 
00502                 // check groupname
00503                 if (ilUtil::groupNameExists($_POST["Fobject"]["title"]))
00504 
00505                 {
00506                         $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00507                 }
00508 
00509                 // create and insert group in objecttree
00510                 $groupObj = parent::saveObject();
00511                 
00512                 // setup rolefolder & default local roles (admin & member)
00513                 $roles = $groupObj->initDefaultRoles();
00514 
00515                 // ...finally assign groupadmin role to creator of group object
00516                 $groupObj->addMember($this->ilias->account->getId(),$groupObj->getDefaultAdminRole());
00517 
00518                 $groupObj->setRegistrationFlag($_POST["enable_registration"]);//0=no registration, 1=registration enabled 2=passwordregistration
00519                 $groupObj->setPassword($_POST["password"]);
00520                 $groupObj->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00521 
00522                 $this->ilias->account->addDesktopItem($groupObj->getRefId(),"grp");             
00523                 
00524                 // always send a message
00525                 sendInfo($this->lng->txt("grp_added"),true);
00526 
00527                 $this->redirectToRefId($_GET["ref_id"]);
00528         }
00529 
00534         function updateObject()
00535         {
00536                 global $rbacsystem;
00537                 
00538                 if (!$rbacsystem->checkAccess("write",$_GET["ref_id"]) )
00539                 {
00540                         $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00541                 }
00542 
00543                 // check required fields
00544                 if (empty($_POST["Fobject"]["title"]))
00545                 {
00546                         $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00547                 }
00548 
00549                 if ($_POST["enable_registration"] == 2 && empty($_POST["password"]) || empty($_POST["expirationdate"]) || empty($_POST["expirationtime"]) )//Password-Registration Mode
00550                 {
00551                         $this->ilErr->raiseError($this->lng->txt("grp_err_registration_data"),$this->ilErr->MESSAGE);
00552                 }
00553                 // check groupname
00554                 if (ilUtil::groupNameExists(ilUtil::stripSlashes($_POST["Fobject"]["title"]),$this->object->getId()))
00555                 {
00556                         $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00557                 }
00558 
00559                 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00560                 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00561 
00562                 if ($_POST["enable_registration"] == 2 && !ilUtil::isPassword($_POST["password"]))
00563                 {
00564                         $this->ilErr->raiseError($this->lng->txt("passwd_invalid"),$this->ilErr->MESSAGE);
00565                 }
00566 
00567                 $this->object->setRegistrationFlag($_POST["enable_registration"]);
00568                 $this->object->setPassword($_POST["password"]);
00569                 $this->object->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00570 
00571                 //save custom icons
00572                 if ($this->ilias->getSetting("custom_icons"))
00573                 {
00574                         $this->object->saveIcons($_FILES["cont_big_icon"],
00575                                 $_FILES["cont_small_icon"]);
00576                 }
00577 
00578                 $this->update = $this->object->update();
00579 
00580                 sendInfo($this->lng->txt("msg_obj_modified"),true);
00581                 ilUtil::redirect($this->getReturnLocation("update",$this->ctrl->getLinkTarget($this,"")));
00582         }
00583 
00588         function editObject()
00589         {
00590                 global $rbacsystem;
00591 
00592                 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00593                 {
00594                         $this->ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilErr->MESSAGE);
00595                 }
00596 
00597                 $data = array();
00598 
00599                 if ($_SESSION["error_post_vars"])
00600                 {
00601                         // fill in saved values in case of error
00602                         $data["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00603                         $data["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00604                         $data["registration"] = $_SESSION["error_post_vars"]["registration"];
00605                         $data["password"] = $_SESSION["error_post_vars"]["password"];
00606                         $data["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];//$datetime[0];//$this->grp_object->getExpirationDateTime()[0];
00607                         $data["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];//$datetime[1];//$this->grp_object->getExpirationDateTime()[1];
00608 
00609                 }
00610                 else
00611                 {
00612                         $data["title"] = ilUtil::prepareFormOutput($this->object->getTitle());
00613                         $data["desc"] = $this->object->getDescription();
00614                         $data["registration"] = $this->object->getRegistrationFlag();
00615                         $data["password"] = $this->object->getPassword();
00616                         $datetime = $this->object->getExpirationDateTime();
00617 
00618                         $data["expirationdate"] = $datetime[0];//$this->grp_object->getExpirationDateTime()[0];
00619                         $data["expirationtime"] =  substr($datetime[1],0,5);//$this->grp_object->getExpirationDateTime()[1];
00620 
00621                 }
00622 
00623                 $this->getTemplateFile("edit");
00624 
00625                 foreach ($data as $key => $val)
00626                 {
00627                         $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00628                         $this->tpl->setVariable(strtoupper($key), $val);
00629                         $this->tpl->parseCurrentBlock();
00630                 }
00631 
00632                 $checked = array(0=>0,1=>0,2=>0);
00633 
00634                 switch ($this->object->getRegistrationFlag())
00635                 {
00636                         case 0:
00637                                 $checked[0]=1;
00638                                 break;
00639 
00640                         case 1:
00641                                 $checked[1]=1;
00642                                 break;
00643 
00644                         case 2:
00645                                 $checked[2]=1;
00646                                 break;
00647                 }
00648 
00649                 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00650                 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00651                 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00652                 
00653                 $this->showCustomIconsEditing(2);
00654                 $this->tpl->setCurrentBlock("adm_content");
00655 
00656                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));//$this->getFormAction("update",$this->ctrl->getFormAction($this)));
00657                 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt("grp_edit"));
00658                 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00659                 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00660                 $this->tpl->setVariable("CMD_CANCEL", "canceled");
00661                 $this->tpl->setVariable("CMD_SUBMIT", "update");
00662 
00663                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00664                 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration"));
00665                 $this->tpl->setVariable("TXT_REGISTRATION_MODE", $this->lng->txt("group_registration_mode"));
00666                 $this->tpl->setVariable("TXT_REGISTRATION_TIME", $this->lng->txt("group_registration_time"));
00667 
00668                 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("group_req_direct"));
00669                 $this->tpl->setVariable("TXT_REGISTRATION_UNLIMITED", $this->lng->txt("grp_registration_unlimited"));
00670                 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00671                 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("group_req_registration"));
00672                 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00673                 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("group_req_password"));
00674                 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00675 
00676                 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00677                 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));           
00678                 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00679                 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00680 
00681                 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00682                 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00683                 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00684         }
00685 
00690         function confirmationObject($user_id="", $confirm, $cancel, $info="", $status="",$a_cmd_return_location = "")
00691         {
00692                 $this->data["cols"] = array("type", "title", "description", "last_change");
00693 
00694                 if (is_array($user_id))
00695                 {
00696                         foreach ($user_id as $id)
00697                         {
00698                                 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
00699 
00700                                 $this->data["data"]["$id"] = array(
00701                                         "type"        => $obj_data->getType(),
00702                                         "title"       => $obj_data->getTitle(),
00703                                         "desc"        => $obj_data->getDescription(),
00704                                         "last_update" => $obj_data->getLastUpdateDate(),
00705 
00706                                         );
00707                         }
00708                 }
00709                 else
00710                 {
00711                         $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($user_id);
00712 
00713                         $this->data["data"]["$id"] = array(
00714                                 "type"        => $obj_data->getType(),
00715                                 "title"       => $obj_data->getTitle(),
00716                                 "desc"        => $obj_data->getDescription(),
00717                                 "last_update" => $obj_data->getLastUpdateDate(),
00718                                 );
00719                 }
00720 
00721                 //write  in sessionvariables
00722                 if(is_array($user_id))
00723                 {
00724                         $_SESSION["saved_post"]["user_id"] = $user_id;
00725                 }
00726                 else
00727                 {
00728                         $_SESSION["saved_post"]["user_id"][0] = $user_id;
00729                 }
00730 
00731                 if (isset($status))
00732                 {
00733                         $_SESSION["saved_post"]["status"] = $status;
00734                 }
00735 
00736                 $this->data["buttons"] = array( $cancel  => $this->lng->txt("cancel"),
00737                                                 $confirm  => $this->lng->txt("confirm"));
00738 
00739                 $this->getTemplateFile("confirm");
00740 
00741                 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00742 
00743                 infoPanel();
00744 
00745                 sendInfo($this->lng->txt($info));
00746 
00747                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this)."&cmd_return_location=".$a_cmd_return_location);
00748 
00749                 // BEGIN TABLE HEADER
00750                 foreach ($this->data["cols"] as $key)
00751                 {
00752                         $this->tpl->setCurrentBlock("table_header");
00753                         $this->tpl->setVariable("TEXT",$this->lng->txt($key));
00754                         $this->tpl->parseCurrentBlock();
00755                 }
00756                 // END TABLE HEADER
00757 
00758                 // BEGIN TABLE DATA
00759                 $counter = 0;
00760 
00761                 foreach ($this->data["data"] as $key => $value)
00762                 {
00763                         // BEGIN TABLE CELL
00764                         foreach ($value as $key => $cell_data)
00765                         {
00766                                 $this->tpl->setCurrentBlock("table_cell");
00767 
00768                                 // CREATE TEXT STRING
00769                                 if ($key == "type")
00770                                 {
00771                                         $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
00772                                 }
00773                                 else
00774                                 {
00775                                         $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
00776                                 }
00777                                 $this->tpl->parseCurrentBlock();
00778                         }
00779 
00780                         $this->tpl->setCurrentBlock("table_row");
00781                         $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00782                         $this->tpl->parseCurrentBlock();
00783                         // END TABLE CELL
00784                 }
00785                 // END TABLE DATA
00786 
00787                 // BEGIN OPERATION_BTN
00788                 foreach ($this->data["buttons"] as $name => $value)
00789                 {
00790                         $this->tpl->setCurrentBlock("operation_btn");
00791                         $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("spacer.gif"));
00792                         $this->tpl->setVariable("BTN_NAME",$name);
00793                         $this->tpl->setVariable("BTN_VALUE",$value);
00794                         $this->tpl->parseCurrentBlock();
00795                 }
00796         }
00797 
00802         function leaveGrpObject()
00803         {
00804                 $member = array($_GET["mem_id"]);
00805                 //set methods that are called after confirmation
00806                 $confirm = "confirmedDeleteMember";
00807                 $cancel  = "canceled";
00808                 $info    = "info_delete_sure";
00809                 $status  = "";
00810                 $return  = "";
00811                 $this->confirmationObject($member, $confirm, $cancel, $info, $status, $return);
00812         }
00813 
00818         function assignMemberObject()
00819         {
00820                 $user_ids = $_POST["id"];
00821 
00822                 if (empty($user_ids[0]))
00823                 {
00824                         // TODO: jumps back to grp content. go back to last search result
00825                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00826                 }
00827 
00828                 foreach ($user_ids as $new_member)
00829                 {
00830                         if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00831                         {
00832                                 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00833                         }
00834                 }
00835 
00836                 unset($_SESSION["saved_post"]);
00837 
00838                 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00839                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00840         }
00841 
00846         function addUserObject()
00847         {
00848                 $user_ids = $_POST["user"];
00849                 
00850                 $mail = new ilMail($_SESSION["AccountId"]);
00851 
00852                 if (empty($user_ids[0]))
00853                 {
00854                         // TODO: jumps back to grp content. go back to last search result
00855                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00856                 }
00857 
00858                 foreach ($user_ids as $new_member)
00859                 {
00860                         if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00861                         {
00862                                 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00863                         }
00864                         
00865                         $user_obj = $this->ilias->obj_factory->getInstanceByObjId($new_member);
00866                 
00867                         $user_obj->addDesktopItem($this->object->getRefId(),"grp");
00868                         $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","grp_mail_subj_new_subscription",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","grp_mail_body_new_subscription",$user_obj->getLanguage()),array(),array('normal'));      
00869 
00870                         unset($user_obj);
00871                 }
00872                 
00873                 unset($_SESSION["saved_post"]);
00874                 unset($_SESSION['grp_usr_search_result']);
00875 
00876                 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00877                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00878         }
00879 
00884         function removeMemberObject()
00885         {
00886                 $user_ids = array();
00887 
00888                 if (isset($_POST["user_id"]))
00889                 {
00890                         $user_ids = $_POST["user_id"];
00891                 }
00892                 else if (isset($_GET["mem_id"]))
00893                 {
00894                         $user_ids[] = $_GET["mem_id"];
00895                 }
00896 
00897                 if (empty($user_ids[0]))
00898                 {
00899                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00900                 }
00901                 
00902                 if (count($user_ids) == 1 and $this->ilias->account->getId() != $user_ids[0])
00903                 {
00904                         if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]) 
00905                                 and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00906                         {
00907                                 $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
00908                         }
00909                 }
00910                 //bool value: says if $users_ids contains current user id
00911                 $is_dismiss_me = array_search($this->ilias->account->getId(),$user_ids);
00912                 
00913                 $confirm = "confirmedRemoveMember";
00914                 $cancel  = "canceled";
00915                 $info    = ($is_dismiss_me !== false) ? "grp_dismiss_myself" : "grp_dismiss_member";
00916                 $status  = "";
00917                 $return  = "members";
00918                 $this->confirmationObject($user_ids, $confirm, $cancel, $info, $status, $return);
00919         }
00920 
00925         function confirmedRemoveMemberObject()
00926         {
00927                 $removed_self = false;
00928                 
00929                 $mail = new ilMail($_SESSION["AccountId"]);
00930 
00931                 //User needs to have administrative rights to remove members...
00932                 foreach($_SESSION["saved_post"]["user_id"] as $member_id)
00933                 {
00934                         $err_msg = $this->object->removeMember($member_id);
00935 
00936                         if (strlen($err_msg) > 0)
00937                         {
00938                                 sendInfo($this->lng->txt($err_msg),true);
00939                                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00940                         }
00941                         
00942                         $user_obj = new ilObjUser($member_id);
00943                         
00944                         $user_obj->dropDesktopItem($this->object->getRefId(), "grp");
00945                         
00946                         if (!$removed_self and $user_obj->getId() == $this->ilias->account->getId())
00947                         {
00948                                 $removed_self = true;
00949                         }
00950                         else
00951                         {
00952                                 $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","grp_mail_subj_subscription_cancelled",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","grp_mail_body_subscription_cancelled",$user_obj->getLanguage()),array(),array('normal'));
00953                         }                       
00954 
00955                 }
00956 
00957                 unset($_SESSION["saved_post"]);
00958 
00959                 sendInfo($this->lng->txt("grp_msg_membership_annulled"),true);
00960                 
00961                 if ($removed_self)
00962                 {
00963                         ilUtil::redirect("repository.php?ref_id=".$this->tree->getParentId($this->ref_id));
00964                 }
00965 
00966                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00967         }
00968 
00969 
00974         function changeMemberObject()
00975         {
00976                 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
00977                 {
00978                         $_GET["sort_by"] = "login";
00979                 }
00980 
00981                 $member_ids = array();
00982 
00983                 if (isset($_POST["user_id"]))
00984                 {
00985                         $member_ids = $_POST["user_id"];
00986                 }
00987                 else if (isset($_GET["mem_id"]))
00988                 {
00989                         $member_ids[0] = $_GET["mem_id"];
00990                 }
00991 
00992                 if (empty($member_ids[0]))
00993                 {
00994                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00995                 }
00996 
00997                 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]) 
00998                         and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00999                 {
01000                         $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
01001                 }
01002 
01003                 $stati = array_flip($this->object->getLocalGroupRoles(true));
01004                 //var_dump($stati);exit;
01005 
01006                 //build data structure
01007                 foreach ($member_ids as $member_id)
01008                 {
01009                         $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
01010                         $mem_status = $this->object->getMemberRoles($member_id);
01011 
01012                         $this->data["data"][$member->getId()]= array(
01013                                         "login"         => $member->getLogin(),
01014                                         "firstname"     => $member->getFirstname(),
01015                                         "lastname"      => $member->getLastname(),
01016                                         "last_visit"=> ilFormat::formatDate($member->getLastLogin()),
01017                                         "grp_role"      => ilUtil::formSelect($mem_status,"member_status_select[".$member->getId()."][]",$stati,true,true,3)
01018                                 );
01019                 }
01020                 
01021                 unset($member);
01022                 
01023                 infoPanel();
01024 
01025                 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
01026 
01027                 // load template for table content data
01028                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
01029 
01030                 $this->data["buttons"] = array( "updateMemberStatus"  => $this->lng->txt("confirm"),
01031                                                                                 "members"  => $this->lng->txt("back"));
01032 
01033                 $this->tpl->setCurrentBlock("tbl_action_row");
01034                 $this->tpl->setVariable("COLUMN_COUNTS",5);
01035                 //$this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01036                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01037 
01038                 foreach ($this->data["buttons"] as $name => $value)
01039                 {
01040                         $this->tpl->setCurrentBlock("tbl_action_btn");
01041                         $this->tpl->setVariable("BTN_NAME",$name);
01042                         $this->tpl->setVariable("BTN_VALUE",$value);
01043                         $this->tpl->parseCurrentBlock();
01044                 }
01045 
01046                 //sort data array
01047                 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
01048                 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
01049                 
01050                 // create table
01051                 include_once "./classes/class.ilTableGUI.php";
01052 
01053                 $tbl = new ilTableGUI($output);
01054 
01055                 // title & header columns
01056                 $tbl->setTitle($this->lng->txt("grp_mem_change_status"),"icon_usr_b.gif",$this->lng->txt("grp_mem_change_status"));
01057                 //$tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
01058                 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role")));
01059                 $tbl->setHeaderVars(array("login","firstname","lastname","last_visit","role"),$this->ctrl->getParameterArray($this,"",false));
01060 
01061                 $tbl->setColumnWidth(array("20%","20%","20%","40%"));
01062 
01063                 $this->tpl->setCurrentBlock("tbl_action_row");
01064                 $this->tpl->parseCurrentBlock();
01065 
01066                 // control
01067                 $tbl->setOrderColumn($_GET["sort_by"]);
01068                 $tbl->setOrderDirection($_GET["sort_order"]);
01069                 $tbl->setLimit($_GET["limit"]);
01070                 $tbl->setOffset($_GET["offset"]);
01071                 $tbl->setMaxCount(count($this->data["data"]));
01072 
01073                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01074 
01075                 // render table
01076                 $tbl->render();
01077         }
01078         
01082         function membersObject()
01083         {
01084                 global $rbacsystem,$ilBench,$ilDB,$ilUser;
01085 
01086                 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members.html");
01087                 $this->setSubTabs('members');
01088 
01089                 $ilBench->start("GroupGUI", "membersObject");
01090                 
01091                 //if current user is admin he is able to add new members to group
01092                 $val_contact = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".$this->lng->txt("grp_mem_send_mail")."\" title=\"".$this->lng->txt("grp_mem_send_mail")."\" border=\"0\" vspace=\"0\"/>";
01093                 $val_change = "<img src=\"".ilUtil::getImagePath("icon_change_b.gif")."\" alt=\"".$this->lng->txt("grp_mem_change_status")."\" title=\"".$this->lng->txt("grp_mem_change_status")."\" border=\"0\" vspace=\"0\"/>";
01094                 $val_leave = "<img src=\"".ilUtil::getImagePath("icon_group_out_b.gif")."\" alt=\"".$this->lng->txt("grp_mem_leave")."\" title=\"".$this->lng->txt("grp_mem_leave")."\" border=\"0\" vspace=\"0\"/>";
01095 
01096                 // store access checks to improve performance
01097                 $access_leave = $rbacsystem->checkAccess("leave",$this->object->getRefId());
01098                 $access_write = $rbacsystem->checkAccess("write",$this->object->getRefId());
01099 
01100                 $member_ids = $this->object->getGroupMemberIds();
01101                 
01102                 // fetch all users data in one shot to improve performance
01103                 $members = $this->object->getGroupMemberData($member_ids);
01104                 
01105                 $account_id = $this->ilias->account->getId();
01106                 $counter = 0;
01107 
01108                 foreach ($members as $mem)
01109                 {
01110                         $link_contact = "mail_new.php?type=new&rcp_to=".$mem["login"];
01111                         $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$mem["id"];
01112                 
01113                         //build function
01114                         if ($access_write)
01115                         {
01116                                 $member_functions = "<a href=\"$link_change\">$val_change</a>";
01117                         }
01118 
01119                         if (($mem["id"] == $account_id && $access_leave) || $access_write)
01120                         {
01121                                 $link_leave = $this->ctrl->getLinkTarget($this,"RemoveMember")."&mem_id=".$mem["id"];
01122                                 $member_functions .="<a href=\"$link_leave\">$val_leave</a>";
01123                         }
01124 
01125                         // this is twice as fast than the code above
01126                         $str_member_roles = $this->object->getMemberRolesTitle($mem["id"]);
01127 
01128                         if ($access_write)
01129                         {
01130                                 $result_set[$counter][] = ilUtil::formCheckBox(0,"user_id[]",$mem["id"]);
01131                         }
01132                         
01133                         $user_ids[$counter] = $mem["id"];
01134             
01135             //discarding the checkboxes
01136                         $result_set[$counter][] = $mem["login"];
01137                         $result_set[$counter][] = $mem["firstname"];
01138                         $result_set[$counter][] = $mem["lastname"];
01139                         $result_set[$counter][] = ilFormat::formatDate($mem["last_login"]);
01140                         $result_set[$counter][] = $str_member_roles;
01141                         $result_set[$counter][] = "<a href=\"$link_contact\">".$val_contact."</a>".$member_functions;
01142 
01143                         ++$counter;
01144 
01145                         unset($member_functions);
01146                 }
01147 
01148                 $ilBench->stop("GroupGUI", "membersObject");
01149 
01150                 return $this->__showMembersTable($result_set,$user_ids);
01151     }
01152 
01153         function mailMembersObject()
01154         {
01155                 global $rbacreview;
01156 
01157                 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.mail_members.html');
01158 
01159                 $this->setSubTabs('members');
01160 
01161                 $this->tpl->setVariable("MAILACTION",'mail_new.php?type=role');
01162                 $this->tpl->setVariable("MAIL_MEMBERS",$this->lng->txt('send_mail_members'));
01163                 $this->tpl->setVariable("MAIL_ADMIN",$this->lng->txt('send_mail_admins'));
01164                 $this->tpl->setVariable("CHECK_MEMBER",ilUtil::formCheckbox(1,'roles[]','#il_grp_member_'.$this->object->getRefId()));
01165                 $this->tpl->setVariable("CHECK_ADMIN",ilUtil::formCheckbox(0,'roles[]','#il_grp_admin_'.$this->object->getRefId()));
01166                 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath('arrow_downright.gif'));
01167                 $this->tpl->setVariable("OK",$this->lng->txt('ok'));
01168         }
01169 
01170 
01174         function setSubTabs($a_tab)
01175         {
01176                 switch ($a_tab)
01177                 {
01178                         case 'members':
01179                                 $this->tabs_gui->addSubTabTarget("members",
01180                                                                                                  $this->ctrl->getLinkTarget($this,'members'),
01181                                                                                                  "members", get_class($this));
01182                                 $this->tabs_gui->addSubTabTarget("mail_members",
01183                                                                                                  $this->ctrl->getLinkTarget($this,'mailMembers'),
01184                                                                                                  "mailMembers", get_class($this));
01185 
01186                                 break;
01187 
01188                                 
01189                 }
01190         }
01191 
01192 
01193         function showNewRegistrationsObject()
01194         {
01195                 global $rbacsystem;
01196 
01197                 //get new applicants
01198                 $applications = $this->object->getNewRegistrations();
01199                 
01200                 if (!$applications)
01201                 {
01202                         $this->ilErr->raiseError($this->lng->txt("no_applications"),$this->ilErr->MESSAGE);
01203                 }
01204                 
01205                 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
01206                 {
01207                         $_GET["sort_by"] = "login";
01208                 }
01209 
01210                 $val_contact = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".$this->lng->txt("grp_app_send_mail")."\" title=\"".$this->lng->txt("grp_app_send_mail")."\" border=\"0\" vspace=\"0\"/>";
01211 
01212                 foreach ($applications as $applicant)
01213                 {
01214                         $user =& $this->ilias->obj_factory->getInstanceByObjId($applicant->user_id);
01215 
01216                         $link_contact = "mail_new.php?mobj_id=3&type=new&rcp_to=".$user->getLogin();
01217                         $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$user->getId();
01218                         $member_functions = "<a href=\"$link_change\">$val_change</a>";
01219                         if (strcmp($_GET["check"], "all") == 0)
01220                         {
01221                                 $checked = 1;
01222                         }
01223                         else
01224                         {
01225                                 $checked = 0;
01226                         }
01227                         $this->data["data"][$user->getId()]= array(
01228                                 "check"         => ilUtil::formCheckBox($checked,"user_id[]",$user->getId()),
01229                                 "username"      => $user->getLogin(),
01230                                 "fullname"      => $user->getFullname(),
01231                                 "subject"       => $applicant->subject,
01232                                 "date"          => $applicant->application_date,
01233                                 "functions"     => "<a href=\"$link_contact\">".$val_contact."</a>"
01234                                 );
01235 
01236                                 unset($member_functions);
01237                                 unset($user);
01238                 }
01239                 // load template for table content data
01240                 //echo $this->ctrl->getFormAction($this,"post");
01241                 //var_dump($this->ctrl->getParameterArray($this,"ShownewRegistrations",false));
01242                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this,"post"));
01243 
01244                 $this->data["buttons"] = array( "refuseApplicants"  => $this->lng->txt("refuse"),
01245                                                                                 "assignApplicants"  => $this->lng->txt("assign"));
01246 
01247                 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
01248 
01249                 //prepare buttons [cancel|assign]
01250                 foreach ($this->data["buttons"] as $name => $value)
01251                 {
01252                         $this->tpl->setCurrentBlock("tbl_action_btn");
01253                         $this->tpl->setVariable("BTN_NAME",$name);
01254                         $this->tpl->setVariable("BTN_VALUE",$value);
01255                         $this->tpl->parseCurrentBlock();
01256                 }
01257                 
01258                 $this->tpl->setCurrentBlock("tbl_action_plain_select");
01259                 $this->tpl->setVariable("SELECT_ACTION", "<a href=\"" . $this->ctrl->getLinkTarget($this,"ShownewRegistrations") . "&check=all\">" . $this->lng->txt("check_all") . "</a>" . " / " . "<a href=\"" . $this->ctrl->getLinkTarget($this,"ShownewRegistrations") . "&check=none\">" . $this->lng->txt("uncheck_all") . "</a>");
01260                 $this->tpl->parseCurrentBlock();
01261 
01262                 if (isset($this->data["data"]))
01263                 {
01264                         //sort data array
01265                         $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
01266                         $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
01267                 }
01268 
01269                 $this->tpl->setCurrentBlock("tbl_action_row");
01270                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01271                 $this->tpl->setVariable("COLUMN_COUNTS",6);
01272                 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01273 
01274                 // create table
01275                 include_once "./classes/class.ilTableGUI.php";
01276                 $tbl = new ilTableGUI($output);
01277                 // title & header columns
01278                 $tbl->setTitle($this->lng->txt("group_new_registrations"),"icon_usr_b.gif",$this->lng->txt("group_applicants"));
01279                 //$tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
01280                 $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("fullname"),$this->lng->txt("subject"),$this->lng->txt("application_date"),$this->lng->txt("grp_options")));
01281                 $tbl->setHeaderVars(array("","username","fullname","subject","date","functions"),$this->ctrl->getParameterArray($this,"ShownewRegistrations",false));
01282                 $tbl->setColumnWidth(array("","20%","20%","35%","20%","5%"));
01283                 
01284                 if ($_GET["sort_by"] == "login")
01285                 {
01286                         $_GET["sort_by"] = "username";
01287                 }
01288                 
01289                 if (!$_GET["sort_order"])
01290                 {
01291                         $_GET["sort_order"] = "asc";
01292                 }
01293                 
01294                 // control
01295                 $tbl->setOrderColumn($_GET["sort_by"]);
01296                 $tbl->setOrderDirection($_GET["sort_order"]);
01297                 $tbl->setLimit($_GET["limit"]);
01298                 $tbl->setOffset($_GET["offset"]);
01299                 $tbl->setMaxCount(count($this->data["data"]));
01300                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01301                 $tbl->render();
01302         }
01303 
01308         function assignApplicantsObject()
01309         {
01310                 $user_ids = $_POST["user_id"];
01311 
01312                 if (empty($user_ids[0]))
01313                 {
01314                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01315                 }
01316 
01317                 $mail = new ilMail($_SESSION["AccountId"]);
01318 
01319                 foreach ($user_ids as $new_member)
01320                 {
01321                         $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01322 
01323                         if (!$this->object->addMember($new_member, $this->object->getDefaultMemberRole()))
01324                         {
01325                                 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
01326                         }
01327 
01328                         $this->object->deleteApplicationListEntry($new_member);
01329                         $mail->sendMail($user->getLogin(),"","","New Membership in Group: ".$this->object->getTitle(),"You have been assigned to the group as a member. You can now access all group specific objects like forums, learningmodules,etc..",array(),array('normal'));
01330                 }
01331 
01332                 sendInfo($this->lng->txt("grp_msg_applicants_assigned"),true);
01333                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01334         }
01335 
01340         function refuseApplicantsObject()
01341         {
01342                 $user_ids = $_POST["user_id"];
01343 
01344                 if (empty($user_ids[0]))
01345                 {
01346                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01347                 }
01348 
01349                 $mail = new ilMail($_SESSION["AccountId"]);
01350 
01351                 foreach ($user_ids as $new_member)
01352                 {
01353                         $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01354 
01355                         $this->object->deleteApplicationListEntry($new_member);
01356                         $mail->sendMail($user->getLogin(),"","","Membership application refused: Group ".$this->object->getTitle(),"Your application has been refused.",array(),array('normal'));
01357                 }
01358 
01359                 sendInfo($this->lng->txt("grp_msg_applicants_removed"),true);
01360                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01361         }
01362 
01367         function updateMemberStatusObject()
01368         {
01369                 global $rbacsystem;
01370 
01371                 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()) )
01372                 {
01373                         $this->ilErr->raiseError("permission_denied",$this->ilErr->MESSAGE);
01374                 }
01375 
01376                 if (isset($_POST["member_status_select"]))
01377                 {
01378                         foreach ($_POST["member_status_select"] as $key=>$value)
01379                         {
01380                                 $this->object->setMemberStatus($key,$value);
01381                         }
01382                 }
01383 
01384                 sendInfo($this->lng->txt("msg_obj_modified"),true);
01385                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01386         }
01387 
01388         function searchUserFormObject()
01389         {
01390                 global $rbacsystem;
01391 
01392                 $this->lng->loadLanguageModule('search');
01393 
01394                 // MINIMUM ACCESS LEVEL = 'administrate'
01395                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01396                 {
01397                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01398                 }
01399 
01400                 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members_search.html");
01401                 
01402                 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
01403                 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("grp_search_members"));
01404                 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
01405                 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["grp_search_str"] ? $_SESSION["grp_search_str"] : "");
01406                 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
01407                 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
01408                 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
01409                 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
01410                 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
01411                 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
01412                 
01413         $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
01414                 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
01415                 $role = ($_POST["search_for"] == "role") ? 1 : 0;
01416 
01417                 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
01418                 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
01419         $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
01420 
01421                 $this->__unsetSessionVariables();
01422         }
01423 
01424         function __appendToStoredResults($a_result)
01425         {
01426                 $tmp_array = array();
01427                 foreach($a_result as $result)
01428                 {
01429                         if(is_array($result))
01430                         {
01431                                 $tmp_array[] = $result['id'];
01432                         }
01433                         elseif($result)
01434                         {
01435                                 $tmp_array[] = $result;
01436                         }
01437                 }
01438                 // merge results
01439                 
01440                 $_SESSION['grp_usr_search_result'] = array_unique(array_merge((array) $_SESSION['grp_usr_search_result'],$tmp_array));
01441                 return $_SESSION['grp_usr_search_result'];
01442         }
01443 
01444         function cancelSearchObject()
01445         {
01446                 $_SESSION['grp_usr_search_result'] = array();
01447                 $_SESSION['grp_search_str'] = '';
01448                 $this->searchUserFormObject();
01449         }
01450 
01451         function searchObject()
01452         {
01453                 global $rbacsystem,$tree;
01454 
01455                 $_SESSION["grp_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["grp_search_str"];
01456                 $_SESSION["grp_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["grp_search_for"];
01457                 
01458                 // MINIMUM ACCESS LEVEL = 'administrate'
01459                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01460                 {
01461                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01462                 }
01463 
01464                 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
01465                 {
01466                         sendInfo($this->lng->txt("grp_search_enter_search_string"));
01467                         $this->searchUserFormObject();
01468                         
01469                         return false;
01470                 }
01471 
01472                 if(!count($result = $this->__search(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"])))
01473                 {
01474                         sendInfo($this->lng->txt("grp_no_results_found"));
01475                         $this->searchUserFormObject();
01476 
01477                         return false;
01478                 }
01479                 
01480                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01481                 #$this->__showButton("cancelSearch",$this->lng->txt("grp_new_search"));
01482                 
01483                 $counter = 0;
01484                 $f_result = array();
01485 
01486                 switch($_POST["search_for"])
01487                 {
01488                 case "usr":
01489                                 foreach($result as $user)
01490                                 {
01491                                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01492                                         {
01493                                                 continue;
01494                                         }
01495                                         $user_ids[$counter] = $user;
01496                                         
01497                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01498                                         $f_result[$counter][] = $tmp_obj->getLogin();
01499                                         $f_result[$counter][] = $tmp_obj->getFirstname();
01500                                         $f_result[$counter][] = $tmp_obj->getLastname();
01501                                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01502 
01503                                         unset($tmp_obj);
01504                                         ++$counter;
01505                                 }
01506                                 $this->__showSearchUserTable($f_result,$user_ids);
01507 
01508                                 return true;
01509 
01510                         case "role":
01511                                 foreach($result as $role)
01512                                 {
01513                     // exclude anonymous role
01514                     if ($role["id"] == ANONYMOUS_ROLE_ID)
01515                     {
01516                         continue;
01517                     }
01518 
01519                     if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
01520                                         {
01521                                                 continue;
01522                                         }
01523                                         
01524                                     // exclude roles with no users assigned to
01525                     if ($tmp_obj->getCountMembers() == 0)
01526                     {
01527                         continue;
01528                     }
01529                     
01530                     $role_ids[$counter] = $role["id"];
01531                     
01532                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
01533                                         $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01534                                         $f_result[$counter][] = $tmp_obj->getCountMembers();
01535                                         
01536                                         unset($tmp_obj);
01537                                         ++$counter;
01538                                 }
01539                                 
01540                                 $this->__showSearchRoleTable($f_result,$role_ids);
01541 
01542                                 return true;
01543                                 
01544                         case "grp":
01545                                 foreach($result as $group)
01546                                 {
01547                                         if(!$tree->isInTree($group["id"]))
01548                                         {
01549                                                 continue;
01550                                         }
01551                                         
01552                                         if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
01553                                         {
01554                                                 continue;
01555                                         }
01556                                         
01557                     // exclude myself :-)
01558                     if ($tmp_obj->getId() == $this->object->getId())
01559                     {
01560                         continue;
01561                     }
01562                     
01563                     $grp_ids[$counter] = $group["id"];
01564                     
01565                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
01566                                         $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01567                                         $f_result[$counter][] = $tmp_obj->getCountMembers();
01568                                         
01569                                         unset($tmp_obj);
01570                                         ++$counter;
01571                                 }
01572                                 
01573                                 if(!count($f_result))
01574                                 {
01575                                         sendInfo($this->lng->txt("grp_no_results_found"));
01576                                         $this->searchUserFormObject();
01577 
01578                                         return false;
01579                                 }
01580                                 
01581                                 $this->__showSearchGroupTable($f_result,$grp_ids);
01582 
01583                                 return true;
01584                 }
01585         }
01586 
01587         function searchCancelledObject ()
01588         {
01589                 sendInfo($this->lng->txt("action_aborted"),true);
01590                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01591         }
01592 
01593         // get tabs
01594         function getTabs(&$tabs_gui)
01595         {
01596                 global $rbacsystem, $ilUser;
01597 
01598                 if ($rbacsystem->checkAccess('read',$this->ref_id))
01599                 {
01600                         $force_active = (($_GET["cmd"] == "view" || $_GET["cmd"] == "")
01601                                 && $_GET["cmdClass"] == "")
01602                                 ? true
01603                                 : false;
01604                         $tabs_gui->addTarget("view_content",
01605                                 $this->ctrl->getLinkTarget($this, ""), array("", "view","addToDesk","removeFromDesk"), get_class($this),
01606                                 "", $force_active);
01607                 }
01608 
01609                 if ($rbacsystem->checkAccess('write',$this->ref_id))
01610                 {
01611                         $force_active = ($_GET["cmd"] == "edit" && $_GET["cmdClass"] == "")
01612                                 ? true
01613                                 : false;
01614                         $tabs_gui->addTarget("edit_properties",
01615                                 $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this),
01616                                 "", $force_active);
01617 //  Export tab to export group members to an excel file. Only available for group admins
01618 //  commented out for following reason: clearance needed with developer list
01619 //                      $tabs_gui->addTarget("export",
01620 //                              $this->ctrl->getLinkTarget($this, "export"), "export", get_class($this));
01621                 }
01622 
01623                 if ($rbacsystem->checkAccess('read',$this->ref_id))
01624                 {
01625                         $tabs_gui->addTarget("group_members",
01626                                                                  $this->ctrl->getLinkTarget($this, "members"), array("members",'mailMembers'), get_class($this));
01627                 }
01628                 
01629                 $applications = $this->object->getNewRegistrations();
01630 
01631                 if (is_array($applications) and $this->object->isAdmin($this->ilias->account->getId()))
01632                 {
01633                         $tabs_gui->addTarget("group_new_registrations",
01634                                 $this->ctrl->getLinkTarget($this, "ShownewRegistrations"), "ShownewRegistrations", get_class($this));
01635                 }
01636                 
01637                 if ($rbacsystem->checkAccess('write',$this->object->getRefId()))
01638                 {
01639                         $tabs_gui->addTarget('export',
01640                                                                  $this->ctrl->getLinkTarget($this,'listExportFiles'),
01641                                                                  array('listExportFiles','exportXML','confirmDeleteExportFile','downloadExportFile'),
01642                                                                  get_class($this));
01643                 }
01644                 
01645                 if ($rbacsystem->checkAccess('join',$this->object->getRefId())
01646                    and !ilObjGroup::_isMember($ilUser->getId(),$this->object->getRefId()))
01647                 {
01648                         $tabs_gui->addTarget("join",
01649                                                                  $this->ctrl->getLinkTarget($this, "join"), 
01650                                                                  'join',
01651                                                                  "");
01652                 }
01653 
01654         // parent tabs (all container: edit_permission, clipboard, trash
01655                 parent::getTabs($tabs_gui);
01656         }
01657 
01658 
01659         // IMPORT FUNCTIONS
01660 
01661         function importFileObject()
01662         {
01663                 if(!is_array($_FILES['xmldoc']))
01664                 {
01665                         sendInfo($this->lng->txt("import_file_not_valid"));
01666                         $this->createObject();
01667                         return false;
01668                 }
01669                 
01670                 include_once 'classes/class.ilObjGroup.php';
01671 
01672                 if($ref_id = ilObjGroup::_importFromFile($_FILES['xmldoc'],(int) $_GET['ref_id']))
01673                 {
01674                         $this->ctrl->setParameter($this, "ref_id", $ref_id);
01675                         sendInfo($this->lng->txt("import_grp_finished"),true);
01676                         ilUtil::redirect($this->ctrl->getLinkTarget($this,'edit'));
01677                 }
01678                 
01679                 sendInfo($this->lng->txt("import_file_not_valid"));
01680                 $this->createObject();
01681         }       
01682         // METHODS FOR COURSE CONTENT INTERFACE
01683         function initCourseContentInterface()
01684         {
01685                 global $ilCtrl;
01686 
01687                 include_once "./course/classes/class.ilCourseContentInterface.php";
01688                 
01689                 $this->object->ctrl =& $ilCtrl;
01690                 $this->cci_obj =& new ilCourseContentInterface($this,$this->object->getRefId());
01691         }
01692 
01693         function cciEditObject()
01694         {
01695                 global $rbacsystem;
01696 
01697                 // CHECK ACCESS
01698                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01699                 {
01700                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01701                 }
01702 
01703                 $this->ctrl->setParameter($this, "item_id", $_GET["item_id"]);
01704                 $this->__setSubTabs('activation');
01705                 $this->tabs_gui->setTabActive('view_content');
01706 
01707                 $this->initCourseContentInterface();
01708                 $this->cci_obj->cci_setContainer($this);
01709                 $this->cci_obj->cci_edit();
01710 
01711                 return true;
01712         }
01713 
01714         function cciUpdateObject()
01715         {
01716                 global $rbacsystem;
01717 
01718                 // CHECK ACCESS
01719                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01720                 {
01721                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01722                 }
01723 
01724                 $this->initCourseContentInterface();
01725                 $this->cci_obj->cci_setContainer($this);
01726                 $this->cci_obj->cci_update();
01727 
01728                 return true;
01729         }
01730         
01731         function cciMoveObject()
01732         {
01733                 global $rbacsystem;
01734 
01735                 // CHECK ACCESS
01736                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01737                 {
01738                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01739                 }
01740 
01741                 $this->initCourseContentInterface();
01742                 $this->cci_obj->cci_setContainer($this);
01743                 $this->cci_obj->cci_move();
01744 
01745                 return true;
01746         }
01747 
01748         function __unsetSessionVariables()
01749         {
01750                 unset($_SESSION["grp_delete_member_ids"]);
01751                 unset($_SESSION["grp_delete_subscriber_ids"]);
01752                 unset($_SESSION["grp_search_str"]);
01753                 unset($_SESSION["grp_search_for"]);
01754                 unset($_SESSION["grp_role"]);
01755                 unset($_SESSION["grp_group"]);
01756                 unset($_SESSION["grp_archives"]);
01757         }
01758         
01759         function __search($a_search_string,$a_search_for)
01760         {
01761                 include_once("class.ilSearch.php");
01762 
01763                 $this->lng->loadLanguageModule("content");
01764                 $search =& new ilSearch($_SESSION["AccountId"]);
01765                 $search->setPerformUpdate(false);
01766                 $search->setMinWordLength(1);
01767                 $search->setSearchString(ilUtil::stripSlashes($a_search_string));
01768                 $search->setCombination("and");
01769                 $search->setSearchFor(array(0 => $a_search_for));
01770                 $search->setSearchType('new');
01771 
01772                 if($search->validate($message))
01773                 {
01774                         $search->performSearch();
01775                 }
01776                 else
01777                 {
01778                         sendInfo($message,true);
01779                         $this->ctrl->redirect($this,"searchUserForm");
01780                 }
01781 
01782                 if($a_search_for == 'usr')
01783                 {
01784                         $this->__appendToStoredResults($search->getResultByType($a_search_for));
01785                         return $_SESSION['grp_usr_search_result'];
01786                 }
01787 
01788                 return $search->getResultByType($a_search_for);
01789         }
01790 
01791         function __showSearchUserTable($a_result_set,$a_user_ids = NULL, $a_cmd = "search")
01792         {
01793                 $this->__showButton('searchUserForm',$this->lng->txt("back"));
01794         
01795         if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
01796         {
01797             $return_to = "search";
01798         }
01799 
01800                 $tbl =& $this->__initTableGUI();
01801                 $tpl =& $tbl->getTemplateObject();
01802 
01803                 // SET FORMACTION
01804                 $tpl->setCurrentBlock("tbl_form_header");
01805                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01806                 $tpl->parseCurrentBlock();
01807 
01808 
01809                 $tpl->setCurrentBlock("tbl_action_btn");
01810                 $tpl->setVariable("BTN_NAME","addUser");
01811                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
01812                 $tpl->parseCurrentBlock();
01813 
01814                 $tpl->setCurrentBlock("plain_button");
01815                 $tpl->setVariable("PBTN_NAME",'searchUserForm');
01816                 $tpl->setVariable("PBTN_VALUE",$this->lng->txt('append_search'));
01817                 $tpl->parseCurrentBlock();
01818                 
01819                 $tpl->setCurrentBlock("plain_button");
01820                 $tpl->setVariable("PBTN_NAME",'cancelSearch');
01821                 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("grp_new_search"));
01822                 $tpl->parseCurrentBlock();
01823 
01824 
01825                 if (!empty($a_user_ids))
01826                 {
01827                         // set checkbox toggles
01828                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01829                         $tpl->setVariable("JS_VARNAME","user");                 
01830                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
01831                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01832                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01833                         $tpl->parseCurrentBlock();
01834                 }
01835 
01836                 $tpl->setCurrentBlock("tbl_action_row");
01837                 $tpl->setVariable("COLUMN_COUNTS",5);
01838                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01839                 $tpl->parseCurrentBlock();
01840 
01841                 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01842                 $tbl->setHeaderNames(array("",
01843                                                                    $this->lng->txt("username"),
01844                                                                    $this->lng->txt("firstname"),
01845                                                                    $this->lng->txt("lastname"),
01846                                                                    $this->lng->txt("last_visit")));
01847                 $tbl->setHeaderVars(array("",
01848                                                                   "login",
01849                                                                   "firstname",
01850                                                                   "lastname",
01851                                                                   "last_visit"),
01852                                                         array("ref_id" => $this->object->getRefId(),
01853                                                                   "cmd" => $a_cmd,
01854                                                                   "cmdClass" => "ilobjgroupgui",
01855                                                                   "cmdNode" => $_GET["cmdNode"]));
01856 
01857                 $tbl->setColumnWidth(array("","33%","33%","33%"));
01858 
01859                 $this->__setTableGUIBasicData($tbl,$a_result_set);
01860                 $tbl->render();
01861                 
01862                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01863 
01864                 return true;
01865         }
01866 
01867         function __showSearchRoleTable($a_result_set,$a_role_ids = NULL)
01868         {
01869                 $this->__showButton('searchUserForm',$this->lng->txt("back"));
01870 
01871                 $tbl =& $this->__initTableGUI();
01872                 $tpl =& $tbl->getTemplateObject();
01873 
01874                 $tpl->setCurrentBlock("tbl_form_header");
01875                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01876                 $tpl->parseCurrentBlock();
01877 
01878                 $tpl->setCurrentBlock("tbl_action_btn");
01879                 $tpl->setVariable("BTN_NAME","searchUserForm");
01880                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01881                 $tpl->parseCurrentBlock();
01882 
01883                 $tpl->setCurrentBlock("tbl_action_btn");
01884                 $tpl->setVariable("BTN_NAME","listUsersRole");
01885                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01886                 $tpl->parseCurrentBlock();
01887                 
01888                 if (!empty($a_role_ids))
01889                 {
01890                         // set checkbox toggles
01891                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01892                         $tpl->setVariable("JS_VARNAME","role");                 
01893                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_role_ids));
01894                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01895                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01896                         $tpl->parseCurrentBlock();
01897                 }
01898 
01899                 $tpl->setCurrentBlock("tbl_action_row");
01900                 $tpl->setVariable("COLUMN_COUNTS",5);
01901                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01902                 $tpl->parseCurrentBlock();
01903 
01904                 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01905                 $tbl->setHeaderNames(array("",
01906                                                                    $this->lng->txt("obj_role"),
01907                                                                    $this->lng->txt("grp_count_members")));
01908                 $tbl->setHeaderVars(array("",
01909                                                                   "title",
01910                                                                   "nr_members"),
01911                                                         array("ref_id" => $this->object->getRefId(),
01912                                                                   "cmd" => "search",
01913                                                                   "cmdClass" => "ilobjgroupgui",
01914                                                                   "cmdNode" => $_GET["cmdNode"]));
01915 
01916                 $tbl->setColumnWidth(array("","80%","19%"));
01917 
01918 
01919                 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
01920                 $tbl->render();
01921                 
01922                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01923 
01924                 return true;
01925         }
01926 
01927         function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
01928         {
01929                 $this->__showButton('searchUserForm',$this->lng->txt("back"));
01930 
01931         $tbl =& $this->__initTableGUI();
01932                 $tpl =& $tbl->getTemplateObject();
01933 
01934                 $tpl->setCurrentBlock("tbl_form_header");
01935                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01936                 $tpl->parseCurrentBlock();
01937 
01938                 $tpl->setCurrentBlock("tbl_action_btn");
01939                 $tpl->setVariable("BTN_NAME","searchUserForm");
01940                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01941                 $tpl->parseCurrentBlock();
01942 
01943                 $tpl->setCurrentBlock("tbl_action_btn");
01944                 $tpl->setVariable("BTN_NAME","listUsersGroup");
01945                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01946                 $tpl->parseCurrentBlock();
01947                 
01948                 if (!empty($a_grp_ids))
01949                 {
01950                         // set checkbox toggles
01951                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01952                         $tpl->setVariable("JS_VARNAME","group");                        
01953                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_grp_ids));
01954                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01955                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01956                         $tpl->parseCurrentBlock();
01957                 }
01958 
01959                 $tpl->setCurrentBlock("tbl_action_row");
01960                 $tpl->setVariable("COLUMN_COUNTS",5);
01961                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01962                 $tpl->parseCurrentBlock();
01963 
01964                 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01965                 $tbl->setHeaderNames(array("",
01966                                                                    $this->lng->txt("obj_grp"),
01967                                                                    $this->lng->txt("grp_count_members")));
01968                 $tbl->setHeaderVars(array("",
01969                                                                   "title",
01970                                                                   "nr_members"),
01971                                                         array("ref_id" => $this->object->getRefId(),
01972                                                                   "cmd" => "search",
01973                                                                   "cmdClass" => "ilobjgroupgui",
01974                                                                   "cmdNode" => $_GET["cmdNode"]));
01975 
01976                 $tbl->setColumnWidth(array("","80%","19%"));
01977 
01978 
01979                 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
01980                 $tbl->render();
01981                 
01982                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01983 
01984                 return true;
01985         }
01986         
01987         function __showMembersTable($a_result_set,$a_user_ids = NULL)
01988         {
01989         global $rbacsystem,$ilBench;
01990         
01991                 $ilBench->start("GroupGUI", "__showMembersTable");
01992 
01993                 $actions = array("RemoveMember"  => $this->lng->txt("remove"),"changeMember"  => $this->lng->txt("change"));
01994 
01995         $tbl =& $this->__initTableGUI();
01996                 $tpl =& $tbl->getTemplateObject();
01997 
01998                 $tpl->setCurrentBlock("tbl_form_header");
01999                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02000                 $tpl->parseCurrentBlock();
02001 
02002                 $tpl->setCurrentBlock("tbl_action_row");
02003                 
02004                 //INTERIMS:quite a circumstantial way to show the list on rolebased accessrights
02005                 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
02006                 {                       //user is administrator
02007             $tpl->setCurrentBlock("plain_button");
02008                     $tpl->setVariable("PBTN_NAME","searchUserForm");
02009                     $tpl->setVariable("PBTN_VALUE",$this->lng->txt("grp_add_member"));
02010                     $tpl->parseCurrentBlock();
02011                     $tpl->setCurrentBlock("plain_buttons");
02012                     $tpl->parseCurrentBlock();
02013                 
02014                         $tpl->setVariable("COLUMN_COUNTS",7);
02015                         $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
02016 
02017             foreach ($actions as $name => $value)
02018                         {
02019                                 $tpl->setCurrentBlock("tbl_action_btn");
02020                                 $tpl->setVariable("BTN_NAME",$name);
02021                                 $tpl->setVariable("BTN_VALUE",$value);
02022                                 $tpl->parseCurrentBlock();
02023                         }
02024                         
02025                         if (!empty($a_user_ids))
02026                         {
02027                                 // set checkbox toggles
02028                                 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
02029                                 $tpl->setVariable("JS_VARNAME","user_id");                      
02030                                 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
02031                                 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
02032                                 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
02033                                 $tpl->parseCurrentBlock();
02034                         }
02035                         
02036             $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
02037                 }
02038 
02039                 $this->ctrl->setParameter($this,"cmd","members");
02040 
02041 
02042                 // title & header columns
02043                 $tbl->setTitle($this->lng->txt("members"),"icon_usr_b.gif",$this->lng->txt("group_members"));
02044 
02045                 //INTERIMS:quite a circumstantial way to show the list on rolebased accessrights
02046                 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
02047                 {
02048                         //user must be administrator
02049                         $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
02050                         $tbl->setHeaderVars(array("","login","firstname","lastname","date","role","functions"),$this->ctrl->getParameterArray($this,"",false));
02051                         $tbl->setColumnWidth(array("","22%","22%","22%","22%","10%"));
02052                 }
02053                 else
02054                 {
02055                         //user must be member
02056                         $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
02057                         $tbl->setHeaderVars(array("login","firstname","lastname","date","role","functions"),$this->ctrl->getParameterArray($this,"",false));
02058                         $tbl->setColumnWidth(array("22%","22%","22%","22%","10%"));
02059                 }
02060 
02061                 $this->__setTableGUIBasicData($tbl,$a_result_set,"members");
02062                 $tbl->render();
02063                 $this->tpl->setVariable("MEMBER_TABLE",$tbl->tpl->get());
02064                 
02065                 $ilBench->stop("GroupGUI", "__showMembersTable");
02066 
02067                 return true;
02068         }
02069 
02070         function &__initTableGUI()
02071         {
02072                 include_once "class.ilTableGUI.php";
02073 
02074                 return new ilTableGUI(0,false);
02075         }
02076 
02077         function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
02078         {
02079         switch($from)
02080                 {
02081                         case "subscribers":
02082                                 $offset = $_GET["update_subscribers"] ? $_GET["offset"] : 0;
02083                                 $order = $_GET["update_subscribers"] ? $_GET["sort_by"] : 'login';
02084                                 $direction = $_GET["update_subscribers"] ? $_GET["sort_order"] : '';
02085                                 break;
02086 
02087                         case "group":
02088                                 $offset = $_GET["offset"];
02089                         $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
02090                                 $direction = $_GET["sort_order"];
02091                                 break;
02092                                 
02093                         case "role":
02094                                 $offset = $_GET["offset"];
02095                         $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
02096                                 $direction = $_GET["sort_order"];
02097                                 break;
02098 
02099                         default:
02100                                 $offset = $_GET["offset"];
02101                                 // init sort_by (unfortunatly sort_by is preset with 'title'
02102                         if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
02103                 {
02104                     $_GET["sort_by"] = "login";
02105                 }
02106                 $order = $_GET["sort_by"];
02107                                 $direction = $_GET["sort_order"];
02108                                 break;
02109                 }
02110 
02111                 $tbl->setOrderColumn($order);
02112                 $tbl->setOrderDirection($direction);
02113                 $tbl->setOffset($offset);
02114                 $tbl->setLimit($_GET["limit"]);
02115                 //$tbl->setMaxCount(count($result_set));
02116                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
02117                 $tbl->setData($result_set);
02118         }
02119         
02120         function listUsersRoleObject()
02121         {
02122                 global $rbacsystem,$rbacreview;
02123 
02124                 $_SESSION["grp_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["grp_role"];
02125 
02126                 // MINIMUM ACCESS LEVEL = 'administrate'
02127                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02128                 {
02129                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02130                 }
02131 
02132                 if(!is_array($_POST["role"]))
02133                 {
02134                         sendInfo($this->lng->txt("grp_no_roles_selected"));
02135                         $this->searchObject();
02136 
02137                         return false;
02138                 }
02139 
02140                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
02141                 #$this->__showButton("cancelSearch",$this->lng->txt("grp_new_search"));
02142 
02143                 // GET ALL MEMBERS
02144                 $members = array();
02145                 foreach($_POST["role"] as $role_id)
02146                 {
02147                         $members = array_merge($rbacreview->assignedUsers($role_id),$members);
02148                 }
02149 
02150                 $members = array_unique($members);
02151                 $members = $this->__appendToStoredResults($members);
02152 
02153                 // FORMAT USER DATA
02154                 $counter = 0;
02155                 $f_result = array();
02156                 foreach($members as $user)
02157                 {
02158                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
02159                         {
02160                                 continue;
02161                         }
02162                         
02163                         $user_ids[$counter] = $user;
02164 
02165                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
02166                         $f_result[$counter][] = $tmp_obj->getLogin();
02167                         $f_result[$counter][] = $tmp_obj->getLastname();
02168                         $f_result[$counter][] = $tmp_obj->getFirstname();
02169                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
02170 
02171                         unset($tmp_obj);
02172                         ++$counter;
02173                 }
02174                 $this->__showSearchUserTable($f_result,$user_ids,"listUsersRole");
02175 
02176                 return true;
02177         }
02178         
02184         function removeSmallIconObject()
02185         {
02186                 $this->object->removeSmallIcon();
02187                 ilUtil::redirect($this->ctrl->getLinkTarget($this, "edit"));
02188         }
02189 
02195         function removeBigIconObject()
02196         {
02197                 $this->object->removeBigIcon();
02198                 ilUtil::redirect($this->ctrl->getLinkTarget($this, "edit"));
02199         }
02200         
02201         function listUsersGroupObject()
02202         {
02203                 global $rbacsystem,$rbacreview,$tree;
02204 
02205                 $_SESSION["grp_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["grp_group"];
02206 
02207                 // MINIMUM ACCESS LEVEL = 'administrate'
02208                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02209                 {
02210                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02211                 }
02212 
02213                 if(!is_array($_POST["group"]))
02214                 {
02215                         sendInfo($this->lng->txt("grp_no_groups_selected"));
02216                         $this->searchObject();
02217 
02218                         return false;
02219                 }
02220 
02221                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
02222                 #$this->__showButton("cancelSearch",$this->lng->txt("grp_new_search"));
02223 
02224                 // GET ALL MEMBERS
02225                 $members = array();
02226                 foreach($_POST["group"] as $group_id)
02227                 {
02228                         if (!$tree->isInTree($group_id))
02229                         {
02230                                 continue;
02231                         }
02232                         if (!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
02233                         {
02234                                 continue;
02235                         }
02236 
02237                         $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
02238 
02239                         unset($tmp_obj);
02240                 }
02241 
02242                 $members = array_unique($members);
02243 
02244                 // append users
02245                 $members = $this->__appendToStoredResults($members);
02246 
02247                 // FORMAT USER DATA
02248                 $counter = 0;
02249                 $f_result = array();
02250                 foreach($members as $user)
02251                 {
02252                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
02253                         {
02254                                 continue;
02255                         }
02256                         
02257                         $user_ids[$counter] = $user;
02258                         
02259                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
02260                         $f_result[$counter][] = $tmp_obj->getLogin();
02261                         $f_result[$counter][] = $tmp_obj->getLastname();
02262                         $f_result[$counter][] = $tmp_obj->getFirstname();
02263                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
02264 
02265                         unset($tmp_obj);
02266                         ++$counter;
02267                 }
02268                 $this->__showSearchUserTable($f_result,$user_ids,"listUsersGroup");
02269 
02270                 return true;
02271         }
02272 
02273         // Methods for ConditionHandlerInterface
02274         function initConditionHandlerGUI($item_id)
02275         {
02276                 include_once './classes/class.ilConditionHandlerInterface.php';
02277 
02278                 if(!is_object($this->chi_obj))
02279                 {
02280                         if($_GET['item_id'])
02281                         {
02282                                 $this->chi_obj =& new ilConditionHandlerInterface($this,$item_id);
02283                                 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
02284                         }
02285                         else
02286                         {
02287                                 $this->chi_obj =& new ilConditionHandlerInterface($this);
02288                         }
02289                 }
02290                 return true;
02291         }
02292 
02293         function chi_updateObject()
02294         {
02295                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02296                 $this->chi_obj->chi_update();
02297 
02298                 if($_GET['item_id'])
02299                 {
02300                         $this->cciEditObject();
02301                 }
02302                 else
02303                 {
02304                         $this->editObject();
02305                 }
02306         }               
02307         function chi_deleteObject()
02308         {
02309                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02310                 $this->chi_obj->chi_delete();
02311 
02312                 if($_GET['item_id'])
02313                 {
02314                         $this->cciEditObject();
02315                 }
02316                 else
02317                 {
02318                         $this->editObject();
02319                 }
02320         }
02321 
02322         function chi_selectorObject()
02323         {
02324                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02325                 $this->chi_obj->chi_selector();
02326         }               
02327 
02328         function chi_assignObject()
02329         {
02330                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02331                 $this->chi_obj->chi_assign();
02332 
02333                 if($_GET['item_id'])
02334                 {
02335                         $this->cciEditObject();
02336                 }
02337                 else
02338                 {
02339                         $this->editObject();
02340                 }
02341         }
02342         
02349         function exportObject()
02350         {
02351                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.grp_members_export.html");
02352                 $this->tpl->setCurrentBlock("adm_content");
02353                 $this->tpl->setVariable("FORMACTION", $this->getFormAction("export",$this->ctrl->getFormAction($this)));
02354                 $this->tpl->setVariable("BUTTON_EXPORT", $this->lng->txt("export_group_members"));
02355                 $this->tpl->parseCurrentBlock();
02356         }
02357         
02364         function exportMembersObject()
02365         {
02366                 $result = @include_once 'Spreadsheet/Excel/Writer.php';
02367                 if (!$result)
02368                 {
02369                         include_once './classes/Spreadsheet/Excel/Writer.php';
02370                 }
02371                 // Creating a workbook
02372                 $workbook = new Spreadsheet_Excel_Writer();
02373 
02374                 // sending HTTP headers
02375                 $title = preg_replace("/\s/", "_", $this->object->getTitle());
02376                 $workbook->send("export_" . $title . ".xls");
02377 
02378                 // Creating a worksheet
02379                 $format_bold =& $workbook->addFormat();
02380                 $format_bold->setBold();
02381                 $format_percent =& $workbook->addFormat();
02382                 $format_percent->setNumFormat("0.00%");
02383                 $format_datetime =& $workbook->addFormat();
02384                 $format_datetime->setNumFormat("DD/MM/YYYY hh:mm:ss");
02385                 $format_title =& $workbook->addFormat();
02386                 $format_title->setBold();
02387                 $format_title->setColor('black');
02388                 $format_title->setPattern(1);
02389                 $format_title->setFgColor('silver');
02390                 $worksheet =& $workbook->addWorksheet();
02391                 $column = 0;
02392                 $profile_data = array("email", "gender", "firstname", "lastname", "person_title", "institution", 
02393                         "department", "street", "zipcode","city", "country", "phone_office", "phone_home", "phone_mobile",
02394                         "fax", "matriculation");
02395                 foreach ($profile_data as $data)
02396                 {
02397                         $worksheet->writeString(0, $column++, $this->cleanString($this->lng->txt($data)), $format_title);
02398                 }
02399                 $member_ids = $this->object->getGroupMemberIds();
02400                 $row = 1;
02401                 foreach ($member_ids as $member_id)
02402                 {
02403                         $column = 0;
02404                         $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
02405                         if ($member->getPref("public_email")=="y")
02406                         {
02407                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getEmail()));
02408                         }
02409                         else
02410                         {
02411                                 $column++;
02412                         }
02413                         $worksheet->writeString($row, $column++, $this->cleanString($this->lng->txt("gender_" . $member->getGender())));
02414                         $worksheet->writeString($row, $column++, $this->cleanString($member->getFirstname()));
02415                         $worksheet->writeString($row, $column++, $this->cleanString($member->getLastname()));
02416                         $worksheet->writeString($row, $column++, $this->cleanString($member->getUTitle()));
02417                         if ($member->getPref("public_institution")=="y")
02418                         {
02419                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getInstitution()));
02420                         }
02421                         else
02422                         {
02423                                 $column++;
02424                         }
02425                         if ($member->getPref("public_department")=="y")
02426                         {
02427                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getDepartment()));
02428                         }
02429                         else
02430                         {
02431                                 $column++;
02432                         }
02433                         if ($member->getPref("public_street")=="y")
02434                         {
02435                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getStreet()));
02436                         }
02437                         else
02438                         {
02439                                 $column++;
02440                         }
02441                         if ($member->getPref("public_zip")=="y")
02442                         {
02443                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getZipcode()));
02444                         }
02445                         else
02446                         {
02447                                 $column++;
02448                         }
02449                         if ($member->getPref("public_city")=="y")
02450                         {
02451                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getCity()));
02452                         }
02453                         else
02454                         {
02455                                 $column++;
02456                         }
02457                         if ($member->getPref("public_country")=="y")
02458                         {
02459                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getCountry()));
02460                         }
02461                         else
02462                         {
02463                                 $column++;
02464                         }
02465                         if ($member->getPref("public_phone_office")=="y")
02466                         {
02467                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneOffice()));
02468                         }
02469                         else
02470                         {
02471                                 $column++;
02472                         }
02473                         if ($member->getPref("public_phone_home")=="y")
02474                         {
02475                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneHome()));
02476                         }
02477                         else
02478                         {
02479                                 $column++;
02480                         }
02481                         if ($member->getPref("public_phone_mobile")=="y")
02482                         {
02483                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneMobile()));
02484                         }
02485                         else
02486                         {
02487                                 $column++;
02488                         }
02489                         if ($member->getPref("public_fax")=="y")
02490                         {
02491                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getFax()));
02492                         }
02493                         else
02494                         {
02495                                 $column++;
02496                         }
02497                         if ($member->getPref("public_matriculation")=="y")
02498                         {
02499                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getMatriculation()));
02500                         }
02501                         else
02502                         {
02503                                 $column++;
02504                         }
02505                         $row++;
02506                 }
02507                 $workbook->close();
02508         }
02509         
02518         function cleanString($str)
02519         {
02520                 return str_replace(array("ä","ö","ü","ß","Ä","Ö","Ü"), array("ae","oe","ue","ss","Ae","Oe","Ue"), $str);
02521         }
02522 
02523 
02527         function __setSubTabs($a_tab)
02528         {
02529                 global $rbacsystem,$ilUser;
02530         
02531                 switch ($a_tab)
02532                 {
02533                                 
02534                         case "activation":
02535                                 $this->tabs_gui->addSubTabTarget("activation",
02536                                                                                                  $this->ctrl->getLinkTarget($this,'cciEdit'),
02537                                                                                                  "cciEdit", get_class($this));
02538                                 $this->tabs_gui->addSubTabTarget("preconditions",
02539                                                                                                  $this->ctrl->getLinkTargetByClass('ilConditionHandlerInterface','listConditions'),
02540                                                                                                  "", "ilConditionHandlerInterface");
02541                                 break;
02542                 }
02543         }
02544 
02545         
02546 } // END class.ilObjGroupGUI
02547 ?>

Generated on Fri Dec 13 2013 11:57:54 for ILIAS Release_3_6_x_branch .rev 46809 by  doxygen 1.7.1