00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 include_once './Services/Tracking/classes/class.ilLearningProgressBaseGUI.php';
00027 include_once './Services/Tracking/classes/class.ilLMStatistics.php';
00028
00029 class ilLMStatisticsGUI extends ilLearningProgressBaseGUI {
00030
00031 var $lm_statistics;
00032
00033 function ilLMStatisticsGUI($a_mode, $a_ref_id) {
00034 parent :: ilLearningProgressBaseGUI($a_mode, $a_ref_id);
00035
00036 $this->lm_statistics = new ilLMStatistics($this->obj_id);
00037 }
00038
00043 function show() {
00044 global $tpl, $lng, $ilias;
00045
00046 $q = "SELECT obj_id, type,title FROM object_data WHERE type ='lm' and obj_id=".$this->obj_id;
00047 $result = $ilias->db->query($q);
00048 while ($row = $result->fetchRow()) {
00049 $Lehrmodulanz ++;
00050 $LehrmodulID[$Lehrmodulanz] = $row[0];
00051 $rLehrmodulID[$row[0]] = $Lehrmodulanz;
00052 $LehrmodulName[$Lehrmodulanz] = $row[2];
00053 }
00054
00055 $_SESSION["il_track_rlm_id"] = $rLehrmodulID;
00056 $_SESSION["il_track_lm_name"] = $LehrmodulName;
00057
00058 $q = "SELECT obj_id,title,type,lm_id FROM lm_data WHERE type='pg'";
00059 $result = $ilias->db->query($q);
00060 while ($row = $result->fetchRow()) {
00061 $LMSeitenanz[$rLehrmodulID[$row[3]]]++;
00062 }
00063
00064 $year = array (2004, 2005, 2006, 2007, 2008,2009,2010);
00065 $month = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
00066 $day = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
00067
00068 $tpl->addBlockFile("ADM_CONTENT", "adm_content", "Services/Tracking/templates/default/tpl.lm_statistics_settings.html");
00069
00070
00071 $tpl->setVariable("SEARCH_ACTION", $this->ctrl->getLinkTargetByClass('illmstatisticsgui',''));
00072 $tpl->setVariable("TXT_TRACKING_DATA", $lng->txt("tracking_data"));
00073 $tpl->setVariable("TXT_TIME_SEGMENT", $lng->txt("time_segment"));
00074 $tpl->setVariable("TXT_STATISTIC", $lng->txt("statistic"));
00075 $tpl->setVariable("TXT_STATISTIC_H", $lng->txt("stats_pages_statisics"));
00076 $tpl->setVariable("TXT_STATISTIC_D", $lng->txt("stats_chapter_statisics"));
00077 $tpl->setVariable("TXT_STATISTIC_O", $lng->txt("stats_sessions_statisics"));
00078 $tpl->setVariable("TXT_STATISTIC_U", $lng->txt("stats_navigation"));
00079 $tpl->setVariable("TXT_USER_LANGUAGE", $lng->txt("user_language"));
00080 $tpl->setVariable("TXT_LM", $lng->txt("lm"));
00081 $tpl->setVariable("TXT_SHOW_TR_DATA", $lng->txt("query_data"));
00082 $tpl->setVariable("TXT_SHOW_TR_DATA2", $lng->txt("stats_new_selection"));
00083 $tpl->setVariable("TXT_TRACKED_OBJECTS", $lng->txt("tracked_objects"));
00084 $tpl->setVariable("TXT_TRACKED_USER", $lng->txt("stats_tracked_user"));
00085
00086
00087 $tpl->setVariable("TXT_ALLE", $lng->txt("stats_all"));
00088 $tpl->setVariable("TXT_AUSWAHL", $lng->txt("stats_choice"));
00089
00090 if ($_SESSION["il_track_yearf"] == "") {
00091 $_SESSION["il_track_yearf"] = Date("Y");
00092 $_SESSION["il_track_yeart"] = Date("Y");
00093 $_SESSION["il_track_monthf"] = "1";
00094 $_SESSION["il_track_montht"] = Date("n");
00095 $_SESSION["il_track_dayf"] = "1";
00096 $_SESSION["il_track_dayt"] = Date("j");
00097 }
00098 if ($_SESSION["il_track_stat"] == "") {
00099 $_SESSION["il_track_stat"] = 'h';
00100 }
00101 $languages = $lng->getInstalledLanguages();
00102
00103 $tpl->setCurrentBlock("lm_selection");
00104 $_SESSION["il_track_lm"] = $this->obj_id;
00105 $tpl->setVariable("LM_ID", $LehrmodulID[1]);
00106 $tpl->setVariable("LM_DESC", substr($LehrmodulName[1], 0, 40)." (S:".$LMSeitenanz[1].")");
00107 $tpl->parseCurrentBlock();
00108
00109 if ($_SESSION["il_track_stat2"] == "choice") {
00110 $tpl->setVariable("CHC_CHK", " checked=\"1\" ");
00111
00112 } else {
00113 $tpl->setVariable("ALL_CHK", " checked=\"1\" ");
00114 }
00115
00116 $user_IDs = $_SESSION["userSelected_stat"];
00117
00118
00119 $tpl->setCurrentBlock("user_selection");
00120
00121 if (count($user_IDs) > 0) {
00122 foreach ($_SESSION["userSelected_stat"] as $result_id) {
00123 $tpl->setVariable("USER1", $result_id);
00124 $tpl->setVariable("USER2", $result_id);
00125 }
00126 } else {
00127 $tpl->setCurrentBlock("user_selection");
00128 $tpl->setVariable("USER1", "Alle");
00129 $tpl->setVariable("USER2", "Alle");
00130 }
00131
00132 include_once("Services/Tracking/classes/class.ilObjUserTracking.php");
00133
00134 if (!ilObjUserTracking::_enabledUserRelatedData()) {
00135 $tpl->setVariable ("DISABLED", "disabled");
00136 $tpl->setVariable("ALL_CHK", " checked=\"1\" ");
00137 $tpl->setVariable("CHC_CHK", "");
00138 } else {
00139 $tpl->setVariable("INFO1", $lng->txt(stats_current).": ".count($_SESSION["userSelected_stat"])." ".$lng->txt("stats_user_selected"));
00140 }
00141
00142 $tpl->parseCurrentBlock();
00143
00144
00145 foreach ($year as $key) {
00146 $tpl->setCurrentBlock("fromyear_selection");
00147 $tpl->setVariable("YEARFR", $key);
00148 $tpl->setVariable("YEARF", $key);
00149 if ($_SESSION["il_track_yearf"] == $key) {
00150 $tpl->setVariable("YEARF_SEL", " selected=\"1\" ");
00151 }
00152 $tpl->parseCurrentBlock();
00153 }
00154 foreach ($month as $key) {
00155 $tpl->setCurrentBlock("frommonth_selection");
00156 $tpl->setVariable("MONTHFR", $key);
00157 $tpl->setVariable("MONTHF", $key);
00158 if ($_SESSION["il_track_monthf"] == $key) {
00159 $tpl->setVariable("MONTHF_SEL", " selected=\"1\" ");
00160 }
00161 $tpl->parseCurrentBlock();
00162 }
00163 foreach ($day as $key) {
00164 $tpl->setCurrentBlock("fromday_selection");
00165 $tpl->setVariable("DAYFR", $key);
00166 $tpl->setVariable("DAYF", $key);
00167 if ($_SESSION["il_track_dayf"] == $key) {
00168 $tpl->setVariable("DAYF_SEL", " selected=\"1\" ");
00169 }
00170 $tpl->parseCurrentBlock();
00171 }
00172
00173 foreach ($day as $key) {
00174 $tpl->setCurrentBlock("today_selection");
00175 $tpl->setVariable("DAYTO", $key);
00176 $tpl->setVariable("DAYT", $key);
00177 if ($_SESSION["il_track_dayt"] == $key) {
00178 $tpl->setVariable("DAYT_SEL", " selected=\"1\" ");
00179 }
00180 $tpl->parseCurrentBlock();
00181 }
00182 foreach ($month as $key) {
00183 $tpl->setCurrentBlock("tomonth_selection");
00184 $tpl->setVariable("MONTHTO", $key);
00185 $tpl->setVariable("MONTHT", $key);
00186 if ($_SESSION["il_track_montht"] == $key) {
00187 $tpl->setVariable("MONTHT_SEL", " selected=\"1\" ");
00188 }
00189 $tpl->parseCurrentBlock();
00190 }
00191 foreach ($year as $key) {
00192 $tpl->setCurrentBlock("toyear_selection");
00193 $tpl->setVariable("YEARTO", $key);
00194 $tpl->setVariable("YEART", $key);
00195 if ($_SESSION["il_track_yeart"] == $key) {
00196 $tpl->setVariable("YEART_SEL", " selected=\"1\" ");
00197 }
00198 $tpl->parseCurrentBlock();
00199 }
00200
00201 $tpl->setCurrentBlock("language_selection");
00202 $tpl->setVariable("LANG", $lng->txt("any_language"));
00203 $tpl->setVariable("LANGSHORT", "0");
00204 $tpl->parseCurrentBlock();
00205 foreach ($languages as $lang_key) {
00206 $tpl->setCurrentBlock("language_selection");
00207 $tpl->setVariable("LANG", $lng->txt("lang_".$lang_key));
00208 $tpl->setVariable("LANGSHORT", $lang_key);
00209 if ($_SESSION["il_track_language"] == $lang_key) {
00210 $tpl->setVariable("LANG_SEL", " selected=\"1\" ");
00211 }
00212 $tpl->parseCurrentBlock();
00213 }
00214
00215 if ($_SESSION["il_track_stat"] == "d") {
00216 $tpl->setVariable("D_CHK", " checked=\"1\" ");
00217 }
00218 elseif ($_SESSION["il_track_stat"] == "h") {
00219 $tpl->setVariable("H_CHK", " checked=\"1\" ");
00220 }
00221 elseif ($_SESSION["il_track_stat"] == "o") {
00222 $tpl->setVariable("O_CHK", " checked=\"1\" ");
00223 }
00224 elseif ($_SESSION["il_track_stat"] == "u") {
00225 $tpl->setVariable("U_CHK", " checked=\"1\" ");
00226 }
00227 }
00228
00233 function outputStatistics() {
00234 require_once "./Services/Tracking/classes/class.ilLMStatistics.php";
00235
00236 if ($_POST["stat"] == 'u') {
00237 $this->lm_statistics->outputApplet();
00238 } else {
00239 $this->lm_statistics->outputHTML();
00240 }
00241 }
00242
00246 function searchUserForm() {
00247 global $rbacsystem;
00248
00249 $this->lng->loadLanguageModule('search');
00250
00251
00252 if (!$rbacsystem->checkAccess("write", $this->ref_id)) {
00253 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"), $this->ilias->error_obj->MESSAGE);
00254 }
00255
00256 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_members_search.html");
00257
00258 $this->tpl->setVariable("F_ACTION", $this->ctrl->getFormAction($this));
00259 $this->tpl->setVariable("SEARCH_ASSIGN_USR", $this->lng->txt("grp_search_members"));
00260 $this->tpl->setVariable("SEARCH_SEARCH_TERM", $this->lng->txt("search_search_term"));
00261 $this->tpl->setVariable("SEARCH_VALUE", $_SESSION["grp_search_str"] ? $_SESSION["grp_search_str"] : "");
00262 $this->tpl->setVariable("SEARCH_FOR", $this->lng->txt("exc_search_for"));
00263 $this->tpl->setVariable("SEARCH_ROW_TXT_USER", $this->lng->txt("exc_users"));
00264 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE", $this->lng->txt("exc_roles"));
00265 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP", $this->lng->txt("exc_groups"));
00266 $this->tpl->setVariable("BTN2_VALUE", $this->lng->txt("cancel"));
00267 $this->tpl->setVariable("BTN1_VALUE", $this->lng->txt("search"));
00268
00269 $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
00270 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
00271 $role = ($_POST["search_for"] == "role") ? 1 : 0;
00272
00273 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER", ilUtil :: formRadioButton($usr, "search_for", "usr"));
00274 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE", ilUtil :: formRadioButton($role, "search_for", "role"));
00275 $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP", ilUtil :: formRadioButton($grp, "search_for", "grp"));
00276
00277 }
00278
00279 function cancelMember() {
00280 $return_location = "members";
00281
00282 ilUtil::sendInfo($this->lng->txt("action_aborted"), true);
00283 ilUtil :: redirect($this->ctrl->getLinkTarget($this, $return_location));
00284 }
00285
00286 function members() {
00287 $this->show();
00288 }
00289
00290 function search() {
00291 global $rbacsystem, $tree;
00292
00293 $_SESSION["grp_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["grp_search_str"];
00294 $_SESSION["grp_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["grp_search_for"];
00295
00296
00297 if (!$rbacsystem->checkAccess("write", $this->ref_id)) {
00298 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"), $this->ilias->error_obj->MESSAGE);
00299 }
00300
00301 if (!isset ($_POST["search_for"]) or !isset ($_POST["search_str"])) {
00302 ilUtil::sendInfo($this->lng->txt("grp_search_enter_search_string"));
00303 $this->searchUserForm();
00304
00305 return false;
00306 }
00307
00308 if (!count($result = $this->__search(ilUtil :: stripSlashes($_POST["search_str"]), $_POST["search_for"]))) {
00309 ilUtil::sendInfo($this->lng->txt("grp_no_results_found"));
00310 $this->searchUserForm();
00311
00312 return false;
00313 }
00314
00315 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
00316 $this->__showButton("searchUserForm", $this->lng->txt("grp_new_search"));
00317
00318 $counter = 0;
00319 $f_result = array ();
00320
00321 switch ($_POST["search_for"]) {
00322 case "usr" :
00323 foreach ($result as $user) {
00324 if (!$tmp_obj = ilObjectFactory :: getInstanceByObjId($user["id"], false)) {
00325 continue;
00326 }
00327
00328 $user_ids[$counter] = $user["id"];
00329
00330 $f_result[$counter][] = ilUtil :: formCheckbox(0, "user[]", $user["id"]);
00331 $f_result[$counter][] = $tmp_obj->getLogin();
00332 $f_result[$counter][] = $tmp_obj->getFirstname();
00333 $f_result[$counter][] = $tmp_obj->getLastname();
00334 $f_result[$counter][] = ilFormat :: formatDate($tmp_obj->getLastLogin());
00335
00336 unset ($tmp_obj);
00337 ++ $counter;
00338 }
00339 $this->__showSearchUserTable($f_result, $user_ids);
00340
00341 return true;
00342
00343 case "role" :
00344 foreach ($result as $role) {
00345
00346 if ($role["id"] == ANONYMOUS_ROLE_ID) {
00347 continue;
00348 }
00349
00350 if (!$tmp_obj = ilObjectFactory :: getInstanceByObjId($role["id"], false)) {
00351 continue;
00352 }
00353
00354
00355 if ($tmp_obj->getCountMembers() == 0) {
00356 continue;
00357 }
00358
00359 $role_ids[$counter] = $role["id"];
00360
00361 $f_result[$counter][] = ilUtil :: formCheckbox(0, "role[]", $role["id"]);
00362 $f_result[$counter][] = array ($tmp_obj->getTitle(), $tmp_obj->getDescription());
00363 $f_result[$counter][] = $tmp_obj->getCountMembers();
00364
00365 unset ($tmp_obj);
00366 ++ $counter;
00367 }
00368
00369 $this->__showSearchRoleTable($f_result, $role_ids);
00370
00371 return true;
00372
00373 case "grp" :
00374 foreach ($result as $group) {
00375 if (!$tree->isInTree($group["id"])) {
00376 continue;
00377 }
00378
00379 if (!$tmp_obj = ilObjectFactory :: getInstanceByRefId($group["id"], false)) {
00380 continue;
00381 }
00382
00383
00384 if ($tmp_obj->getId() == $this->object->getId()) {
00385 continue;
00386 }
00387
00388 $grp_ids[$counter] = $group["id"];
00389
00390 $f_result[$counter][] = ilUtil :: formCheckbox(0, "group[]", $group["id"]);
00391 $f_result[$counter][] = array ($tmp_obj->getTitle(), $tmp_obj->getDescription());
00392 $f_result[$counter][] = $tmp_obj->getCountMembers();
00393
00394 unset ($tmp_obj);
00395 ++ $counter;
00396 }
00397
00398 if (!count($f_result)) {
00399 ilUtil::sendInfo($this->lng->txt("grp_no_results_found"));
00400 $this->searchUserFormObject();
00401
00402 return false;
00403 }
00404
00405 $this->__showSearchGroupTable($f_result, $grp_ids);
00406
00407 return true;
00408 }
00409 }
00410 function searchCancelled() {
00411 ilUtil::sendInfo($this->lng->txt("action_aborted"), true);
00412 ilUtil :: redirect($this->ctrl->getLinkTarget($this, "members"));
00413 }
00414 function __search($a_search_string, $a_search_for) {
00415 include_once ("classes/class.ilSearch.php");
00416
00417 $this->lng->loadLanguageModule("content");
00418 $search = & new ilSearch($_SESSION["AccountId"]);
00419 $search->setPerformUpdate(false);
00420 $search->setSearchString(ilUtil :: stripSlashes($a_search_string));
00421 $search->setCombination("and");
00422 $search->setSearchFor(array (0 => $a_search_for));
00423 $search->setSearchType('new');
00424
00425 if ($search->validate($message)) {
00426 $search->performSearch();
00427 } else {
00428 ilUtil::sendInfo($message, true);
00429 $this->ctrl->redirect($this, "searchUserForm");
00430 }
00431
00432 return $search->getResultByType($a_search_for);
00433 }
00434
00435 function __showSearchUserTable($a_result_set, $a_user_ids = NULL, $a_cmd = "search") {
00436 $return_to = "searchUserForm";
00437
00438 if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup") {
00439 $return_to = "search";
00440 }
00441
00442 $tbl = & $this->__initTableGUI();
00443 $tpl = & $tbl->getTemplateObject();
00444
00445
00446 $tpl->setCurrentBlock("tbl_form_header");
00447 $tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00448 $tpl->parseCurrentBlock();
00449
00450 $tpl->setCurrentBlock("tbl_action_btn");
00451 $tpl->setVariable("BTN_NAME", $return_to);
00452 $tpl->setVariable("BTN_VALUE", $this->lng->txt("back"));
00453 $tpl->parseCurrentBlock();
00454
00455 $tpl->setCurrentBlock("tbl_action_btn");
00456 $tpl->setVariable("BTN_NAME", "addUser");
00457 $tpl->setVariable("BTN_VALUE", $this->lng->txt("add"));
00458 $tpl->parseCurrentBlock();
00459
00460 if (!empty ($a_user_ids)) {
00461
00462 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00463 $tpl->setVariable("JS_VARNAME", "user");
00464 $tpl->setVariable("JS_ONCLICK", ilUtil :: array_php2js($a_user_ids));
00465 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00466 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00467 $tpl->parseCurrentBlock();
00468 }
00469
00470 $tpl->setCurrentBlock("tbl_action_row");
00471 $tpl->setVariable("COLUMN_COUNTS", 5);
00472 $tpl->setVariable("IMG_ARROW", ilUtil :: getImagePath("arrow_downright.gif"));
00473 $tpl->parseCurrentBlock();
00474
00475 $tbl->setTitle($this->lng->txt("grp_header_edit_members"), "icon_usr_b.gif", $this->lng->txt("grp_header_edit_members"));
00476 $tbl->setHeaderNames(array ("", $this->lng->txt("username"), $this->lng->txt("firstname"), $this->lng->txt("lastname"), $this->lng->txt("last_visit")));
00477 $tbl->setHeaderVars(array ("", "login", "firstname", "lastname", "last_visit"), array ("ref_id" => $this->ref_id, "cmd" => $a_cmd, "cmdClass" => "ilobjgroupgui", "cmdNode" => $_GET["cmdNode"]));
00478
00479 $tbl->setColumnWidth(array ("", "33%", "33%", "33%"));
00480
00481 $this->__setTableGUIBasicData($tbl, $a_result_set);
00482 $tbl->render();
00483
00484 $this->tpl->setVariable("SEARCH_RESULT_TABLE", $tbl->tpl->get());
00485
00486 return true;
00487 }
00488
00489 function __showSearchRoleTable($a_result_set, $a_role_ids = NULL) {
00490 $tbl = & $this->__initTableGUI();
00491 $tpl = & $tbl->getTemplateObject();
00492
00493 $tpl->setCurrentBlock("tbl_form_header");
00494 $tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00495 $tpl->parseCurrentBlock();
00496
00497 $tpl->setCurrentBlock("tbl_action_btn");
00498 $tpl->setVariable("BTN_NAME", "searchUserForm");
00499 $tpl->setVariable("BTN_VALUE", $this->lng->txt("back"));
00500 $tpl->parseCurrentBlock();
00501
00502 $tpl->setCurrentBlock("tbl_action_btn");
00503 $tpl->setVariable("BTN_NAME", "listUsersRole");
00504 $tpl->setVariable("BTN_VALUE", $this->lng->txt("grp_list_users"));
00505 $tpl->parseCurrentBlock();
00506
00507 if (!empty ($a_role_ids)) {
00508
00509 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00510 $tpl->setVariable("JS_VARNAME", "role");
00511 $tpl->setVariable("JS_ONCLICK", ilUtil :: array_php2js($a_role_ids));
00512 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00513 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00514 $tpl->parseCurrentBlock();
00515 }
00516
00517 $tpl->setCurrentBlock("tbl_action_row");
00518 $tpl->setVariable("COLUMN_COUNTS", 5);
00519 $tpl->setVariable("IMG_ARROW", ilUtil :: getImagePath("arrow_downright.gif"));
00520 $tpl->parseCurrentBlock();
00521
00522 $tbl->setTitle($this->lng->txt("grp_header_edit_members"), "icon_usr_b.gif", $this->lng->txt("grp_header_edit_members"));
00523 $tbl->setHeaderNames(array ("", $this->lng->txt("obj_role"), $this->lng->txt("grp_count_members")));
00524 $tbl->setHeaderVars(array ("", "title", "nr_members"), array ("ref_id" => $this->ref_id, "cmd" => "search", "cmdClass" => "ilobjgroupgui", "cmdNode" => $_GET["cmdNode"]));
00525
00526 $tbl->setColumnWidth(array ("", "80%", "19%"));
00527
00528 $this->__setTableGUIBasicData($tbl, $a_result_set, "role");
00529 $tbl->render();
00530
00531 $this->tpl->setVariable("SEARCH_RESULT_TABLE", $tbl->tpl->get());
00532
00533 return true;
00534 }
00535
00541 function __setTableGUIBasicData(&$tbl,&$result_set,$a_from = "")
00542 {
00543 switch ($a_from)
00544 {
00545 case "clipboardObject":
00546 $offset = $_GET["offset"];
00547 $order = $_GET["sort_by"];
00548 $direction = $_GET["sort_order"];
00549 $tbl->disable("footer");
00550 break;
00551
00552 default:
00553 $offset = $_GET["offset"];
00554 $order = $_GET["sort_by"];
00555 $direction = $_GET["sort_order"];
00556 break;
00557 }
00558
00559 $tbl->setOrderColumn($order);
00560 $tbl->setOrderDirection($direction);
00561 $tbl->setOffset($offset);
00562 $tbl->setLimit($_GET["limit"]);
00563 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00564 $tbl->setData($result_set);
00565 }
00566
00567 function __showSearchGroupTable($a_result_set, $a_grp_ids = NULL) {
00568 $tbl = & $this->__initTableGUI();
00569 $tpl = & $tbl->getTemplateObject();
00570
00571 $tpl->setCurrentBlock("tbl_form_header");
00572 $tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00573 $tpl->parseCurrentBlock();
00574
00575 $tpl->setCurrentBlock("tbl_action_btn");
00576 $tpl->setVariable("BTN_NAME", "searchUserForm");
00577 $tpl->setVariable("BTN_VALUE", $this->lng->txt("back"));
00578 $tpl->parseCurrentBlock();
00579
00580 $tpl->setCurrentBlock("tbl_action_btn");
00581 $tpl->setVariable("BTN_NAME", "listUsersGroup");
00582 $tpl->setVariable("BTN_VALUE", $this->lng->txt("grp_list_users"));
00583 $tpl->parseCurrentBlock();
00584
00585 if (!empty ($a_grp_ids)) {
00586
00587 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00588 $tpl->setVariable("JS_VARNAME", "group");
00589 $tpl->setVariable("JS_ONCLICK", ilUtil :: array_php2js($a_grp_ids));
00590 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00591 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00592 $tpl->parseCurrentBlock();
00593 }
00594
00595 $tpl->setCurrentBlock("tbl_action_row");
00596 $tpl->setVariable("COLUMN_COUNTS", 5);
00597 $tpl->setVariable("IMG_ARROW", ilUtil :: getImagePath("arrow_downright.gif"));
00598 $tpl->parseCurrentBlock();
00599
00600 $tbl->setTitle($this->lng->txt("grp_header_edit_members"), "icon_usr_b.gif", $this->lng->txt("grp_header_edit_members"));
00601 $tbl->setHeaderNames(array ("", $this->lng->txt("obj_grp"), $this->lng->txt("grp_count_members")));
00602 $tbl->setHeaderVars(array ("", "title", "nr_members"), array ("ref_id" => $this->ref_id, "cmd" => "search", "cmdClass" => "ilobjgroupgui", "cmdNode" => $_GET["cmdNode"]));
00603
00604 $tbl->setColumnWidth(array ("", "80%", "19%"));
00605
00606 $this->__setTableGUIBasicData($tbl, $a_result_set, "group");
00607 $tbl->render();
00608
00609 $this->tpl->setVariable("SEARCH_RESULT_TABLE", $tbl->tpl->get());
00610
00611 return true;
00612 }
00613 function listUsersRole() {
00614 global $rbacsystem, $rbacreview;
00615
00616 $_SESSION["grp_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["grp_role"];
00617
00618
00619 if (!$rbacsystem->checkAccess("write", $this->ref_id)) {
00620 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"), $this->ilias->error_obj->MESSAGE);
00621 }
00622
00623 if (!is_array($_POST["role"])) {
00624 ilUtil::sendInfo($this->lng->txt("grp_no_roles_selected"));
00625 $this->searchObject();
00626
00627 return false;
00628 }
00629
00630 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
00631 $this->__showButton("searchUserForm", $this->lng->txt("grp_new_search"));
00632
00633
00634 $members = array ();
00635 foreach ($_POST["role"] as $role_id) {
00636 $members = array_merge($rbacreview->assignedUsers($role_id), $members);
00637 }
00638
00639 $members = array_unique($members);
00640
00641
00642 $counter = 0;
00643 $f_result = array ();
00644 foreach ($members as $user) {
00645 if (!$tmp_obj = ilObjectFactory :: getInstanceByObjId($user, false)) {
00646 continue;
00647 }
00648
00649 if (!$tmp_obj->active) {
00650 continue;
00651 }
00652
00653 $user_ids[$counter] = $user;
00654
00655 $f_result[$counter][] = ilUtil :: formCheckbox(0, "user[]", $user);
00656 $f_result[$counter][] = $tmp_obj->getLogin();
00657 $f_result[$counter][] = $tmp_obj->getLastname();
00658 $f_result[$counter][] = $tmp_obj->getFirstname();
00659 $f_result[$counter][] = ilFormat :: formatDate($tmp_obj->getLastLogin());
00660
00661 unset ($tmp_obj);
00662 ++ $counter;
00663 }
00664 $this->__showSearchUserTable($f_result, $user_ids, "listUsersRole");
00665
00666 return true;
00667 }
00668
00669 function listUsersGroup() {
00670 global $rbacsystem, $rbacreview, $tree;
00671
00672 $_SESSION["grp_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["grp_group"];
00673
00674
00675 if (!$rbacsystem->checkAccess("write", $this->ref_id)) {
00676 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"), $this->ilias->error_obj->MESSAGE);
00677 }
00678
00679 if (!is_array($_POST["group"])) {
00680 ilUtil::sendInfo($this->lng->txt("grp_no_groups_selected"));
00681 $this->searchObject();
00682
00683 return false;
00684 }
00685
00686 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
00687 $this->__showButton("searchUserForm", $this->lng->txt("grp_new_search"));
00688
00689
00690 $members = array ();
00691 foreach ($_POST["group"] as $group_id) {
00692 if (!$tree->isInTree($group_id)) {
00693 continue;
00694 }
00695 if (!$tmp_obj = ilObjectFactory :: getInstanceByRefId($group_id)) {
00696 continue;
00697 }
00698
00699 $members = array_merge($tmp_obj->getGroupMemberIds(), $members);
00700
00701 unset ($tmp_obj);
00702 }
00703
00704 $members = array_unique($members);
00705
00706
00707 $counter = 0;
00708 $f_result = array ();
00709 foreach ($members as $user) {
00710 if (!$tmp_obj = ilObjectFactory :: getInstanceByObjId($user, false)) {
00711 continue;
00712 }
00713
00714 $user_ids[$counter] = $user;
00715
00716 $f_result[$counter][] = ilUtil :: formCheckbox(0, "user[]", $user);
00717 $f_result[$counter][] = $tmp_obj->getLogin();
00718 $f_result[$counter][] = $tmp_obj->getLastname();
00719 $f_result[$counter][] = $tmp_obj->getFirstname();
00720 $f_result[$counter][] = ilFormat :: formatDate($tmp_obj->getLastLogin());
00721
00722 unset ($tmp_obj);
00723 ++ $counter;
00724 }
00725 $this->__showSearchUserTable($f_result, $user_ids, "listUsersGroup");
00726
00727 return true;
00728 }
00729
00730 function addUser() {
00731
00732 $user_ids = $_POST["user"];
00733
00734 if (empty ($user_ids[0])) {
00735
00736
00737 $this->ilErr->raiseError($this->lng->txt("no_checkbox"), $this->ilErr->MESSAGE);
00738 } else {
00739
00740 }
00741 $_SESSION["il_track_stat2"] = "choice";
00742 $_SESSION["userSelected_stat"] = $_POST["user"];
00743 $this->show();
00744
00745 }
00746
00750 function & executeCommand() {
00751 if (isset($_POST["cmd"]["searchUserForm"]))
00752 {
00753 $cmd = "searchUserForm";
00754 } elseif (isset($_POST["cmd"]["outputStatistics"]))
00755 {
00756 $cmd = "outputStatistics";
00757 } else switch ($this->ctrl->getNextClass()) {
00758 default :
00759 $cmd = $this->__getDefaultCommand();
00760 }
00761 $this-> $cmd ();
00762 return true;
00763 }
00764
00765 }
00766 ?>