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

Generated on Fri Dec 13 2013 17:56:48 for ILIAS Release_3_9_x_branch .rev 46835 by  doxygen 1.7.1