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';
65 $this->lng->loadLanguageModule(
'search');
66 $this->lng->loadLanguageModule(
'crs');
68 $this->
setTitle($this->lng->txt(
'add_members_header'));
74 $this->result_obj->setMaxHits(1000000);
85 $this->search_title = $a_title;
103 $this->searchable_check = $a_status;
135 $toolbar = $ilToolbar;
139 if(!isset($a_options[
'auto_complete_name']))
141 $a_options[
'auto_complete_name'] = $lng->txt(
'obj_user');
143 if(!isset($a_options[
'auto_complete_size']))
145 $a_options[
'auto_complete_size'] = 15;
147 if(!isset($a_options[
'submit_name']))
149 $a_options[
'submit_name'] = $lng->txt(
'btn_add');
152 $ajax_url = $ilCtrl->getLinkTargetByClass(array(get_class($parent_object),
'ilRepositorySearchGUI'),
153 'doUserAutoComplete',
'',
true,
false);
155 include_once(
"./Services/Form/classes/class.ilTextInputGUI.php");
156 $ul =
new ilTextInputGUI($a_options[
'auto_complete_name'],
'user_login');
157 $ul->setDataSource($ajax_url);
158 $ul->setSize($a_options[
'auto_complete_size']);
161 $toolbar->addInputItem($ul,
true);
165 $toolbar->addStickyItem($ul,
true);
168 if(count((array) $a_options[
'user_type']))
170 include_once
'./Services/Form/classes/class.ilSelectInputGUI.php';
172 $si->setOptions($a_options[
'user_type']);
175 $toolbar->addInputItem(
$si);
179 $toolbar->addStickyItem(
$si);
183 include_once
"Services/UIComponent/Button/classes/class.ilSubmitButton.php";
185 $button->setCaption($a_options[
'submit_name'],
false);
186 $button->setCommand(
'addUserFromAutoComplete');
189 $toolbar->addButtonInstance($button);
193 $toolbar->addStickyItem($button);
196 if((
bool)$a_options[
'add_search'] ||
197 is_numeric($a_options[
'add_from_container']))
199 $lng->loadLanguageModule(
"search");
201 $toolbar->addSeparator();
203 if((
bool)$a_options[
'add_search'])
205 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
207 $button->setCaption(
"search_users");
208 $button->setUrl($ilCtrl->getLinkTargetByClass(
'ilRepositorySearchGUI',
''));
209 $toolbar->addButtonInstance($button);
212 if(is_numeric($a_options[
'add_from_container']))
214 $parent_ref_id = (int)$a_options[
'add_from_container'];
215 $parent_container_ref_id = $tree->checkForParentType($parent_ref_id,
"grp");
216 $parent_container_type =
"grp";
217 if(!$parent_container_ref_id)
219 $parent_container_ref_id = $tree->checkForParentType($parent_ref_id,
"crs");
220 $parent_container_type =
"crs";
222 if($parent_container_ref_id)
224 if((
bool)$a_options[
'add_search'])
226 $toolbar->addSpacer();
229 $ilCtrl->setParameterByClass(
'ilRepositorySearchGUI',
"list_obj",
ilObject::_lookupObjId($parent_container_ref_id));
231 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
233 $button->setCaption(
"search_add_members_from_container_".$parent_container_type);
234 $button->setUrl($ilCtrl->getLinkTargetByClass(array(get_class($parent_object),
'ilRepositorySearchGUI'),
'listUsers'));
235 $toolbar->addButtonInstance($button);
240 $toolbar->setFormAction(
241 $ilCtrl->getFormActionByClass(
243 get_class($parent_object),
244 'ilRepositorySearchGUI')
257 if(
$GLOBALS[
'ilUser']->getId() == ANONYMOUS_USER_ID)
259 include_once
'./Services/JSON/classes/class.ilJsonUtil.php';
265 if(!isset(
$_GET[
'autoCompleteField']))
267 $a_fields = array(
'login',
'firstname',
'lastname',
'email');
268 $result_field =
'login';
272 $a_fields = array((
string)
$_GET[
'autoCompleteField']);
273 $result_field = (string) $_GET[
'autoCompleteField'];
276 include_once
'./Services/User/classes/class.ilUserAutoComplete.php';
284 $auto->setMoreLinkAvailable(
true);
285 $auto->setSearchFields($a_fields);
286 $auto->setResultField($result_field);
287 $auto->enableFieldSearchableCheck(
true);
301 $_SESSION[
'search'][
'string'] = $this->
string = $a_str;
305 return $this->string;
316 $next_class = $this->ctrl->getNextClass($this);
317 $cmd = $this->ctrl->getCmd();
319 $this->ctrl->setReturn($this,
'');
345 $this->ctrl->returnToParent($this);
360 $class = $this->callback[
'class'];
361 $method = $this->callback[
'method'];
365 $class->$method(
$_POST[
'user']);
375 $class = $this->callback[
'class'];
376 $method = $this->callback[
'method'];
378 $users = explode(
',',
$_POST[
'user_login']);
380 foreach($users as $user)
385 $user_ids[] = $user_id;
389 $user_type = isset(
$_POST[
'user_type']) ?
$_POST[
'user_type'] : 0;
391 if(!$class->$method($user_ids,$user_type))
393 $GLOBALS[
'ilCtrl']->returnToParent($this);
402 $class = $this->callback[
'class'];
403 $method = $this->callback[
'method'];
406 if(!$class->$method((array)
$_POST[
'user'],$_POST[
'selectedCommand']))
412 public function setCallback(&$class,$method,$a_add_options = array())
414 $this->callback = array(
'class' => $class,
'method' => $method);
415 $this->add_options = $a_add_options ? $a_add_options : array();
421 $this->tpl->setContent($this->form->getHTML());
429 $selected = (int)
$_REQUEST[
'selected_id'];
431 #include_once './Services/Object/classes/class.ilObjectFactory.php'; 432 #$factory = new ilObjectFactory(); 433 #$user = $factory->getInstanceByObjId($selected); 435 #$this->initFormSearch($user); 436 #$this->tpl->setContent($this->form->getHTML()); 438 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
447 include_once
'./Services/Form/classes/class.ilPropertyFormGUI.php';
450 $this->form->setFormAction($this->ctrl->getFormAction($this,
'search'));
451 $this->form->setTitle($this->
getTitle());
452 $this->form->addCommandButton(
'performSearch', $this->lng->txt(
'search'));
453 $this->form->addCommandButton(
'cancel', $this->lng->txt(
'cancel'));
457 $kind->
setValue($this->search_type);
458 $this->form->addItem($kind);
461 $users =
new ilRadioOption($this->lng->txt(
'search_for_users'),
'usr');
464 include_once
'Services/Search/classes/class.ilUserSearchOptions.php';
467 switch(
$info[
'type'])
473 $sel->setOptions(
$info[
'values']);
474 $users->addSubItem($sel);
481 if(isset(
$info[
'autoComplete']) and
$info[
'autoComplete'])
483 $ilCtrl->setParameterByClass(get_class($this),
'autoCompleteField',$info[
'db']);
484 $ul =
new ilTextInputGUI($info[
'lang'],
"rep_query[usr][".$info[
'db'].
"]");
485 $ul->setDataSourceSubmitOnSelection(TRUE);
486 $ul->setDataSourceSubmitUrl(
487 $this->ctrl->getLinkTarget(
489 'showSearchSelected',
495 $ul->setDataSource($ilCtrl->getLinkTarget($this,
496 "doUserAutoComplete",
"",
true));
498 $ul->setMaxLength(120);
505 $ul->setValue($user->getFirstname());
508 $ul->setValue($user->getLastname());
511 $ul->setValue($user->getLogin());
518 $users->addSubItem($ul);
524 $txt->setMaxLength(120);
525 $users->addSubItem(
$txt);
530 $kind->addOption($users);
535 $roles =
new ilRadioOption($this->lng->txt(
'search_for_role_members'),
'role');
536 $role =
new ilTextInputGUI($this->lng->txt(
'search_role_title'),
'rep_query[role][title]');
538 $role->setMaxLength(120);
540 $kind->addOption($roles);
543 $groups =
new ilRadioOption($this->lng->txt(
'search_for_crs_members'),
'crs');
544 $group =
new ilTextInputGUI($this->lng->txt(
'search_crs_title'),
'rep_query[crs][title]');
546 $group->setMaxLength(120);
548 $kind->addOption($groups);
551 $groups =
new ilRadioOption($this->lng->txt(
'search_for_grp_members'),
'grp');
552 $group =
new ilTextInputGUI($this->lng->txt(
'search_grp_title'),
'rep_query[grp][title]');
554 $group->setMaxLength(120);
556 $kind->addOption($groups);
577 $found_query =
false;
578 foreach((array)
$_POST[
'rep_query'][
$_POST[
'search_for']] as $field => $value)
594 if(
$_POST[
'cmd'][
'performSearch'])
599 switch($this->search_type)
620 $this->result_obj->setRequiredPermission(
'read');
621 $this->result_obj->addObserver($this,
'searchResultFilterListener');
625 if($this->search_type ==
'usr')
627 include_once
'./Services/User/classes/class.ilUserFilter.php';
628 $this->search_results = array_intersect(
629 $this->result_obj->getResultIds(),
635 $this->search_results = array();
636 foreach((array) $this->result_obj->getResults() as
$res)
638 $this->search_results[] =
$res[
'obj_id'];
642 if(!count($this->search_results))
649 if($this->result_obj->isLimitReached())
651 $message = sprintf($this->lng->txt(
'search_limit_reached'),$this->settings->getMaxHits());
662 include_once
'Services/Search/classes/class.ilUserSearchOptions.php';
663 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
668 $query_string =
$_SESSION[
'rep_query'][
'usr'][$name];
681 switch($info[
'type'])
689 $udf_search->setFields(array($name));
690 $result_obj = $udf_search->performSearch();
702 $user_search->setFields(array($name));
703 $result_obj = $user_search->performSearch();
711 $multi_search->setFields(array($name));
712 $result_obj = $multi_search->performSearch();
725 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
727 $query_string =
$_SESSION[
'rep_query'][
'grp'][
'title'];
734 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
736 $object_search->setFilter(array(
'grp'));
748 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
750 $query_string =
$_SESSION[
'rep_query'][
'crs'][
'title'];
757 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
759 $object_search->setFilter(array(
'crs'));
771 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
773 $query_string =
$_SESSION[
'rep_query'][
'role'][
'title'];
781 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
783 $object_search->setFilter(array(
'role'));
798 $query_parser->setMinWordLength(1);
801 if(!(
bool)$a_ignore_length)
803 $query_parser->setGlobalMinLength(3);
806 $query_parser->parse();
808 if(!$query_parser->validate())
810 return $query_parser->getMessage();
812 return $query_parser;
818 if(is_array(
$_POST[
'rep_query']))
839 $this->search_type =
$_SESSION[
'rep_search_type'];
840 #echo $this->search_type; 852 foreach($this->search_results as
$result)
856 if(!
$_SESSION[
'rep_search'][$this->search_type])
872 return $_SESSION[
'rep_search'][
'usr'] = $a_usr_ids;
874 $_SESSION[
'rep_search'][
'usr'] = array();
875 foreach($a_usr_ids as $usr_id)
877 $_SESSION[
'rep_search'][
'usr'][] = $usr_id;
879 return $_SESSION[
'rep_search'][
'usr'] ? array_unique(
$_SESSION[
'rep_search'][
'usr']) : array();
884 if($this->stored ==
false)
886 $this->result_obj->mergeEntries($new_res);
887 $this->stored =
true;
892 $this->result_obj->intersectEntries($new_res);
903 include_once
'./Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php';
906 $this->lng->txt(
'search_new'),
907 $this->ctrl->getLinkTarget($this,
'showSearch')
909 $this->tpl->setVariable(
'ACTION_BUTTONS',$toolbar->getHTML());
917 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
920 switch($this->search_type)
947 $is_in_admin = (
$_REQUEST[
'baseClass'] ==
'ilAdministrationGUI');
951 $_SESSION[
"usr_search_link"] = $this->ctrl->getLinkTarget($this,
'show');
954 include_once
'./Services/Search/classes/class.ilRepositoryUserResultTableGUI.php';
957 if(count($this->add_options))
959 $table->addMultiItemSelectionButton(
962 'handleMultiCommand',
963 $this->lng->txt(
'execute')
968 $table->addMultiCommand(
'addUser', $this->lng->txt(
'btn_add'));
971 $table->parseUserIds($a_usr_ids);
973 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
983 include_once
'./Services/Search/classes/class.ilRepositoryObjectResultTableGUI.php';
986 $table->parseObjectIds($a_obj_ids);
988 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
998 include_once
'./Services/Search/classes/class.ilRepositoryObjectResultTableGUI.php';
1001 $table->parseObjectIds($a_obj_ids);
1003 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
1013 include_once
'./Services/Search/classes/class.ilRepositoryObjectResultTableGUI.php';
1016 $table->parseObjectIds($a_obj_ids);
1018 $this->tpl->setVariable(
'RES_TABLE',$table->getHTML());
1029 if (
$_GET[
"list_obj"] !=
"" && !is_array(
$_POST[
'obj']))
1044 foreach(
$_POST[
'obj'] as $obj_id)
1052 include_once
'./Services/Membership/classes/class.ilParticipants.php';
1062 include_once
'./Services/User/classes/class.ilUserFilter.php';
1067 $members = array_unique((array) $members);
1070 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
1098 if($a_data[
'type'] ==
'usr')
1100 if($a_data[
'obj_id'] == ANONYMOUS_USER_ID)
1115 $this->object_selection = (bool)$a_value;
1125 if (
$_GET[
"list_obj"] !=
"" && !is_array(
$_POST[
'obj']))
1136 $this->ctrl->setParameter($this->callback[
"class"],
"obj", implode(
";",
$_POST[
"obj"]));
1137 $this->ctrl->redirect($this->callback[
"class"], $this->callback[
"method"]);
1147 $this->user_limitations = (bool) $a_limitations;
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)
setUserLimitations($a_limitations)
allow user limitations like inactive and access limitations
__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.
getUserLimitations()
allow user limitations like inactive and access limitations
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 Used in member search.
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']
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array(), $a_sticky=false)
fill toolbar with
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
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)