00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00038 include_once "class.ilContainerGUI.php";
00039 include_once "class.ilRegisterGUI.php";
00040
00041 class ilObjGroupGUI extends ilContainerGUI
00042 {
00047 function ilObjGroupGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = false)
00048 {
00049 $this->type = "grp";
00050 $this->ilContainerGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00051
00052 $this->lng->loadLanguageModule('grp');
00053 }
00054
00055 function viewObject()
00056 {
00057 global $tree;
00058
00059 if (strtolower($_GET["baseClass"]) == "iladministrationgui")
00060 {
00061 parent::viewObject();
00062 return true;
00063 }
00064 else if(!$tree->checkForParentType($this->ref_id,'crs'))
00065 {
00066 $this->renderObject();
00067
00068 }
00069 else
00070 {
00071 $this->initCourseContentInterface();
00072 $this->cci_obj->cci_setContainer($this);
00073 $this->cci_obj->cci_view();
00074 }
00075
00076 $this->tabs_gui->setTabActive('view_content');
00077 return true;
00078 }
00079
00080
00081 function &executeCommand()
00082 {
00083 global $rbacsystem,$ilAccess;
00084
00085 $next_class = $this->ctrl->getNextClass($this);
00086 $cmd = $this->ctrl->getCmd();
00087 $this->prepareOutput();
00088
00089 switch($next_class)
00090 {
00091 case "ilconditionhandlerinterface":
00092 include_once './classes/class.ilConditionHandlerInterface.php';
00093
00094 if($_GET['item_id'])
00095 {
00096 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
00097 $this->__setSubTabs('activation');
00098 $this->tabs_gui->setTabActive('view_content');
00099
00100 $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
00101 $this->ctrl->forwardCommand($new_gui);
00102 }
00103 else
00104 {
00105 $new_gui =& new ilConditionHandlerInterface($this);
00106 $this->ctrl->forwardCommand($new_gui);
00107 }
00108 break;
00109
00110 case "ilregistergui":
00111 $this->ctrl->setReturn($this, "");
00112 $reg_gui = new ilRegisterGUI();
00113 $ret =& $this->ctrl->forwardCommand($reg_gui);
00114 break;
00115
00116 case 'ilpermissiongui':
00117 include_once("./classes/class.ilPermissionGUI.php");
00118 $perm_gui =& new ilPermissionGUI($this);
00119 $ret =& $this->ctrl->forwardCommand($perm_gui);
00120 break;
00121
00122 default:
00123 if (!$this->getCreationMode() and !$ilAccess->checkAccess('visible','',$this->object->getRefId(),'grp'))
00124 {
00125 $ilErr->raiseError($this->lng->txt("msg_no_perm_read"),$ilErr->MESSAGE);
00126 }
00127
00128 if (!$this->getCreationMode()
00129 && !$rbacsystem->checkAccess('read',$this->object->getRefId())
00130 || $cmd == 'join')
00131 {
00132 $this->ctrl->redirectByClass("ilRegisterGUI", "showRegistrationForm");
00133 }
00134
00135 if(!$cmd)
00136 {
00137 $cmd = 'view';
00138 }
00139 $cmd .= 'Object';
00140 $this->$cmd();
00141 break;
00142 }
00143 }
00144
00145 function listExportFilesObject()
00146 {
00147 global $rbacsystem;
00148
00149 $this->lng->loadLanguageModule('content');
00150
00151 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
00152 {
00153 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00154 }
00155
00156 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00157 $this->__exportMenu();
00158
00159 $this->object->__initFileObject();
00160 $export_files = $this->object->file_obj->getExportFiles();
00161
00162 require_once("classes/class.ilTableGUI.php");
00163 $tbl = new ilTableGUI();
00164
00165 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html");
00166 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.grp_export_file_row.html");
00167
00168 $num = 0;
00169
00170 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00171
00172 $tbl->setTitle($this->lng->txt("cont_export_files"));
00173 $tbl->setHeaderNames(array("", $this->lng->txt("type"),
00174 $this->lng->txt("cont_file"),
00175 $this->lng->txt("cont_size"), $this->lng->txt("date") ));
00176
00177 $cols = array("", "type", "file", "size", "date");
00178 $header_params = array("ref_id" => $_GET["ref_id"],
00179 "cmd" => "listExportFiles", "cmdClass" => strtolower(get_class($this)));
00180 $tbl->setHeaderVars($cols, $header_params);
00181 $tbl->setColumnWidth(array("1%", "9%", "40%", "25%", "25%"));
00182
00183
00184 $tbl->setOrderColumn($_GET["sort_by"]);
00185 $tbl->setOrderDirection($_GET["sort_order"]);
00186 $tbl->setLimit($_GET["limit"]);
00187 $tbl->setOffset($_GET["offset"]);
00188 $tbl->setMaxCount($this->maxcount);
00189 $tbl->disable("sort");
00190
00191 $this->tpl->setVariable("COLUMN_COUNTS", 5);
00192
00193
00194 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00195 $this->tpl->setCurrentBlock("tbl_action_btn");
00196 $this->tpl->setVariable("BTN_NAME", "confirmDeleteExportFile");
00197 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("delete"));
00198 $this->tpl->parseCurrentBlock();
00199
00200 $this->tpl->setCurrentBlock("tbl_action_btn");
00201 $this->tpl->setVariable("BTN_NAME", "downloadExportFile");
00202 $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("download"));
00203 $this->tpl->parseCurrentBlock();
00204
00205
00206 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00207
00208 $tbl->setMaxCount(count($export_files));
00209 $export_files = array_slice($export_files, $_GET["offset"], $_GET["limit"]);
00210 $tbl->render();
00211 foreach($export_files as $exp_file)
00212 {
00213 $this->tpl->setCurrentBlock("tbl_content");
00214 $this->tpl->setVariable("TXT_FILENAME", $exp_file["file"]);
00215
00216 $css_row = ilUtil::switchColor($i++, "tblrow1", "tblrow2");
00217 $this->tpl->setVariable("CSS_ROW", $css_row);
00218
00219 $this->tpl->setVariable("TXT_SIZE", $exp_file["size"]);
00220 $this->tpl->setVariable("TXT_TYPE", $exp_file["type"]);
00221 $this->tpl->setVariable("CHECKBOX_ID",$exp_file["file"]);
00222
00223 $file_arr = explode("__", $exp_file["file"]);
00224 $this->tpl->setVariable("TXT_DATE", date("Y-m-d H:i:s",$file_arr[0]));
00225
00226 $this->tpl->parseCurrentBlock();
00227 }
00228 if(!count($export_files))
00229 {
00230 $tbl->disable('footer');
00231 $this->tpl->setCurrentBlock("notfound");
00232 $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
00233 $this->tpl->setVariable("NUM_COLS", 4);
00234 $this->tpl->parseCurrentBlock();
00235 }
00236
00237 $this->tpl->parseCurrentBlock();
00238 }
00239
00240 function __exportMenu()
00241 {
00242
00243 $this->tpl->setCurrentBlock("btn_cell");
00244 $this->tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this, "exportXML"));
00245 $this->tpl->setVariable("BTN_TXT", $this->lng->txt("cont_create_export_file_xml"));
00246 $this->tpl->parseCurrentBlock();
00247 }
00248
00249 function exportXMLObject()
00250 {
00251 global $rbacsystem;
00252
00253 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
00254 {
00255 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00256 }
00257
00258 $this->object->exportXML();
00259
00260 $this->listExportFilesObject();
00261
00262 return true;
00263 }
00264
00265 function confirmDeleteExportFileObject()
00266 {
00267 global $rbacsystem;
00268
00269 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
00270 {
00271 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00272 }
00273
00274 if(!count($_POST['file']))
00275 {
00276 sendInfo('grp_select_one_file');
00277 }
00278 else
00279 {
00280 $this->object->deleteExportFiles($_POST['file']);
00281 sendInfo('grp_deleted_export_files');
00282 }
00283
00284 $this->listExportFilesObject();
00285
00286 return true;
00287 }
00288
00289 function downloadExportFileObject()
00290 {
00291 if(!count($_POST['file']))
00292 {
00293 sendInfo('grp_select_one_file');
00294 $this->listExportFilesObject();
00295 return false;
00296 }
00297 if(count($_POST['file']) > 1)
00298 {
00299 sendInfo('grp_select_one_file_only');
00300 $this->listExportFilesObject();
00301 return false;
00302 }
00303
00304 $this->object->downloadExportFile($_POST['file'][0]);
00305
00306
00307 sendInfo('grp_error_sending_file');
00308
00309 return true;
00310 }
00311
00312
00316 function createObject()
00317 {
00318 global $rbacsystem;
00319
00320 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
00321
00322 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], $new_type))
00323 {
00324 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00325 }
00326
00327 $data = array();
00328
00329 if ($_SESSION["error_post_vars"])
00330 {
00331
00332 $data["fields"]["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00333 $data["fields"]["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00334 $data["fields"]["password"] = $_SESSION["error_post_vars"]["password"];
00335 $data["fields"]["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];
00336 $data["fields"]["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];
00337 }
00338 else
00339 {
00340 $data["fields"]["title"] = "";
00341 $data["fields"]["desc"] = "";
00342 $data["fields"]["password"] = "";
00343 $data["fields"]["expirationdate"] = "";
00344 $data["fields"]["expirationtime"] = "";
00345 }
00346
00347 $this->getTemplateFile("edit",$new_type);
00348
00349 foreach ($data["fields"] as $key => $val)
00350 {
00351 $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00352 $this->tpl->setVariable(strtoupper($key), $val);
00353
00354 if ($this->prepare_output)
00355 {
00356 $this->tpl->parseCurrentBlock();
00357 }
00358 }
00359
00360 $stati = array(0=>$this->lng->txt("group_status_public"),1=>$this->lng->txt("group_status_closed"));
00361
00362 $grp_status = $_SESSION["error_post_vars"]["group_status"];
00363
00364 $checked = array(0=>0,1=>0,2=>0);
00365
00366 switch ($_SESSION["error_post_vars"]["enable_registration"])
00367 {
00368 case 0:
00369 $checked[0]=1;
00370 break;
00371
00372 case 1:
00373 $checked[1]=1;
00374 break;
00375
00376 case 2:
00377 $checked[2]=1;
00378 break;
00379
00380 default:
00381 $checked[0]=1;
00382 break;
00383 }
00384
00385
00386 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00387 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00388 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00389
00390 $opts = ilUtil::formSelect(1,"group_status",$stati,false,true);
00391
00392 $this->tpl->setVariable("FORMACTION", $this->getFormAction("save",$this->ctrl->getFormAction($this)."&new_type=".$new_type));
00393
00394 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($new_type."_new"));
00395 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00396 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration"));
00397 $this->tpl->setVariable("TXT_REGISTRATION_MODE", $this->lng->txt("group_registration_mode"));
00398 $this->tpl->setVariable("TXT_REGISTRATION_TIME", $this->lng->txt("group_registration_time"));
00399
00400 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00401 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($new_type."_add"));
00402 $this->tpl->setVariable("CMD_SUBMIT", "save");
00403 $this->tpl->setVariable("CMD_CANCEL", "cancel");
00404 $this->tpl->setVariable("TARGET", $this->getTargetFrame("save"));
00405 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00406
00407 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("group_req_direct"));
00408 $this->tpl->setVariable("TXT_REGISTRATION_UNLIMITED", $this->lng->txt("grp_registration_unlimited"));
00409 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00410 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("group_req_registration"));
00411 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00412 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("group_req_password"));
00413 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00414
00415 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00416 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));
00417 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00418 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00419
00420 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00421 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00422 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00423 $this->tpl->setVariable("SELECT_GROUPSTATUS", $opts);
00424 $this->tpl->setVariable("TXT_GROUP_STATUS", $this->lng->txt("group_status"));
00425 $this->tpl->setVariable("TXT_GROUP_STATUS_DESC", $this->lng->txt("group_status_desc"));
00426
00427
00428 $this->tpl->setCurrentBlock("create");
00429 $this->tpl->setVariable("TXT_IMPORT_GRP", $this->lng->txt("import_grp"));
00430 $this->tpl->setVariable("TXT_GRP_FILE", $this->lng->txt("file"));
00431 $this->tpl->setVariable("TXT_IMPORT", $this->lng->txt("import"));
00432
00433
00434 $umf=get_cfg_var("upload_max_filesize");
00435
00436 $pms=get_cfg_var("post_max_size");
00437
00438
00439 $max_filesize=min($umf, $pms);
00440 if (!$max_filesize)
00441 $max_filesize=max($umf, $pms);
00442
00443
00444 $this->tpl->setVariable("TXT_FILE_INFO", $this->lng->txt("file_notice").$max_filesize);
00445 $this->tpl->parseCurrentBlock();
00446
00447 $this->tpl->setCurrentBlock("fileinfo");
00448 $this->tpl->setVariable("TXT_FILE_INFO", $this->lng->txt("file_notice").$max_filesize);
00449 $this->tpl->parseCurrentBlock();
00450 }
00451
00452
00457 function canceledObject()
00458 {
00459 $return_location = $_GET["cmd_return_location"];
00460 if (strcmp($return_location, "") == 0)
00461 {
00462 $return_location = "";
00463 }
00464
00465 sendInfo($this->lng->txt("action_aborted"),true);
00466 $this->ctrl->redirect($this, $return_location);
00467 }
00468
00473 function cancelMemberObject()
00474 {
00475 unset($_SESSION['grp_usr_search_result']);
00476 $return_location = "members";
00477
00478 sendInfo($this->lng->txt("action_aborted"),true);
00479 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00480 }
00481
00486 function saveObject()
00487 {
00488 global $rbacadmin;
00489
00490
00491 if (empty($_POST["Fobject"]["title"]))
00492 {
00493 $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00494 }
00495
00496
00497 if ($_POST["enable_registration"] == 2 and empty($_POST["password"]))
00498 {
00499 $this->ilErr->raiseError($this->lng->txt("no_password"),$this->ilErr->MESSAGE);
00500 }
00501
00502
00503 if (ilUtil::groupNameExists($_POST["Fobject"]["title"]))
00504
00505 {
00506 $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00507 }
00508
00509
00510 $groupObj = parent::saveObject();
00511
00512
00513 $roles = $groupObj->initDefaultRoles();
00514
00515
00516 $groupObj->addMember($this->ilias->account->getId(),$groupObj->getDefaultAdminRole());
00517
00518 $groupObj->setRegistrationFlag($_POST["enable_registration"]);
00519 $groupObj->setPassword($_POST["password"]);
00520 $groupObj->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00521
00522 $this->ilias->account->addDesktopItem($groupObj->getRefId(),"grp");
00523
00524
00525 sendInfo($this->lng->txt("grp_added"),true);
00526
00527 $this->redirectToRefId($_GET["ref_id"]);
00528 }
00529
00534 function updateObject()
00535 {
00536 global $rbacsystem;
00537
00538 if (!$rbacsystem->checkAccess("write",$_GET["ref_id"]) )
00539 {
00540 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00541 }
00542
00543
00544 if (empty($_POST["Fobject"]["title"]))
00545 {
00546 $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00547 }
00548
00549 if ($_POST["enable_registration"] == 2 && empty($_POST["password"]) || empty($_POST["expirationdate"]) || empty($_POST["expirationtime"]) )
00550 {
00551 $this->ilErr->raiseError($this->lng->txt("grp_err_registration_data"),$this->ilErr->MESSAGE);
00552 }
00553
00554 if (ilUtil::groupNameExists(ilUtil::stripSlashes($_POST["Fobject"]["title"]),$this->object->getId()))
00555 {
00556 $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00557 }
00558
00559 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00560 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00561
00562 if ($_POST["enable_registration"] == 2 && !ilUtil::isPassword($_POST["password"]))
00563 {
00564 $this->ilErr->raiseError($this->lng->txt("passwd_invalid"),$this->ilErr->MESSAGE);
00565 }
00566
00567 $this->object->setRegistrationFlag($_POST["enable_registration"]);
00568 $this->object->setPassword($_POST["password"]);
00569 $this->object->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00570
00571
00572 if ($this->ilias->getSetting("custom_icons"))
00573 {
00574 $this->object->saveIcons($_FILES["cont_big_icon"],
00575 $_FILES["cont_small_icon"]);
00576 }
00577
00578 $this->update = $this->object->update();
00579
00580 sendInfo($this->lng->txt("msg_obj_modified"),true);
00581 ilUtil::redirect($this->getReturnLocation("update",$this->ctrl->getLinkTarget($this,"")));
00582 }
00583
00588 function editObject()
00589 {
00590 global $rbacsystem;
00591
00592 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00593 {
00594 $this->ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilErr->MESSAGE);
00595 }
00596
00597 $data = array();
00598
00599 if ($_SESSION["error_post_vars"])
00600 {
00601
00602 $data["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00603 $data["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00604 $data["registration"] = $_SESSION["error_post_vars"]["registration"];
00605 $data["password"] = $_SESSION["error_post_vars"]["password"];
00606 $data["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];
00607 $data["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];
00608
00609 }
00610 else
00611 {
00612 $data["title"] = ilUtil::prepareFormOutput($this->object->getTitle());
00613 $data["desc"] = $this->object->getDescription();
00614 $data["registration"] = $this->object->getRegistrationFlag();
00615 $data["password"] = $this->object->getPassword();
00616 $datetime = $this->object->getExpirationDateTime();
00617
00618 $data["expirationdate"] = $datetime[0];
00619 $data["expirationtime"] = substr($datetime[1],0,5);
00620
00621 }
00622
00623 $this->getTemplateFile("edit");
00624
00625 foreach ($data as $key => $val)
00626 {
00627 $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00628 $this->tpl->setVariable(strtoupper($key), $val);
00629 $this->tpl->parseCurrentBlock();
00630 }
00631
00632 $checked = array(0=>0,1=>0,2=>0);
00633
00634 switch ($this->object->getRegistrationFlag())
00635 {
00636 case 0:
00637 $checked[0]=1;
00638 break;
00639
00640 case 1:
00641 $checked[1]=1;
00642 break;
00643
00644 case 2:
00645 $checked[2]=1;
00646 break;
00647 }
00648
00649 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00650 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00651 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00652
00653 $this->showCustomIconsEditing(2);
00654 $this->tpl->setCurrentBlock("adm_content");
00655
00656 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00657 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt("grp_edit"));
00658 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00659 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00660 $this->tpl->setVariable("CMD_CANCEL", "canceled");
00661 $this->tpl->setVariable("CMD_SUBMIT", "update");
00662
00663 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00664 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration"));
00665 $this->tpl->setVariable("TXT_REGISTRATION_MODE", $this->lng->txt("group_registration_mode"));
00666 $this->tpl->setVariable("TXT_REGISTRATION_TIME", $this->lng->txt("group_registration_time"));
00667
00668 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("group_req_direct"));
00669 $this->tpl->setVariable("TXT_REGISTRATION_UNLIMITED", $this->lng->txt("grp_registration_unlimited"));
00670 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00671 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("group_req_registration"));
00672 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00673 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("group_req_password"));
00674 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00675
00676 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00677 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));
00678 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00679 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00680
00681 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00682 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00683 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00684 }
00685
00690 function confirmationObject($user_id="", $confirm, $cancel, $info="", $status="",$a_cmd_return_location = "")
00691 {
00692 $this->data["cols"] = array("type", "title", "description", "last_change");
00693
00694 if (is_array($user_id))
00695 {
00696 foreach ($user_id as $id)
00697 {
00698 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
00699
00700 $this->data["data"]["$id"] = array(
00701 "type" => $obj_data->getType(),
00702 "title" => $obj_data->getTitle(),
00703 "desc" => $obj_data->getDescription(),
00704 "last_update" => $obj_data->getLastUpdateDate(),
00705
00706 );
00707 }
00708 }
00709 else
00710 {
00711 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($user_id);
00712
00713 $this->data["data"]["$id"] = array(
00714 "type" => $obj_data->getType(),
00715 "title" => $obj_data->getTitle(),
00716 "desc" => $obj_data->getDescription(),
00717 "last_update" => $obj_data->getLastUpdateDate(),
00718 );
00719 }
00720
00721
00722 if(is_array($user_id))
00723 {
00724 $_SESSION["saved_post"]["user_id"] = $user_id;
00725 }
00726 else
00727 {
00728 $_SESSION["saved_post"]["user_id"][0] = $user_id;
00729 }
00730
00731 if (isset($status))
00732 {
00733 $_SESSION["saved_post"]["status"] = $status;
00734 }
00735
00736 $this->data["buttons"] = array( $cancel => $this->lng->txt("cancel"),
00737 $confirm => $this->lng->txt("confirm"));
00738
00739 $this->getTemplateFile("confirm");
00740
00741 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00742
00743 infoPanel();
00744
00745 sendInfo($this->lng->txt($info));
00746
00747 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this)."&cmd_return_location=".$a_cmd_return_location);
00748
00749
00750 foreach ($this->data["cols"] as $key)
00751 {
00752 $this->tpl->setCurrentBlock("table_header");
00753 $this->tpl->setVariable("TEXT",$this->lng->txt($key));
00754 $this->tpl->parseCurrentBlock();
00755 }
00756
00757
00758
00759 $counter = 0;
00760
00761 foreach ($this->data["data"] as $key => $value)
00762 {
00763
00764 foreach ($value as $key => $cell_data)
00765 {
00766 $this->tpl->setCurrentBlock("table_cell");
00767
00768
00769 if ($key == "type")
00770 {
00771 $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
00772 }
00773 else
00774 {
00775 $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
00776 }
00777 $this->tpl->parseCurrentBlock();
00778 }
00779
00780 $this->tpl->setCurrentBlock("table_row");
00781 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00782 $this->tpl->parseCurrentBlock();
00783
00784 }
00785
00786
00787
00788 foreach ($this->data["buttons"] as $name => $value)
00789 {
00790 $this->tpl->setCurrentBlock("operation_btn");
00791 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("spacer.gif"));
00792 $this->tpl->setVariable("BTN_NAME",$name);
00793 $this->tpl->setVariable("BTN_VALUE",$value);
00794 $this->tpl->parseCurrentBlock();
00795 }
00796 }
00797
00802 function leaveGrpObject()
00803 {
00804 $member = array($_GET["mem_id"]);
00805
00806 $confirm = "confirmedDeleteMember";
00807 $cancel = "canceled";
00808 $info = "info_delete_sure";
00809 $status = "";
00810 $return = "";
00811 $this->confirmationObject($member, $confirm, $cancel, $info, $status, $return);
00812 }
00813
00818 function assignMemberObject()
00819 {
00820 $user_ids = $_POST["id"];
00821
00822 if (empty($user_ids[0]))
00823 {
00824
00825 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00826 }
00827
00828 foreach ($user_ids as $new_member)
00829 {
00830 if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00831 {
00832 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00833 }
00834 }
00835
00836 unset($_SESSION["saved_post"]);
00837
00838 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00839 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00840 }
00841
00846 function addUserObject()
00847 {
00848 $user_ids = $_POST["user"];
00849
00850 $mail = new ilMail($_SESSION["AccountId"]);
00851
00852 if (empty($user_ids[0]))
00853 {
00854
00855 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00856 }
00857
00858 foreach ($user_ids as $new_member)
00859 {
00860 if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00861 {
00862 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00863 }
00864
00865 $user_obj = $this->ilias->obj_factory->getInstanceByObjId($new_member);
00866
00867 $user_obj->addDesktopItem($this->object->getRefId(),"grp");
00868 $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","grp_mail_subj_new_subscription",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","grp_mail_body_new_subscription",$user_obj->getLanguage()),array(),array('normal'));
00869
00870 unset($user_obj);
00871 }
00872
00873 unset($_SESSION["saved_post"]);
00874 unset($_SESSION['grp_usr_search_result']);
00875
00876 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00877 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00878 }
00879
00884 function removeMemberObject()
00885 {
00886 $user_ids = array();
00887
00888 if (isset($_POST["user_id"]))
00889 {
00890 $user_ids = $_POST["user_id"];
00891 }
00892 else if (isset($_GET["mem_id"]))
00893 {
00894 $user_ids[] = $_GET["mem_id"];
00895 }
00896
00897 if (empty($user_ids[0]))
00898 {
00899 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00900 }
00901
00902 if (count($user_ids) == 1 and $this->ilias->account->getId() != $user_ids[0])
00903 {
00904 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
00905 and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00906 {
00907 $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
00908 }
00909 }
00910
00911 $is_dismiss_me = array_search($this->ilias->account->getId(),$user_ids);
00912
00913 $confirm = "confirmedRemoveMember";
00914 $cancel = "canceled";
00915 $info = ($is_dismiss_me !== false) ? "grp_dismiss_myself" : "grp_dismiss_member";
00916 $status = "";
00917 $return = "members";
00918 $this->confirmationObject($user_ids, $confirm, $cancel, $info, $status, $return);
00919 }
00920
00925 function confirmedRemoveMemberObject()
00926 {
00927 $removed_self = false;
00928
00929 $mail = new ilMail($_SESSION["AccountId"]);
00930
00931
00932 foreach($_SESSION["saved_post"]["user_id"] as $member_id)
00933 {
00934 $err_msg = $this->object->removeMember($member_id);
00935
00936 if (strlen($err_msg) > 0)
00937 {
00938 sendInfo($this->lng->txt($err_msg),true);
00939 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00940 }
00941
00942 $user_obj = new ilObjUser($member_id);
00943
00944 $user_obj->dropDesktopItem($this->object->getRefId(), "grp");
00945
00946 if (!$removed_self and $user_obj->getId() == $this->ilias->account->getId())
00947 {
00948 $removed_self = true;
00949 }
00950 else
00951 {
00952 $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","grp_mail_subj_subscription_cancelled",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","grp_mail_body_subscription_cancelled",$user_obj->getLanguage()),array(),array('normal'));
00953 }
00954
00955 }
00956
00957 unset($_SESSION["saved_post"]);
00958
00959 sendInfo($this->lng->txt("grp_msg_membership_annulled"),true);
00960
00961 if ($removed_self)
00962 {
00963 ilUtil::redirect("repository.php?ref_id=".$this->tree->getParentId($this->ref_id));
00964 }
00965
00966 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00967 }
00968
00969
00974 function changeMemberObject()
00975 {
00976 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
00977 {
00978 $_GET["sort_by"] = "login";
00979 }
00980
00981 $member_ids = array();
00982
00983 if (isset($_POST["user_id"]))
00984 {
00985 $member_ids = $_POST["user_id"];
00986 }
00987 else if (isset($_GET["mem_id"]))
00988 {
00989 $member_ids[0] = $_GET["mem_id"];
00990 }
00991
00992 if (empty($member_ids[0]))
00993 {
00994 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00995 }
00996
00997 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
00998 and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00999 {
01000 $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
01001 }
01002
01003 $stati = array_flip($this->object->getLocalGroupRoles(true));
01004
01005
01006
01007 foreach ($member_ids as $member_id)
01008 {
01009 $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
01010 $mem_status = $this->object->getMemberRoles($member_id);
01011
01012 $this->data["data"][$member->getId()]= array(
01013 "login" => $member->getLogin(),
01014 "firstname" => $member->getFirstname(),
01015 "lastname" => $member->getLastname(),
01016 "last_visit"=> ilFormat::formatDate($member->getLastLogin()),
01017 "grp_role" => ilUtil::formSelect($mem_status,"member_status_select[".$member->getId()."][]",$stati,true,true,3)
01018 );
01019 }
01020
01021 unset($member);
01022
01023 infoPanel();
01024
01025 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
01026
01027
01028 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
01029
01030 $this->data["buttons"] = array( "updateMemberStatus" => $this->lng->txt("confirm"),
01031 "members" => $this->lng->txt("back"));
01032
01033 $this->tpl->setCurrentBlock("tbl_action_row");
01034 $this->tpl->setVariable("COLUMN_COUNTS",5);
01035
01036 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01037
01038 foreach ($this->data["buttons"] as $name => $value)
01039 {
01040 $this->tpl->setCurrentBlock("tbl_action_btn");
01041 $this->tpl->setVariable("BTN_NAME",$name);
01042 $this->tpl->setVariable("BTN_VALUE",$value);
01043 $this->tpl->parseCurrentBlock();
01044 }
01045
01046
01047 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
01048 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
01049
01050
01051 include_once "./classes/class.ilTableGUI.php";
01052
01053 $tbl = new ilTableGUI($output);
01054
01055
01056 $tbl->setTitle($this->lng->txt("grp_mem_change_status"),"icon_usr_b.gif",$this->lng->txt("grp_mem_change_status"));
01057
01058 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role")));
01059 $tbl->setHeaderVars(array("login","firstname","lastname","last_visit","role"),$this->ctrl->getParameterArray($this,"",false));
01060
01061 $tbl->setColumnWidth(array("20%","20%","20%","40%"));
01062
01063 $this->tpl->setCurrentBlock("tbl_action_row");
01064 $this->tpl->parseCurrentBlock();
01065
01066
01067 $tbl->setOrderColumn($_GET["sort_by"]);
01068 $tbl->setOrderDirection($_GET["sort_order"]);
01069 $tbl->setLimit($_GET["limit"]);
01070 $tbl->setOffset($_GET["offset"]);
01071 $tbl->setMaxCount(count($this->data["data"]));
01072
01073 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01074
01075
01076 $tbl->render();
01077 }
01078
01082 function membersObject()
01083 {
01084 global $rbacsystem,$ilBench,$ilDB,$ilUser;
01085
01086 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members.html");
01087 $this->setSubTabs('members');
01088
01089 $ilBench->start("GroupGUI", "membersObject");
01090
01091
01092 $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\"/>";
01093 $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\"/>";
01094 $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\"/>";
01095
01096
01097 $access_leave = $rbacsystem->checkAccess("leave",$this->object->getRefId());
01098 $access_write = $rbacsystem->checkAccess("write",$this->object->getRefId());
01099
01100 $member_ids = $this->object->getGroupMemberIds();
01101
01102
01103 $members = $this->object->getGroupMemberData($member_ids);
01104
01105 $account_id = $this->ilias->account->getId();
01106 $counter = 0;
01107
01108 foreach ($members as $mem)
01109 {
01110 $link_contact = "mail_new.php?type=new&rcp_to=".$mem["login"];
01111 $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$mem["id"];
01112
01113
01114 if ($access_write)
01115 {
01116 $member_functions = "<a href=\"$link_change\">$val_change</a>";
01117 }
01118
01119 if (($mem["id"] == $account_id && $access_leave) || $access_write)
01120 {
01121 $link_leave = $this->ctrl->getLinkTarget($this,"RemoveMember")."&mem_id=".$mem["id"];
01122 $member_functions .="<a href=\"$link_leave\">$val_leave</a>";
01123 }
01124
01125
01126 $str_member_roles = $this->object->getMemberRolesTitle($mem["id"]);
01127
01128 if ($access_write)
01129 {
01130 $result_set[$counter][] = ilUtil::formCheckBox(0,"user_id[]",$mem["id"]);
01131 }
01132
01133 $user_ids[$counter] = $mem["id"];
01134
01135
01136 $result_set[$counter][] = $mem["login"];
01137 $result_set[$counter][] = $mem["firstname"];
01138 $result_set[$counter][] = $mem["lastname"];
01139 $result_set[$counter][] = ilFormat::formatDate($mem["last_login"]);
01140 $result_set[$counter][] = $str_member_roles;
01141 $result_set[$counter][] = "<a href=\"$link_contact\">".$val_contact."</a>".$member_functions;
01142
01143 ++$counter;
01144
01145 unset($member_functions);
01146 }
01147
01148 $ilBench->stop("GroupGUI", "membersObject");
01149
01150 return $this->__showMembersTable($result_set,$user_ids);
01151 }
01152
01153 function mailMembersObject()
01154 {
01155 global $rbacreview;
01156
01157 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.mail_members.html');
01158
01159 $this->setSubTabs('members');
01160
01161 $this->tpl->setVariable("MAILACTION",'mail_new.php?type=role');
01162 $this->tpl->setVariable("MAIL_MEMBERS",$this->lng->txt('send_mail_members'));
01163 $this->tpl->setVariable("MAIL_ADMIN",$this->lng->txt('send_mail_admins'));
01164 $this->tpl->setVariable("CHECK_MEMBER",ilUtil::formCheckbox(1,'roles[]','#il_grp_member_'.$this->object->getRefId()));
01165 $this->tpl->setVariable("CHECK_ADMIN",ilUtil::formCheckbox(0,'roles[]','#il_grp_admin_'.$this->object->getRefId()));
01166 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath('arrow_downright.gif'));
01167 $this->tpl->setVariable("OK",$this->lng->txt('ok'));
01168 }
01169
01170
01174 function setSubTabs($a_tab)
01175 {
01176 switch ($a_tab)
01177 {
01178 case 'members':
01179 $this->tabs_gui->addSubTabTarget("members",
01180 $this->ctrl->getLinkTarget($this,'members'),
01181 "members", get_class($this));
01182 $this->tabs_gui->addSubTabTarget("mail_members",
01183 $this->ctrl->getLinkTarget($this,'mailMembers'),
01184 "mailMembers", get_class($this));
01185
01186 break;
01187
01188
01189 }
01190 }
01191
01192
01193 function showNewRegistrationsObject()
01194 {
01195 global $rbacsystem;
01196
01197
01198 $applications = $this->object->getNewRegistrations();
01199
01200 if (!$applications)
01201 {
01202 $this->ilErr->raiseError($this->lng->txt("no_applications"),$this->ilErr->MESSAGE);
01203 }
01204
01205 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
01206 {
01207 $_GET["sort_by"] = "login";
01208 }
01209
01210 $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\"/>";
01211
01212 foreach ($applications as $applicant)
01213 {
01214 $user =& $this->ilias->obj_factory->getInstanceByObjId($applicant->user_id);
01215
01216 $link_contact = "mail_new.php?mobj_id=3&type=new&rcp_to=".$user->getLogin();
01217 $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$user->getId();
01218 $member_functions = "<a href=\"$link_change\">$val_change</a>";
01219 if (strcmp($_GET["check"], "all") == 0)
01220 {
01221 $checked = 1;
01222 }
01223 else
01224 {
01225 $checked = 0;
01226 }
01227 $this->data["data"][$user->getId()]= array(
01228 "check" => ilUtil::formCheckBox($checked,"user_id[]",$user->getId()),
01229 "username" => $user->getLogin(),
01230 "fullname" => $user->getFullname(),
01231 "subject" => $applicant->subject,
01232 "date" => $applicant->application_date,
01233 "functions" => "<a href=\"$link_contact\">".$val_contact."</a>"
01234 );
01235
01236 unset($member_functions);
01237 unset($user);
01238 }
01239
01240
01241
01242 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this,"post"));
01243
01244 $this->data["buttons"] = array( "refuseApplicants" => $this->lng->txt("refuse"),
01245 "assignApplicants" => $this->lng->txt("assign"));
01246
01247 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
01248
01249
01250 foreach ($this->data["buttons"] as $name => $value)
01251 {
01252 $this->tpl->setCurrentBlock("tbl_action_btn");
01253 $this->tpl->setVariable("BTN_NAME",$name);
01254 $this->tpl->setVariable("BTN_VALUE",$value);
01255 $this->tpl->parseCurrentBlock();
01256 }
01257
01258 $this->tpl->setCurrentBlock("tbl_action_plain_select");
01259 $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>");
01260 $this->tpl->parseCurrentBlock();
01261
01262 if (isset($this->data["data"]))
01263 {
01264
01265 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
01266 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
01267 }
01268
01269 $this->tpl->setCurrentBlock("tbl_action_row");
01270 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01271 $this->tpl->setVariable("COLUMN_COUNTS",6);
01272 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01273
01274
01275 include_once "./classes/class.ilTableGUI.php";
01276 $tbl = new ilTableGUI($output);
01277
01278 $tbl->setTitle($this->lng->txt("group_new_registrations"),"icon_usr_b.gif",$this->lng->txt("group_applicants"));
01279
01280 $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")));
01281 $tbl->setHeaderVars(array("","username","fullname","subject","date","functions"),$this->ctrl->getParameterArray($this,"ShownewRegistrations",false));
01282 $tbl->setColumnWidth(array("","20%","20%","35%","20%","5%"));
01283
01284 if ($_GET["sort_by"] == "login")
01285 {
01286 $_GET["sort_by"] = "username";
01287 }
01288
01289 if (!$_GET["sort_order"])
01290 {
01291 $_GET["sort_order"] = "asc";
01292 }
01293
01294
01295 $tbl->setOrderColumn($_GET["sort_by"]);
01296 $tbl->setOrderDirection($_GET["sort_order"]);
01297 $tbl->setLimit($_GET["limit"]);
01298 $tbl->setOffset($_GET["offset"]);
01299 $tbl->setMaxCount(count($this->data["data"]));
01300 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01301 $tbl->render();
01302 }
01303
01308 function assignApplicantsObject()
01309 {
01310 $user_ids = $_POST["user_id"];
01311
01312 if (empty($user_ids[0]))
01313 {
01314 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01315 }
01316
01317 $mail = new ilMail($_SESSION["AccountId"]);
01318
01319 foreach ($user_ids as $new_member)
01320 {
01321 $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01322
01323 if (!$this->object->addMember($new_member, $this->object->getDefaultMemberRole()))
01324 {
01325 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
01326 }
01327
01328 $this->object->deleteApplicationListEntry($new_member);
01329 $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'));
01330 }
01331
01332 sendInfo($this->lng->txt("grp_msg_applicants_assigned"),true);
01333 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01334 }
01335
01340 function refuseApplicantsObject()
01341 {
01342 $user_ids = $_POST["user_id"];
01343
01344 if (empty($user_ids[0]))
01345 {
01346 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01347 }
01348
01349 $mail = new ilMail($_SESSION["AccountId"]);
01350
01351 foreach ($user_ids as $new_member)
01352 {
01353 $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01354
01355 $this->object->deleteApplicationListEntry($new_member);
01356 $mail->sendMail($user->getLogin(),"","","Membership application refused: Group ".$this->object->getTitle(),"Your application has been refused.",array(),array('normal'));
01357 }
01358
01359 sendInfo($this->lng->txt("grp_msg_applicants_removed"),true);
01360 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01361 }
01362
01367 function updateMemberStatusObject()
01368 {
01369 global $rbacsystem;
01370
01371 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()) )
01372 {
01373 $this->ilErr->raiseError("permission_denied",$this->ilErr->MESSAGE);
01374 }
01375
01376 if (isset($_POST["member_status_select"]))
01377 {
01378 foreach ($_POST["member_status_select"] as $key=>$value)
01379 {
01380 $this->object->setMemberStatus($key,$value);
01381 }
01382 }
01383
01384 sendInfo($this->lng->txt("msg_obj_modified"),true);
01385 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01386 }
01387
01388 function searchUserFormObject()
01389 {
01390 global $rbacsystem;
01391
01392 $this->lng->loadLanguageModule('search');
01393
01394
01395 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01396 {
01397 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01398 }
01399
01400 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members_search.html");
01401
01402 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
01403 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("grp_search_members"));
01404 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
01405 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["grp_search_str"] ? $_SESSION["grp_search_str"] : "");
01406 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
01407 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
01408 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
01409 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
01410 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
01411 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
01412
01413 $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
01414 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
01415 $role = ($_POST["search_for"] == "role") ? 1 : 0;
01416
01417 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
01418 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
01419 $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
01420
01421 $this->__unsetSessionVariables();
01422 }
01423
01424 function __appendToStoredResults($a_result)
01425 {
01426 $tmp_array = array();
01427 foreach($a_result as $result)
01428 {
01429 if(is_array($result))
01430 {
01431 $tmp_array[] = $result['id'];
01432 }
01433 elseif($result)
01434 {
01435 $tmp_array[] = $result;
01436 }
01437 }
01438
01439
01440 $_SESSION['grp_usr_search_result'] = array_unique(array_merge((array) $_SESSION['grp_usr_search_result'],$tmp_array));
01441 return $_SESSION['grp_usr_search_result'];
01442 }
01443
01444 function cancelSearchObject()
01445 {
01446 $_SESSION['grp_usr_search_result'] = array();
01447 $_SESSION['grp_search_str'] = '';
01448 $this->searchUserFormObject();
01449 }
01450
01451 function searchObject()
01452 {
01453 global $rbacsystem,$tree;
01454
01455 $_SESSION["grp_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["grp_search_str"];
01456 $_SESSION["grp_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["grp_search_for"];
01457
01458
01459 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01460 {
01461 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01462 }
01463
01464 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
01465 {
01466 sendInfo($this->lng->txt("grp_search_enter_search_string"));
01467 $this->searchUserFormObject();
01468
01469 return false;
01470 }
01471
01472 if(!count($result = $this->__search(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"])))
01473 {
01474 sendInfo($this->lng->txt("grp_no_results_found"));
01475 $this->searchUserFormObject();
01476
01477 return false;
01478 }
01479
01480 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01481 #$this->__showButton("cancelSearch",$this->lng->txt("grp_new_search"));
01482
01483 $counter = 0;
01484 $f_result = array();
01485
01486 switch($_POST["search_for"])
01487 {
01488 case "usr":
01489 foreach($result as $user)
01490 {
01491 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01492 {
01493 continue;
01494 }
01495 $user_ids[$counter] = $user;
01496
01497 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01498 $f_result[$counter][] = $tmp_obj->getLogin();
01499 $f_result[$counter][] = $tmp_obj->getFirstname();
01500 $f_result[$counter][] = $tmp_obj->getLastname();
01501 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01502
01503 unset($tmp_obj);
01504 ++$counter;
01505 }
01506 $this->__showSearchUserTable($f_result,$user_ids);
01507
01508 return true;
01509
01510 case "role":
01511 foreach($result as $role)
01512 {
01513
01514 if ($role["id"] == ANONYMOUS_ROLE_ID)
01515 {
01516 continue;
01517 }
01518
01519 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
01520 {
01521 continue;
01522 }
01523
01524
01525 if ($tmp_obj->getCountMembers() == 0)
01526 {
01527 continue;
01528 }
01529
01530 $role_ids[$counter] = $role["id"];
01531
01532 $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
01533 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01534 $f_result[$counter][] = $tmp_obj->getCountMembers();
01535
01536 unset($tmp_obj);
01537 ++$counter;
01538 }
01539
01540 $this->__showSearchRoleTable($f_result,$role_ids);
01541
01542 return true;
01543
01544 case "grp":
01545 foreach($result as $group)
01546 {
01547 if(!$tree->isInTree($group["id"]))
01548 {
01549 continue;
01550 }
01551
01552 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
01553 {
01554 continue;
01555 }
01556
01557
01558 if ($tmp_obj->getId() == $this->object->getId())
01559 {
01560 continue;
01561 }
01562
01563 $grp_ids[$counter] = $group["id"];
01564
01565 $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
01566 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01567 $f_result[$counter][] = $tmp_obj->getCountMembers();
01568
01569 unset($tmp_obj);
01570 ++$counter;
01571 }
01572
01573 if(!count($f_result))
01574 {
01575 sendInfo($this->lng->txt("grp_no_results_found"));
01576 $this->searchUserFormObject();
01577
01578 return false;
01579 }
01580
01581 $this->__showSearchGroupTable($f_result,$grp_ids);
01582
01583 return true;
01584 }
01585 }
01586
01587 function searchCancelledObject ()
01588 {
01589 sendInfo($this->lng->txt("action_aborted"),true);
01590 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01591 }
01592
01593
01594 function getTabs(&$tabs_gui)
01595 {
01596 global $rbacsystem, $ilUser;
01597
01598 if ($rbacsystem->checkAccess('read',$this->ref_id))
01599 {
01600 $force_active = (($_GET["cmd"] == "view" || $_GET["cmd"] == "")
01601 && $_GET["cmdClass"] == "")
01602 ? true
01603 : false;
01604 $tabs_gui->addTarget("view_content",
01605 $this->ctrl->getLinkTarget($this, ""), array("", "view","addToDesk","removeFromDesk"), get_class($this),
01606 "", $force_active);
01607 }
01608
01609 if ($rbacsystem->checkAccess('write',$this->ref_id))
01610 {
01611 $force_active = ($_GET["cmd"] == "edit" && $_GET["cmdClass"] == "")
01612 ? true
01613 : false;
01614 $tabs_gui->addTarget("edit_properties",
01615 $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this),
01616 "", $force_active);
01617
01618
01619
01620
01621 }
01622
01623 if ($rbacsystem->checkAccess('read',$this->ref_id))
01624 {
01625 $tabs_gui->addTarget("group_members",
01626 $this->ctrl->getLinkTarget($this, "members"), array("members",'mailMembers'), get_class($this));
01627 }
01628
01629 $applications = $this->object->getNewRegistrations();
01630
01631 if (is_array($applications) and $this->object->isAdmin($this->ilias->account->getId()))
01632 {
01633 $tabs_gui->addTarget("group_new_registrations",
01634 $this->ctrl->getLinkTarget($this, "ShownewRegistrations"), "ShownewRegistrations", get_class($this));
01635 }
01636
01637 if ($rbacsystem->checkAccess('write',$this->object->getRefId()))
01638 {
01639 $tabs_gui->addTarget('export',
01640 $this->ctrl->getLinkTarget($this,'listExportFiles'),
01641 array('listExportFiles','exportXML','confirmDeleteExportFile','downloadExportFile'),
01642 get_class($this));
01643 }
01644
01645 if ($rbacsystem->checkAccess('join',$this->object->getRefId())
01646 and !ilObjGroup::_isMember($ilUser->getId(),$this->object->getRefId()))
01647 {
01648 $tabs_gui->addTarget("join",
01649 $this->ctrl->getLinkTarget($this, "join"),
01650 'join',
01651 "");
01652 }
01653
01654
01655 parent::getTabs($tabs_gui);
01656 }
01657
01658
01659
01660
01661 function importFileObject()
01662 {
01663 if(!is_array($_FILES['xmldoc']))
01664 {
01665 sendInfo($this->lng->txt("import_file_not_valid"));
01666 $this->createObject();
01667 return false;
01668 }
01669
01670 include_once 'classes/class.ilObjGroup.php';
01671
01672 if($ref_id = ilObjGroup::_importFromFile($_FILES['xmldoc'],(int) $_GET['ref_id']))
01673 {
01674 $this->ctrl->setParameter($this, "ref_id", $ref_id);
01675 sendInfo($this->lng->txt("import_grp_finished"),true);
01676 ilUtil::redirect($this->ctrl->getLinkTarget($this,'edit'));
01677 }
01678
01679 sendInfo($this->lng->txt("import_file_not_valid"));
01680 $this->createObject();
01681 }
01682
01683 function initCourseContentInterface()
01684 {
01685 global $ilCtrl;
01686
01687 include_once "./course/classes/class.ilCourseContentInterface.php";
01688
01689 $this->object->ctrl =& $ilCtrl;
01690 $this->cci_obj =& new ilCourseContentInterface($this,$this->object->getRefId());
01691 }
01692
01693 function cciEditObject()
01694 {
01695 global $rbacsystem;
01696
01697
01698 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01699 {
01700 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01701 }
01702
01703 $this->ctrl->setParameter($this, "item_id", $_GET["item_id"]);
01704 $this->__setSubTabs('activation');
01705 $this->tabs_gui->setTabActive('view_content');
01706
01707 $this->initCourseContentInterface();
01708 $this->cci_obj->cci_setContainer($this);
01709 $this->cci_obj->cci_edit();
01710
01711 return true;
01712 }
01713
01714 function cciUpdateObject()
01715 {
01716 global $rbacsystem;
01717
01718
01719 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01720 {
01721 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01722 }
01723
01724 $this->initCourseContentInterface();
01725 $this->cci_obj->cci_setContainer($this);
01726 $this->cci_obj->cci_update();
01727
01728 return true;
01729 }
01730
01731 function cciMoveObject()
01732 {
01733 global $rbacsystem;
01734
01735
01736 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01737 {
01738 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01739 }
01740
01741 $this->initCourseContentInterface();
01742 $this->cci_obj->cci_setContainer($this);
01743 $this->cci_obj->cci_move();
01744
01745 return true;
01746 }
01747
01748 function __unsetSessionVariables()
01749 {
01750 unset($_SESSION["grp_delete_member_ids"]);
01751 unset($_SESSION["grp_delete_subscriber_ids"]);
01752 unset($_SESSION["grp_search_str"]);
01753 unset($_SESSION["grp_search_for"]);
01754 unset($_SESSION["grp_role"]);
01755 unset($_SESSION["grp_group"]);
01756 unset($_SESSION["grp_archives"]);
01757 }
01758
01759 function __search($a_search_string,$a_search_for)
01760 {
01761 include_once("class.ilSearch.php");
01762
01763 $this->lng->loadLanguageModule("content");
01764 $search =& new ilSearch($_SESSION["AccountId"]);
01765 $search->setPerformUpdate(false);
01766 $search->setMinWordLength(1);
01767 $search->setSearchString(ilUtil::stripSlashes($a_search_string));
01768 $search->setCombination("and");
01769 $search->setSearchFor(array(0 => $a_search_for));
01770 $search->setSearchType('new');
01771
01772 if($search->validate($message))
01773 {
01774 $search->performSearch();
01775 }
01776 else
01777 {
01778 sendInfo($message,true);
01779 $this->ctrl->redirect($this,"searchUserForm");
01780 }
01781
01782 if($a_search_for == 'usr')
01783 {
01784 $this->__appendToStoredResults($search->getResultByType($a_search_for));
01785 return $_SESSION['grp_usr_search_result'];
01786 }
01787
01788 return $search->getResultByType($a_search_for);
01789 }
01790
01791 function __showSearchUserTable($a_result_set,$a_user_ids = NULL, $a_cmd = "search")
01792 {
01793 $this->__showButton('searchUserForm',$this->lng->txt("back"));
01794
01795 if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
01796 {
01797 $return_to = "search";
01798 }
01799
01800 $tbl =& $this->__initTableGUI();
01801 $tpl =& $tbl->getTemplateObject();
01802
01803
01804 $tpl->setCurrentBlock("tbl_form_header");
01805 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01806 $tpl->parseCurrentBlock();
01807
01808
01809 $tpl->setCurrentBlock("tbl_action_btn");
01810 $tpl->setVariable("BTN_NAME","addUser");
01811 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
01812 $tpl->parseCurrentBlock();
01813
01814 $tpl->setCurrentBlock("plain_button");
01815 $tpl->setVariable("PBTN_NAME",'searchUserForm');
01816 $tpl->setVariable("PBTN_VALUE",$this->lng->txt('append_search'));
01817 $tpl->parseCurrentBlock();
01818
01819 $tpl->setCurrentBlock("plain_button");
01820 $tpl->setVariable("PBTN_NAME",'cancelSearch');
01821 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("grp_new_search"));
01822 $tpl->parseCurrentBlock();
01823
01824
01825 if (!empty($a_user_ids))
01826 {
01827
01828 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01829 $tpl->setVariable("JS_VARNAME","user");
01830 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
01831 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01832 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01833 $tpl->parseCurrentBlock();
01834 }
01835
01836 $tpl->setCurrentBlock("tbl_action_row");
01837 $tpl->setVariable("COLUMN_COUNTS",5);
01838 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01839 $tpl->parseCurrentBlock();
01840
01841 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01842 $tbl->setHeaderNames(array("",
01843 $this->lng->txt("username"),
01844 $this->lng->txt("firstname"),
01845 $this->lng->txt("lastname"),
01846 $this->lng->txt("last_visit")));
01847 $tbl->setHeaderVars(array("",
01848 "login",
01849 "firstname",
01850 "lastname",
01851 "last_visit"),
01852 array("ref_id" => $this->object->getRefId(),
01853 "cmd" => $a_cmd,
01854 "cmdClass" => "ilobjgroupgui",
01855 "cmdNode" => $_GET["cmdNode"]));
01856
01857 $tbl->setColumnWidth(array("","33%","33%","33%"));
01858
01859 $this->__setTableGUIBasicData($tbl,$a_result_set);
01860 $tbl->render();
01861
01862 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01863
01864 return true;
01865 }
01866
01867 function __showSearchRoleTable($a_result_set,$a_role_ids = NULL)
01868 {
01869 $this->__showButton('searchUserForm',$this->lng->txt("back"));
01870
01871 $tbl =& $this->__initTableGUI();
01872 $tpl =& $tbl->getTemplateObject();
01873
01874 $tpl->setCurrentBlock("tbl_form_header");
01875 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01876 $tpl->parseCurrentBlock();
01877
01878 $tpl->setCurrentBlock("tbl_action_btn");
01879 $tpl->setVariable("BTN_NAME","searchUserForm");
01880 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01881 $tpl->parseCurrentBlock();
01882
01883 $tpl->setCurrentBlock("tbl_action_btn");
01884 $tpl->setVariable("BTN_NAME","listUsersRole");
01885 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01886 $tpl->parseCurrentBlock();
01887
01888 if (!empty($a_role_ids))
01889 {
01890
01891 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01892 $tpl->setVariable("JS_VARNAME","role");
01893 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_role_ids));
01894 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01895 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01896 $tpl->parseCurrentBlock();
01897 }
01898
01899 $tpl->setCurrentBlock("tbl_action_row");
01900 $tpl->setVariable("COLUMN_COUNTS",5);
01901 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01902 $tpl->parseCurrentBlock();
01903
01904 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01905 $tbl->setHeaderNames(array("",
01906 $this->lng->txt("obj_role"),
01907 $this->lng->txt("grp_count_members")));
01908 $tbl->setHeaderVars(array("",
01909 "title",
01910 "nr_members"),
01911 array("ref_id" => $this->object->getRefId(),
01912 "cmd" => "search",
01913 "cmdClass" => "ilobjgroupgui",
01914 "cmdNode" => $_GET["cmdNode"]));
01915
01916 $tbl->setColumnWidth(array("","80%","19%"));
01917
01918
01919 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
01920 $tbl->render();
01921
01922 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01923
01924 return true;
01925 }
01926
01927 function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
01928 {
01929 $this->__showButton('searchUserForm',$this->lng->txt("back"));
01930
01931 $tbl =& $this->__initTableGUI();
01932 $tpl =& $tbl->getTemplateObject();
01933
01934 $tpl->setCurrentBlock("tbl_form_header");
01935 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01936 $tpl->parseCurrentBlock();
01937
01938 $tpl->setCurrentBlock("tbl_action_btn");
01939 $tpl->setVariable("BTN_NAME","searchUserForm");
01940 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01941 $tpl->parseCurrentBlock();
01942
01943 $tpl->setCurrentBlock("tbl_action_btn");
01944 $tpl->setVariable("BTN_NAME","listUsersGroup");
01945 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01946 $tpl->parseCurrentBlock();
01947
01948 if (!empty($a_grp_ids))
01949 {
01950
01951 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01952 $tpl->setVariable("JS_VARNAME","group");
01953 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_grp_ids));
01954 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01955 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01956 $tpl->parseCurrentBlock();
01957 }
01958
01959 $tpl->setCurrentBlock("tbl_action_row");
01960 $tpl->setVariable("COLUMN_COUNTS",5);
01961 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01962 $tpl->parseCurrentBlock();
01963
01964 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01965 $tbl->setHeaderNames(array("",
01966 $this->lng->txt("obj_grp"),
01967 $this->lng->txt("grp_count_members")));
01968 $tbl->setHeaderVars(array("",
01969 "title",
01970 "nr_members"),
01971 array("ref_id" => $this->object->getRefId(),
01972 "cmd" => "search",
01973 "cmdClass" => "ilobjgroupgui",
01974 "cmdNode" => $_GET["cmdNode"]));
01975
01976 $tbl->setColumnWidth(array("","80%","19%"));
01977
01978
01979 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
01980 $tbl->render();
01981
01982 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01983
01984 return true;
01985 }
01986
01987 function __showMembersTable($a_result_set,$a_user_ids = NULL)
01988 {
01989 global $rbacsystem,$ilBench;
01990
01991 $ilBench->start("GroupGUI", "__showMembersTable");
01992
01993 $actions = array("RemoveMember" => $this->lng->txt("remove"),"changeMember" => $this->lng->txt("change"));
01994
01995 $tbl =& $this->__initTableGUI();
01996 $tpl =& $tbl->getTemplateObject();
01997
01998 $tpl->setCurrentBlock("tbl_form_header");
01999 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
02000 $tpl->parseCurrentBlock();
02001
02002 $tpl->setCurrentBlock("tbl_action_row");
02003
02004
02005 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
02006 {
02007 $tpl->setCurrentBlock("plain_button");
02008 $tpl->setVariable("PBTN_NAME","searchUserForm");
02009 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("grp_add_member"));
02010 $tpl->parseCurrentBlock();
02011 $tpl->setCurrentBlock("plain_buttons");
02012 $tpl->parseCurrentBlock();
02013
02014 $tpl->setVariable("COLUMN_COUNTS",7);
02015 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
02016
02017 foreach ($actions as $name => $value)
02018 {
02019 $tpl->setCurrentBlock("tbl_action_btn");
02020 $tpl->setVariable("BTN_NAME",$name);
02021 $tpl->setVariable("BTN_VALUE",$value);
02022 $tpl->parseCurrentBlock();
02023 }
02024
02025 if (!empty($a_user_ids))
02026 {
02027
02028 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
02029 $tpl->setVariable("JS_VARNAME","user_id");
02030 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
02031 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
02032 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
02033 $tpl->parseCurrentBlock();
02034 }
02035
02036 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
02037 }
02038
02039 $this->ctrl->setParameter($this,"cmd","members");
02040
02041
02042
02043 $tbl->setTitle($this->lng->txt("members"),"icon_usr_b.gif",$this->lng->txt("group_members"));
02044
02045
02046 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
02047 {
02048
02049 $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
02050 $tbl->setHeaderVars(array("","login","firstname","lastname","date","role","functions"),$this->ctrl->getParameterArray($this,"",false));
02051 $tbl->setColumnWidth(array("","22%","22%","22%","22%","10%"));
02052 }
02053 else
02054 {
02055
02056 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
02057 $tbl->setHeaderVars(array("login","firstname","lastname","date","role","functions"),$this->ctrl->getParameterArray($this,"",false));
02058 $tbl->setColumnWidth(array("22%","22%","22%","22%","10%"));
02059 }
02060
02061 $this->__setTableGUIBasicData($tbl,$a_result_set,"members");
02062 $tbl->render();
02063 $this->tpl->setVariable("MEMBER_TABLE",$tbl->tpl->get());
02064
02065 $ilBench->stop("GroupGUI", "__showMembersTable");
02066
02067 return true;
02068 }
02069
02070 function &__initTableGUI()
02071 {
02072 include_once "class.ilTableGUI.php";
02073
02074 return new ilTableGUI(0,false);
02075 }
02076
02077 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
02078 {
02079 switch($from)
02080 {
02081 case "subscribers":
02082 $offset = $_GET["update_subscribers"] ? $_GET["offset"] : 0;
02083 $order = $_GET["update_subscribers"] ? $_GET["sort_by"] : 'login';
02084 $direction = $_GET["update_subscribers"] ? $_GET["sort_order"] : '';
02085 break;
02086
02087 case "group":
02088 $offset = $_GET["offset"];
02089 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
02090 $direction = $_GET["sort_order"];
02091 break;
02092
02093 case "role":
02094 $offset = $_GET["offset"];
02095 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
02096 $direction = $_GET["sort_order"];
02097 break;
02098
02099 default:
02100 $offset = $_GET["offset"];
02101
02102 if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
02103 {
02104 $_GET["sort_by"] = "login";
02105 }
02106 $order = $_GET["sort_by"];
02107 $direction = $_GET["sort_order"];
02108 break;
02109 }
02110
02111 $tbl->setOrderColumn($order);
02112 $tbl->setOrderDirection($direction);
02113 $tbl->setOffset($offset);
02114 $tbl->setLimit($_GET["limit"]);
02115
02116 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
02117 $tbl->setData($result_set);
02118 }
02119
02120 function listUsersRoleObject()
02121 {
02122 global $rbacsystem,$rbacreview;
02123
02124 $_SESSION["grp_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["grp_role"];
02125
02126
02127 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02128 {
02129 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02130 }
02131
02132 if(!is_array($_POST["role"]))
02133 {
02134 sendInfo($this->lng->txt("grp_no_roles_selected"));
02135 $this->searchObject();
02136
02137 return false;
02138 }
02139
02140 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
02141 #$this->__showButton("cancelSearch",$this->lng->txt("grp_new_search"));
02142
02143
02144 $members = array();
02145 foreach($_POST["role"] as $role_id)
02146 {
02147 $members = array_merge($rbacreview->assignedUsers($role_id),$members);
02148 }
02149
02150 $members = array_unique($members);
02151 $members = $this->__appendToStoredResults($members);
02152
02153
02154 $counter = 0;
02155 $f_result = array();
02156 foreach($members as $user)
02157 {
02158 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
02159 {
02160 continue;
02161 }
02162
02163 $user_ids[$counter] = $user;
02164
02165 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
02166 $f_result[$counter][] = $tmp_obj->getLogin();
02167 $f_result[$counter][] = $tmp_obj->getLastname();
02168 $f_result[$counter][] = $tmp_obj->getFirstname();
02169 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
02170
02171 unset($tmp_obj);
02172 ++$counter;
02173 }
02174 $this->__showSearchUserTable($f_result,$user_ids,"listUsersRole");
02175
02176 return true;
02177 }
02178
02184 function removeSmallIconObject()
02185 {
02186 $this->object->removeSmallIcon();
02187 ilUtil::redirect($this->ctrl->getLinkTarget($this, "edit"));
02188 }
02189
02195 function removeBigIconObject()
02196 {
02197 $this->object->removeBigIcon();
02198 ilUtil::redirect($this->ctrl->getLinkTarget($this, "edit"));
02199 }
02200
02201 function listUsersGroupObject()
02202 {
02203 global $rbacsystem,$rbacreview,$tree;
02204
02205 $_SESSION["grp_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["grp_group"];
02206
02207
02208 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02209 {
02210 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02211 }
02212
02213 if(!is_array($_POST["group"]))
02214 {
02215 sendInfo($this->lng->txt("grp_no_groups_selected"));
02216 $this->searchObject();
02217
02218 return false;
02219 }
02220
02221 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
02222 #$this->__showButton("cancelSearch",$this->lng->txt("grp_new_search"));
02223
02224
02225 $members = array();
02226 foreach($_POST["group"] as $group_id)
02227 {
02228 if (!$tree->isInTree($group_id))
02229 {
02230 continue;
02231 }
02232 if (!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
02233 {
02234 continue;
02235 }
02236
02237 $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
02238
02239 unset($tmp_obj);
02240 }
02241
02242 $members = array_unique($members);
02243
02244
02245 $members = $this->__appendToStoredResults($members);
02246
02247
02248 $counter = 0;
02249 $f_result = array();
02250 foreach($members as $user)
02251 {
02252 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
02253 {
02254 continue;
02255 }
02256
02257 $user_ids[$counter] = $user;
02258
02259 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
02260 $f_result[$counter][] = $tmp_obj->getLogin();
02261 $f_result[$counter][] = $tmp_obj->getLastname();
02262 $f_result[$counter][] = $tmp_obj->getFirstname();
02263 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
02264
02265 unset($tmp_obj);
02266 ++$counter;
02267 }
02268 $this->__showSearchUserTable($f_result,$user_ids,"listUsersGroup");
02269
02270 return true;
02271 }
02272
02273
02274 function initConditionHandlerGUI($item_id)
02275 {
02276 include_once './classes/class.ilConditionHandlerInterface.php';
02277
02278 if(!is_object($this->chi_obj))
02279 {
02280 if($_GET['item_id'])
02281 {
02282 $this->chi_obj =& new ilConditionHandlerInterface($this,$item_id);
02283 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
02284 }
02285 else
02286 {
02287 $this->chi_obj =& new ilConditionHandlerInterface($this);
02288 }
02289 }
02290 return true;
02291 }
02292
02293 function chi_updateObject()
02294 {
02295 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02296 $this->chi_obj->chi_update();
02297
02298 if($_GET['item_id'])
02299 {
02300 $this->cciEditObject();
02301 }
02302 else
02303 {
02304 $this->editObject();
02305 }
02306 }
02307 function chi_deleteObject()
02308 {
02309 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02310 $this->chi_obj->chi_delete();
02311
02312 if($_GET['item_id'])
02313 {
02314 $this->cciEditObject();
02315 }
02316 else
02317 {
02318 $this->editObject();
02319 }
02320 }
02321
02322 function chi_selectorObject()
02323 {
02324 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02325 $this->chi_obj->chi_selector();
02326 }
02327
02328 function chi_assignObject()
02329 {
02330 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
02331 $this->chi_obj->chi_assign();
02332
02333 if($_GET['item_id'])
02334 {
02335 $this->cciEditObject();
02336 }
02337 else
02338 {
02339 $this->editObject();
02340 }
02341 }
02342
02349 function exportObject()
02350 {
02351 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.grp_members_export.html");
02352 $this->tpl->setCurrentBlock("adm_content");
02353 $this->tpl->setVariable("FORMACTION", $this->getFormAction("export",$this->ctrl->getFormAction($this)));
02354 $this->tpl->setVariable("BUTTON_EXPORT", $this->lng->txt("export_group_members"));
02355 $this->tpl->parseCurrentBlock();
02356 }
02357
02364 function exportMembersObject()
02365 {
02366 $result = @include_once 'Spreadsheet/Excel/Writer.php';
02367 if (!$result)
02368 {
02369 include_once './classes/Spreadsheet/Excel/Writer.php';
02370 }
02371
02372 $workbook = new Spreadsheet_Excel_Writer();
02373
02374
02375 $title = preg_replace("/\s/", "_", $this->object->getTitle());
02376 $workbook->send("export_" . $title . ".xls");
02377
02378
02379 $format_bold =& $workbook->addFormat();
02380 $format_bold->setBold();
02381 $format_percent =& $workbook->addFormat();
02382 $format_percent->setNumFormat("0.00%");
02383 $format_datetime =& $workbook->addFormat();
02384 $format_datetime->setNumFormat("DD/MM/YYYY hh:mm:ss");
02385 $format_title =& $workbook->addFormat();
02386 $format_title->setBold();
02387 $format_title->setColor('black');
02388 $format_title->setPattern(1);
02389 $format_title->setFgColor('silver');
02390 $worksheet =& $workbook->addWorksheet();
02391 $column = 0;
02392 $profile_data = array("email", "gender", "firstname", "lastname", "person_title", "institution",
02393 "department", "street", "zipcode","city", "country", "phone_office", "phone_home", "phone_mobile",
02394 "fax", "matriculation");
02395 foreach ($profile_data as $data)
02396 {
02397 $worksheet->writeString(0, $column++, $this->cleanString($this->lng->txt($data)), $format_title);
02398 }
02399 $member_ids = $this->object->getGroupMemberIds();
02400 $row = 1;
02401 foreach ($member_ids as $member_id)
02402 {
02403 $column = 0;
02404 $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
02405 if ($member->getPref("public_email")=="y")
02406 {
02407 $worksheet->writeString($row, $column++, $this->cleanString($member->getEmail()));
02408 }
02409 else
02410 {
02411 $column++;
02412 }
02413 $worksheet->writeString($row, $column++, $this->cleanString($this->lng->txt("gender_" . $member->getGender())));
02414 $worksheet->writeString($row, $column++, $this->cleanString($member->getFirstname()));
02415 $worksheet->writeString($row, $column++, $this->cleanString($member->getLastname()));
02416 $worksheet->writeString($row, $column++, $this->cleanString($member->getUTitle()));
02417 if ($member->getPref("public_institution")=="y")
02418 {
02419 $worksheet->writeString($row, $column++, $this->cleanString($member->getInstitution()));
02420 }
02421 else
02422 {
02423 $column++;
02424 }
02425 if ($member->getPref("public_department")=="y")
02426 {
02427 $worksheet->writeString($row, $column++, $this->cleanString($member->getDepartment()));
02428 }
02429 else
02430 {
02431 $column++;
02432 }
02433 if ($member->getPref("public_street")=="y")
02434 {
02435 $worksheet->writeString($row, $column++, $this->cleanString($member->getStreet()));
02436 }
02437 else
02438 {
02439 $column++;
02440 }
02441 if ($member->getPref("public_zip")=="y")
02442 {
02443 $worksheet->writeString($row, $column++, $this->cleanString($member->getZipcode()));
02444 }
02445 else
02446 {
02447 $column++;
02448 }
02449 if ($member->getPref("public_city")=="y")
02450 {
02451 $worksheet->writeString($row, $column++, $this->cleanString($member->getCity()));
02452 }
02453 else
02454 {
02455 $column++;
02456 }
02457 if ($member->getPref("public_country")=="y")
02458 {
02459 $worksheet->writeString($row, $column++, $this->cleanString($member->getCountry()));
02460 }
02461 else
02462 {
02463 $column++;
02464 }
02465 if ($member->getPref("public_phone_office")=="y")
02466 {
02467 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneOffice()));
02468 }
02469 else
02470 {
02471 $column++;
02472 }
02473 if ($member->getPref("public_phone_home")=="y")
02474 {
02475 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneHome()));
02476 }
02477 else
02478 {
02479 $column++;
02480 }
02481 if ($member->getPref("public_phone_mobile")=="y")
02482 {
02483 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneMobile()));
02484 }
02485 else
02486 {
02487 $column++;
02488 }
02489 if ($member->getPref("public_fax")=="y")
02490 {
02491 $worksheet->writeString($row, $column++, $this->cleanString($member->getFax()));
02492 }
02493 else
02494 {
02495 $column++;
02496 }
02497 if ($member->getPref("public_matriculation")=="y")
02498 {
02499 $worksheet->writeString($row, $column++, $this->cleanString($member->getMatriculation()));
02500 }
02501 else
02502 {
02503 $column++;
02504 }
02505 $row++;
02506 }
02507 $workbook->close();
02508 }
02509
02518 function cleanString($str)
02519 {
02520 return str_replace(array("ä","ö","ü","ß","Ä","Ö","Ü"), array("ae","oe","ue","ss","Ae","Oe","Ue"), $str);
02521 }
02522
02523
02527 function __setSubTabs($a_tab)
02528 {
02529 global $rbacsystem,$ilUser;
02530
02531 switch ($a_tab)
02532 {
02533
02534 case "activation":
02535 $this->tabs_gui->addSubTabTarget("activation",
02536 $this->ctrl->getLinkTarget($this,'cciEdit'),
02537 "cciEdit", get_class($this));
02538 $this->tabs_gui->addSubTabTarget("preconditions",
02539 $this->ctrl->getLinkTargetByClass('ilConditionHandlerInterface','listConditions'),
02540 "", "ilConditionHandlerInterface");
02541 break;
02542 }
02543 }
02544
02545
02546 }
02547 ?>