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