35 include_once
'Services/Search/classes/class.ilSearchResult.php';
36 include_once
'Services/Search/classes/class.ilSearchSettings.php';
37 include_once
'./Services/User/classes/class.ilUserAccountSettings.php';
38 include_once
'Services/Search/classes/class.ilQueryParser.php';
64 $this->lng->loadLanguageModule(
'search');
65 $this->lng->loadLanguageModule(
'crs');
67 $this->
setTitle($this->lng->txt(
'add_members_header'));
73 $this->result_obj->setMaxHits(1000000);
84 $this->search_title = $a_title;
102 $this->searchable_check = $a_status;
134 $toolbar = $ilToolbar;
138 if(!isset($a_options[
'auto_complete_name']))
140 $a_options[
'auto_complete_name'] = $lng->txt(
'obj_user');
142 if(!isset($a_options[
'auto_complete_size']))
144 $a_options[
'auto_complete_size'] = 15;
146 if(!isset($a_options[
'submit_name']))
148 $a_options[
'submit_name'] = $lng->txt(
'btn_add');
151 $ajax_url = $ilCtrl->getLinkTargetByClass(array(get_class($parent_object),
'ilRepositorySearchGUI'),
152 'doUserAutoComplete',
'',
true,
false);
154 include_once(
"./Services/Form/classes/class.ilTextInputGUI.php");
155 $ul =
new ilTextInputGUI($a_options[
'auto_complete_name'],
'user_login');
156 $ul->setDataSource($ajax_url);
157 $ul->setSize($a_options[
'auto_complete_size']);
158 $toolbar->addInputItem($ul,
true);
160 if(count((array) $a_options[
'user_type']))
162 include_once
'./Services/Form/classes/class.ilSelectInputGUI.php';
164 $si->setOptions($a_options[
'user_type']);
165 $toolbar->addInputItem(
$si);
168 include_once
"Services/UIComponent/Button/classes/class.ilSubmitButton.php";
170 $button->setCaption($a_options[
'submit_name'],
false);
171 $button->setCommand(
'addUserFromAutoComplete');
172 $toolbar->addButtonInstance($button);
174 if((
bool)$a_options[
'add_search'] ||
175 is_numeric($a_options[
'add_from_container']))
177 $lng->loadLanguageModule(
"search");
179 $toolbar->addSeparator();
181 if((
bool)$a_options[
'add_search'])
183 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
185 $button->setCaption(
"search_users");
186 $button->setUrl($ilCtrl->getLinkTargetByClass(
'ilRepositorySearchGUI',
''));
187 $toolbar->addButtonInstance($button);
190 if(is_numeric($a_options[
'add_from_container']))
192 $parent_ref_id = (int)$a_options[
'add_from_container'];
193 $parent_container_ref_id = $tree->checkForParentType($parent_ref_id,
"grp");
194 $parent_container_type =
"grp";
195 if(!$parent_container_ref_id)
197 $parent_container_ref_id = $tree->checkForParentType($parent_ref_id,
"crs");
198 $parent_container_type =
"crs";
200 if($parent_container_ref_id)
202 if((
bool)$a_options[
'add_search'])
204 $toolbar->addSpacer();
207 $ilCtrl->setParameterByClass(
'ilRepositorySearchGUI',
"list_obj",
ilObject::_lookupObjId($parent_container_ref_id));
209 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
211 $button->setCaption(
"search_add_members_from_container_".$parent_container_type);
212 $button->setUrl($ilCtrl->getLinkTargetByClass(array(get_class($parent_object),
'ilRepositorySearchGUI'),
'listUsers'));
213 $toolbar->addButtonInstance($button);
218 $toolbar->setFormAction(
219 $ilCtrl->getFormActionByClass(
221 get_class($parent_object),
222 'ilRepositorySearchGUI')
235 if(
$GLOBALS[
'ilUser']->getId() == ANONYMOUS_USER_ID)
237 include_once
'./Services/JSON/classes/class.ilJsonUtil.php';
243 if(!isset(
$_GET[
'autoCompleteField']))
245 $a_fields = array(
'login',
'firstname',
'lastname',
'email');
246 $result_field =
'login';
250 $a_fields = array((
string)
$_GET[
'autoCompleteField']);
251 $result_field = (string) $_GET[
'autoCompleteField'];
254 include_once
'./Services/User/classes/class.ilUserAutoComplete.php';
262 $auto->setMoreLinkAvailable(
true);
263 $auto->setSearchFields($a_fields);
264 $auto->setResultField($result_field);
265 $auto->enableFieldSearchableCheck(
true);
277 $_SESSION[
'search'][
'string'] = $this->
string = $a_str;
281 return $this->string;
292 $next_class = $this->ctrl->getNextClass($this);
293 $cmd = $this->ctrl->getCmd();
295 $this->ctrl->setReturn($this,
'');
321 $this->ctrl->returnToParent($this);
336 $class = $this->callback[
'class'];
337 $method = $this->callback[
'method'];
341 $class->$method(
$_POST[
'user']);
351 $class = $this->callback[
'class'];
352 $method = $this->callback[
'method'];
354 $users = explode(
',',
$_POST[
'user_login']);
356 foreach($users as $user)
361 $user_ids[] = $user_id;
365 $user_type = isset(
$_POST[
'user_type']) ?
$_POST[
'user_type'] : 0;
367 if(!$class->$method($user_ids,$user_type))
369 $GLOBALS[
'ilCtrl']->returnToParent($this);
378 $class = $this->callback[
'class'];
379 $method = $this->callback[
'method'];
382 if(!$class->$method((array)
$_POST[
'user'],$_POST[
'selectedCommand']))
388 public function setCallback(&$class,$method,$a_add_options = array())
390 $this->callback = array(
'class' => $class,
'method' => $method);
391 $this->add_options = $a_add_options ? $a_add_options : array();
397 $this->tpl->setContent($this->form->getHTML());
405 $selected = (int)
$_REQUEST[
'selected_id'];
407 #include_once './Services/Object/classes/class.ilObjectFactory.php'; 408 #$factory = new ilObjectFactory(); 409 #$user = $factory->getInstanceByObjId($selected); 411 #$this->initFormSearch($user); 412 #$this->tpl->setContent($this->form->getHTML()); 414 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
423 include_once
'./Services/Form/classes/class.ilPropertyFormGUI.php';
426 $this->form->setFormAction($this->ctrl->getFormAction($this,
'search'));
427 $this->form->setTitle($this->
getTitle());
428 $this->form->addCommandButton(
'performSearch', $this->lng->txt(
'search'));
429 $this->form->addCommandButton(
'cancel', $this->lng->txt(
'cancel'));
433 $kind->
setValue($this->search_type);
434 $this->form->addItem($kind);
437 $users =
new ilRadioOption($this->lng->txt(
'search_for_users'),
'usr');
440 include_once
'Services/Search/classes/class.ilUserSearchOptions.php';
443 switch($info[
'type'])
448 $sel =
new ilSelectInputGUI($info[
'lang'],
"rep_query[usr][".$info[
'db'].
"]");
449 $sel->setOptions($info[
'values']);
450 $users->addSubItem($sel);
457 if(isset($info[
'autoComplete']) and $info[
'autoComplete'])
459 $ilCtrl->setParameterByClass(get_class($this),
'autoCompleteField',$info[
'db']);
460 $ul =
new ilTextInputGUI($info[
'lang'],
"rep_query[usr][".$info[
'db'].
"]");
461 $ul->setDataSourceSubmitOnSelection(TRUE);
462 $ul->setDataSourceSubmitUrl(
463 $this->ctrl->getLinkTarget(
465 'showSearchSelected',
471 $ul->setDataSource($ilCtrl->getLinkTarget($this,
472 "doUserAutoComplete",
"",
true));
474 $ul->setMaxLength(120);
481 $ul->setValue($user->getFirstname());
484 $ul->setValue($user->getLastname());
487 $ul->setValue($user->getLogin());
494 $users->addSubItem($ul);
500 $txt->setMaxLength(120);
501 $users->addSubItem(
$txt);
506 $kind->addOption($users);
511 $roles =
new ilRadioOption($this->lng->txt(
'search_for_role_members'),
'role');
512 $role =
new ilTextInputGUI($this->lng->txt(
'search_role_title'),
'rep_query[role][title]');
514 $role->setMaxLength(120);
516 $kind->addOption($roles);
519 $groups =
new ilRadioOption($this->lng->txt(
'search_for_crs_members'),
'crs');
520 $group =
new ilTextInputGUI($this->lng->txt(
'search_crs_title'),
'rep_query[crs][title]');
522 $group->setMaxLength(120);
524 $kind->addOption($groups);
527 $groups =
new ilRadioOption($this->lng->txt(
'search_for_grp_members'),
'grp');
528 $group =
new ilTextInputGUI($this->lng->txt(
'search_grp_title'),
'rep_query[grp][title]');
530 $group->setMaxLength(120);
532 $kind->addOption($groups);
553 $found_query =
false;
554 foreach((array)
$_POST[
'rep_query'][
$_POST[
'search_for']] as $field => $value)
570 if(
$_POST[
'cmd'][
'performSearch'])
575 switch($this->search_type)
596 $this->result_obj->setRequiredPermission(
'read');
597 $this->result_obj->addObserver($this,
'searchResultFilterListener');
601 if($this->search_type ==
'usr')
603 include_once
'./Services/User/classes/class.ilUserFilter.php';
604 $this->search_results = array_intersect(
605 $this->result_obj->getResultIds(),
611 $this->search_results = array();
612 foreach((array) $this->result_obj->getResults() as
$res)
614 $this->search_results[] =
$res[
'obj_id'];
618 if(!count($this->search_results))
625 if($this->result_obj->isLimitReached())
627 $message = sprintf($this->lng->txt(
'search_limit_reached'),$this->settings->getMaxHits());
638 include_once
'Services/Search/classes/class.ilUserSearchOptions.php';
639 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
644 $query_string =
$_SESSION[
'rep_query'][
'usr'][$name];
657 switch($info[
'type'])
665 $udf_search->setFields(array($name));
666 $result_obj = $udf_search->performSearch();
678 $user_search->setFields(array($name));
679 $result_obj = $user_search->performSearch();
687 $multi_search->setFields(array($name));
688 $result_obj = $multi_search->performSearch();
701 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
703 $query_string =
$_SESSION[
'rep_query'][
'grp'][
'title'];
710 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
712 $object_search->setFilter(array(
'grp'));
724 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
726 $query_string =
$_SESSION[
'rep_query'][
'crs'][
'title'];
733 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
735 $object_search->setFilter(array(
'crs'));
747 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
749 $query_string =
$_SESSION[
'rep_query'][
'role'][
'title'];
757 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
759 $object_search->setFilter(array(
'role'));
774 $query_parser->setMinWordLength(1);
777 if(!(
bool)$a_ignore_length)
779 $query_parser->setGlobalMinLength(3);
782 $query_parser->parse();
784 if(!$query_parser->validate())
786 return $query_parser->getMessage();
788 return $query_parser;
794 if(is_array(
$_POST[
'rep_query']))
815 $this->search_type =
$_SESSION[
'rep_search_type'];
816 #echo $this->search_type; 828 foreach($this->search_results as
$result)
832 if(!
$_SESSION[
'rep_search'][$this->search_type])
848 return $_SESSION[
'rep_search'][
'usr'] = $a_usr_ids;
850 $_SESSION[
'rep_search'][
'usr'] = array();
851 foreach($a_usr_ids as $usr_id)
853 $_SESSION[
'rep_search'][
'usr'][] = $usr_id;
855 return $_SESSION[
'rep_search'][
'usr'] ? array_unique(
$_SESSION[
'rep_search'][
'usr']) : array();
860 if($this->stored ==
false)
862 $this->result_obj->mergeEntries($new_res);
863 $this->stored =
true;
868 $this->result_obj->intersectEntries($new_res);
879 include_once
'./Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php';
882 $this->lng->txt(
'search_new'),
883 $this->ctrl->getLinkTarget($this,
'showSearch')
885 $this->tpl->setVariable(
'ACTION_BUTTONS',$toolbar->getHTML());
893 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
896 switch($this->search_type)
923 $is_in_admin = (
$_REQUEST[
'baseClass'] ==
'ilAdministrationGUI');
927 $_SESSION[
"usr_search_link"] = $this->ctrl->getLinkTarget($this,
'show');
930 include_once
'./Services/Search/classes/class.ilRepositoryUserResultTableGUI.php';
933 if(count($this->add_options))
935 $table->addMultiItemSelectionButton(
938 'handleMultiCommand',
939 $this->lng->txt(
'execute')
944 $table->addMultiCommand(
'addUser', $this->lng->txt(
'btn_add'));
946 $table->parseUserIds($a_usr_ids);
948 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
958 include_once
'./Services/Search/classes/class.ilRepositoryObjectResultTableGUI.php';
961 $table->parseObjectIds($a_obj_ids);
963 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
973 include_once
'./Services/Search/classes/class.ilRepositoryObjectResultTableGUI.php';
976 $table->parseObjectIds($a_obj_ids);
978 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
988 include_once
'./Services/Search/classes/class.ilRepositoryObjectResultTableGUI.php';
991 $table->parseObjectIds($a_obj_ids);
993 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
1004 if (
$_GET[
"list_obj"] !=
"" && !is_array(
$_POST[
'obj']))
1019 foreach(
$_POST[
'obj'] as $obj_id)
1027 include_once
'./Services/Membership/classes/class.ilParticipants.php';
1037 include_once
'./Services/User/classes/class.ilUserFilter.php';
1042 $members = array_unique((array) $members);
1045 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
1073 if($a_data[
'type'] ==
'usr')
1075 if($a_data[
'obj_id'] == ANONYMOUS_USER_ID)
1090 $this->object_selection = (bool)$a_value;
1100 if (
$_GET[
"list_obj"] !=
"" && !is_array(
$_POST[
'obj']))
1111 $this->ctrl->setParameter($this->callback[
"class"],
"obj", implode(
";",
$_POST[
"obj"]));
1112 $this->ctrl->redirect($this->callback[
"class"], $this->callback[
"method"]);
setCallback(&$class, $method, $a_add_options=array())
setTitle($a_title)
Set form title.
selectObject()
Return selection of course/group/roles to calling script.
This class represents an option in a radio group.
showSearchGroupTable($a_obj_ids)
TableGUI class user search results.
enableSearchableCheck($a_status)
En/disable the validation of the searchable flag.
addUserFromAutoComplete()
Add user from auto complete input.
isSearchableCheckEnabled()
showSearchSelected()
submit from autocomplete
__performGroupSearch()
Search groups.
addNewSearchButton()
Add new search button.
__appendToStoredResults($a_usr_ids)
showSearchRoleTable($a_obj_ids)
Show usr table.
static _lookupId($a_user_str)
lookup id by login
const FIELD_TYPE_UDF_TEXT
static getInstance()
Singelton get instance.
static getUserMultiFieldSearchInstance($query_parser)
__performRoleSearch()
Search roles.
static hasParticipantListAccess($a_obj_id, $a_usr_id=null)
Check if (current) user has access to the participant list.
searchResultFilterListener($a_ref_id, $a_data)
Listener called from ilSearchResult Id is obj_id for role, usr Id is ref_id for crs grp...
Auto completion class for user lists.
__performCourseSearch()
Search courses.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static _getUserSearchInstance($query_parser)
get reference of ilLikeUserSearch
static encode($mixed, $suppress_native=false)
showSearchCourseTable($a_obj_ids)
__storeEntries(&$new_res)
doUserAutoComplete()
Do auto completion.
addSubItem($a_item)
Add Subitem.
static _lookupObjId($a_id)
This class represents a text property in a property form.
initFormSearch(ilObjUser $user=NULL)
getTitle()
Get search form title.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
const FIELD_TYPE_UDF_SELECT
Class ilUserSearchOptions.
listUsers()
List users of course/group/roles.
static _lookupType($a_id, $a_reference=false)
lookup object type
allowObjectSelection($a_value=false)
Toggle object selection status.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
storedUserList()
Called from table sort.
TableGUI class object (course,group and role) search results.
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array())
fill toolbar with
ilRepositorySearchGUI()
Constructor public.
setString($a_str)
Set/get search string public.
handleMultiCommand()
Handle multi command.
& __parseQueryString($a_string, $a_combination_or=true, $a_ignore_length=false)
parse query string, using query parser instance
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
showSearchUserTable($a_usr_ids, $a_parent_cmd)
Show usr table.
& executeCommand()
Control public.
static getInstanceByObjId($a_obj_id)
Get instance by obj type.
performSearch()
Perform a search.
static _getUserDefinedFieldSearchInstance($query_parser)
get reference of ilLikeUserDefinedFieldSearch
static _getSearchableFieldsInfo($a_admin=false)