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

classes/class.ilObjGroupGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
00021         +-----------------------------------------------------------------------------+
00022 */
00023 
00037 include_once "class.ilObjectGUI.php";
00038 include_once "class.ilRegisterGUI.php";
00039 
00040 class ilObjGroupGUI extends ilObjectGUI
00041 {
00046         function ilObjGroupGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00047         {
00048                 $this->type = "grp";
00049                 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00050         }
00051 
00052         function viewObject()
00053         {
00054                 global $tree;
00055 
00056                 if($this->ctrl->getTargetScript() == "adm_object.php")
00057                 {
00058                         parent::viewObject();
00059                         return true;
00060                 }
00061                 else if(!$tree->checkForParentType($this->ref_id,'crs'))
00062                 {
00063                         $this->ctrl->returnToParent($this);
00064                 }
00065                 else
00066                 {
00067                         $this->initCourseContentInterface();
00068                         $this->cci_obj->cci_view();
00069                 }
00070                 return true;
00071         }
00072 
00073 
00074         function &executeCommand()
00075         {
00076                 $next_class = $this->ctrl->getNextClass($this);
00077                 $cmd = $this->ctrl->getCmd();
00078 
00079                 switch($next_class)
00080                 {
00081                         case "ilconditionhandlerinterface":
00082                                 include_once './classes/class.ilConditionHandlerInterface.php';
00083 
00084                                 if($_GET['item_id'])
00085                                 {
00086                                         $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
00087                                         $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
00088                                         $this->ctrl->forwardCommand($new_gui);
00089                                 }
00090                                 else
00091                                 {
00092                                         $new_gui =& new ilConditionHandlerInterface($this);
00093                                         $this->ctrl->forwardCommand($new_gui);
00094                                 }
00095                                 break;
00096 
00097                         case "ilregistergui":
00098                                 $this->ctrl->setReturn($this, "");   // ###
00099                                 $reg_gui = new ilRegisterGUI();
00100                                 //$reg_gui->executeCommand();
00101                                 $ret =& $this->ctrl->forwardCommand($reg_gui);
00102                                 break;
00103 
00104                         default:
00105                                 if ($this->object->requireRegistration() and !$this->object->isUserRegistered())
00106                                 {
00107                                         $this->ctrl->redirectByClass("ilRegisterGUI", "showRegistrationForm");
00108                                 }
00109 
00110                                 if (empty($cmd))
00111                                 {
00112                                         #$this->ctrl->returnToParent($this);
00113                                         // NOT ACCESSIBLE SINCE returnToParent() starts a redirect
00114                                         $cmd = "view";
00115                                 }
00116 
00117                                 // NOT ACCESSIBLE SINCE returnToParent() starts a redirect
00118                                 $cmd .= "Object";
00119                                 $this->$cmd();
00120                                 break;
00121                 }
00122         }
00123 
00127         function createObject()
00128         {
00129                 global $rbacsystem;
00130 
00131                 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
00132 
00133                 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], $new_type))
00134                 {
00135                         $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00136                 }
00137 
00138                 $data = array();
00139 
00140                 if ($_SESSION["error_post_vars"])
00141                 {
00142                         // fill in saved values in case of error
00143                         $data["fields"]["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00144                         $data["fields"]["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00145                         $data["fields"]["password"] = $_SESSION["error_post_vars"]["password"];
00146                         $data["fields"]["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];
00147                         $data["fields"]["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];
00148                 }
00149                 else
00150                 {
00151                         $data["fields"]["title"] = "";
00152                         $data["fields"]["desc"] = "";
00153                         $data["fields"]["password"] = "";
00154                         $data["fields"]["expirationdate"] = ilFormat::getDateDE();
00155                         $data["fields"]["expirationtime"] = "";
00156                 }
00157 
00158                 $this->getTemplateFile("edit",$new_type);
00159 
00160                 foreach ($data["fields"] as $key => $val)
00161                 {
00162                         $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00163                         $this->tpl->setVariable(strtoupper($key), $val);
00164 
00165                         if ($this->prepare_output)
00166                         {
00167                                 $this->tpl->parseCurrentBlock();
00168                         }
00169                 }
00170 
00171                 $stati  = array(0=>$this->lng->txt("group_status_public"),1=>$this->lng->txt("group_status_closed"));
00172 
00173                 $grp_status = $_SESSION["error_post_vars"]["group_status"];
00174 
00175                 $checked = array(0=>0,1=>0,2=>0);
00176 
00177                 switch ($_SESSION["error_post_vars"]["enable_registration"])
00178                 {
00179                         case 0:
00180                                 $checked[0]=1;
00181                                 break;
00182 
00183                         case 1:
00184                                 $checked[1]=1;
00185                                 break;
00186 
00187                         case 2:
00188                                 $checked[2]=1;
00189                                 break;
00190 
00191                         default:
00192                                 $checked[0]=1;
00193                                 break;
00194                 }
00195 
00196                 //build form
00197                 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00198                 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00199                 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00200 
00201                 $opts   = ilUtil::formSelect(0,"group_status",$stati,false,true);
00202 
00203                 $this->tpl->setVariable("FORMACTION", $this->getFormAction("save",$this->ctrl->getFormAction($this)."&new_type=".$new_type));
00204 
00205                 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($new_type."_new"));
00206                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00207                 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration_mode"));
00208 
00209                 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00210                 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($new_type."_add"));
00211                 $this->tpl->setVariable("CMD_SUBMIT", "save");
00212                 $this->tpl->setVariable("TARGET", $this->getTargetFrame("save"));
00213                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00214 
00215                 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("disabled"));
00216                 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00217                 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("enabled"));
00218                 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00219                 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("password"));
00220                 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00221 
00222                 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00223                 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));
00224                 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00225                 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00226 
00227                 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00228                 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00229                 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00230                 $this->tpl->setVariable("SELECT_GROUPSTATUS", $opts);
00231                 $this->tpl->setVariable("TXT_GROUP_STATUS", $this->lng->txt("group_status"));
00232                 $this->tpl->setVariable("TXT_GROUP_STATUS_DESC", $this->lng->txt("group_status_desc"));
00233         }
00234 
00235 
00240         function canceledObject()
00241         {
00242                 $return_location = $_GET["cmd_return_location"];
00243                 if (strcmp($return_location, "") == 0)
00244                 {
00245                         $return_location = "members";
00246                 }
00247                                 
00248                 sendInfo($this->lng->txt("action_aborted"),true);
00249                 $this->ctrl->redirect($this, $return_location);
00250         }
00251 
00256         function cancelMemberObject()
00257         {
00258                 $return_location = "members";
00259                                 
00260                 sendInfo($this->lng->txt("action_aborted"),true);
00261                 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00262         }
00263         
00268         function saveObject()
00269         {
00270                 global $rbacadmin;
00271 
00272                 // check required fields
00273                 if (empty($_POST["Fobject"]["title"]))
00274                 {
00275                         $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00276                 }
00277 
00278                 // check registration & password
00279                 if ($_POST["enable_registration"] == 2 and empty($_POST["password"]))
00280                 {
00281                         $this->ilErr->raiseError($this->lng->txt("no_password"),$this->ilErr->MESSAGE);
00282                 }
00283 
00284                 // check groupname
00285                 if (ilUtil::groupNameExists($_POST["Fobject"]["title"]))
00286 
00287                 {
00288                         $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00289                 }
00290 
00291                 // create and insert forum in objecttree
00292                 $groupObj = parent::saveObject();
00293 
00294                 // setup rolefolder & default local roles (admin & member)
00295                 $roles = $groupObj->initDefaultRoles();
00296 
00297                 // ...finally assign groupadmin role to creator of group object
00298                 $groupObj->addMember($this->ilias->account->getId(),$groupObj->getDefaultAdminRole());
00299 
00300                 $groupObj->setRegistrationFlag($_POST["enable_registration"]);//0=no registration, 1=registration enabled 2=passwordregistration
00301                 $groupObj->setPassword($_POST["password"]);
00302                 $groupObj->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00303                 $groupObj->setGroupStatus($_POST["group_status"]);              //0=public,1=private,2=closed
00304 
00305                 $this->ilias->account->addDesktopItem($groupObj->getRefId(),"grp");             
00306                 
00307                 // always send a message
00308                 sendInfo($this->lng->txt("grp_added"),true);
00309                 ilUtil::redirect($this->getReturnLocation("save",$this->ctrl->getLinkTarget($this,"")));
00310         }
00311 
00316         function updateObject()
00317         {
00318                 global $rbacsystem;
00319                 
00320                 if (!$rbacsystem->checkAccess("write",$_GET["ref_id"]) )
00321                 {
00322                         $this->ilErr->raiseError("No permissions to change group status!",$this->ilErr->MESSAGE);
00323                 }
00324 
00325                 // check required fields
00326                 if (empty($_POST["Fobject"]["title"]))
00327                 {
00328                         $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00329                 }
00330 
00331                 if ($_POST["enable_registration"] == 2 && empty($_POST["password"]) || empty($_POST["expirationdate"]) || empty($_POST["expirationtime"]) )//Password-Registration Mode
00332                 {
00333                         $this->ilErr->raiseError($this->lng->txt("grp_err_registration_data"),$this->ilErr->MESSAGE);
00334                 }
00335                 // check groupname
00336                 if (ilUtil::groupNameExists(ilUtil::stripSlashes($_POST["Fobject"]["title"]),$this->object->getId()))
00337                 {
00338                         $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00339                 }
00340 
00341                 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00342                 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00343 
00344                 if ($_POST["enable_registration"] == 2 && !ilUtil::isPassword($_POST["password"]))
00345                 {
00346                         $this->ilErr->raiseError($this->lng->txt("passwd_invalid"),$this->ilErr->MESSAGE);
00347                 }
00348 
00349                 $this->object->setRegistrationFlag($_POST["enable_registration"]);
00350                 $this->object->setPassword($_POST["password"]);
00351                 $this->object->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00352 
00353                 $this->update = $this->object->update();
00354 
00355                 sendInfo($this->lng->txt("msg_obj_modified"),true);
00356                 ilUtil::redirect($this->getReturnLocation("update",$this->ctrl->getLinkTarget($this,"members")));
00357         }
00358 
00363         function editObject()
00364         {
00365                 global $rbacsystem;
00366 
00367                 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00368                 {
00369                         $this->ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilErr->MESSAGE);
00370                 }
00371 
00372                 $data = array();
00373 
00374                 if ($_SESSION["error_post_vars"])
00375                 {
00376                         // fill in saved values in case of error
00377                         $data["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00378                         $data["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00379                         $data["registration"] = $_SESSION["error_post_vars"]["registration"];
00380                         $data["password"] = $_SESSION["error_post_vars"]["password"];
00381                         $data["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];//$datetime[0];//$this->grp_object->getExpirationDateTime()[0];
00382                         $data["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];//$datetime[1];//$this->grp_object->getExpirationDateTime()[1];
00383 
00384                 }
00385                 else
00386                 {
00387                         $data["title"] = ilUtil::prepareFormOutput($this->object->getTitle());
00388                         $data["desc"] = $this->object->getDescription();
00389                         $data["registration"] = $this->object->getRegistrationFlag();
00390                         $data["password"] = $this->object->getPassword();
00391                         $datetime = $this->object->getExpirationDateTime();
00392 
00393                         $data["expirationdate"] = $datetime[0];//$this->grp_object->getExpirationDateTime()[0];
00394                         $data["expirationtime"] =  substr($datetime[1],0,5);//$this->grp_object->getExpirationDateTime()[1];
00395 
00396                 }
00397 
00398                 $this->getTemplateFile("edit");
00399 
00400                 foreach ($data as $key => $val)
00401                 {
00402                         $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00403                         $this->tpl->setVariable(strtoupper($key), $val);
00404                         $this->tpl->parseCurrentBlock();
00405                 }
00406 
00407                 $checked = array(0=>0,1=>0,2=>0);
00408 
00409                 switch ($this->object->getRegistrationFlag())
00410                 {
00411                         case 0:
00412                                 $checked[0]=1;
00413                                 break;
00414 
00415                         case 1:
00416                                 $checked[1]=1;
00417                                 break;
00418 
00419                         case 2:
00420                                 $checked[2]=1;
00421                                 break;
00422                 }
00423 
00424                 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00425                 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00426                 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00427 
00428                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));//$this->getFormAction("update",$this->ctrl->getFormAction($this)));
00429                 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt("grp_edit"));
00430                 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00431                 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00432                 $this->tpl->setVariable("CMD_CANCEL", "canceled");
00433                 $this->tpl->setVariable("CMD_SUBMIT", "update");
00434 
00435                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00436                 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration_mode"));
00437 
00438                 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("disabled"));
00439                 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00440                 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("enabled"));
00441                 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00442                 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("password"));
00443                 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00444 
00445                 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00446                 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));           
00447                 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00448                 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00449 
00450                 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00451                 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00452                 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00453         }
00454 
00459         function confirmationObject($user_id="", $confirm, $cancel, $info="", $status="",$a_cmd_return_location = "")
00460         {
00461                 $this->data["cols"] = array("type", "title", "description", "last_change");
00462 
00463                 if (is_array($user_id))
00464                 {
00465                         foreach ($user_id as $id)
00466                         {
00467                                 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
00468 
00469                                 $this->data["data"]["$id"] = array(
00470                                         "type"        => $obj_data->getType(),
00471                                         "title"       => $obj_data->getTitle(),
00472                                         "desc"        => $obj_data->getDescription(),
00473                                         "last_update" => $obj_data->getLastUpdateDate(),
00474 
00475                                         );
00476                         }
00477                 }
00478                 else
00479                 {
00480                         $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($user_id);
00481 
00482                         $this->data["data"]["$id"] = array(
00483                                 "type"        => $obj_data->getType(),
00484                                 "title"       => $obj_data->getTitle(),
00485                                 "desc"        => $obj_data->getDescription(),
00486                                 "last_update" => $obj_data->getLastUpdateDate(),
00487                                 );
00488                 }
00489 
00490                 //write  in sessionvariables
00491                 if(is_array($user_id))
00492                 {
00493                         $_SESSION["saved_post"]["user_id"] = $user_id;
00494                 }
00495                 else
00496                 {
00497                         $_SESSION["saved_post"]["user_id"][0] = $user_id;
00498                 }
00499 
00500                 if (isset($status))
00501                 {
00502                         $_SESSION["saved_post"]["status"] = $status;
00503                 }
00504 
00505                 $this->data["buttons"] = array( $cancel  => $this->lng->txt("cancel"),
00506                                                 $confirm  => $this->lng->txt("confirm"));
00507 
00508                 $this->getTemplateFile("confirm");
00509 
00510                 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00511 
00512                 infoPanel();
00513 
00514                 sendInfo($this->lng->txt($info));
00515 
00516                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this)."&cmd_return_location=".$a_cmd_return_location);
00517 
00518                 // BEGIN TABLE HEADER
00519                 foreach ($this->data["cols"] as $key)
00520                 {
00521                         $this->tpl->setCurrentBlock("table_header");
00522                         $this->tpl->setVariable("TEXT",$this->lng->txt($key));
00523                         $this->tpl->parseCurrentBlock();
00524                 }
00525                 // END TABLE HEADER
00526 
00527                 // BEGIN TABLE DATA
00528                 $counter = 0;
00529 
00530                 foreach ($this->data["data"] as $key => $value)
00531                 {
00532                         // BEGIN TABLE CELL
00533                         foreach ($value as $key => $cell_data)
00534                         {
00535                                 $this->tpl->setCurrentBlock("table_cell");
00536 
00537                                 // CREATE TEXT STRING
00538                                 if ($key == "type")
00539                                 {
00540                                         $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
00541                                 }
00542                                 else
00543                                 {
00544                                         $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
00545                                 }
00546                                 $this->tpl->parseCurrentBlock();
00547                         }
00548 
00549                         $this->tpl->setCurrentBlock("table_row");
00550                         $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00551                         $this->tpl->parseCurrentBlock();
00552                         // END TABLE CELL
00553                 }
00554                 // END TABLE DATA
00555 
00556                 // BEGIN OPERATION_BTN
00557                 foreach ($this->data["buttons"] as $name => $value)
00558                 {
00559                         $this->tpl->setCurrentBlock("operation_btn");
00560                         $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("spacer.gif"));
00561                         $this->tpl->setVariable("BTN_NAME",$name);
00562                         $this->tpl->setVariable("BTN_VALUE",$value);
00563                         $this->tpl->parseCurrentBlock();
00564                 }
00565         }
00566 
00571         function leaveGrpObject()
00572         {
00573                 $member = array($_GET["mem_id"]);
00574                 //set methods that are called after confirmation
00575                 $confirm = "confirmedDeleteMember";
00576                 $cancel  = "canceled";
00577                 $info    = "info_delete_sure";
00578                 $status  = "";
00579                 $return  = "";
00580                 $this->confirmationObject($member, $confirm, $cancel, $info, $status, $return);
00581         }
00582 
00587         function assignMemberObject()
00588         {
00589                 $user_ids = $_POST["id"];
00590 
00591                 if (empty($user_ids[0]))
00592                 {
00593                         // TODO: jumps back to grp content. go back to last search result
00594                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00595                 }
00596 
00597                 foreach ($user_ids as $new_member)
00598                 {
00599                         if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00600                         {
00601                                 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00602                         }
00603                 }
00604 
00605                 unset($_SESSION["saved_post"]);
00606 
00607                 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00608                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00609         }
00610 
00615         function addUserObject()
00616         {
00617                 $user_ids = $_POST["user"];
00618 
00619                 if (empty($user_ids[0]))
00620                 {
00621                         // TODO: jumps back to grp content. go back to last search result
00622                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00623                 }
00624 
00625                 foreach ($user_ids as $new_member)
00626                 {
00627                         if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00628                         {
00629                                 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00630                         }
00631                 }
00632 
00633                 unset($_SESSION["saved_post"]);
00634 
00635                 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00636                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00637         }
00638 
00643         function removeMemberObject()
00644         {
00645                 $user_ids = array();
00646 
00647                 if (isset($_POST["user_id"]))
00648                 {
00649                         $user_ids = $_POST["user_id"];
00650                 }
00651                 else if (isset($_GET["mem_id"]))
00652                 {
00653                         $user_ids[] = $_GET["mem_id"];
00654                 }
00655 
00656                 if (empty($user_ids[0]))
00657                 {
00658                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00659                 }
00660                 
00661                 if (count($user_ids) == 1 and $this->ilias->account->getId() != $user_ids[0])
00662                 {
00663                         if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]) 
00664                                 and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00665                         {
00666                                 $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
00667                         }
00668                 }
00669                 //bool value: says if $users_ids contains current user id
00670                 $is_dismiss_me = array_search($this->ilias->account->getId(),$user_ids);
00671                 
00672                 $confirm = "confirmedRemoveMember";
00673                 $cancel  = "canceled";
00674                 $info    = ($is_dismiss_me !== false) ? "grp_dismiss_myself" : "grp_dismiss_member";
00675                 $status  = "";
00676                 $return  = "members";
00677                 $this->confirmationObject($user_ids, $confirm, $cancel, $info, $status, $return);
00678         }
00679 
00686         function confirmedRemoveMemberObject()
00687         {
00688                 //User needs to have administrative rights to remove members...
00689                 foreach($_SESSION["saved_post"]["user_id"] as $member_id)
00690                 {
00691                         $err_msg = $this->object->removeMember($member_id);
00692 
00693                         if (strlen($err_msg) > 0)
00694                         {
00695                                 $this->ilErr->raiseError($this->lng->txt($err_msg),$this->ilErr->MESSAGE);
00696                         }
00697                 }
00698 
00699                 unset($_SESSION["saved_post"]);
00700 
00701                 sendInfo($this->lng->txt("grp_msg_membership_annulled"),true);
00702                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00703         }
00704 
00705 
00710         function changeMemberObject()
00711         {
00712                 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
00713                 {
00714                         $_GET["sort_by"] = "login";
00715                 }
00716 
00717                 $member_ids = array();
00718 
00719                 if (isset($_POST["user_id"]))
00720                 {
00721                         $member_ids = $_POST["user_id"];
00722                 }
00723                 else if (isset($_GET["mem_id"]))
00724                 {
00725                         $member_ids[0] = $_GET["mem_id"];
00726                 }
00727 
00728                 if (empty($member_ids[0]))
00729                 {
00730                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00731                 }
00732 
00733                 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]) 
00734                         and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00735                 {
00736                         $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
00737                 }
00738 
00739                 $stati = array_flip($this->object->getLocalGroupRoles());
00740 
00741                 //build data structure
00742                 foreach ($member_ids as $member_id)
00743                 {
00744                         $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
00745                         $mem_status = $this->object->getMemberRoles($member_id);
00746 
00747                         $this->data["data"][$member->getId()]= array(
00748                                         "login"         => $member->getLogin(),
00749                                         "firstname"     => $member->getFirstname(),
00750                                         "lastname"      => $member->getLastname(),
00751                                         "last_visit"=> ilFormat::formatDate($member->getLastLogin()),
00752                                         "grp_role"      => ilUtil::formSelect($mem_status,"member_status_select[".$member->getId()."][]",$stati,true,true,3)
00753                                 );
00754                 }
00755                 
00756                 unset($member);
00757                 
00758                 infoPanel();
00759 
00760                 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
00761 
00762                 // load template for table content data
00763                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00764 
00765                 $this->data["buttons"] = array( "members"  => $this->lng->txt("back"),
00766                                                                                 "updateMemberStatus"  => $this->lng->txt("confirm"));
00767 
00768                 $this->tpl->setCurrentBlock("tbl_action_row");
00769                 $this->tpl->setVariable("COLUMN_COUNTS",5);
00770                 //$this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00771                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00772 
00773                 foreach ($this->data["buttons"] as $name => $value)
00774                 {
00775                         $this->tpl->setCurrentBlock("tbl_action_btn");
00776                         $this->tpl->setVariable("BTN_NAME",$name);
00777                         $this->tpl->setVariable("BTN_VALUE",$value);
00778                         $this->tpl->parseCurrentBlock();
00779                 }
00780 
00781                 //sort data array
00782                 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
00783                 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00784                 
00785                 // create table
00786                 include_once "./classes/class.ilTableGUI.php";
00787 
00788                 $tbl = new ilTableGUI($output);
00789 
00790                 // title & header columns
00791                 $tbl->setTitle($this->lng->txt("grp_mem_change_status"),"icon_usr_b.gif",$this->lng->txt("grp_mem_change_status"));
00792                 //$tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
00793                 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role")));
00794                 $tbl->setHeaderVars(array("login","firstname","lastname","last_visit","role"),$this->ctrl->getParameterArray($this,"",false));
00795 
00796                 $tbl->setColumnWidth(array("20%","20%","20%","40%"));
00797 
00798                 $this->tpl->setCurrentBlock("tbl_action_row");
00799                 $this->tpl->parseCurrentBlock();
00800 
00801                 // control
00802                 $tbl->setOrderColumn($_GET["sort_by"]);
00803                 $tbl->setOrderDirection($_GET["sort_order"]);
00804                 $tbl->setLimit($_GET["limit"]);
00805                 $tbl->setOffset($_GET["offset"]);
00806                 $tbl->setMaxCount(count($this->data["data"]));
00807 
00808                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00809 
00810                 // render table
00811                 $tbl->render();
00812         }
00813         
00817         function membersObject()
00818         {
00819                 global $rbacsystem,$ilBench,$ilDB;
00820 
00821                 $ilBench->start("GroupGUI", "membersObject");
00822                 
00823                 //if current user is admin he is able to add new members to group
00824                 $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\"/>";
00825                 $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\"/>";
00826                 $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\"/>";
00827 
00828                 // store access checks to improve performance
00829                 $access_delete = $rbacsystem->checkAccess("delete",$this->object->getRefId());
00830                 $access_leave = $rbacsystem->checkAccess("leave",$this->object->getRefId());
00831                 $access_write = $rbacsystem->checkAccess("write",$this->object->getRefId());
00832 
00833                 $member_ids = $this->object->getGroupMemberIds();
00834                 
00835                 // fetch all users data in one shot to improve performance
00836                 $members = $this->object->getGroupMemberData($member_ids);
00837                 
00838                 $account_id = $this->ilias->account->getId();
00839                 $counter = 0;
00840 
00841                 foreach ($members as $mem)
00842                 {
00843                         $link_contact = "mail_new.php?type=new&rcp_to=".$mem["login"];
00844                         $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$mem["id"];
00845                 
00846                         if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00847                         {
00848                                 $link_leave = $this->ctrl->getLinkTarget($this,"RemoveMember")."&mem_id=".$mem["id"];
00849                         }
00850 
00851                         //build function
00852                         if ($access_delete && $access_write)
00853                         {
00854                                 $member_functions = "<a href=\"$link_change\">$val_change</a>";
00855                         }
00856 
00857                         if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00858                         {
00859                                 $member_functions .="<a href=\"$link_leave\">$val_leave</a>";
00860                         }
00861 
00862                         // this is twice as fast than the code above
00863                         $str_member_roles = $this->object->getMemberRolesTitle($mem["id"]);
00864 
00865                         if ($access_delete && $access_write)
00866                         {
00867                                 $result_set[$counter][] = ilUtil::formCheckBox(0,"user_id[]",$mem["id"]);
00868                         }
00869                         
00870                         $user_ids[$counter] = $mem["id"];
00871             
00872             //discarding the checkboxes
00873                         $result_set[$counter][] = $mem["login"];
00874                         $result_set[$counter][] = $mem["firstname"];
00875                         $result_set[$counter][] = $mem["lastname"];
00876                         $result_set[$counter][] = ilFormat::formatDate($mem["last_login"]);
00877                         $result_set[$counter][] = $str_member_roles;
00878                         $result_set[$counter][] = "<a href=\"$link_contact\">".$val_contact."</a>".$member_functions;
00879 
00880                         ++$counter;
00881 
00882                         unset($member_functions);
00883                 }
00884 
00885                 $ilBench->stop("GroupGUI", "membersObject");
00886 
00887                 return $this->__showMembersTable($result_set,$user_ids);
00888     }
00889 
00890         function showNewRegistrationsObject()
00891         {
00892                 global $rbacsystem;
00893 
00894                 //get new applicants
00895                 $applications = $this->object->getNewRegistrations();
00896                 
00897                 if (!$applications)
00898                 {
00899                         $this->ilErr->raiseError($this->lng->txt("no_applications"),$this->ilErr->MESSAGE);
00900                 }
00901                 
00902                 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
00903                 {
00904                         $_GET["sort_by"] = "login";
00905                 }
00906 
00907                 $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\"/>";
00908 
00909                 foreach ($applications as $applicant)
00910                 {
00911                         $user =& $this->ilias->obj_factory->getInstanceByObjId($applicant->user_id);
00912 
00913                         $link_contact = "mail_new.php?mobj_id=3&type=new&rcp_to=".$user->getLogin();
00914                         $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$user->getId();
00915                         $member_functions = "<a href=\"$link_change\">$val_change</a>";
00916                         if (strcmp($_GET["check"], "all") == 0)
00917                         {
00918                                 $checked = 1;
00919                         }
00920                         else
00921                         {
00922                                 $checked = 0;
00923                         }
00924                         $this->data["data"][$user->getId()]= array(
00925                                 "check"         => ilUtil::formCheckBox($checked,"user_id[]",$user->getId()),
00926                                 "username"      => $user->getLogin(),
00927                                 "fullname"      => $user->getFullname(),
00928                                 "subject"       => $applicant->subject,
00929                                 "date"          => $applicant->application_date,
00930                                 "functions"     => "<a href=\"$link_contact\">".$val_contact."</a>"
00931                                 );
00932 
00933                                 unset($member_functions);
00934                                 unset($user);
00935                 }
00936                 // load template for table content data
00937                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this,"post"));
00938 
00939                 $this->data["buttons"] = array( "refuseApplicants"  => $this->lng->txt("refuse"),
00940                                                                                 "assignApplicants"  => $this->lng->txt("assign"));
00941 
00942                 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
00943 
00944                 //prepare buttons [cancel|assign]
00945                 foreach ($this->data["buttons"] as $name => $value)
00946                 {
00947                         $this->tpl->setCurrentBlock("tbl_action_btn");
00948                         $this->tpl->setVariable("BTN_NAME",$name);
00949                         $this->tpl->setVariable("BTN_VALUE",$value);
00950                         $this->tpl->parseCurrentBlock();
00951                 }
00952                 
00953                 $this->tpl->setCurrentBlock("tbl_action_plain_select");
00954                 $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>");
00955                 $this->tpl->parseCurrentBlock();
00956 
00957                 if (isset($this->data["data"]))
00958                 {
00959                         //sort data array
00960                         $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
00961                         $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00962                 }
00963 
00964                 $this->tpl->setCurrentBlock("tbl_action_row");
00965                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00966                 $this->tpl->setVariable("COLUMN_COUNTS",6);
00967                 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00968 
00969                 // create table
00970                 include_once "./classes/class.ilTableGUI.php";
00971                 $tbl = new ilTableGUI($output);
00972                 // title & header columns
00973                 $tbl->setTitle($this->lng->txt("group_new_registrations"),"icon_usr_b.gif",$this->lng->txt("group_applicants"));
00974                 //$tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
00975                 $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")));
00976                 $tbl->setHeaderVars(array("","login","fullname","subject","application_date","functions"),$this->ctrl->getParameterArray($this,"",false));
00977                 $tbl->setColumnWidth(array("","20%","20%","35%","20%","5%"));
00978 
00979                 // control
00980                 $tbl->setOrderColumn($_GET["sort_by"]);
00981                 $tbl->setOrderDirection($_GET["sort_order"]);
00982                 $tbl->setLimit($_GET["limit"]);
00983                 $tbl->setOffset($_GET["offset"]);
00984                 $tbl->setMaxCount(count($this->data["data"]));
00985                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00986                 $tbl->render();
00987         }
00988 
00993         function assignApplicantsObject()
00994         {
00995                 $user_ids = $_POST["user_id"];
00996 
00997                 if (empty($user_ids[0]))
00998                 {
00999                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01000                 }
01001 
01002                 $mail = new ilMail($_SESSION["AccountId"]);
01003 
01004                 foreach ($user_ids as $new_member)
01005                 {
01006                         $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01007 
01008                         if (!$this->object->addMember($new_member, $this->object->getDefaultMemberRole()))
01009                         {
01010                                 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
01011                         }
01012 
01013                         $this->object->deleteApplicationListEntry($new_member);
01014                         $mail->sendMail($user->getLogin(),"","","New Membership in Group: ".$this->object->getTitle(),"You have been assigned to the group as a member. You can now access all group specific objects like forums, learningmodules,etc..",array(),array('normal'));
01015                 }
01016 
01017                 sendInfo($this->lng->txt("grp_msg_applicants_assigned"),true);
01018                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01019         }
01020 
01025         function refuseApplicantsObject()
01026         {
01027                 $user_ids = $_POST["user_id"];
01028 
01029                 if (empty($user_ids[0]))
01030                 {
01031                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01032                 }
01033 
01034                 $mail = new ilMail($_SESSION["AccountId"]);
01035 
01036                 foreach ($user_ids as $new_member)
01037                 {
01038                         $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01039 
01040                         $this->object->deleteApplicationListEntry($new_member);
01041                         $mail->sendMail($user->getLogin(),"","","Membership application refused: Group ".$this->object->getTitle(),"Your application has been refused.",array(),array('normal'));
01042                 }
01043 
01044                 sendInfo($this->lng->txt("grp_msg_applicants_removed"),true);
01045                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01046         }
01047 
01052         function updateMemberStatusObject()
01053         {
01054                 global $rbacsystem;
01055 
01056                 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()) )
01057                 {
01058                         $this->ilErr->raiseError("permission_denied",$this->ilErr->MESSAGE);
01059                 }
01060 
01061                 if (isset($_POST["member_status_select"]))
01062                 {
01063                         foreach ($_POST["member_status_select"] as $key=>$value)
01064                         {
01065                                 $this->object->setMemberStatus($key,$value);
01066                         }
01067                 }
01068 
01069                 sendInfo($this->lng->txt("msg_obj_modified"),true);
01070                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01071         }
01072 
01073         function searchUserFormObject()
01074         {
01075                 global $rbacsystem;
01076 
01077                 $this->lng->loadLanguageModule('search');
01078 
01079                 // MINIMUM ACCESS LEVEL = 'administrate'
01080                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01081                 {
01082                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01083                 }
01084 
01085                 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members_search.html");
01086                 
01087                 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
01088                 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("grp_search_members"));
01089                 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
01090                 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["grp_search_str"] ? $_SESSION["grp_search_str"] : "");
01091                 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
01092                 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
01093                 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
01094                 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
01095                 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
01096                 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
01097                 
01098         $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
01099                 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
01100                 $role = ($_POST["search_for"] == "role") ? 1 : 0;
01101 
01102                 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
01103                 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
01104         $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
01105 
01106                 $this->__unsetSessionVariables();
01107         }
01108         
01109         function searchObject()
01110         {
01111                 global $rbacsystem,$tree;
01112 
01113                 $_SESSION["grp_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["grp_search_str"];
01114                 $_SESSION["grp_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["grp_search_for"];
01115                 
01116                 // MINIMUM ACCESS LEVEL = 'administrate'
01117                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01118                 {
01119                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01120                 }
01121 
01122                 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
01123                 {
01124                         sendInfo($this->lng->txt("grp_search_enter_search_string"));
01125                         $this->searchUserFormObject();
01126                         
01127                         return false;
01128                 }
01129 
01130                 if(!count($result = $this->__search(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"])))
01131                 {
01132                         sendInfo($this->lng->txt("grp_no_results_found"));
01133                         $this->searchUserFormObject();
01134 
01135                         return false;
01136                 }
01137 
01138                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01139                 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01140                 
01141                 $counter = 0;
01142                 $f_result = array();
01143 
01144                 switch($_POST["search_for"])
01145                 {
01146                 case "usr":
01147                                 foreach($result as $user)
01148                                 {
01149                                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user["id"],false))
01150                                         {
01151                                                 continue;
01152                                         }
01153                                         
01154                                         $user_ids[$counter] = $user["id"];
01155                                         
01156                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user["id"]);
01157                                         $f_result[$counter][] = $tmp_obj->getLogin();
01158                                         $f_result[$counter][] = $tmp_obj->getFirstname();
01159                                         $f_result[$counter][] = $tmp_obj->getLastname();
01160                                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01161 
01162                                         unset($tmp_obj);
01163                                         ++$counter;
01164                                 }
01165                                 $this->__showSearchUserTable($f_result,$user_ids);
01166 
01167                                 return true;
01168 
01169                         case "role":
01170                                 foreach($result as $role)
01171                                 {
01172                     // exclude anonymous role
01173                     if ($role["id"] == ANONYMOUS_ROLE_ID)
01174                     {
01175                         continue;
01176                     }
01177 
01178                     if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
01179                                         {
01180                                                 continue;
01181                                         }
01182                                         
01183                                     // exclude roles with no users assigned to
01184                     if ($tmp_obj->getCountMembers() == 0)
01185                     {
01186                         continue;
01187                     }
01188                     
01189                     $role_ids[$counter] = $role["id"];
01190                     
01191                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
01192                                         $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01193                                         $f_result[$counter][] = $tmp_obj->getCountMembers();
01194                                         
01195                                         unset($tmp_obj);
01196                                         ++$counter;
01197                                 }
01198                                 
01199                                 $this->__showSearchRoleTable($f_result,$role_ids);
01200 
01201                                 return true;
01202                                 
01203                         case "grp":
01204                                 foreach($result as $group)
01205                                 {
01206                                         if(!$tree->isInTree($group["id"]))
01207                                         {
01208                                                 continue;
01209                                         }
01210                                         
01211                                         if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
01212                                         {
01213                                                 continue;
01214                                         }
01215                                         
01216                     // exclude myself :-)
01217                     if ($tmp_obj->getId() == $this->object->getId())
01218                     {
01219                         continue;
01220                     }
01221                     
01222                     $grp_ids[$counter] = $group["id"];
01223                     
01224                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
01225                                         $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01226                                         $f_result[$counter][] = $tmp_obj->getCountMembers();
01227                                         
01228                                         unset($tmp_obj);
01229                                         ++$counter;
01230                                 }
01231                                 
01232                                 if(!count($f_result))
01233                                 {
01234                                         sendInfo($this->lng->txt("grp_no_results_found"));
01235                                         $this->searchUserFormObject();
01236 
01237                                         return false;
01238                                 }
01239                                 
01240                                 $this->__showSearchGroupTable($f_result,$grp_ids);
01241 
01242                                 return true;
01243                 }
01244         }
01245 
01246         function searchCancelledObject ()
01247         {
01248                 sendInfo($this->lng->txt("action_aborted"),true);
01249                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01250         }
01251 
01252         // get tabs
01253         function getTabs(&$tabs_gui)
01254         {
01255                 global $rbacsystem;
01256 
01257                 $this->ctrl->setParameter($this,"ref_id",$this->ref_id);
01258 
01259                 if ($rbacsystem->checkAccess('read',$this->ref_id))
01260                 {
01261                         $tabs_gui->addTarget("view_content",
01262                                 $this->ctrl->getLinkTarget($this, ""), "", get_class($this));
01263                 }
01264 
01265                 if ($rbacsystem->checkAccess('write',$this->ref_id))
01266                 {
01267                         $tabs_gui->addTarget("edit_properties",
01268                                 $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this));
01269 //  Export tab to export group members to an excel file. Only available for group admins
01270 //  commented out for following reason: clearance needed with developer list
01271 //                      $tabs_gui->addTarget("export",
01272 //                              $this->ctrl->getLinkTarget($this, "export"), "export", get_class($this));
01273                 }
01274 
01275                 if ($rbacsystem->checkAccess('read',$this->ref_id))
01276                 {
01277                         $tabs_gui->addTarget("group_members",
01278                                 $this->ctrl->getLinkTarget($this, "members"), "members", get_class($this));
01279                 }
01280                 
01281                 $applications = $this->object->getNewRegistrations();
01282 
01283                 if (is_array($applications) and $this->object->isAdmin($this->ilias->account->getId()))
01284                 {
01285                         $tabs_gui->addTarget("group_new_registrations",
01286                                 $this->ctrl->getLinkTarget($this, "ShownewRegistrations"), "ShownewRegistrations", get_class($this));
01287                 }
01288 
01289                 if ($rbacsystem->checkAccess('edit_permission',$this->ref_id))
01290                 {
01291                         $tabs_gui->addTarget("perm_settings",
01292                                 $this->ctrl->getLinkTarget($this, "perm"), "perm", get_class($this));
01293                 }
01294                 
01295                 // show clipboard in repository
01296                 if ($this->ctrl->getTargetScript() == "repository.php" and !empty($_SESSION['il_rep_clipboard']))
01297                 {
01298                         $tabs_gui->addTarget("clipboard",
01299                                  $this->ctrl->getLinkTarget($this, "clipboard"), "clipboard", get_class($this));
01300                 }
01301 
01302                 if ($this->ctrl->getTargetScript() == "adm_object.php")
01303                 {
01304                         $tabs_gui->addTarget("show_owner",
01305                                 $this->ctrl->getLinkTarget($this, "owner"), "owner", get_class($this));
01306                         
01307                         if ($this->tree->getSavedNodeData($this->ref_id))
01308                         {
01309                                 $tabs_gui->addTarget("trash",
01310                                         $this->ctrl->getLinkTarget($this, "trash"), "trash", get_class($this));
01311                         }
01312                 }
01313         }
01314 
01315 
01316         // IMPORT FUNCTIONS
01317 
01318         function importObject()
01319         {
01320                 global $rbacsystem;
01321 
01322                 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"],"grp"))
01323                 {
01324                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
01325                 }
01326 
01327                 $this->getTemplateFile("import","grp");
01328 
01329                 $this->tpl->setVariable("FORMACTION","adm_object.php?ref_id=".$this->ref_id."&cmd=gateway&new_type=grp");
01330                 $this->tpl->setVariable("TXT_IMPORT_GROUP",$this->lng->txt("group_import"));
01331                 $this->tpl->setVariable("TXT_IMPORT_FILE",$this->lng->txt("group_import_file"));
01332                 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt("cancel"));
01333                 $this->tpl->setVariable("BTN_IMPORT",$this->lng->txt("import"));
01334 
01335                 return true;
01336         }
01337 
01338         function performImportObject()
01339         {
01340 
01341                 $this->__initFileObject();
01342 
01343                 if(!$this->file_obj->storeUploadedFile($_FILES["importFile"]))  // STEP 1 save file in ...import/mail
01344                 {
01345                         $this->message = $this->lng->txt("import_file_not_valid"); 
01346                         $this->file_obj->unlinkLast();
01347                 }
01348                 else if(!$this->file_obj->unzip())
01349                 {
01350                         $this->message = $this->lng->txt("cannot_unzip_file");                  // STEP 2 unzip uplaoded file
01351                         $this->file_obj->unlinkLast();
01352                 }
01353                 else if(!$this->file_obj->findXMLFile())                                                // STEP 3 getXMLFile
01354                 {
01355                         $this->message = $this->lng->txt("cannot_find_xml");
01356                         $this->file_obj->unlinkLast();
01357                 }
01358                 else if(!$this->__initParserObject($this->file_obj->getXMLFile()) or !$this->parser_obj->startParsing())
01359                 {
01360                         $this->message = $this->lng->txt("import_parse_error").":<br/>"; // STEP 5 start parsing
01361                 }
01362 
01363                 // FINALLY CHECK ERROR
01364                 if(!$this->message)
01365                 {
01366                         sendInfo($this->lng->txt("import_grp_finished"),true);
01367                         ilUtil::redirect("adm_object.php?ref_id=".$_GET["ref_id"]);
01368                 }
01369                 else
01370                 {
01371                         sendInfo($this->message);
01372                         $this->importObject();
01373                 }
01374         }
01375 
01376 
01377         // PRIVATE IMPORT METHODS
01378         function __initFileObject()
01379         {
01380                 include_once "classes/class.ilFileDataImportGroup.php";
01381 
01382                 $this->file_obj =& new ilFileDataImportGroup();
01383 
01384                 return true;
01385         }
01386 
01387         function __initParserObject($a_xml_file)
01388         {
01389                 include_once "classes/class.ilGroupImportParser.php";
01390 
01391                 $this->parser_obj =& new ilGroupImportParser($a_xml_file,$this->ref_id);
01392 
01393                 return true;
01394         }
01395         
01396         // METHODS FOR COURSE CONTENT INTERFACE
01397         function initCourseContentInterface()
01398         {
01399                 global $ilCtrl;
01400 
01401                 include_once "./course/classes/class.ilCourseContentInterface.php";
01402                 
01403                 $this->object->ctrl =& $ilCtrl;
01404                 $this->cci_obj =& new ilCourseContentInterface($this,$this->object->getRefId());
01405         }
01406 
01407         function cciEditObject()
01408         {
01409                 global $rbacsystem;
01410 
01411                 // CHECK ACCESS
01412                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01413                 {
01414                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01415                 }
01416 
01417                 $this->initCourseContentInterface();
01418                 $this->cci_obj->cci_edit();
01419 
01420                 return true;;
01421         }
01422 
01423         function cciUpdateObject()
01424         {
01425                 global $rbacsystem;
01426 
01427                 // CHECK ACCESS
01428                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01429                 {
01430                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01431                 }
01432 
01433                 $this->initCourseContentInterface();
01434                 $this->cci_obj->cci_update();
01435 
01436                 return true;;
01437         }
01438         function cciMoveObject()
01439         {
01440                 global $rbacsystem;
01441 
01442                 // CHECK ACCESS
01443                 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01444                 {
01445                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01446                 }
01447 
01448                 $this->initCourseContentInterface();
01449                 $this->cci_obj->cci_move();
01450 
01451                 return true;;
01452         }
01453 
01454         function __unsetSessionVariables()
01455         {
01456                 unset($_SESSION["grp_delete_member_ids"]);
01457                 unset($_SESSION["grp_delete_subscriber_ids"]);
01458                 unset($_SESSION["grp_search_str"]);
01459                 unset($_SESSION["grp_search_for"]);
01460                 unset($_SESSION["grp_role"]);
01461                 unset($_SESSION["grp_group"]);
01462                 unset($_SESSION["grp_archives"]);
01463         }
01464         
01465         function __search($a_search_string,$a_search_for)
01466         {
01467                 include_once("class.ilSearch.php");
01468 
01469                 $this->lng->loadLanguageModule("content");
01470                 $search =& new ilSearch($_SESSION["AccountId"]);
01471                 $search->setPerformUpdate(false);
01472                 $search->setSearchString(ilUtil::stripSlashes($a_search_string));
01473                 $search->setCombination("and");
01474                 $search->setSearchFor(array(0 => $a_search_for));
01475                 $search->setSearchType('new');
01476 
01477                 if($search->validate($message))
01478                 {
01479                         $search->performSearch();
01480                 }
01481                 else
01482                 {
01483                         sendInfo($message,true);
01484                         $this->ctrl->redirect($this,"searchUserForm");
01485                 }
01486 
01487                 return $search->getResultByType($a_search_for);
01488         }
01489 
01490         function __showSearchUserTable($a_result_set,$a_user_ids = NULL, $a_cmd = "search")
01491         {
01492         $return_to  = "searchUserForm";
01493         
01494         if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
01495         {
01496             $return_to = "search";
01497         }
01498 
01499                 $tbl =& $this->__initTableGUI();
01500                 $tpl =& $tbl->getTemplateObject();
01501 
01502                 // SET FORMACTION
01503                 $tpl->setCurrentBlock("tbl_form_header");
01504                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01505                 $tpl->parseCurrentBlock();
01506 
01507                 $tpl->setCurrentBlock("tbl_action_btn");
01508                 $tpl->setVariable("BTN_NAME",$return_to);
01509                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01510                 $tpl->parseCurrentBlock();
01511 
01512                 $tpl->setCurrentBlock("tbl_action_btn");
01513                 $tpl->setVariable("BTN_NAME","addUser");
01514                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
01515                 $tpl->parseCurrentBlock();
01516                 
01517                 if (!empty($a_user_ids))
01518                 {
01519                         // set checkbox toggles
01520                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01521                         $tpl->setVariable("JS_VARNAME","user");                 
01522                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
01523                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01524                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01525                         $tpl->parseCurrentBlock();
01526                 }
01527 
01528                 $tpl->setCurrentBlock("tbl_action_row");
01529                 $tpl->setVariable("COLUMN_COUNTS",5);
01530                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01531                 $tpl->parseCurrentBlock();
01532 
01533                 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01534                 $tbl->setHeaderNames(array("",
01535                                                                    $this->lng->txt("username"),
01536                                                                    $this->lng->txt("firstname"),
01537                                                                    $this->lng->txt("lastname"),
01538                                                                    $this->lng->txt("last_visit")));
01539                 $tbl->setHeaderVars(array("",
01540                                                                   "login",
01541                                                                   "firstname",
01542                                                                   "lastname",
01543                                                                   "last_visit"),
01544                                                         array("ref_id" => $this->object->getRefId(),
01545                                                                   "cmd" => $a_cmd,
01546                                                                   "cmdClass" => "ilobjgroupgui",
01547                                                                   "cmdNode" => $_GET["cmdNode"]));
01548 
01549                 $tbl->setColumnWidth(array("","33%","33%","33%"));
01550 
01551                 $this->__setTableGUIBasicData($tbl,$a_result_set);
01552                 $tbl->render();
01553                 
01554                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01555 
01556                 return true;
01557         }
01558 
01559         function __showSearchRoleTable($a_result_set,$a_role_ids = NULL)
01560         {
01561                 $tbl =& $this->__initTableGUI();
01562                 $tpl =& $tbl->getTemplateObject();
01563 
01564                 $tpl->setCurrentBlock("tbl_form_header");
01565                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01566                 $tpl->parseCurrentBlock();
01567 
01568                 $tpl->setCurrentBlock("tbl_action_btn");
01569                 $tpl->setVariable("BTN_NAME","searchUserForm");
01570                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01571                 $tpl->parseCurrentBlock();
01572 
01573                 $tpl->setCurrentBlock("tbl_action_btn");
01574                 $tpl->setVariable("BTN_NAME","listUsersRole");
01575                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01576                 $tpl->parseCurrentBlock();
01577                 
01578                 if (!empty($a_role_ids))
01579                 {
01580                         // set checkbox toggles
01581                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01582                         $tpl->setVariable("JS_VARNAME","role");                 
01583                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_role_ids));
01584                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01585                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01586                         $tpl->parseCurrentBlock();
01587                 }
01588 
01589                 $tpl->setCurrentBlock("tbl_action_row");
01590                 $tpl->setVariable("COLUMN_COUNTS",5);
01591                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01592                 $tpl->parseCurrentBlock();
01593 
01594                 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01595                 $tbl->setHeaderNames(array("",
01596                                                                    $this->lng->txt("obj_role"),
01597                                                                    $this->lng->txt("grp_count_members")));
01598                 $tbl->setHeaderVars(array("",
01599                                                                   "title",
01600                                                                   "nr_members"),
01601                                                         array("ref_id" => $this->object->getRefId(),
01602                                                                   "cmd" => "search",
01603                                                                   "cmdClass" => "ilobjgroupgui",
01604                                                                   "cmdNode" => $_GET["cmdNode"]));
01605 
01606                 $tbl->setColumnWidth(array("","80%","19%"));
01607 
01608 
01609                 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
01610                 $tbl->render();
01611                 
01612                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01613 
01614                 return true;
01615         }
01616 
01617         function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
01618         {
01619         $tbl =& $this->__initTableGUI();
01620                 $tpl =& $tbl->getTemplateObject();
01621 
01622                 $tpl->setCurrentBlock("tbl_form_header");
01623                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01624                 $tpl->parseCurrentBlock();
01625 
01626                 $tpl->setCurrentBlock("tbl_action_btn");
01627                 $tpl->setVariable("BTN_NAME","searchUserForm");
01628                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01629                 $tpl->parseCurrentBlock();
01630 
01631                 $tpl->setCurrentBlock("tbl_action_btn");
01632                 $tpl->setVariable("BTN_NAME","listUsersGroup");
01633                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01634                 $tpl->parseCurrentBlock();
01635                 
01636                 if (!empty($a_grp_ids))
01637                 {
01638                         // set checkbox toggles
01639                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01640                         $tpl->setVariable("JS_VARNAME","group");                        
01641                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_grp_ids));
01642                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01643                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01644                         $tpl->parseCurrentBlock();
01645                 }
01646 
01647                 $tpl->setCurrentBlock("tbl_action_row");
01648                 $tpl->setVariable("COLUMN_COUNTS",5);
01649                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01650                 $tpl->parseCurrentBlock();
01651 
01652                 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01653                 $tbl->setHeaderNames(array("",
01654                                                                    $this->lng->txt("obj_grp"),
01655                                                                    $this->lng->txt("grp_count_members")));
01656                 $tbl->setHeaderVars(array("",
01657                                                                   "title",
01658                                                                   "nr_members"),
01659                                                         array("ref_id" => $this->object->getRefId(),
01660                                                                   "cmd" => "search",
01661                                                                   "cmdClass" => "ilobjgroupgui",
01662                                                                   "cmdNode" => $_GET["cmdNode"]));
01663 
01664                 $tbl->setColumnWidth(array("","80%","19%"));
01665 
01666 
01667                 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
01668                 $tbl->render();
01669                 
01670                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01671 
01672                 return true;
01673         }
01674         
01675         function __showMembersTable($a_result_set,$a_user_ids = NULL)
01676         {
01677         global $rbacsystem,$ilBench;
01678         
01679                 $ilBench->start("GroupGUI", "__showMembersTable");
01680 
01681                 $actions = array("RemoveMember"  => $this->lng->txt("remove"),"changeMember"  => $this->lng->txt("change"));
01682 
01683         $tbl =& $this->__initTableGUI();
01684                 $tpl =& $tbl->getTemplateObject();
01685 
01686                 $tpl->setCurrentBlock("tbl_form_header");
01687                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01688                 $tpl->parseCurrentBlock();
01689 
01690                 $tpl->setCurrentBlock("tbl_action_row");
01691                 
01692                 //INTERIMS:quite a circumstantial way to show the list on rolebased accessrights
01693                 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
01694                 {                       //user is administrator
01695             $tpl->setCurrentBlock("plain_button");
01696                     $tpl->setVariable("PBTN_NAME","searchUserForm");
01697                     $tpl->setVariable("PBTN_VALUE",$this->lng->txt("grp_add_member"));
01698                     $tpl->parseCurrentBlock();
01699                     $tpl->setCurrentBlock("plain_buttons");
01700                     $tpl->parseCurrentBlock();
01701                 
01702                         $tpl->setVariable("COLUMN_COUNTS",7);
01703                         $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01704 
01705             foreach ($actions as $name => $value)
01706                         {
01707                                 $tpl->setCurrentBlock("tbl_action_btn");
01708                                 $tpl->setVariable("BTN_NAME",$name);
01709                                 $tpl->setVariable("BTN_VALUE",$value);
01710                                 $tpl->parseCurrentBlock();
01711                         }
01712                         
01713                         if (!empty($a_user_ids))
01714                         {
01715                                 // set checkbox toggles
01716                                 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01717                                 $tpl->setVariable("JS_VARNAME","user_id");                      
01718                                 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
01719                                 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01720                                 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01721                                 $tpl->parseCurrentBlock();
01722                         }
01723                         
01724             $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01725                 }
01726 
01727                 $this->ctrl->setParameter($this,"cmd","members");
01728 
01729 
01730                 // title & header columns
01731                 $tbl->setTitle($this->lng->txt("members"),"icon_usr_b.gif",$this->lng->txt("group_members"));
01732 
01733                 //INTERIMS:quite a circumstantial way to show the list on rolebased accessrights
01734                 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
01735                 {
01736                         //user must be administrator
01737                         $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")));
01738                         $tbl->setHeaderVars(array("","login","firstname","lastname","role","functions"),$this->ctrl->getParameterArray($this,"",false));
01739                         $tbl->setColumnWidth(array("","22%","22%","22%","22%","10%"));
01740                 }
01741                 else
01742                 {
01743                         //user must be member
01744                         $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")));
01745                         $tbl->setHeaderVars(array("login","firstname","lastname","role","functions"),$this->ctrl->getParameterArray($this,"",false));
01746                         $tbl->setColumnWidth(array("22%","22%","22%","22%","10%"));
01747                 }
01748 
01749                 $this->__setTableGUIBasicData($tbl,$a_result_set,"members");
01750                 $tbl->render();
01751                 $this->tpl->setVariable("ADM_CONTENT",$tbl->tpl->get());
01752                 
01753                 $ilBench->stop("GroupGUI", "__showMembersTable");
01754 
01755                 return true;
01756         }
01757 
01758         function &__initTableGUI()
01759         {
01760                 include_once "class.ilTableGUI.php";
01761 
01762                 return new ilTableGUI(0,false);
01763         }
01764 
01765         function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
01766         {
01767         switch($from)
01768                 {
01769                         case "subscribers":
01770                                 $offset = $_GET["update_subscribers"] ? $_GET["offset"] : 0;
01771                                 $order = $_GET["update_subscribers"] ? $_GET["sort_by"] : 'login';
01772                                 $direction = $_GET["update_subscribers"] ? $_GET["sort_order"] : '';
01773                                 break;
01774 
01775                         case "group":
01776                                 $offset = $_GET["offset"];
01777                         $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
01778                                 $direction = $_GET["sort_order"];
01779                                 break;
01780                                 
01781                         case "role":
01782                                 $offset = $_GET["offset"];
01783                         $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
01784                                 $direction = $_GET["sort_order"];
01785                                 break;
01786 
01787                         default:
01788                                 $offset = $_GET["offset"];
01789                                 // init sort_by (unfortunatly sort_by is preset with 'title'
01790                         if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
01791                 {
01792                     $_GET["sort_by"] = "login";
01793                 }
01794                 $order = $_GET["sort_by"];
01795                                 $direction = $_GET["sort_order"];
01796                                 break;
01797                 }
01798 
01799                 $tbl->setOrderColumn($order);
01800                 $tbl->setOrderDirection($direction);
01801                 $tbl->setOffset($offset);
01802                 $tbl->setLimit($_GET["limit"]);
01803                 //$tbl->setMaxCount(count($result_set));
01804                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01805                 $tbl->setData($result_set);
01806         }
01807         
01808         function listUsersRoleObject()
01809         {
01810                 global $rbacsystem,$rbacreview;
01811 
01812                 $_SESSION["grp_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["grp_role"];
01813 
01814                 // MINIMUM ACCESS LEVEL = 'administrate'
01815                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01816                 {
01817                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01818                 }
01819 
01820                 if(!is_array($_POST["role"]))
01821                 {
01822                         sendInfo($this->lng->txt("grp_no_roles_selected"));
01823                         $this->searchObject();
01824 
01825                         return false;
01826                 }
01827 
01828                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01829                 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01830 
01831                 // GET ALL MEMBERS
01832                 $members = array();
01833                 foreach($_POST["role"] as $role_id)
01834                 {
01835                         $members = array_merge($rbacreview->assignedUsers($role_id),$members);
01836                 }
01837 
01838                 $members = array_unique($members);
01839 
01840                 // FORMAT USER DATA
01841                 $counter = 0;
01842                 $f_result = array();
01843                 foreach($members as $user)
01844                 {
01845                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01846                         {
01847                                 continue;
01848                         }
01849                         
01850                         $user_ids[$counter] = $user;
01851 
01852                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01853                         $f_result[$counter][] = $tmp_obj->getLogin();
01854                         $f_result[$counter][] = $tmp_obj->getLastname();
01855                         $f_result[$counter][] = $tmp_obj->getFirstname();
01856                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01857 
01858                         unset($tmp_obj);
01859                         ++$counter;
01860                 }
01861                 $this->__showSearchUserTable($f_result,$user_ids,"listUsersRole");
01862 
01863                 return true;
01864         }
01865         
01866         function listUsersGroupObject()
01867         {
01868                 global $rbacsystem,$rbacreview,$tree;
01869 
01870                 $_SESSION["grp_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["grp_group"];
01871 
01872                 // MINIMUM ACCESS LEVEL = 'administrate'
01873                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01874                 {
01875                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01876                 }
01877 
01878                 if(!is_array($_POST["group"]))
01879                 {
01880                         sendInfo($this->lng->txt("grp_no_groups_selected"));
01881                         $this->searchObject();
01882 
01883                         return false;
01884                 }
01885 
01886                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01887                 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01888 
01889                 // GET ALL MEMBERS
01890                 $members = array();
01891                 foreach($_POST["group"] as $group_id)
01892                 {
01893                         if (!$tree->isInTree($group_id))
01894                         {
01895                                 continue;
01896                         }
01897                         if (!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
01898                         {
01899                                 continue;
01900                         }
01901 
01902                         $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
01903 
01904                         unset($tmp_obj);
01905                 }
01906 
01907                 $members = array_unique($members);
01908 
01909                 // FORMAT USER DATA
01910                 $counter = 0;
01911                 $f_result = array();
01912                 foreach($members as $user)
01913                 {
01914                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01915                         {
01916                                 continue;
01917                         }
01918                         
01919                         $user_ids[$counter] = $user;
01920                         
01921                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01922                         $f_result[$counter][] = $tmp_obj->getLogin();
01923                         $f_result[$counter][] = $tmp_obj->getLastname();
01924                         $f_result[$counter][] = $tmp_obj->getFirstname();
01925                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01926 
01927                         unset($tmp_obj);
01928                         ++$counter;
01929                 }
01930                 $this->__showSearchUserTable($f_result,$user_ids,"listUsersGroup");
01931 
01932                 return true;
01933         }
01934         // Methods for ConditionHandlerInterface
01935         function initConditionHandlerGUI($item_id)
01936         {
01937                 include_once './classes/class.ilConditionHandlerInterface.php';
01938 
01939                 if(!is_object($this->chi_obj))
01940                 {
01941                         if($_GET['item_id'])
01942                         {
01943                                 $this->chi_obj =& new ilConditionHandlerInterface($this,$item_id);
01944                                 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
01945                         }
01946                         else
01947                         {
01948                                 $this->chi_obj =& new ilConditionHandlerInterface($this);
01949                         }
01950                 }
01951                 return true;
01952         }
01953 
01954         function chi_updateObject()
01955         {
01956                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01957                 $this->chi_obj->chi_update();
01958 
01959                 if($_GET['item_id'])
01960                 {
01961                         $this->cciEditObject();
01962                 }
01963                 else
01964                 {
01965                         $this->editObject();
01966                 }
01967         }               
01968         function chi_deleteObject()
01969         {
01970                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01971                 $this->chi_obj->chi_delete();
01972 
01973                 if($_GET['item_id'])
01974                 {
01975                         $this->cciEditObject();
01976                 }
01977                 else
01978                 {
01979                         $this->editObject();
01980                 }
01981         }
01982 
01983         function chi_selectorObject()
01984         {
01985                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01986                 $this->chi_obj->chi_selector();
01987         }               
01988 
01989         function chi_assignObject()
01990         {
01991                 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01992                 $this->chi_obj->chi_assign();
01993 
01994                 if($_GET['item_id'])
01995                 {
01996                         $this->cciEditObject();
01997                 }
01998                 else
01999                 {
02000                         $this->editObject();
02001                 }
02002         }
02003         
02010         function exportObject()
02011         {
02012                 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.grp_members_export.html");
02013                 $this->tpl->setCurrentBlock("adm_content");
02014                 $this->tpl->setVariable("FORMACTION", $this->getFormAction("export",$this->ctrl->getFormAction($this)));
02015                 $this->tpl->setVariable("BUTTON_EXPORT", $this->lng->txt("export_group_members"));
02016                 $this->tpl->parseCurrentBlock();
02017         }
02018         
02025         function exportMembersObject()
02026         {
02027                 // Creating a workbook
02028                 $result = @include_once 'Spreadsheet/Excel/Writer.php';
02029                 if (!$result)
02030                 {
02031                         include_once './classes/Spreadsheet/Excel/Writer.php';
02032                 }
02033                 // Creating a workbook
02034                 $workbook = new Spreadsheet_Excel_Writer();
02035 
02036                 // sending HTTP headers
02037                 $title = preg_replace("/\s/", "_", $this->object->getTitle());
02038                 $workbook->send("export_" . $title . ".xls");
02039 
02040                 // Creating a worksheet
02041                 $format_bold =& $workbook->addFormat();
02042                 $format_bold->setBold();
02043                 $format_percent =& $workbook->addFormat();
02044                 $format_percent->setNumFormat("0.00%");
02045                 $format_datetime =& $workbook->addFormat();
02046                 $format_datetime->setNumFormat("DD/MM/YYYY hh:mm:ss");
02047                 $format_title =& $workbook->addFormat();
02048                 $format_title->setBold();
02049                 $format_title->setColor('black');
02050                 $format_title->setPattern(1);
02051                 $format_title->setFgColor('silver');
02052                 $worksheet =& $workbook->addWorksheet();
02053                 $column = 0;
02054                 $profile_data = array("email", "gender", "firstname", "lastname", "person_title", "institution", 
02055                         "department", "street", "zipcode","city", "country", "phone_office", "phone_home", "phone_mobile",
02056                         "fax", "matriculation");
02057                 foreach ($profile_data as $data)
02058                 {
02059                         $worksheet->writeString(0, $column++, $this->cleanString($this->lng->txt($data)), $format_title);
02060                 }
02061                 $member_ids = $this->object->getGroupMemberIds();
02062                 $row = 1;
02063                 foreach ($member_ids as $member_id)
02064                 {
02065                         $column = 0;
02066                         $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
02067                         if ($member->getPref("public_email")=="y")
02068                         {
02069                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getEmail()));
02070                         }
02071                         else
02072                         {
02073                                 $column++;
02074                         }
02075                         $worksheet->writeString($row, $column++, $this->cleanString($this->lng->txt("gender_" . $member->getGender())));
02076                         $worksheet->writeString($row, $column++, $this->cleanString($member->getFirstname()));
02077                         $worksheet->writeString($row, $column++, $this->cleanString($member->getLastname()));
02078                         $worksheet->writeString($row, $column++, $this->cleanString($member->getUTitle()));
02079                         if ($member->getPref("public_institution")=="y")
02080                         {
02081                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getInstitution()));
02082                         }
02083                         else
02084                         {
02085                                 $column++;
02086                         }
02087                         if ($member->getPref("public_department")=="y")
02088                         {
02089                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getDepartment()));
02090                         }
02091                         else
02092                         {
02093                                 $column++;
02094                         }
02095                         if ($member->getPref("public_street")=="y")
02096                         {
02097                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getStreet()));
02098                         }
02099                         else
02100                         {
02101                                 $column++;
02102                         }
02103                         if ($member->getPref("public_zip")=="y")
02104                         {
02105                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getZipcode()));
02106                         }
02107                         else
02108                         {
02109                                 $column++;
02110                         }
02111                         if ($member->getPref("public_city")=="y")
02112                         {
02113                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getCity()));
02114                         }
02115                         else
02116                         {
02117                                 $column++;
02118                         }
02119                         if ($member->getPref("public_country")=="y")
02120                         {
02121                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getCountry()));
02122                         }
02123                         else
02124                         {
02125                                 $column++;
02126                         }
02127                         if ($member->getPref("public_phone_office")=="y")
02128                         {
02129                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneOffice()));
02130                         }
02131                         else
02132                         {
02133                                 $column++;
02134                         }
02135                         if ($member->getPref("public_phone_home")=="y")
02136                         {
02137                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneHome()));
02138                         }
02139                         else
02140                         {
02141                                 $column++;
02142                         }
02143                         if ($member->getPref("public_phone_mobile")=="y")
02144                         {
02145                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneMobile()));
02146                         }
02147                         else
02148                         {
02149                                 $column++;
02150                         }
02151                         if ($member->getPref("public_fax")=="y")
02152                         {
02153                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getFax()));
02154                         }
02155                         else
02156                         {
02157                                 $column++;
02158                         }
02159                         if ($member->getPref("public_matriculation")=="y")
02160                         {
02161                                 $worksheet->writeString($row, $column++, $this->cleanString($member->getMatriculation()));
02162                         }
02163                         else
02164                         {
02165                                 $column++;
02166                         }
02167                         $row++;
02168                 }
02169                 $workbook->close();
02170         }
02171         
02180         function cleanString($str)
02181         {
02182                 return str_replace(array("ä","ö","ü","ß","Ä","Ö","Ü"), array("ae","oe","ue","ss","Ae","Oe","Ue"), $str);
02183         }
02184         
02185 } // END class.ilObjGroupGUI
02186 ?>

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