00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00037 include_once "./classes/class.ilContainerGUI.php";
00038
00039 class ilObjiLincCourseGUI extends ilContainerGUI
00040 {
00045 function ilObjiLincCourseGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00046 {
00047 $this->type = "icrs";
00048 $this->ilContainerGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00049
00050 $this->ctrl->saveParameter($this,'ref_id');
00051
00052 }
00053
00059 function createObject()
00060 {
00061 global $rbacsystem;
00062
00063 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
00064
00065 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], $new_type))
00066 {
00067 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00068 }
00069
00070
00071 $data = array();
00072 $data["fields"] = array();
00073 $data["fields"]["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00074 $data["fields"]["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00075 $data["fields"]["homepage"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["homepage"],true);
00076 $data["fields"]["download"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["download"],true);
00077 $data["fields"]["activated"] = ilUtil::formCheckbox($_SESSION["error_post_vars"]["Fobject"]["activated"],"Fobject[activated]",1);
00078 $checkbox_access = ilUtil::formCheckbox($this->object->activated,"Fobject[activated]",1);
00079
00080 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.icrs_edit.html","ilinc");
00081
00082 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
00083 $this->tpl->setVariable("TITLE", $data["fields"]["title"]);
00084 $this->tpl->setVariable("TXT_DESC", $this->lng->txt("desc"));
00085 $this->tpl->setVariable("DESC", $data["fields"]["desc"]);
00086 $this->tpl->setVariable("TXT_ACCESS", $this->lng->txt("online"));
00087 $this->tpl->setVariable("CHKBOX_ACCESS", $data["fields"]["activated"]);
00088 $this->tpl->setVariable("TXT_HOMEPAGE_URL", $this->lng->txt("homepage_url"));
00089 $this->tpl->setVariable("HOMEPAGE_URL", $data["fields"]["homepage"]);
00090 $this->tpl->setVariable("TXT_DOWNLOAD_RESOURCES_URL", $this->lng->txt("download_resources_url"));
00091 $this->tpl->setVariable("DOWNLOAD_RESOURCES_URL", $data["fields"]["download"]);
00092 $this->tpl->setVariable("TXT_NOT_YET", $this->lng->txt("not_implemented_yet"));
00093
00094
00095 $this->ctrl->setParameter($this, "mode", "create");
00096 $this->ctrl->setParameter($this, "new_type", $new_type);
00097 $this->tpl->setVariable("FORMACTION", $this->getFormAction("save",$this->ctrl->getFormAction($this)));
00098 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($new_type."_new"));
00099 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00100 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($new_type."_add"));
00101 $this->tpl->setVariable("CMD_SUBMIT", "save");
00102 $this->tpl->setVariable("TARGET", $this->getTargetFrame("save"));
00103 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00104 }
00105
00106 function updateObject()
00107 {
00108 global $rbacsystem;
00109
00110 if (!$rbacsystem->checkAccess("write",$_GET["ref_id"]) )
00111 {
00112 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00113 }
00114
00115
00116 if (empty($_POST["Fobject"]["title"]))
00117 {
00118 $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00119 }
00120
00121 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00122 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00123 $this->object->activated = ilUtil::tf2yn($_POST["Fobject"]["activated"]);
00124
00125
00126 $success = $this->object->update();
00127
00128 if ($success == false)
00129 {
00130 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
00131 }
00132
00133 sendInfo($this->lng->txt("msg_obj_modified"),true);
00134 ilUtil::redirect($this->ctrl->getLinkTarget($this,"edit"));
00135 }
00136
00141 function saveObject()
00142 {
00143 global $rbacadmin,$rbacsystem;
00144
00145
00146 if (empty($_POST["Fobject"]["title"]))
00147 {
00148 $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00149 }
00150
00151 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00152 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00153 $this->object->activated = ilUtil::tf2yn($_POST["Fobject"]["activated"]);
00154
00155
00156 include_once ('class.ilnetucateXMLAPI.php');
00157 $ilinc = new ilnetucateXMLAPI();
00158 $ilinc->addCourse($_POST["Fobject"]);
00159 $response = $ilinc->sendRequest();
00160
00161 if ($response->isError())
00162 {
00163 $this->ilErr->raiseError($response->getErrorMsg(),$this->ilErr->MESSAGE);
00164 }
00165
00166
00167 $icrsObj = parent::saveObject();
00168
00169
00170 $icrsObj->storeiLincId($response->getFirstID());
00171 $icrsObj->saveActivationStatus(ilUtil::tf2yn($_POST["Fobject"]["activated"]));
00172
00173
00174 $roles = $icrsObj->initDefaultRoles();
00175
00176
00177 $success = $icrsObj->addMember($this->ilias->account,$icrsObj->getDefaultAdminRole(),true);
00178
00179 if (!$success)
00180 {
00181 $this->ilErr->raiseError($icrsObj->getErrorMsg(),$this->ilErr->MESSAGE);
00182 }
00183
00184
00185
00186
00187
00188 $this->ilias->account->addDesktopItem($icrsObj->getRefId(),"icrs");
00189
00190
00191 sendInfo($this->lng->txt("icrs_added"),true);
00192 ilUtil::redirect($this->getReturnLocation("save",$this->ctrl->getLinkTarget($this,"")));
00193 }
00194
00200 function getTabs(&$tabs_gui)
00201 {
00202 global $rbacsystem;
00203
00204 $this->ctrl->setParameter($this,"ref_id",$this->ref_id);
00205
00206 if ($rbacsystem->checkAccess('read',$this->ref_id))
00207 {
00208 $tabs_gui->addTarget("ilinc_classrooms",
00209 $this->ctrl->getLinkTarget($this, ""), "", get_class($this));
00210 }
00211
00212 if ($this->ilias->getSetting("ilinc_active"))
00213 {
00214 if ($rbacsystem->checkAccess('write',$this->ref_id))
00215 {
00216 $tabs_gui->addTarget("edit_properties",
00217 $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this));
00218 }
00219
00220 if ($rbacsystem->checkAccess('read',$this->ref_id))
00221 {
00222 $tabs_gui->addTarget("ilinc_involved_users",
00223 $this->ctrl->getLinkTarget($this, "members"), "members", get_class($this));
00224 }
00225
00226 if ($rbacsystem->checkAccess('write',$this->ref_id) and $this->object->isDocent($this->ilias->account))
00227 {
00228
00229 $tabs_gui->addTarget("ilinc_manage_course_documents",
00230 $url = $this->object->userLogin($this->ilias->account), "agenda","","_blank");
00231
00232
00233
00234 }
00235 }
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245 if ($rbacsystem->checkAccess('edit_permission',$this->ref_id))
00246 {
00247 $tabs_gui->addTarget("perm_settings",
00248 $this->ctrl->getLinkTarget($this, "perm"), "perm", get_class($this));
00249 }
00250
00251
00252 if ($this->ctrl->getTargetScript() == "repository.php" and !empty($_SESSION['il_rep_clipboard']))
00253 {
00254 $tabs_gui->addTarget("clipboard",
00255 $this->ctrl->getLinkTarget($this, "clipboard"), "clipboard", get_class($this));
00256 }
00257
00258 if ($this->ctrl->getTargetScript() == "adm_object.php")
00259 {
00260 if ($this->tree->getSavedNodeData($this->ref_id))
00261 {
00262 $tabs_gui->addTarget("trash",
00263 $this->ctrl->getLinkTarget($this, "trash"), "trash", get_class($this));
00264 }
00265 }
00266 }
00267
00268 function __unsetSessionVariables()
00269 {
00270 unset($_SESSION["grp_delete_member_ids"]);
00271 unset($_SESSION["grp_delete_subscriber_ids"]);
00272 unset($_SESSION["grp_search_str"]);
00273 unset($_SESSION["grp_search_for"]);
00274 unset($_SESSION["grp_role"]);
00275 unset($_SESSION["grp_group"]);
00276 unset($_SESSION["grp_archives"]);
00277 }
00278
00279 function __search($a_search_string,$a_search_for)
00280 {
00281 include_once("classes/class.ilSearch.php");
00282
00283 $this->lng->loadLanguageModule("content");
00284 $search =& new ilSearch($_SESSION["AccountId"]);
00285 $search->setPerformUpdate(false);
00286 $search->setSearchString(ilUtil::stripSlashes($a_search_string));
00287 $search->setCombination("and");
00288 $search->setSearchFor(array(0 => $a_search_for));
00289 $search->setSearchType('new');
00290
00291 if($search->validate($message))
00292 {
00293 $search->performSearch();
00294 }
00295 else
00296 {
00297 sendInfo($message,true);
00298 $this->ctrl->redirect($this,"searchUserForm");
00299 }
00300
00301 return $search->getResultByType($a_search_for);
00302 }
00303
00304 function __showSearchUserTable($a_result_set,$a_user_ids = NULL, $a_cmd = "search")
00305 {
00306 $return_to = "searchUserForm";
00307
00308 if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
00309 {
00310 $return_to = "search";
00311 }
00312
00313 $tbl =& $this->__initTableGUI();
00314 $tpl =& $tbl->getTemplateObject();
00315
00316
00317 $tpl->setCurrentBlock("tbl_form_header");
00318 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00319 $tpl->parseCurrentBlock();
00320
00321 $tpl->setCurrentBlock("tbl_action_btn");
00322 $tpl->setVariable("BTN_NAME",$return_to);
00323 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
00324 $tpl->parseCurrentBlock();
00325
00326 $tpl->setCurrentBlock("tbl_action_btn");
00327 $tpl->setVariable("BTN_NAME","addUser");
00328 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
00329 $tpl->parseCurrentBlock();
00330
00331 if (!empty($a_user_ids))
00332 {
00333
00334 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00335 $tpl->setVariable("JS_VARNAME","user");
00336 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
00337 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00338 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00339 $tpl->parseCurrentBlock();
00340 }
00341
00342 $tpl->setCurrentBlock("tbl_action_row");
00343 $tpl->setVariable("COLUMN_COUNTS",5);
00344 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00345 $tpl->parseCurrentBlock();
00346
00347 $tbl->setTitle($this->lng->txt("ilinc_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_header_edit_users"));
00348 $tbl->setHeaderNames(array("",
00349 $this->lng->txt("username"),
00350 $this->lng->txt("firstname"),
00351 $this->lng->txt("lastname"),
00352 $this->lng->txt("last_visit")));
00353 $tbl->setHeaderVars(array("",
00354 "login",
00355 "firstname",
00356 "lastname",
00357 "last_visit"),
00358 array("ref_id" => $this->object->getRefId(),
00359 "cmd" => $a_cmd,
00360 "cmdClass" => "ilobjilinccoursegui",
00361 "cmdNode" => $_GET["cmdNode"]));
00362
00363 $tbl->setColumnWidth(array("","33%","33%","33%"));
00364
00365 $this->__setTableGUIBasicData($tbl,$a_result_set);
00366 $tbl->render();
00367
00368 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
00369
00370 return true;
00371 }
00372
00373 function __showSearchRoleTable($a_result_set,$a_role_ids = NULL)
00374 {
00375 $tbl =& $this->__initTableGUI();
00376 $tpl =& $tbl->getTemplateObject();
00377
00378 $tpl->setCurrentBlock("tbl_form_header");
00379 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00380 $tpl->parseCurrentBlock();
00381
00382 $tpl->setCurrentBlock("tbl_action_btn");
00383 $tpl->setVariable("BTN_NAME","searchUserForm");
00384 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
00385 $tpl->parseCurrentBlock();
00386
00387 $tpl->setCurrentBlock("tbl_action_btn");
00388 $tpl->setVariable("BTN_NAME","listUsersRole");
00389 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
00390 $tpl->parseCurrentBlock();
00391
00392 if (!empty($a_role_ids))
00393 {
00394
00395 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00396 $tpl->setVariable("JS_VARNAME","role");
00397 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_role_ids));
00398 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00399 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00400 $tpl->parseCurrentBlock();
00401 }
00402
00403 $tpl->setCurrentBlock("tbl_action_row");
00404 $tpl->setVariable("COLUMN_COUNTS",5);
00405 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00406 $tpl->parseCurrentBlock();
00407
00408 $tbl->setTitle($this->lng->txt("ilinc_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_header_edit_users"));
00409 $tbl->setHeaderNames(array("",
00410 $this->lng->txt("obj_role"),
00411 $this->lng->txt("grp_count_members")));
00412 $tbl->setHeaderVars(array("",
00413 "title",
00414 "nr_members"),
00415 array("ref_id" => $this->object->getRefId(),
00416 "cmd" => "search",
00417 "cmdClass" => "ilobjilincoursegui",
00418 "cmdNode" => $_GET["cmdNode"]));
00419
00420 $tbl->setColumnWidth(array("","80%","19%"));
00421
00422
00423 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
00424 $tbl->render();
00425
00426 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
00427
00428 return true;
00429 }
00430
00431 function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
00432 {
00433 $tbl =& $this->__initTableGUI();
00434 $tpl =& $tbl->getTemplateObject();
00435
00436 $tpl->setCurrentBlock("tbl_form_header");
00437 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00438 $tpl->parseCurrentBlock();
00439
00440 $tpl->setCurrentBlock("tbl_action_btn");
00441 $tpl->setVariable("BTN_NAME","searchUserForm");
00442 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
00443 $tpl->parseCurrentBlock();
00444
00445 $tpl->setCurrentBlock("tbl_action_btn");
00446 $tpl->setVariable("BTN_NAME","listUsersGroup");
00447 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
00448 $tpl->parseCurrentBlock();
00449
00450 if (!empty($a_grp_ids))
00451 {
00452
00453 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00454 $tpl->setVariable("JS_VARNAME","group");
00455 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_grp_ids));
00456 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00457 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00458 $tpl->parseCurrentBlock();
00459 }
00460
00461 $tpl->setCurrentBlock("tbl_action_row");
00462 $tpl->setVariable("COLUMN_COUNTS",5);
00463 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00464 $tpl->parseCurrentBlock();
00465
00466 $tbl->setTitle($this->lng->txt("ilinc_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_header_edit_users"));
00467 $tbl->setHeaderNames(array("",
00468 $this->lng->txt("obj_grp"),
00469 $this->lng->txt("grp_count_members")));
00470 $tbl->setHeaderVars(array("",
00471 "title",
00472 "nr_members"),
00473 array("ref_id" => $this->object->getRefId(),
00474 "cmd" => "search",
00475 "cmdClass" => "ilobjilinccoursegui",
00476 "cmdNode" => $_GET["cmdNode"]));
00477
00478 $tbl->setColumnWidth(array("","80%","19%"));
00479
00480
00481 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
00482 $tbl->render();
00483
00484 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
00485
00486 return true;
00487 }
00488
00489 function __showMembersTable($a_result_set,$a_user_ids = NULL)
00490 {
00491 global $rbacsystem,$ilBench;
00492
00493 $actions = array("RemoveMember" => $this->lng->txt("remove"),"changeMember" => $this->lng->txt("change"));
00494
00495 $tbl =& $this->__initTableGUI();
00496 $tpl =& $tbl->getTemplateObject();
00497
00498 $tpl->setCurrentBlock("tbl_form_header");
00499 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00500 $tpl->parseCurrentBlock();
00501
00502 $tpl->setCurrentBlock("tbl_action_row");
00503
00504
00505 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
00506 {
00507 $tpl->setCurrentBlock("plain_button");
00508 $tpl->setVariable("PBTN_NAME","searchUserForm");
00509 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("ilinc_add_user"));
00510 $tpl->parseCurrentBlock();
00511 $tpl->setCurrentBlock("plain_buttons");
00512 $tpl->parseCurrentBlock();
00513
00514 $tpl->setVariable("COLUMN_COUNTS",7);
00515 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00516
00517 foreach ($actions as $name => $value)
00518 {
00519 $tpl->setCurrentBlock("tbl_action_btn");
00520 $tpl->setVariable("BTN_NAME",$name);
00521 $tpl->setVariable("BTN_VALUE",$value);
00522 $tpl->parseCurrentBlock();
00523 }
00524
00525 if (!empty($a_user_ids))
00526 {
00527
00528 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00529 $tpl->setVariable("JS_VARNAME","user_id");
00530 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
00531 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00532 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00533 $tpl->parseCurrentBlock();
00534 }
00535
00536 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00537 }
00538
00539 $this->ctrl->setParameter($this,"cmd","members");
00540
00541
00542
00543 $tbl->setTitle($this->lng->txt("ilinc_involved_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_involved_users"));
00544
00545
00546 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
00547 {
00548
00549 $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("ilinc_coursemember_status"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
00550 $tbl->setHeaderVars(array("","login","firstname","lastname","ilinc_coursemember_status","role","functions"),$this->ctrl->getParameterArray($this,"",false));
00551 $tbl->setColumnWidth(array("","20%","15%","15%","20%","20%","10%"));
00552 }
00553 else
00554 {
00555
00556 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("ilinc_coursemember_status"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
00557 $tbl->setHeaderVars(array("login","firstname","lastname","ilinc_coursemember_status","role","functions"),$this->ctrl->getParameterArray($this,"",false));
00558 $tbl->setColumnWidth(array("20%","15%","15%","20%","20%","10%"));
00559 }
00560
00561 $this->__setTableGUIBasicData($tbl,$a_result_set,"members");
00562 $tbl->render();
00563 $this->tpl->setVariable("ADM_CONTENT",$tbl->tpl->get());
00564
00565 return true;
00566 }
00567
00568
00569 function &__initTableGUI()
00570 {
00571 include_once "classes/class.ilTableGUI.php";
00572
00573 return new ilTableGUI(0,false);
00574 }
00575
00576 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
00577 {
00578 switch($from)
00579 {
00580 case "subscribers":
00581 $offset = $_GET["update_subscribers"] ? $_GET["offset"] : 0;
00582 $order = $_GET["update_subscribers"] ? $_GET["sort_by"] : 'login';
00583 $direction = $_GET["update_subscribers"] ? $_GET["sort_order"] : '';
00584 break;
00585
00586 case "group":
00587 $offset = $_GET["offset"];
00588 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
00589 $direction = $_GET["sort_order"];
00590 break;
00591
00592 case "role":
00593 $offset = $_GET["offset"];
00594 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
00595 $direction = $_GET["sort_order"];
00596 break;
00597
00598 default:
00599 $offset = $_GET["offset"];
00600
00601 if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
00602 {
00603 $_GET["sort_by"] = "login";
00604 }
00605 $order = $_GET["sort_by"];
00606 $direction = $_GET["sort_order"];
00607 break;
00608 }
00609
00610 $tbl->setOrderColumn($order);
00611 $tbl->setOrderDirection($direction);
00612 $tbl->setOffset($offset);
00613 $tbl->setLimit($_GET["limit"]);
00614
00615 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00616 $tbl->setData($result_set);
00617 }
00618
00619 function listUsersRoleObject()
00620 {
00621 global $rbacsystem,$rbacreview;
00622
00623 $_SESSION["grp_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["grp_role"];
00624
00625
00626 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
00627 {
00628 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00629 }
00630
00631 if(!is_array($_POST["role"]))
00632 {
00633 sendInfo($this->lng->txt("grp_no_roles_selected"));
00634 $this->searchObject();
00635
00636 return false;
00637 }
00638
00639 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
00640 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
00641
00642
00643 $members = array();
00644 foreach($_POST["role"] as $role_id)
00645 {
00646 $members = array_merge($rbacreview->assignedUsers($role_id),$members);
00647 }
00648
00649 $members = array_unique($members);
00650
00651
00652 $counter = 0;
00653 $f_result = array();
00654 foreach($members as $user)
00655 {
00656 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
00657 {
00658 continue;
00659 }
00660
00661 $user_ids[$counter] = $user;
00662
00663 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
00664 $f_result[$counter][] = $tmp_obj->getLogin();
00665 $f_result[$counter][] = $tmp_obj->getLastname();
00666 $f_result[$counter][] = $tmp_obj->getFirstname();
00667 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
00668
00669 unset($tmp_obj);
00670 ++$counter;
00671 }
00672 $this->__showSearchUserTable($f_result,$user_ids,"listUsersRole");
00673
00674 return true;
00675 }
00676
00677 function listUsersGroupObject()
00678 {
00679 global $rbacsystem,$rbacreview,$tree;
00680
00681 $_SESSION["grp_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["grp_group"];
00682
00683
00684 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
00685 {
00686 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00687 }
00688
00689 if(!is_array($_POST["group"]))
00690 {
00691 sendInfo($this->lng->txt("grp_no_groups_selected"));
00692 $this->searchObject();
00693
00694 return false;
00695 }
00696
00697 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
00698 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
00699
00700
00701 $members = array();
00702 foreach($_POST["group"] as $group_id)
00703 {
00704 if (!$tree->isInTree($group_id))
00705 {
00706 continue;
00707 }
00708 if (!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
00709 {
00710 continue;
00711 }
00712
00713 $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
00714
00715 unset($tmp_obj);
00716 }
00717
00718 $members = array_unique($members);
00719
00720
00721 $counter = 0;
00722 $f_result = array();
00723 foreach($members as $user)
00724 {
00725 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
00726 {
00727 continue;
00728 }
00729
00730 $user_ids[$counter] = $user;
00731
00732 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
00733 $f_result[$counter][] = $tmp_obj->getLogin();
00734 $f_result[$counter][] = $tmp_obj->getLastname();
00735 $f_result[$counter][] = $tmp_obj->getFirstname();
00736 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
00737
00738 unset($tmp_obj);
00739 ++$counter;
00740 }
00741 $this->__showSearchUserTable($f_result,$user_ids,"listUsersGroup");
00742
00743 return true;
00744 }
00745
00750 function canceledObject()
00751 {
00752 $return_location = $_GET["cmd_return_location"];
00753 if (strcmp($return_location, "") == 0)
00754 {
00755 $return_location = "members";
00756 }
00757
00758 sendInfo($this->lng->txt("action_aborted"),true);
00759 $this->ctrl->redirect($this, $return_location);
00760 }
00761
00766 function cancelMemberObject()
00767 {
00768 $return_location = "members";
00769
00770 sendInfo($this->lng->txt("action_aborted"),true);
00771 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00772 }
00773
00777 function membersObject()
00778 {
00779 global $rbacsystem,$ilBench,$ilDB,$lng;
00780
00781 if (!$this->ilias->getSetting("ilinc_active"))
00782 {
00783 $this->ilias->raiseError($lng->txt("ilinc_server_not_active"),$this->ilias->error_obj->MESSAGE);
00784 }
00785
00786
00787 $val_contact = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".$this->lng->txt("ilinc_mem_send_mail")."\" title=\"".$this->lng->txt("ilinc_mem_send_mail")."\" border=\"0\" vspace=\"0\"/>";
00788 $val_change = "<img src=\"".ilUtil::getImagePath("icon_change_b.gif")."\" alt=\"".$this->lng->txt("ilinc_mem_change_status")."\" title=\"".$this->lng->txt("ilinc_mem_change_status")."\" border=\"0\" vspace=\"0\"/>";
00789 $val_leave = "<img src=\"".ilUtil::getImagePath("icon_group_out_b.gif")."\" alt=\"".$this->lng->txt("ilinc_mem_leave")."\" title=\"".$this->lng->txt("ilinc_mem_leave")."\" border=\"0\" vspace=\"0\"/>";
00790
00791
00792 $access_delete = $rbacsystem->checkAccess("delete",$this->object->getRefId());
00793 $access_leave = $rbacsystem->checkAccess("leave",$this->object->getRefId());
00794 $access_write = $rbacsystem->checkAccess("write",$this->object->getRefId());
00795
00796 $member_ids = $this->object->getMemberIds();
00797
00798
00799 $members = $this->object->getMemberData($member_ids);
00800
00801
00802 $docent_ids = $this->object->getiLincMemberIds(true);
00803 $student_ids = $this->object->getiLincMemberIds(false);
00804
00805 $account_id = $this->ilias->account->getId();
00806 $counter = 0;
00807
00808 foreach ($members as $mem)
00809 {
00810 $link_contact = "mail_new.php?type=new&rcp_to=".$mem["login"];
00811 $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$mem["id"];
00812
00813 if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00814 {
00815 $link_leave = $this->ctrl->getLinkTarget($this,"RemoveMember")."&mem_id=".$mem["id"];
00816 }
00817
00818
00819 if ($access_delete && $access_write)
00820 {
00821 $member_functions = "<a href=\"$link_change\">$val_change</a>";
00822 }
00823
00824 if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00825 {
00826 $member_functions .="<a href=\"$link_leave\">$val_leave</a>";
00827 }
00828
00829
00830 $str_member_roles = $this->object->getMemberRolesTitle($mem["id"]);
00831
00832 if ($access_delete && $access_write)
00833 {
00834 $result_set[$counter][] = ilUtil::formCheckBox(0,"user_id[]",$mem["id"]);
00835 }
00836
00837 $user_ids[$counter] = $mem["id"];
00838
00839 $status = $this->object->checkiLincMemberStatus($mem['ilinc_id'],$docent_ids,$student_ids);
00840
00841 if ($status == ILINC_MEMBER_NOTSET)
00842 {
00843 $status = "<span class='warning'>".$this->lng->txt($status)."</span>";
00844 }
00845 else
00846 {
00847 $status = $this->lng->txt($status);
00848 }
00849
00850
00851
00852 $result_set[$counter][] = $mem["login"];
00853 $result_set[$counter][] = $mem["firstname"];
00854 $result_set[$counter][] = $mem["lastname"];
00855 $result_set[$counter][] = $status;
00856 $result_set[$counter][] = $str_member_roles;
00857 $result_set[$counter][] = "<a href=\"$link_contact\">".$val_contact."</a>".$member_functions;
00858
00859 ++$counter;
00860
00861 unset($member_functions);
00862 }
00863
00864 return $this->__showMembersTable($result_set,$user_ids);
00865 }
00866
00867 function &executeCommand()
00868 {
00869 $next_class = $this->ctrl->getNextClass($this);
00870 $cmd = $this->ctrl->getCmd();
00871
00872
00873 switch($next_class)
00874 {
00875 case "ilconditionhandlerinterface":
00876 include_once './classes/class.ilConditionHandlerInterface.php';
00877
00878 if($_GET['item_id'])
00879 {
00880 $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
00881 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
00882 $this->ctrl->forwardCommand($new_gui);
00883 }
00884 else
00885 {
00886 $new_gui =& new ilConditionHandlerInterface($this);
00887 $this->ctrl->forwardCommand($new_gui);
00888 }
00889 break;
00890
00891 case "ilregistergui":
00892 $this->ctrl->setReturn($this, "");
00893 $reg_gui = new ilRegisterGUI();
00894
00895 $ret =& $this->ctrl->forwardCommand($reg_gui);
00896 break;
00897
00898 case "ililincclassroomgui":
00899 echo "hier";exit;
00900 $this->ctrl->setReturn($this, "");
00901 $reg_gui = new ilRegisterGUI();
00902
00903 $ret =& $this->ctrl->forwardCommand($reg_gui);
00904 break;
00905
00906 default:
00907 if ($this->object->requireRegistration() and !$this->object->isUserRegistered())
00908 {
00909 $this->ctrl->redirectByClass("ilRegisterGUI", "showRegistrationForm");
00910 }
00911
00912 if (empty($cmd))
00913 {
00914 #$this->ctrl->returnToParent($this);
00915
00916 $cmd = "view";
00917 }
00918
00919
00920 $cmd .= "Object";
00921 $this->$cmd();
00922 break;
00923 }
00924 }
00925
00926 function viewObject()
00927 {
00928 global $tree;
00929
00930 if($this->ctrl->getTargetScript() == "adm_object.php")
00931 {
00932 parent::viewObject();
00933 return true;
00934 }
00935 else
00936 {
00937 $this->renderObject();
00938
00939 return true;
00940 }
00941
00942 return true;
00943 }
00944
00949 function getSubItems()
00950 {
00951 $objects = array();
00952
00953 if (!($objects = $this->object->getClassrooms()))
00954 {
00955 sendinfo($this->lng->txt($this->object->getErrorMsg()));
00956 return;
00957 }
00958
00959 foreach ($objects as $key => $object)
00960 {
00961 $this->items['icla'][$key] = $object;
00962 }
00963 }
00964
00968 function renderItemList($a_type = "all")
00969 {
00970 global $objDefinition;
00971
00972 $html = "";
00973 $this->adminCommands = false;
00974
00975 $class = $objDefinition->getClassName("icla");
00976 $location = $objDefinition->getLocation("icla");
00977 $full_class = "ilObj".$class."ListGUI";
00978 include_once($location."/class.".$full_class.".php");
00979
00980 $item_list_gui = new $full_class();
00981 $item_list_gui->setContainerObject($this);
00982
00983 $tpl =& $this->newBlockTemplate();
00984 $first = true;
00985
00986 $item_html = array();
00987
00988 if (is_array($this->items['icla']))
00989 {
00990 foreach($this->items['icla'] as $key => $item)
00991 {
00992
00993 $html = $item_list_gui->getListItemHTML($this->object->getRefId(),
00994 $key, $item["name"], $item["description"],$item);
00995
00996 if ($html != "")
00997 {
00998 $item_html[] = array("html" => $html, "item_id" => $item["ref_id"]);
00999 }
01000 }
01001
01002
01003 if (count($item_html) > 0)
01004 {
01005
01006 if (!$first)
01007 {
01008 $this->addSeparatorRow($tpl);
01009 }
01010
01011 $first = false;
01012
01013
01014 $this->addHeaderRow($tpl, 'icla');
01015 $this->resetRowType();
01016
01017
01018 foreach($item_html as $item)
01019 {
01020 $this->addStandardRow($tpl, $item["html"], $item["item_id"]);
01021 }
01022 }
01023 }
01024
01025 $html = $tpl->get();
01026 return $html;
01027 }
01028
01029 function removeClassroomObject()
01030 {
01031 include_once ('class.ilObjiLincClassroomGUI.php');
01032 $icla_gui = new ilObjiLincClassroomGUI($_GET['class_id'],$this->ref_id);
01033 $ret =& $this->ctrl->forwardCommand($icla_gui);
01034 }
01035
01036 function editClassroomObject()
01037 {
01038 include_once ('class.ilObjiLincClassroomGUI.php');
01039 $icla_gui = new ilObjiLincClassroomGUI($_GET['class_id'],$this->ref_id);
01040 $ret =& $this->ctrl->forwardCommand($icla_gui);
01041 }
01042
01043 function updateClassroomObject()
01044 {
01045 include_once ('class.ilObjiLincClassroomGUI.php');
01046 $icla_gui = new ilObjiLincClassroomGUI($_GET['class_id'],$this->ref_id);
01047 $ret =& $this->ctrl->forwardCommand($icla_gui);
01048 }
01049
01055 function cancelDeleteClassroomObject()
01056 {
01057 session_unregister("saved_post");
01058
01059 $this->setReturnLocation("cancelDeleteClassroom", "repository.php?ref_id=".$this->ref_id);
01060
01061 sendInfo($this->lng->txt("msg_cancel"),true);
01062
01063 ilUtil::redirect($this->getReturnLocation("cancelDeleteClassroom","adm_object.php?ref_id=".$_GET["ref_id"]));
01064
01065 }
01066
01070 function confirmedDeleteClassroomObject()
01071 {
01072 include_once ('class.ilObjiLincClassroom.php');
01073 $icla_obj = new ilObjiLincClassroom($_GET['class_id'],$this->ref_id);
01074
01075 if (!$icla_obj->delete())
01076 {
01077 $msg = $ilca_obj->getErrorMsg();
01078 }
01079 else
01080 {
01081 $msg = $this->lng->txt('icla_deleted');
01082 }
01083
01084
01085 sendInfo($msg,true);
01086
01087 $this->setReturnLocation("confirmedDeleteClassroom", "repository.php?ref_id=".$this->ref_id);
01088
01089 ilUtil::redirect($this->getReturnLocation("confirmedDeleteClassroom","adm_object.php?ref_id=".$_GET["ref_id"]));
01090
01091 }
01092
01093 function joinClassroomObject()
01094 {
01095
01096
01097
01098
01099
01100
01101
01102
01103
01104
01105
01106
01107
01108
01109
01110 $url = $this->object->joinClass($this->ilias->account,$_GET['class_id']);
01111
01112 if (!$url)
01113 {
01114 $this->ilias->raiseError($this->object->getErrorMsg(),$this->ilias->error_obj->FATAL);
01115 }
01116
01117 ilUtil::redirect(trim($url));
01118 }
01119
01120 function agendaObject()
01121 {
01122
01123 $url = $this->object->userLogin($this->ilias->account);
01124
01125 if (!$url)
01126 {
01127 $this->ilias->raiseError($this->object->getErrorMsg(),$this->ilias->error_obj->FATAL);
01128 }
01129
01130 ilUtil::redirect(trim($url));
01131 }
01132
01133 function searchUserFormObject()
01134 {
01135 global $rbacsystem;
01136
01137 $this->lng->loadLanguageModule('search');
01138
01139
01140 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01141 {
01142 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01143 }
01144
01145 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members_search.html");
01146
01147 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
01148 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("grp_search_members"));
01149 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
01150 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["grp_search_str"] ? $_SESSION["grp_search_str"] : "");
01151 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
01152 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
01153 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
01154 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
01155 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
01156 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
01157
01158 $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
01159 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
01160 $role = ($_POST["search_for"] == "role") ? 1 : 0;
01161
01162 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
01163 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
01164 $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
01165
01166 $this->__unsetSessionVariables();
01167 }
01168
01169 function searchObject()
01170 {
01171 global $rbacsystem,$tree;
01172
01173 $_SESSION["grp_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["grp_search_str"];
01174 $_SESSION["grp_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["grp_search_for"];
01175
01176
01177 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01178 {
01179 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01180 }
01181
01182 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
01183 {
01184 sendInfo($this->lng->txt("grp_search_enter_search_string"));
01185 $this->searchUserFormObject();
01186
01187 return false;
01188 }
01189
01190 if(!count($result = $this->__search(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"])))
01191 {
01192 sendInfo($this->lng->txt("grp_no_results_found"));
01193 $this->searchUserFormObject();
01194
01195 return false;
01196 }
01197
01198 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01199 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01200
01201 $counter = 0;
01202 $f_result = array();
01203
01204 switch($_POST["search_for"])
01205 {
01206 case "usr":
01207 foreach($result as $user)
01208 {
01209 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user["id"],false))
01210 {
01211 continue;
01212 }
01213
01214 $user_ids[$counter] = $user["id"];
01215
01216 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user["id"]);
01217 $f_result[$counter][] = $tmp_obj->getLogin();
01218 $f_result[$counter][] = $tmp_obj->getFirstname();
01219 $f_result[$counter][] = $tmp_obj->getLastname();
01220 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01221
01222 unset($tmp_obj);
01223 ++$counter;
01224 }
01225 $this->__showSearchUserTable($f_result,$user_ids);
01226
01227 return true;
01228
01229 case "role":
01230 foreach($result as $role)
01231 {
01232
01233 if ($role["id"] == ANONYMOUS_ROLE_ID)
01234 {
01235 continue;
01236 }
01237
01238 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
01239 {
01240 continue;
01241 }
01242
01243
01244 if ($tmp_obj->getCountMembers() == 0)
01245 {
01246 continue;
01247 }
01248
01249 $role_ids[$counter] = $role["id"];
01250
01251 $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
01252 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01253 $f_result[$counter][] = $tmp_obj->getCountMembers();
01254
01255 unset($tmp_obj);
01256 ++$counter;
01257 }
01258
01259 $this->__showSearchRoleTable($f_result,$role_ids);
01260
01261 return true;
01262
01263 case "grp":
01264 foreach($result as $group)
01265 {
01266 if(!$tree->isInTree($group["id"]))
01267 {
01268 continue;
01269 }
01270
01271 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
01272 {
01273 continue;
01274 }
01275
01276
01277 if ($tmp_obj->getId() == $this->object->getId())
01278 {
01279 continue;
01280 }
01281
01282 $grp_ids[$counter] = $group["id"];
01283
01284 $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
01285 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01286 $f_result[$counter][] = $tmp_obj->getCountMembers();
01287
01288 unset($tmp_obj);
01289 ++$counter;
01290 }
01291
01292 if(!count($f_result))
01293 {
01294 sendInfo($this->lng->txt("grp_no_results_found"));
01295 $this->searchUserFormObject();
01296
01297 return false;
01298 }
01299
01300 $this->__showSearchGroupTable($f_result,$grp_ids);
01301
01302 return true;
01303 }
01304 }
01305
01310 function addUserObject()
01311 {
01312 $user_ids = $_POST["user"];
01313
01314 $mail = new ilMail($_SESSION["AccountId"]);
01315
01316 if (empty($user_ids[0]))
01317 {
01318
01319 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01320 }
01321
01322 foreach ($user_ids as $new_member)
01323 {
01324 $user_obj = $this->ilias->obj_factory->getInstanceByObjId($new_member);
01325
01326 if (!$this->object->addMember($user_obj,$this->object->getDefaultMemberRole(),false))
01327 {
01328
01329 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01330 }
01331
01332 $user_obj->addDesktopItem($this->object->getRefId(),"icrs");
01333 $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","ilinc_mail_subj_new_subscription",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","ilinc_mail_body_new_subscription",$user_obj->getLanguage()),array(),array('normal'));
01334
01335 unset($user_obj);
01336 }
01337
01338
01339
01340 unset($_SESSION["saved_post"]);
01341
01342 sendInfo($this->lng->txt("ilinc_msg_member_assigned"),true);
01343 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01344 }
01345
01350 function removeMemberObject()
01351 {
01352 $user_ids = array();
01353
01354 if (isset($_POST["user_id"]))
01355 {
01356 $user_ids = $_POST["user_id"];
01357 }
01358 else if (isset($_GET["mem_id"]))
01359 {
01360 $user_ids[] = $_GET["mem_id"];
01361 }
01362
01363 if (empty($user_ids[0]))
01364 {
01365 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01366 }
01367
01368 if (count($user_ids) == 1 and $this->ilias->account->getId() != $user_ids[0])
01369 {
01370 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
01371 and !in_array($this->ilias->account->getId(),$this->object->getAdminIds()))
01372 {
01373 $this->ilErr->raiseError($this->lng->txt("ilinc_err_no_permission"),$this->ilErr->MESSAGE);
01374 }
01375 }
01376
01377 $is_dismiss_me = array_search($this->ilias->account->getId(),$user_ids);
01378
01379 $confirm = "confirmedRemoveMember";
01380 $cancel = "canceled";
01381 $info = ($is_dismiss_me !== false) ? "ilinc_dismiss_myself" : "ilinc_dismiss_member";
01382 $status = "";
01383 $return = "members";
01384 $this->confirmationObject($user_ids, $confirm, $cancel, $info, $status, $return);
01385 }
01386
01391 function confirmationObject($user_id="", $confirm, $cancel, $info="", $status="",$a_cmd_return_location = "")
01392 {
01393 $this->data["cols"] = array("type", "title", "description", "last_change");
01394
01395 if (is_array($user_id))
01396 {
01397 foreach ($user_id as $id)
01398 {
01399 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
01400
01401 $this->data["data"]["$id"] = array(
01402 "type" => $obj_data->getType(),
01403 "title" => $obj_data->getTitle(),
01404 "desc" => $obj_data->getDescription(),
01405 "last_update" => $obj_data->getLastUpdateDate(),
01406
01407 );
01408 }
01409 }
01410 else
01411 {
01412 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($user_id);
01413
01414 $this->data["data"]["$id"] = array(
01415 "type" => $obj_data->getType(),
01416 "title" => $obj_data->getTitle(),
01417 "desc" => $obj_data->getDescription(),
01418 "last_update" => $obj_data->getLastUpdateDate(),
01419 );
01420 }
01421
01422
01423 if(is_array($user_id))
01424 {
01425 $_SESSION["saved_post"]["user_id"] = $user_id;
01426 }
01427 else
01428 {
01429 $_SESSION["saved_post"]["user_id"][0] = $user_id;
01430 }
01431
01432 if (isset($status))
01433 {
01434 $_SESSION["saved_post"]["status"] = $status;
01435 }
01436
01437 $this->data["buttons"] = array( $cancel => $this->lng->txt("cancel"),
01438 $confirm => $this->lng->txt("confirm"));
01439
01440 $this->getTemplateFile("confirm");
01441
01442 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01443
01444 infoPanel();
01445
01446 sendInfo($this->lng->txt($info));
01447
01448 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this)."&cmd_return_location=".$a_cmd_return_location);
01449
01450
01451 foreach ($this->data["cols"] as $key)
01452 {
01453 $this->tpl->setCurrentBlock("table_header");
01454 $this->tpl->setVariable("TEXT",$this->lng->txt($key));
01455 $this->tpl->parseCurrentBlock();
01456 }
01457
01458
01459
01460 $counter = 0;
01461
01462 foreach ($this->data["data"] as $key => $value)
01463 {
01464
01465 foreach ($value as $key => $cell_data)
01466 {
01467 $this->tpl->setCurrentBlock("table_cell");
01468
01469
01470 if ($key == "type")
01471 {
01472 $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
01473 }
01474 else
01475 {
01476 $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
01477 }
01478 $this->tpl->parseCurrentBlock();
01479 }
01480
01481 $this->tpl->setCurrentBlock("table_row");
01482 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
01483 $this->tpl->parseCurrentBlock();
01484
01485 }
01486
01487
01488
01489 foreach ($this->data["buttons"] as $name => $value)
01490 {
01491 $this->tpl->setCurrentBlock("operation_btn");
01492 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("spacer.gif"));
01493 $this->tpl->setVariable("BTN_NAME",$name);
01494 $this->tpl->setVariable("BTN_VALUE",$value);
01495 $this->tpl->parseCurrentBlock();
01496 }
01497 }
01498
01505 function confirmedRemoveMemberObject()
01506 {
01507 $removed_self = false;
01508
01509 $mail = new ilMail($_SESSION["AccountId"]);
01510
01511
01512 foreach($_SESSION["saved_post"]["user_id"] as $member_id)
01513 {
01514 $user_obj = new ilObjUser($member_id);
01515
01516 if (!$this->object->removeMember($user_obj))
01517 {
01518 sendInfo($this->lng->txt($this->object->getErrorMsg()),true);
01519 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01520 }
01521
01522 $user_obj->dropDesktopItem($this->object->getRefId(), "icrs");
01523
01524 if (!$removed_self and $user_obj->getId() == $this->ilias->account->getId())
01525 {
01526 $removed_self = true;
01527 }
01528 else
01529 {
01530 $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","ilinc_mail_subj_subscription_cancelled",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","ilinc_mail_body_subscription_cancelled",$user_obj->getLanguage()),array(),array('normal'));
01531 }
01532 }
01533
01534 unset($_SESSION["saved_post"]);
01535
01536 sendInfo($this->lng->txt("ilinc_msg_membership_annulled"),true);
01537
01538 if ($removed_self)
01539 {
01540 ilUtil::redirect("repository.php?ref_id=".$this->tree->getParentId($this->ref_id));
01541 }
01542
01543 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01544 }
01545
01550 function changeMemberObject()
01551 {
01552 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
01553 {
01554 $_GET["sort_by"] = "login";
01555 }
01556
01557 $member_ids = array();
01558
01559 if (isset($_POST["user_id"]))
01560 {
01561 $member_ids = $_POST["user_id"];
01562 }
01563 else if (isset($_GET["mem_id"]))
01564 {
01565 $member_ids[0] = $_GET["mem_id"];
01566 }
01567
01568 if (empty($member_ids[0]))
01569 {
01570 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01571 }
01572
01573 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
01574 and !in_array($this->ilias->account->getId(),$this->object->getAdminIds()))
01575 {
01576 $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
01577 }
01578
01579 $stati = array_flip($this->object->getLocalRoles(true));
01580
01581
01582 $docent_ids = $this->object->getiLincMemberIds(true);
01583 $student_ids = $this->object->getiLincMemberIds(false);
01584
01585
01586 foreach ($member_ids as $member_id)
01587 {
01588 $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
01589 $mem_status = $this->object->getMemberRoles($member_id);
01590 $ilinc_data = $member->getiLincData();
01591
01592 $ilinc_status = $this->object->checkiLincMemberStatus($ilinc_data['id'],$docent_ids,$student_ids);
01593
01594 $docent = 0; $student = 0;
01595
01596 if ($ilinc_status == ILINC_MEMBER_DOCENT)
01597 {
01598 $docent = 1;
01599 }
01600 elseif ($ilinc_status == ILINC_MEMBER_STUDENT)
01601 {
01602 $student = 1;
01603 }
01604
01605 $radio1 = ilUtil::formRadioButton($docent,"ilinc_member_status_select[".$member->getId()."][".$ilinc_data['id']."]",ILINC_MEMBER_DOCENT);
01606 $radio2 = ilUtil::formRadioButton($student,"ilinc_member_status_select[".$member->getId()."][".$ilinc_data['id']."]",ILINC_MEMBER_STUDENT);
01607
01608
01609 $this->data["data"][$member->getId()]= array(
01610 "login" => $member->getLogin(),
01611 "firstname" => $member->getFirstname(),
01612 "lastname" => $member->getLastname(),
01613 "ilinc_coursemember_status" => $radio1." ".$this->lng->txt("ilinc_docent")."<br/>".$radio2." ".$this->lng->txt("ilinc_student"),
01614 "grp_role" => ilUtil::formSelect($mem_status,"member_status_select[".$member->getId()."][]",$stati,true,true,3)
01615 );
01616 }
01617
01618 unset($member);
01619
01620 infoPanel();
01621
01622 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
01623
01624
01625 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
01626
01627 $this->data["buttons"] = array( "members" => $this->lng->txt("back"),
01628 "updateMemberStatus" => $this->lng->txt("confirm"));
01629
01630 $this->tpl->setCurrentBlock("tbl_action_row");
01631 $this->tpl->setVariable("COLUMN_COUNTS",5);
01632
01633 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01634
01635 foreach ($this->data["buttons"] as $name => $value)
01636 {
01637 $this->tpl->setCurrentBlock("tbl_action_btn");
01638 $this->tpl->setVariable("BTN_NAME",$name);
01639 $this->tpl->setVariable("BTN_VALUE",$value);
01640 $this->tpl->parseCurrentBlock();
01641 }
01642
01643
01644 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
01645 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
01646
01647
01648 include_once "./classes/class.ilTableGUI.php";
01649
01650 $tbl = new ilTableGUI($output);
01651
01652
01653 $tbl->setTitle($this->lng->txt("grp_mem_change_status"),"icon_usr_b.gif",$this->lng->txt("grp_mem_change_status"));
01654
01655 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("ilinc_coursemember_status"),$this->lng->txt("role")));
01656 $tbl->setHeaderVars(array("login","firstname","lastname","ilinc_coursemember_status","role"),$this->ctrl->getParameterArray($this,"",false));
01657
01658 $tbl->setColumnWidth(array("20%","15%","15%","15%","30%"));
01659
01660 $this->tpl->setCurrentBlock("tbl_action_row");
01661 $this->tpl->parseCurrentBlock();
01662
01663
01664 $tbl->setOrderColumn($_GET["sort_by"]);
01665 $tbl->setOrderDirection($_GET["sort_order"]);
01666 $tbl->setLimit($_GET["limit"]);
01667 $tbl->setOffset($_GET["offset"]);
01668 $tbl->setMaxCount(count($this->data["data"]));
01669
01670 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01671
01672
01673 $tbl->render();
01674 }
01675
01680 function updateMemberStatusObject()
01681 {
01682 global $rbacsystem;
01683
01684 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()) )
01685 {
01686 $this->ilErr->raiseError("permission_denied",$this->ilErr->MESSAGE);
01687 }
01688
01689 if (isset($_POST["member_status_select"]))
01690 {
01691 foreach ($_POST["member_status_select"] as $key=>$value)
01692 {
01693 $this->object->leave($key);
01694 $this->object->join($key,$value);
01695 }
01696 }
01697
01698 if (isset($_POST["ilinc_member_status_select"]))
01699 {
01700 $users_to_add = array();
01701 $users_to_register = array();
01702 $users_to_unregister = array();
01703
01704 foreach ($_POST["ilinc_member_status_select"] as $user_id => $ilinc_arr)
01705 {
01706 $ilinc_user_id = key($ilinc_arr);
01707 $ilinc_user_status = current($ilinc_arr);
01708
01709
01710
01711
01712
01713
01714 if ($ilinc_user_id == 0)
01715 {
01716
01717
01718
01719 $user_obj = new ilObjUser($user_id);
01720 $ilinc_data = $user_obj->getiLincData();
01721
01722 if ($ilinc_data['id'] == '0')
01723 {
01724
01725 $users_to_add[] =& $user_obj;
01726 }
01727 else
01728 {
01729 $users_to_register[$ilinc_data['id']] = ILINC_MEMBER_STUDENT;
01730 }
01731
01732 continue;
01733 }
01734
01735
01736 $users_to_unregister[] = $ilinc_user_id;
01737 $users_to_register[$ilinc_user_id] = $ilinc_user_status;
01738
01739 }
01740
01741 if (!$this->object->unregisterUsers($users_to_unregister))
01742 {
01743
01744
01745 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01746 }
01747
01748 if (count($users_to_add) > 0)
01749 {
01750
01751 foreach ($users_to_add as $user)
01752 {
01753 if (!$this->object->addUser($user))
01754 {
01755
01756
01757 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01758 }
01759 else
01760 {
01761
01762 $ilinc_data = $user->getiLincData();
01763 $users_to_register[$ilinc_data['id']] = ILINC_MEMBER_STUDENT;
01764 }
01765 }
01766 }
01767
01768 if (!$this->object->registerUsers($users_to_register))
01769 {
01770
01771
01772 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01773 }
01774 }
01775
01776
01777
01778 sendInfo($this->lng->txt("msg_obj_modified"),true);
01779 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01780 }
01781
01782 function editObject()
01783 {
01784 if (!$this->ilias->getSetting("ilinc_active"))
01785 {
01786 $this->ilias->raiseError($this->lng->txt("ilinc_server_not_active"),$this->ilias->error_obj->MESSAGE);
01787 }
01788
01789 $fields = array();
01790
01791 if ($_SESSION["error_post_vars"])
01792 {
01793
01794 $fields["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
01795 $fields["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
01796 }
01797 else
01798 {
01799 $fields["title"] = ilUtil::prepareFormOutput($this->object->getTitle());
01800 $fields["desc"] = ilUtil::stripSlashes($this->object->getDescription());
01801 }
01802
01803 $this->displayEditForm($fields);
01804 }
01805
01812 function displayEditForm($fields)
01813 {
01814 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.icrs_edit.html","ilinc");
01815
01816 foreach ($fields as $key => $val)
01817 {
01818 $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
01819 $this->tpl->setVariable(strtoupper($key), $val);
01820 $this->tpl->parseCurrentBlock();
01821 }
01822
01823 $checkbox_access = ilUtil::formCheckbox($this->object->activated,"Fobject[activated]",1);
01824
01825 $this->tpl->setVariable("TXT_ACCESS", $this->lng->txt("online"));
01826 $this->tpl->setVariable("CHKBOX_ACCESS", $checkbox_access);
01827
01828 $obj_str = ($this->call_by_reference) ? "" : "&obj_id=".$this->obj_id;
01829
01830 $this->tpl->setVariable("FORMACTION", $this->getFormAction("update",$this->ctrl->getFormAction($this).$obj_str));
01831
01832 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($this->object->getType()."_edit"));
01833 $this->tpl->setVariable("TARGET", $this->getTargetFrame("update"));
01834 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
01835 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
01836 $this->tpl->setVariable("CMD_SUBMIT", "update");
01837 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
01838
01839 }
01840
01841 function joinObject()
01842 {
01843 global $rbacsystem;
01844
01845 if (!$rbacsystem->checkAccess("join", $_GET["ref_id"]))
01846 {
01847 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
01848 }
01849
01850 if (!$this->object->addMember($this->ilias->account,$this->object->getDefaultMemberRole(),false))
01851 {
01852
01853 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01854 }
01855
01856 $this->ilias->account->addDesktopItem($this->object->getRefId(),"icrs");
01857
01858 sendInfo($this->lng->txt("ilinc_msg_joined"),true);
01859 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01860 }
01861
01862 function isActiveAdministrationPanel()
01863 {
01864 return false;
01865 }
01866 }
01867 ?>