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

Generated on Fri Dec 13 2013 10:18:28 for ILIAS Release_3_5_x_branch .rev 46805 by  doxygen 1.7.1