00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00035 include_once 'Services/Search/classes/class.ilSearchResult.php';
00036 include_once 'Services/Search/classes/class.ilSearchSettings.php';
00037
00038 class ilRepositorySearchGUI
00039 {
00040 var $search_type = 'usr';
00041
00046 function ilRepositorySearchGUI()
00047 {
00048 global $ilCtrl,$tpl,$lng;
00049
00050 $this->ctrl =& $ilCtrl;
00051 $this->tpl =& $tpl;
00052 $this->lng =& $lng;
00053 $this->lng->loadLanguageModule('search');
00054 $this->lng->loadLanguageModule('crs');
00055
00056 $this->__setSearchType();
00057 $this->__loadQueries();
00058
00059 $this->result_obj = new ilSearchResult();
00060 $this->result_obj->setMaxHits(1000000);
00061 $this->settings =& new ilSearchSettings();
00062
00063 }
00064
00065
00070 function setString($a_str)
00071 {
00072 $_SESSION['search']['string'] = $this->string = $a_str;
00073 }
00074 function getString()
00075 {
00076 return $this->string;
00077 }
00078
00083 function &executeCommand()
00084 {
00085 global $rbacsystem;
00086
00087 $next_class = $this->ctrl->getNextClass($this);
00088 $cmd = $this->ctrl->getCmd();
00089
00090 switch($next_class)
00091 {
00092 default:
00093 if(!$cmd)
00094 {
00095 $cmd = "show";
00096 }
00097 $this->$cmd();
00098 break;
00099 }
00100 return true;
00101 }
00102
00103 function __clearSession()
00104 {
00105
00106 unset($_SESSION['rep_search']);
00107 unset($_SESSION['append_results']);
00108 unset($_SESSION['rep_query']);
00109 unset($_SESSION['rep_search_type']);
00110 }
00111
00112 function cancel()
00113 {
00114 $this->ctrl->returnToParent($this);
00115 }
00116
00117 function start()
00118 {
00119
00120 $this->__clearSession();
00121 $this->show();
00122
00123 return true;
00124 }
00125
00126
00127 function addUser()
00128 {
00129
00130 $class =& $this->callback['class'];
00131 $method = $this->callback['method'];
00132
00133
00134 $class->$method($_POST['user']);
00135 $this->show();
00136 }
00137
00138 function setCallback(&$class,$method)
00139 {
00140 $this->callback = array('class' => $class,'method' => $method);
00141 }
00142
00143 function show()
00144 {
00145 $this->__showSearch();
00146 $this->__showSearchResults();
00147 }
00148
00149
00150 function __showSearch()
00151 {
00152 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.rep_search.html','Services/Search');
00153 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00154 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath('icon_usr.gif'));
00155 $this->tpl->setVariable("ALT_IMG",$this->lng->txt('obj_usr'));
00156 $this->tpl->setVariable("SEARCH_MEMBERS_HEADER",$this->lng->txt("add_members_header"));
00157
00158
00159
00160 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("search_for_users"));
00161 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($this->search_type == 'usr',"search_for","usr"));
00162 $this->__fillUserSearch();
00163
00164
00165
00166 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("search_for_grp_members"));
00167 $this->tpl->setVariable("GROUP_TERM",$this->lng->txt('search_grp_title'));
00168 $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($this->search_type == 'grp',"search_for","grp"));
00169 $this->tpl->setVariable("GRP_VALUE",$_SESSION['rep_query']['grp']['title']);
00170
00171
00172
00173 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("search_for_role_members"));
00174 $this->tpl->setVariable("ROLE_TERM",$this->lng->txt('search_role_title'));
00175 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($this->search_type == 'role',"search_for","role"));
00176 $this->tpl->setVariable("ROLE_VALUE",$_SESSION['rep_query']['role']['title']);
00177
00178
00179 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
00180 if(count($_SESSION['rep_search']['usr']))
00181 {
00182 $this->tpl->setVariable("BTN3_VALUE",$this->lng->txt('append_results'));
00183 }
00184 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
00185 }
00186
00187 function appendSearch()
00188 {
00189 $_SESSION['search_append'] = true;
00190 $this->performSearch();
00191 }
00192
00193
00194 function performSearch()
00195 {
00196
00197 if($_POST['cmd']['performSearch'])
00198 {
00199 unset($_SESSION['search_append']);
00200 }
00201
00202 switch($this->search_type)
00203 {
00204 case 'usr':
00205 $this->__performUserSearch();
00206 break;
00207
00208 case 'grp':
00209 $this->__performGroupSearch();
00210 break;
00211
00212 case 'role':
00213 $this->__performRoleSearch();
00214 break;
00215
00216 default:
00217 echo 'not defined';
00218 }
00219 $this->result_obj->filter(ROOT_FOLDER_ID,QP_COMBINATION_OR);
00220
00221 if(!count($this->result_obj->getResults()))
00222 {
00223 sendInfo($this->lng->txt('search_no_match'));
00224 }
00225 $this->__updateResults();
00226 if($this->result_obj->isLimitReached())
00227 {
00228 $message = sprintf($this->lng->txt('search_limit_reached'),$this->settings->getMaxHits());
00229 sendInfo($message);
00230 }
00231
00232 $this->show();
00233 }
00234
00235 function __performUserSearch()
00236 {
00237 include_once 'Services/Search/classes/class.ilUserSearchOptions.php';
00238 include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
00239
00240 foreach(ilUserSearchOptions::_getSearchableFieldsInfo() as $info)
00241 {
00242 $name = $info['db'];
00243 $query_string = $_SESSION['rep_query']['usr'][$name];
00244
00245
00246 if(!$query_string)
00247 {
00248 continue;
00249 }
00250
00251 if(!is_object($query_parser = $this->__parseQueryString($query_string)))
00252 {
00253 sendInfo($query_parser);
00254 return false;
00255 }
00256 switch($info['type'])
00257 {
00258 case FIELD_TYPE_UDF_SELECT:
00259 case FIELD_TYPE_UDF_TEXT:
00260 $udf_search = ilObjectSearchFactory::_getUserDefinedFieldSearchInstance($query_parser);
00261 $udf_search->setFields(array($name));
00262 $result_obj = $udf_search->performSearch();
00263
00264
00265 $this->__storeEntries($result_obj);
00266 break;
00267
00268 case FIELD_TYPE_SELECT:
00269 case FIELD_TYPE_TEXT:
00270 $user_search =& ilObjectSearchFactory::_getUserSearchInstance($query_parser);
00271 $user_search->setFields(array($name));
00272 $result_obj = $user_search->performSearch();
00273
00274
00275 $this->__storeEntries($result_obj);
00276 break;
00277 }
00278 }
00279 }
00280
00281 function __performGroupSearch()
00282 {
00283 include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
00284
00285 $query_string = $_SESSION['rep_query']['grp']['title'];
00286 if(!is_object($query_parser = $this->__parseQueryString($query_string)))
00287 {
00288 sendInfo($query_parser,true);
00289 return false;
00290 }
00291
00292 include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
00293 $object_search = new ilLikeObjectSearch($query_parser);
00294 $object_search->setFilter(array('grp'));
00295 $this->__storeEntries($object_search->performSearch());
00296
00297 return true;
00298 }
00299
00300 function __performRoleSearch()
00301 {
00302 include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
00303
00304 $query_string = $_SESSION['rep_query']['role']['title'];
00305 if(!is_object($query_parser = $this->__parseQueryString($query_string)))
00306 {
00307 sendInfo($query_parser,true);
00308 return false;
00309 }
00310
00311
00312 include_once 'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
00313 $object_search = new ilLikeObjectSearch($query_parser);
00314 $object_search->setFilter(array('role'));
00315 $this->__storeEntries($object_search->performSearch());
00316
00317 return true;
00318 }
00319
00325 function &__parseQueryString($a_string)
00326 {
00327 include_once 'Services/Search/classes/class.ilQueryParser.php';
00328
00329 $query_parser = new ilQueryParser(ilUtil::stripSlashes($a_string));
00330 $query_parser->setCombination(QP_COMBINATION_OR);
00331 $query_parser->setMinWordLength(1);
00332 $query_parser->parse();
00333
00334 if(!$query_parser->validate())
00335 {
00336 return $query_parser->getMessage();
00337 }
00338 return $query_parser;
00339 }
00340
00341
00342 function __loadQueries()
00343 {
00344 if(is_array($_POST['rep_query']))
00345 {
00346 $_SESSION['rep_query'] = $_POST['rep_query'];
00347 }
00348 }
00349
00350
00351 function __setSearchType()
00352 {
00353
00354 if($_POST['search_for'])
00355 {
00356 #echo 1;
00357 $_SESSION['rep_search_type'] = $_POST['search_for'];
00358 }
00359 if(!$_POST['search_for'] and !$_SESSION['rep_search_type'])
00360 {
00361 #echo 2;
00362 $_SESSION['rep_search_type'] = 'usr';
00363 }
00364
00365 $this->search_type = $_SESSION['rep_search_type'];
00366 #echo $this->search_type;
00367
00368 return true;
00369 }
00370
00371 function __fillUserSearch()
00372 {
00373 include_once 'Services/Search/classes/class.ilUserSearchOptions.php';
00374
00375 foreach(ilUserSearchOptions::_getSearchableFieldsInfo() as $info)
00376 {
00377 switch($info['type'])
00378 {
00379 case FIELD_TYPE_UDF_SELECT:
00380 case FIELD_TYPE_SELECT:
00381 $this->tpl->setCurrentBlock("select_field");
00382 $this->tpl->setVariable("SELECT_NAME",$info['lang']);
00383
00384 $name = $info['db'];
00385 $this->tpl->setVariable("SELECT_BOX",ilUtil::formSelect($_SESSION['rep_query']['usr'][$name],
00386 "rep_query[usr][$name]",
00387 $info['values'],
00388 false,
00389 true));
00390 $this->tpl->parseCurrentBlock();
00391 break;
00392
00393 case FIELD_TYPE_UDF_TEXT:
00394 case FIELD_TYPE_TEXT:
00395 $this->tpl->setCurrentBlock("text_field");
00396 $this->tpl->setVariable("TEXT_NAME",$info['lang']);
00397
00398 $name = $info['db'];
00399 $this->tpl->setVariable("USR_NAME","rep_query[usr][$name]");
00400 $this->tpl->setVariable("USR_VALUE",$_SESSION['rep_query']['usr'][$name]);
00401 $this->tpl->parseCurrentBlock();
00402 break;
00403 }
00404 $this->tpl->setCurrentBlock("usr_rows");
00405 $this->tpl->parseCurrentBlock();
00406 }
00407
00408 }
00409
00410 function __updateResults()
00411 {
00412 if(!$_SESSION['search_append'])
00413 {
00414 $_SESSION['rep_search'] = array();
00415 }
00416 foreach($this->result_obj->getResults() as $result)
00417 {
00418 $_SESSION['rep_search'][$this->search_type][] = $result['obj_id'];
00419 }
00420 if(!$_SESSION['rep_search'][$this->search_type])
00421 {
00422 $_SESSION['rep_search'][$this->search_type] = array();
00423 }
00424 else
00425 {
00426
00427 $_SESSION['rep_search'][$this->search_type] = array_unique($_SESSION['rep_search'][$this->search_type]);
00428 }
00429 return true;
00430 }
00431
00432 function __appendToStoredResults($a_usr_ids)
00433 {
00434 if(!$_SESSION['search_append'])
00435 {
00436 return $_SESSION['rep_search']['usr'] = $a_usr_ids;
00437 }
00438 foreach($a_usr_ids as $usr_id)
00439 {
00440 $_SESSION['rep_search']['usr'][] = $usr_id;
00441 }
00442 return $_SESSION['rep_search']['usr'] ? array_unique($_SESSION['rep_search']['usr']) : array();
00443 }
00444
00445 function __storeEntries(&$new_res)
00446 {
00447 if($this->stored == false)
00448 {
00449 $this->result_obj->mergeEntries($new_res);
00450 $this->stored = true;
00451 return true;
00452 }
00453 else
00454 {
00455 $this->result_obj->intersectEntries($new_res);
00456 return true;
00457 }
00458 }
00459
00460 function __fillUserTable($user_ids)
00461 {
00462 $user_ids = $user_ids ? $user_ids : array();
00463
00464 $counter = 0;
00465 foreach($user_ids as $usr_id)
00466 {
00467 if(!is_object($tmp_obj = ilObjectFactory::getInstanceByObjId($usr_id,false)))
00468 {
00469 continue;
00470 }
00471 $user_ids[$counter] = $usr_id;
00472
00473 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$usr_id);
00474 $f_result[$counter][] = $tmp_obj->getLogin();
00475 $f_result[$counter][] = $tmp_obj->getFirstname();
00476 $f_result[$counter][] = $tmp_obj->getLastname();
00477
00478 unset($tmp_obj);
00479 ++$counter;
00480 }
00481 return $f_result ? $f_result : array();
00482 }
00483
00484 function __fillGroupTable($group_ids)
00485 {
00486 $group_ids = $group_ids ? $group_ids : array();
00487 $counter = 0;
00488 foreach($group_ids as $group_id)
00489 {
00490 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($ref_id = end(
00491 $ref_ids = ilObject::_getAllReferences($group_id)),false))
00492 {
00493 continue;
00494 }
00495 $grp_ids[$counter] = $group_id;
00496
00497 $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$ref_id);
00498 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
00499 $f_result[$counter][] = $tmp_obj->getCountMembers();
00500
00501 unset($tmp_obj);
00502 ++$counter;
00503 }
00504 return $f_result ? $f_result : array();
00505 }
00506
00507 function __fillRoleTable($role_ids)
00508 {
00509 $role_ids = $role_ids ? $role_ids : array();
00510
00511 $counter = 0;
00512 foreach($role_ids as $role_id)
00513 {
00514
00515 if ($role_id == ANONYMOUS_ROLE_ID)
00516 {
00517 continue;
00518 }
00519 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role_id,false))
00520 {
00521 continue;
00522 }
00523
00524 if ($tmp_obj->getCountMembers() == 0)
00525 {
00526 continue;
00527 }
00528 $role_ids[$counter] = $role_id;
00529
00530 $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role_id);
00531 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
00532 $f_result[$counter][] = $tmp_obj->getCountMembers();
00533
00534 unset($tmp_obj);
00535 ++$counter;
00536 }
00537 return $f_result ? $f_result : array();
00538 }
00539
00540
00541 function __showSearchResults()
00542 {
00543 $counter = 0;
00544 $f_result = array();
00545 switch($this->search_type)
00546 {
00547 case "usr":
00548 $result = $this->__fillUserTable($_SESSION['rep_search']['usr']);
00549 $this->__showSearchUserTable($result,$_SESSION['rep_search']['usr']);
00550 break;
00551
00552 case 'grp':
00553 $result = $this->__fillGroupTable($_SESSION['rep_search']['grp']);
00554 $this->__showSearchGroupTable($result,$_SESSION['rep_search']['grp']);
00555 break;
00556
00557 case 'role':
00558 $result = $this->__fillRoleTable($_SESSION['rep_search']['role']);
00559 $this->__showSearchRoleTable($result,$_SESSION['rep_search']['role']);
00560 break;
00561 }
00562
00563
00564 if($_SESSION['search_append'] and $this->search_type != 'usr')
00565 {
00566 $result = $this->__fillUserTable($_SESSION['rep_search']['usr']);
00567 $this->__showSearchUserTable($result,$_SESSION['rep_search']['usr'],'search','APPEND_TABLE');
00568
00569 }
00570 }
00571 function __showSearchUserTable($a_result_set,$a_user_ids = NULL,$a_cmd = "performSearch",$tpl_var = 'RES_TABLE')
00572 {
00573 if(!$a_result_set)
00574 {
00575 return false;
00576 }
00577
00578 $tbl =& $this->__initTableGUI();
00579 $tpl =& $tbl->getTemplateObject();
00580
00581
00582
00583 $tpl->setCurrentBlock("tbl_form_header");
00584 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00585 $tpl->parseCurrentBlock();
00586
00587 $tpl->setCurrentBlock("tbl_action_btn");
00588 $tpl->setVariable("BTN_NAME","addUser");
00589 $tpl->setVariable("BTN_VALUE",$this->lng->txt("btn_add"));
00590 $tpl->parseCurrentBlock();
00591 if (!empty($a_user_ids))
00592 {
00593 $tpl->setCurrentBlock("tbl_select_all");
00594 $tpl->setVariable("COLUMN_COUNTS",4);
00595 $tpl->setVariable("TXT_SELECT_ALL", $this->lng->txt("select_all"));
00596 $tpl->parseCurrentBlock();
00597 }
00598
00599 $tpl->setCurrentBlock("tbl_action_row");
00600 $tpl->setVariable("COLUMN_COUNTS",5);
00601 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00602 $tpl->parseCurrentBlock();
00603
00604 $tbl->setTitle($this->lng->txt("search_results"),"icon_usr.gif",$this->lng->txt("search_results"));
00605 $tbl->setHeaderNames(array("",
00606 $this->lng->txt("username"),
00607 $this->lng->txt("firstname"),
00608 $this->lng->txt("lastname")));
00609 $tbl->setHeaderVars(array("",
00610 "login",
00611 "firstname",
00612 "lastname"),
00613 array("ref_id" => $_GET['ref_id'],
00614 "cmd" => $a_cmd,
00615 "cmdClass" => "ilrepositorysearchgui",
00616 "cmdNode" => $_GET["cmdNode"]));
00617
00618 $tbl->setColumnWidth(array("","33%","33%","33%"));
00619
00620 $this->__setTableGUIBasicData($tbl,$a_result_set);
00621 $tbl->render();
00622
00623 $this->tpl->setVariable($tpl_var,$tbl->tpl->get());
00624
00625 return true;
00626 }
00627
00628 function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
00629 {
00630 if(!$a_result_set)
00631 {
00632 return false;
00633 }
00634
00635 $tbl =& $this->__initTableGUI();
00636 $tpl =& $tbl->getTemplateObject();
00637
00638 $tpl->setCurrentBlock("tbl_form_header");
00639 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00640 $tpl->parseCurrentBlock();
00641
00642 $tpl->setCurrentBlock("tbl_action_btn");
00643 $tpl->setVariable("BTN_NAME","listUsersGroup");
00644 $tpl->setVariable("BTN_VALUE",$this->lng->txt("crs_list_users"));
00645 $tpl->parseCurrentBlock();
00646
00647 if (!empty($a_grp_ids))
00648 {
00649 $tpl->setCurrentBlock("tbl_select_all");
00650 $tpl->setVariable("COLUMN_COUNTS",4);
00651 $tpl->setVariable("TXT_SELECT_ALL", $this->lng->txt("select_all"));
00652 $tpl->parseCurrentBlock();
00653 }
00654
00655 $tpl->setCurrentBlock("tbl_action_row");
00656 $tpl->setVariable("COLUMN_COUNTS",5);
00657 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00658 $tpl->parseCurrentBlock();
00659
00660 $tbl->setTitle($this->lng->txt("crs_header_edit_members"),"icon_grp.gif",$this->lng->txt("crs_header_edit_members"));
00661 $tbl->setHeaderNames(array("",
00662 $this->lng->txt("obj_grp"),
00663 $this->lng->txt("crs_count_members")));
00664 $tbl->setHeaderVars(array("",
00665 "title",
00666 "nr_members"),
00667 array("ref_id" => $_GET['ref_id'],
00668 "cmd" => "show",
00669 "cmdClass" => "ilrepositorysearchgui",
00670 "cmdNode" => $_GET["cmdNode"]));
00671
00672 $tbl->setColumnWidth(array("","80%","19%"));
00673
00674
00675 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
00676 $tbl->render();
00677
00678 $this->tpl->setVariable("RES_TABLE",$tbl->tpl->get());
00679
00680 return true;
00681 }
00682 function __showSearchRoleTable($a_result_set,$a_role_ids)
00683 {
00684 if(!$a_result_set)
00685 {
00686 return false;
00687 }
00688
00689 $tbl =& $this->__initTableGUI();
00690 $tpl =& $tbl->getTemplateObject();
00691
00692 $tpl->setCurrentBlock("tbl_form_header");
00693 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00694 $tpl->parseCurrentBlock();
00695
00696 $tpl->setCurrentBlock("tbl_action_btn");
00697 $tpl->setVariable("BTN_NAME","listUsersRole");
00698 $tpl->setVariable("BTN_VALUE",$this->lng->txt("crs_list_users"));
00699 $tpl->parseCurrentBlock();
00700
00701 if (!empty($a_role_ids))
00702 {
00703 $tpl->setCurrentBlock("tbl_select_all");
00704 $tpl->setVariable("COLUMN_COUNTS",4);
00705 $tpl->setVariable("TXT_SELECT_ALL", $this->lng->txt("select_all"));
00706 $tpl->parseCurrentBlock();
00707 }
00708
00709 $tpl->setCurrentBlock("tbl_action_row");
00710 $tpl->setVariable("COLUMN_COUNTS",5);
00711 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00712 $tpl->parseCurrentBlock();
00713
00714 $tbl->setTitle($this->lng->txt("crs_header_edit_members"),"icon_role.gif",$this->lng->txt("crs_header_edit_members"));
00715 $tbl->setHeaderNames(array("",
00716 $this->lng->txt("objs_role"),
00717 $this->lng->txt("crs_count_members")));
00718 $tbl->setHeaderVars(array("",
00719 "title",
00720 "nr_members"),
00721 array("ref_id" => $_GET['ref_id'],
00722 "cmd" => "show",
00723 "cmdClass" => "ilrepositorysearchgui",
00724 "cmdNode" => $_GET["cmdNode"]));
00725
00726 $tbl->setColumnWidth(array("","80%","19%"));
00727
00728
00729 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
00730 $tbl->render();
00731
00732 $this->tpl->setVariable("RES_TABLE",$tbl->tpl->get());
00733
00734 return true;
00735 }
00736
00737
00738 function listUsersGroup()
00739 {
00740 global $rbacsystem,$tree;
00741
00742 $_SESSION["crs_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["crs_group"];
00743
00744 if(!is_array($_POST["group"]))
00745 {
00746 sendInfo($this->lng->txt("crs_no_groups_selected"));
00747 $this->show();
00748
00749 return false;
00750 }
00751
00752 $this->__showSearch();
00753
00754
00755 $members = array();
00756 foreach($_POST["group"] as $group_id)
00757 {
00758 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
00759 {
00760 continue;
00761 }
00762 $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
00763
00764 unset($tmp_obj);
00765 }
00766 $this->__appendToStoredResults($members);
00767
00768 $result = $this->__fillUserTable($_SESSION['rep_search']['usr']);
00769 $this->__showSearchUserTable($result,$_SESSION['rep_search']['usr'],"listUsersGroup");
00770
00771 return true;
00772 }
00773 function listUsersRole()
00774 {
00775 global $rbacsystem,$rbacreview,$tree;
00776
00777 $_SESSION["crs_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["crs_role"];
00778
00779 if(!is_array($_POST["role"]))
00780 {
00781 sendInfo($this->lng->txt("crs_no_roles_selected"));
00782 $this->show();
00783
00784 return false;
00785 }
00786
00787 $this->__showSearch();
00788
00789
00790 $members = array();
00791 foreach($_POST["role"] as $role_id)
00792 {
00793 $members = array_merge($rbacreview->assignedUsers($role_id),$members);
00794 }
00795 $members = $this->__appendToStoredResults($members);
00796
00797 $result = $this->__fillUserTable($_SESSION['rep_search']['usr']);
00798 $this->__showSearchUserTable($result,$user_ids,"listUsersRole");
00799
00800 return true;
00801 }
00802
00803
00804
00805 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
00806 {
00807 global $ilUser;
00808
00809 switch($from)
00810 {
00811 case "group":
00812 $offset = $_GET["offset"];
00813 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
00814 $direction = $_GET["sort_order"];
00815 $tbl->setLimit(1000000);
00816 break;
00817
00818 case "role":
00819 $offset = $_GET["offset"];
00820 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
00821 $direction = $_GET["sort_order"];
00822 $tbl->setLimit(1000000);
00823 break;
00824
00825 default:
00826 $offset = $_GET["offset"];
00827
00828 if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
00829 {
00830 $_GET["sort_by"] = "login";
00831 }
00832 $order = $_GET["sort_by"];
00833 $direction = $_GET["sort_order"];
00834 $tbl->setLimit($ilUser->getPref('hits_per_page'));
00835 break;
00836 }
00837
00838 $tbl->setOrderColumn($order);
00839 $tbl->setOrderDirection($direction);
00840 $tbl->setOffset($offset);
00841 $tbl->setMaxCount(count($result_set));
00842 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00843 $tbl->setData($result_set);
00844 }
00845
00846
00847 function &__initTableGUI()
00848 {
00849 include_once "./classes/class.ilTableGUI.php";
00850
00851 return new ilTableGUI(0,false);
00852 }
00853
00854 }
00855 ?>