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

classes/class.ilObjGroupGUI.php

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

Generated on Fri Dec 13 2013 08:00:14 for ILIAS Release_3_3_x_branch .rev 46803 by  doxygen 1.7.1