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