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

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