19 declare(strict_types=1);
86 $this->
ctrl = $DIC->ctrl();
87 $this->tpl = $DIC->ui()->mainTemplate();
88 $this->tree = $DIC->repositoryTree();
89 $this->ui_renderer = $DIC->ui()->renderer();
90 $this->ui_factory = $DIC->ui()->factory();
91 $this->
lng = $DIC->language();
92 $this->rbacreview = $DIC->rbac()->review();
94 $this->
http = $DIC->http();
95 $this->
user = $DIC->user();
96 $this->
tabs = $DIC->tabs();
98 $this->
lng->loadLanguageModule(
'search');
99 $this->
lng->loadLanguageModule(
'crs');
101 $this->
setTitle($this->
lng->txt(
'add_members_header'));
107 $this->result_obj->setMaxHits(1000000);
113 if ($this->
http->wrapper()->query()->has(
'user_type')) {
114 return $this->
http->wrapper()->query()->retrieve(
116 $this->
refinery->kindlyTo()->string()
124 if ($this->
http->wrapper()->post()->has(
'user_type')) {
125 return $this->
http->wrapper()->post()->retrieve(
127 $this->
refinery->kindlyTo()->string()
148 $this->search_title = $a_title;
158 $this->searchable_check = $a_status;
196 object $parent_object,
198 array $a_options = [],
199 bool $a_sticky =
false 203 $ilToolbar = $DIC->toolbar();
204 $lng = $DIC->language();
205 $ilCtrl = $DIC->ctrl();
206 $tree = $DIC->repositoryTree();
207 $user = $DIC->user();
208 $ui_factory = $DIC->ui()->factory();
209 $ui_renderer = $DIC->ui()->renderer();
212 $toolbar = $ilToolbar;
216 if (!isset($a_options[
'auto_complete_name'])) {
217 $a_options[
'auto_complete_name'] = $lng->
txt(
'obj_user');
219 if (!isset($a_options[
'auto_complete_size'])) {
220 $a_options[
'auto_complete_size'] = 15;
222 if (!isset($a_options[
'submit_name'])) {
223 $a_options[
'submit_name'] = $lng->
txt(
'btn_add');
225 if (!isset($a_options[
'user_type_default'])) {
226 $a_options[
'user_type_default'] = null;
229 if (!isset($a_options[
'add_search'])) {
230 $a_options[
'add_search'] =
false;
232 if (!isset($a_options[
'add_from_container'])) {
233 $a_options[
'add_from_container'] = null;
236 $ajax_url = $ilCtrl->getLinkTargetByClass(
237 array(get_class($parent_object),
'ilRepositorySearchGUI'),
238 'doUserAutoComplete',
244 $ul =
new ilTextInputGUI($a_options[
'auto_complete_name'],
'user_login');
245 $ul->setDataSource($ajax_url);
246 $ul->setSize($a_options[
'auto_complete_size']);
248 $toolbar->addInputItem($ul,
true);
250 $toolbar->addStickyItem($ul,
true);
253 if (isset($a_options[
'user_type']) && count((array) $a_options[
'user_type'])) {
255 $si->setOptions($a_options[
'user_type']);
256 $si->setValue($a_options[
'user_type_default']);
258 $toolbar->addInputItem($si);
260 $toolbar->addStickyItem($si);
265 if ($clip->hasContent()) {
269 $add_button->setCaption($a_options[
'submit_name'],
false);
270 $add_button->setCommand(
'addUserFromAutoComplete');
272 $action_button->setDefaultButton($add_button);
275 $clip_button->addCSSClass(
'btn btndefault');
277 $clip_button->setCaption($lng->
txt(
'clipboard_add_from_btn'),
false);
278 $clip_button->setCommand(
'showClipboard');
282 $toolbar->addButtonInstance($action_button);
285 $button->setCaption($a_options[
'submit_name'],
false);
286 $button->setCommand(
'addUserFromAutoComplete');
288 $toolbar->addButtonInstance($button);
290 $toolbar->addStickyItem($button);
294 if ($a_options[
'add_search'] ||
295 is_numeric($a_options[
'add_from_container'])) {
298 $toolbar->addSeparator();
300 if ($a_options[
'add_search']) {
301 $button = $ui_factory->
button()->standard(
302 $lng->
txt(
'search_users'),
303 $ilCtrl->getLinkTargetByClass(strtolower(self::class),
'')
305 $toolbar->addComponent($button);
308 if (is_numeric($a_options[
'add_from_container'])) {
309 $parent_ref_id = (
int) $a_options[
'add_from_container'];
311 $parent_container_type =
"grp";
312 if (!$parent_container_ref_id) {
314 $parent_container_type =
"crs";
316 if ($parent_container_ref_id) {
317 if ($a_options[
'add_search']) {
318 $toolbar->addSpacer();
321 $ilCtrl->setParameterByClass(
'ilRepositorySearchGUI',
"list_obj",
ilObject::_lookupObjId($parent_container_ref_id));
323 $button = $ui_factory->
button()->standard(
324 $lng->
txt(
'search_add_members_from_container_' . $parent_container_type),
325 $ilCtrl->getLinkTargetByClass(array(get_class($parent_object),
'ilRepositorySearchGUI'),
'listUsers')
327 $toolbar->addComponent($button);
332 $toolbar->setFormAction(
333 $ilCtrl->getFormActionByClass(
335 get_class($parent_object),
336 'ilRepositorySearchGUI')
346 echo json_encode(
new stdClass(), JSON_THROW_ON_ERROR);
349 if (!$this->
http->wrapper()->query()->has(
'autoCompleteField')) {
356 $result_field =
'login';
358 $auto_complete_field = $this->
http->wrapper()->query()->retrieve(
360 $this->
refinery->kindlyTo()->string()
362 $a_fields = [$auto_complete_field];
363 $result_field = $auto_complete_field;
368 if ($this->
http->wrapper()->query()->has(
'fetchall')) {
372 $auto->setMoreLinkAvailable(
true);
373 $auto->setSearchFields($a_fields);
374 $auto->setResultField($result_field);
375 $auto->enableFieldSearchableCheck(
true);
377 if (is_callable($this->user_filter)) {
378 $auto->addUserAccessFilterCallable(Closure::fromCallable($this->user_filter));
382 if ($this->
http->wrapper()->post()->has(
'term')) {
383 $query = $this->
http->wrapper()->post()->retrieve(
385 $this->
refinery->kindlyTo()->string()
389 if ($this->
http->wrapper()->query()->has(
'term')) {
390 $query = $this->
http->wrapper()->query()->retrieve(
392 $this->
refinery->kindlyTo()->string()
396 echo $auto->getList($query);
404 $search[
'string'] = $this->
string = $a_str;
414 $next_class = $this->
ctrl->getNextClass($this);
415 $cmd = $this->
ctrl->getCmd();
416 switch ($next_class) {
437 $this->
ctrl->returnToParent($this);
452 $class = $this->role_callback[
'class'];
453 $method = $this->role_callback[
'method'];
458 if ($this->
http->wrapper()->post()->has(
'obj')) {
459 $obj_ids = $this->
http->wrapper()->post()->retrieve(
465 foreach ($obj_ids as
$id) {
467 if ($obj_type ==
"crs" || $obj_type ==
"grp") {
471 $role_ids[] = $mem_role;
476 $class->$method($role_ids);
483 $class = $this->callback[
'class'];
484 $method = $this->callback[
'method'];
487 if ($this->
http->wrapper()->post()->has(
'user')) {
488 $users = $this->
http->wrapper()->post()->retrieve(
496 $class->$method($users);
504 $class = $this->callback[
'class'];
505 $method = $this->callback[
'method'];
508 if ($this->
http->wrapper()->post()->has(
'user_login')) {
509 $post_users = $this->
http->wrapper()->post()->retrieve(
511 $this->
refinery->kindlyTo()->string()
515 $users = explode(
',', $post_users);
517 foreach ($users as $user) {
520 $user_ids[] = $user_id;
525 if (!$class->$method($user_ids, $user_type)) {
526 $this->
ctrl->returnToParent($this);
533 if ($user_type ===
'') {
536 $this->
ctrl->setParameter($this,
'user_type', $user_type);
537 $this->
tabs->clearTargets();
538 $this->
tabs->setBackTarget(
539 $this->
lng->txt(
'back'),
540 $this->
ctrl->getParentReturn($this)
548 $this->tpl->setContent($clip->getHTML());
555 if ($user_type ===
'') {
558 $this->
ctrl->setParameter($this,
'user_type', $user_type);
561 if ($this->
http->wrapper()->post()->has(
'uids')) {
562 $users = $this->
http->wrapper()->post()->retrieve(
564 $this->
refinery->kindlyTo()->dictOf(
569 if (!count($users)) {
570 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
571 $this->
ctrl->redirect($this,
'showClipboard');
573 $class = $this->callback[
'class'];
574 $method = $this->callback[
'method'];
575 if (!$class->$method($users, $user_type)) {
576 $this->
ctrl->returnToParent($this);
584 if ($this->
http->wrapper()->post()->has(
'uids')) {
585 $users = $this->
http->wrapper()->post()->retrieve(
587 $this->
refinery->kindlyTo()->listOf(
594 if (!count($users)) {
595 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
596 $this->
ctrl->redirect($this,
'showClipboard');
600 $clip->delete($users);
603 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
604 $this->
ctrl->redirect($this,
'showClipboard');
614 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
615 $this->
ctrl->returnToParent($this);
621 $class = $this->callback[
'class'];
622 $method = $this->callback[
'method'];
624 $post_user = (array) ($this->
http->request()->getParsedBody()[
'user'] ?? []);
625 $post_selected_command =
'';
627 $this->
http->wrapper()->post()->has(
'table_top_cmd') &&
628 $this->
http->wrapper()->post()->has(
'selectedCommand_2')
630 $post_selected_command = $this->
http->wrapper()->post()->retrieve(
632 $this->
refinery->kindlyTo()->string()
634 } elseif ($this->
http->wrapper()->post()->has(
'selectedCommand')) {
635 $post_selected_command = $this->
http->wrapper()->post()->retrieve(
637 $this->
refinery->kindlyTo()->string()
641 if (!$class->$method($post_user, $post_selected_command)) {
652 array $a_add_options = [],
653 string $default_option =
'' 655 $this->callback = array(
'class' => $class,
'method' => $method);
656 $this->add_options = $a_add_options;
666 array $a_add_options = [],
667 string $default_option =
'' 669 $this->role_callback = array(
'class' => $class,
'method' => $method);
670 $this->add_options = $a_add_options;
687 $this->tpl->setContent($this->
form->getHTML());
693 if ($this->
http->wrapper()->query()->has(
'selected_id')) {
694 $selected = $this->
http->wrapper()->query()->retrieve(
699 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
707 $this->
form->setFormAction($this->
ctrl->getFormAction($this,
'showSearch'));
709 $this->
form->addCommandButton(
'performSearch', $this->
lng->txt(
'search'));
710 $this->
form->addCommandButton(
'cancel', $this->
lng->txt(
'cancel'));
714 $kind->
setValue($this->search_type);
715 $this->
form->addItem($kind);
726 $sel =
new ilSelectInputGUI($info[
'lang'],
"rep_query[usr][" . $info[
'db'] .
"]");
727 $sel->setOptions($info[
'values']);
728 $users->addSubItem($sel);
735 if (isset($info[
'autoComplete']) and $info[
'autoComplete']) {
736 $this->
ctrl->setParameterByClass(get_class($this),
'autoCompleteField', $info[
'db']);
737 $ul =
new ilTextInputGUI($info[
'lang'],
"rep_query[usr][" . $info[
'db'] .
"]");
738 $ul->setDataSourceSubmitOnSelection(
true);
739 $ul->setDataSourceSubmitUrl(
740 $this->
ctrl->getLinkTarget(
742 'showSearchSelected',
748 $ul->setDataSource($this->
ctrl->getLinkTarget(
750 "doUserAutoComplete",
755 $ul->setMaxLength(120);
758 switch ($info[
'db']) {
773 $users->addSubItem($ul);
777 $txt->setMaxLength(120);
778 $users->addSubItem(
$txt);
783 $kind->addOption($users);
788 $roles =
new ilRadioOption($this->
lng->txt(
'search_for_role_members'),
'role');
789 $role =
new ilTextInputGUI($this->
lng->txt(
'search_role_title'),
'rep_query[role][title]');
791 $role->setMaxLength(120);
793 $kind->addOption($roles);
796 $groups =
new ilRadioOption($this->
lng->txt(
'search_for_crs_members'),
'crs');
797 $group =
new ilTextInputGUI($this->
lng->txt(
'search_crs_title'),
'rep_query[crs][title]');
799 $group->setMaxLength(120);
801 $kind->addOption($groups);
804 $groups =
new ilRadioOption($this->
lng->txt(
'search_for_grp_members'),
'grp');
805 $group =
new ilTextInputGUI($this->
lng->txt(
'search_grp_title'),
'rep_query[grp][title]');
807 $group->setMaxLength(120);
809 $kind->addOption($groups);
813 $orgus =
new ilRadioOption($this->
lng->txt(
'search_for_orgu_members'),
'orgu');
815 $this->
lng->txt(
'select_orgu'),
820 $orgu->getExplorerGUI()->setSelectableTypes([
"orgu"]);
821 $orgu->getExplorerGUI()->setTypeWhiteList([
"root",
"orgu"]);
823 $orgu->getExplorerGUI()->setAjax(
false);
825 $kind->addOption($orgus);
848 $found_query =
false;
850 $post_rep_query = (array) ($this->
http->request()->getParsedBody()[
'rep_query'] ?? []);
851 $post_search_for = (string) ($this->
http->request()->getParsedBody()[
'search_for'] ??
'');
852 if (isset($post_rep_query[$post_search_for])) {
853 foreach ((array) $post_rep_query[$post_search_for] as $field => $value) {
860 if ($this->
http->wrapper()->post()->has(
'rep_query_orgu')) {
864 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_search_string'));
869 $post_cmd = (array) ($this->
http->request()->getParsedBody()[
'cmd'] ?? []);
871 if (isset($post_cmd[
'performSearch'])) {
875 switch ($this->search_type) {
892 $post_rep_query_orgu = (array) ($this->
http->request()->getParsedBody()[
'rep_query_orgu'] ?? []);
893 $selected_objects = array_map(
899 return $this->
listUsers($selected_objects);
904 $this->result_obj->setRequiredPermission(
'read');
905 $this->result_obj->addObserver($this,
'searchResultFilterListener');
909 if ($this->search_type ==
'usr') {
911 if (is_callable($this->user_filter,
true, $callable_name)) {
912 $result_ids = call_user_func_array($this->user_filter, [$this->result_obj->getResultIds()]);
914 $result_ids = $this->result_obj->getResultIds();
917 $this->search_results = array_intersect(
922 $this->search_results = array();
923 foreach ($this->result_obj->getResults() as
$res) {
924 $this->search_results[] =
$res[
'obj_id'];
928 if (!count($this->search_results)) {
929 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'search_no_match'));
934 if ($this->result_obj->isLimitReached()) {
935 $message = sprintf($this->
lng->txt(
'search_limit_reached'), $this->
settings->getMaxHits());
936 $this->tpl->setOnScreenMessage(
'info',
$message);
950 $query_string = $rep_query[
'usr'][$name] ??
'';
952 if (!$query_string) {
957 $this->tpl->setOnScreenMessage(
'info', $query_parser);
960 switch ($info[
'type']) {
967 $udf_search->setFields(array($name));
968 $result_obj = $udf_search->performSearch();
976 if ($info[
'db'] ==
'org_units') {
978 $result_obj = $user_search->performSearch();
987 $user_search->setFields(array($name));
988 $result_obj = $user_search->performSearch();
996 $multi_search->setFields(array($name));
997 $result_obj = $multi_search->performSearch();
1008 $query_string = $rep_query[
'grp'][
'title'] ??
'';
1010 $this->tpl->setOnScreenMessage(
'info', $query_parser,
true);
1015 $object_search->setFilter(array(
'grp'));
1024 $query_string = $rep_query[
'crs'][
'title'] ??
'';
1026 $this->tpl->setOnScreenMessage(
'info', $query_parser,
true);
1031 $object_search->setFilter(array(
'crs'));
1040 $query_string = $rep_query[
'role'][
'title'] ??
'';
1042 $this->tpl->setOnScreenMessage(
'info', $query_parser,
true);
1048 $object_search->setFilter(array(
'role'));
1057 public function __parseQueryString(
string $a_string,
bool $a_combination_or =
true,
bool $a_ignore_length =
false)
1061 $query_parser->setMinWordLength(1);
1064 if (!$a_ignore_length) {
1065 $query_parser->setGlobalMinLength(3);
1068 $query_parser->parse();
1070 if (!$query_parser->validate()) {
1071 return $query_parser->getMessage();
1073 return $query_parser;
1079 if ($this->
http->wrapper()->post()->has(
'rep_query')) {
1082 $this->
http->request()->getParsedBody()[
'rep_query']
1091 if ($this->
http->wrapper()->post()->has(
'search_for')) {
1094 $this->
http->request()->getParsedBody()[
'search_for']
1110 foreach ($this->search_results as $result) {
1113 if (!$rep_search[$this->search_type]) {
1129 $rep_search[
'usr'] = $a_usr_ids;
1134 foreach ($a_usr_ids as $usr_id) {
1135 $rep_search[
'usr'][] = $usr_id;
1137 $rep_search[
'usr'] = array_unique($rep_search[
'usr'] ?? []);
1139 return $rep_search[
'usr'];
1144 if ($this->stored ==
false) {
1145 $this->result_obj->mergeEntries($new_res);
1146 $this->stored =
true;
1149 $this->result_obj->intersectEntries($new_res);
1157 $toolbar->addButton(
1158 $this->
lng->txt(
'search_new'),
1159 $this->
ctrl->getLinkTarget($this,
'showSearch')
1161 $this->tpl->setVariable(
'ACTION_BUTTONS', $toolbar->getHTML());
1167 $f_result = array();
1169 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
1174 switch ($this->search_type) {
1196 if ($this->
http->wrapper()->query()->has(
'baseClass')) {
1197 $base_class = $this->
http->wrapper()->query()->retrieve(
1199 $this->
refinery->kindlyTo()->string()
1204 $is_in_admin = ($base_class === strtolower(ilAdministrationGUI::class));
1212 if (count($this->add_options)) {
1213 $table->addMultiItemSelectionButton(
1216 'handleMultiCommand',
1217 $this->
lng->txt(
'execute'),
1221 $table->addMultiCommand(
'addUser', $this->
lng->txt(
'btn_add'));
1224 $table->parseUserIds($a_usr_ids);
1226 $this->tpl->setVariable(
'RES_TABLE', $table->getHTML());
1232 $table->parseObjectIds($a_obj_ids);
1234 $this->tpl->setVariable(
'RES_TABLE', $table->getHTML());
1240 $table->parseObjectIds($a_obj_ids);
1242 $this->tpl->setVariable(
'RES_TABLE', $table->getHTML());
1248 $table->parseObjectIds($a_obj_ids);
1250 $this->tpl->setVariable(
'RES_TABLE', $table->getHTML());
1253 protected function listUsers(array $selected_entries = []): bool
1258 $this->
http->wrapper()->post()->has(
'obj') &&
1259 !count($selected_entries)
1261 $selected_entries = $this->
http->wrapper()->post()->retrieve(
1267 $this->
http->wrapper()->query()->has(
'list_obj') &&
1268 !count($selected_entries)
1270 $selected_entries[] = $this->
http->wrapper()->query()->retrieve(
1275 if (!count($selected_entries)) {
1276 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
1281 $rep_search[
'objs'] = $selected_entries;
1286 foreach ($selected_entries as $obj_id) {
1293 if (is_callable($this->user_filter)) {
1294 $part = call_user_func_array(
1304 $members = array_merge((array) $members, $part);
1310 if (is_callable($this->user_filter)) {
1311 $assigned = call_user_func_array(
1314 $this->rbacreview->assignedUsers($obj_id)
1318 $assigned = $this->rbacreview->assignedUsers($obj_id);
1326 ->getUserIdsOfOrgUnit(array_shift($ref_ids));
1327 if (is_callable($this->user_filter)) {
1328 $assigned = call_user_func_array(
1334 $members = array_merge(
1342 $members = array_unique($members);
1345 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.rep_search_result.html',
'Services/Search');
1356 $objects = $rep_search[
'objs'] ?? [];
1368 if ($a_data[
'type'] ==
'usr') {
1378 $this->object_selection = $a_value;
1388 $selected_entries = [];
1389 if ($this->
http->wrapper()->post()->has(
'obj')) {
1390 $selected_entries = $this->
http->wrapper()->post()->retrieve(
1396 $this->
http->wrapper()->query()->has(
'list_obj') &&
1397 !count($selected_entries)
1399 $selected_entries[] = $this->
http->wrapper()->query()->retrieve(
1405 if (!count($selected_entries)) {
1406 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
1410 $this->
ctrl->setParameter($this->callback[
"class"],
"obj", implode(
";", $selected_entries));
1411 $this->
ctrl->redirect($this->callback[
"class"], $this->callback[
"method"]);
1420 $this->user_limitations = $a_limitations;
Interface GlobalHttpState.
selectObject()
Return selection of course/group/roles to calling script.
static get(string $a_var)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
An entity that renders components to a string output.
enableSearchableCheck(bool $a_status)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__storeEntries(ilSearchResult $new_res)
addUserFromAutoComplete()
isSearchableCheckEnabled()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
setFormAction(string $a_form_action, bool $a_multipart=false)
__appendToStoredResults(array $a_usr_ids)
setPrivacyMode(int $privacy_mode)
static getUserOrgUnitAssignmentInstance(ilQueryParser $query_parser)
const PRIVACY_MODE_RESPECT_USER_SETTING
allowObjectSelection(bool $a_value=false)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
listUsers(array $selected_entries=[])
static _getAllReferences(int $id)
get all reference ids for object ID
static getInstanceByObjId(int $a_obj_id)
Get instance by obj type.
const FIELD_TYPE_UDF_UNDEFINED
static _lookupId($a_user_str)
__parseQueryString(string $a_string, bool $a_combination_or=true, bool $a_ignore_length=false)
setRoleCallback(object $class, string $method, array $a_add_options=[], string $default_option='')
loadLanguageModule(string $a_module)
Load language module.
static _getUserSearchInstance(ilQueryParser $query_parser)
showSearchGroupTable(array $a_obj_ids)
static getDefaultMemberRole(int $a_ref_id)
static getUserMultiFieldSearchInstance(ilQueryParser $query_parser)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupObjId(int $ref_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
initFormSearch(ilObjUser $user=null)
checkForParentType(int $a_ref_id, string $a_type, bool $a_exclude_source_check=false)
Check for parent type e.g check if a folder (ref_id 3) is in a parent course obj => checkForParentTyp...
static http()
Fetches the global http state from ILIAS.
static _getUserDefinedFieldSearchInstance(ilQueryParser $query_parser)
getUserLimitations()
allow user limitations like inactive and access limitations
searchResultFilterListener(int $a_ref_id, array $a_data)
Listener called from ilSearchResult Id is obj_id for role, usr Id is ref_id for crs grp...
static fillAutoCompleteToolbar(object $parent_object, ilToolbarGUI $toolbar=null, array $a_options=[], bool $a_sticky=false)
array( auto_complete_name = $lng->txt('user'), auto_complete_size = 15, user_type = array(ilCoursePar...
ilGlobalTemplateInterface $tpl
RefineryFactory $refinery
static hasParticipantListAccess(int $a_obj_id, int $a_usr_id=null)
Check if (current) user has access to the participant list.
static _getSearchableFieldsInfo(bool $a_admin=false)
setTitle(string $a_title)
setUserLimitations(bool $a_limitations)
allow user limitations like inactive and access limitations
ilSearchSettings $settings
showSearchCourseTable(array $a_obj_ids)
TableGUI class object (course,group and role) search results Used in member search.
form( $class_path, string $cmd, string $submit_caption="")
const FIELD_TYPE_UDF_SELECT
button()
description: purpose: > Buttons trigger interactions that change the system’s or view's status...
addUserAccessFilterCallable(callable $user_filter)
Closure for filtering users e.g $rep_search_gui->addUserAccessFilterCallable(function($user_ids) use(...
ilSearchResult $result_obj
setCallback(object $class, string $method, array $a_add_options=[], string $default_option='')
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
filter(string $filter_id, $class_path, string $cmd, bool $activated=true, bool $expanded=true)
const PRIVACY_MODE_IGNORE_USER_SETTING
setPermissionQueryCallback(object $class, string $method)
static _lookupType(int $id, bool $reference=false)
showSearchRoleTable(array $a_obj_ids)
static clear(string $a_var)
static _isEnabled($a_key)
static set(string $a_var, $a_val)
Set a value.
static getInstance(int $a_usr_id)
const FIELD_TYPE_UDF_TEXT
showSearchUserTable(array $a_usr_ids, string $a_parent_cmd)