ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilRepositorySearchGUI Class Reference
+ Inheritance diagram for ilRepositorySearchGUI:
+ Collaboration diagram for ilRepositorySearchGUI:

Public Member Functions

 __construct ()
 
 addUserAccessFilterCallable (callable $user_filter)
 Closure for filtering users e.g $rep_search_gui->addUserAccessFilterCallable(function($user_ids) use($ref_id,$rbac_perm,$pos_perm)) { // filter users return $filtered_users }. More...
 
 setTitle (string $a_title)
 
 getTitle ()
 
 enableSearchableCheck (bool $a_status)
 
 isSearchableCheckEnabled ()
 
 setPrivacyMode (int $privacy_mode)
 
 getPrivacyMode ()
 
 getSearchType ()
 
 getRoleCallback ()
 
 setString (string $a_str)
 
 getString ()
 
 executeCommand ()
 
 __clearSession ()
 
 cancel ()
 
 start ()
 
 addRole ()
 
 addUser ()
 
 setCallback (object $class, string $method, array $a_add_options=[], string $default_option='')
 
 setRoleCallback (object $class, string $method, array $a_add_options=[], string $default_option='')
 
 setPermissionQueryCallback (object $class, string $method)
 
 showSearch ()
 
 showSearchSelected ()
 
 initFormSearch (?ilObjUser $user=null)
 
 show ()
 
 appendSearch ()
 
 performSearch ()
 
 __performUserSearch ()
 
 __performGroupSearch ()
 
 __performRoleSearch ()
 
 __parseQueryString (string $a_string, bool $a_combination_or=true, bool $a_ignore_length=false)
 
 __loadQueries ()
 
 __setSearchType ()
 
 __updateResults ()
 
 __appendToStoredResults (array $a_usr_ids)
 
 __storeEntries (ilSearchResult $new_res)
 
 showSearchResults ()
 
 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. More...
 
 allowObjectSelection (bool $a_value=false)
 
 setUserLimitations (bool $a_limitations)
 allow user limitations like inactive and access limitations More...
 
 getUserLimitations ()
 allow user limitations like inactive and access limitations More...
 

Static Public Member Functions

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(ilCourseParticipants::CRS_MEMBER,ilCourseParticpants::CRS_TUTOR), submit_name = $lng->txt('add') ) More...
 

Protected Member Functions

 initUserTypeFromQuery ()
 
 initUserTypeFromPost ()
 
 doUserAutoComplete ()
 
 addUserFromAutoComplete ()
 
 showClipboard ()
 
 addFromClipboard ()
 
 removeFromClipboard ()
 
 emptyClipboard ()
 
 handleMultiCommand ()
 
 __performCourseSearch ()
 
 addNewSearchButton ()
 
 showSearchUserTable (array $a_usr_ids, string $a_parent_cmd)
 
 showSearchRoleTable (array $a_obj_ids)
 
 showSearchGroupTable (array $a_obj_ids)
 
 showSearchCourseTable (array $a_obj_ids)
 
 listUsers (array $selected_entries=[])
 
 storedUserList ()
 
 selectObject ()
 Return selection of course/group/roles to calling script. More...
 

Protected Attributes

array $add_options = []
 
string $default_option = ''
 
bool $object_selection = false
 
bool $searchable_check = true
 
string $search_title = ''
 
bool $user_limitations = true
 
bool $stored = false
 
array $callback = []
 
array $role_callback = []
 
ilSearchResult $result_obj
 
ilSearchSettings $settings
 
ilPropertyFormGUI $form = null
 
 $user_filter = null
 
ilTree $tree
 
Renderer $ui_renderer
 
Factory $ui_factory
 
ilCtrl $ctrl
 
ilGlobalTemplateInterface $tpl
 
ilObjUser $user = null
 
ilRbacReview $rbacreview
 
ilTabsGUI $tabs
 
ilLanguage $lng
 

Private Attributes

array $search_results = []
 
string $search_type = 'usr'
 
string $string = ''
 
int $privacy_mode = ilUserAutoComplete::PRIVACY_MODE_IGNORE_USER_SETTING
 
GlobalHttpState $http
 
RefineryFactory $refinery
 

Detailed Description

Definition at line 38 of file class.ilRepositorySearchGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilRepositorySearchGUI::__construct ( )

Definition at line 80 of file class.ilRepositorySearchGUI.php.

81 {
82 global $DIC;
83
84
85
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();
93 $this->refinery = $DIC->refinery();
94 $this->http = $DIC->http();
95 $this->user = $DIC->user();
96 $this->tabs = $DIC->tabs();
97
98 $this->lng->loadLanguageModule('search');
99 $this->lng->loadLanguageModule('crs');
100
101 $this->setTitle($this->lng->txt('add_members_header'));
102
103 $this->__setSearchType();
104 $this->__loadQueries();
105
106 $this->result_obj = new ilSearchResult();
107 $this->result_obj->setMaxHits(1000000);
108 $this->settings = new ilSearchSettings();
109 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:26

References $DIC, __loadQueries(), __setSearchType(), ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\refinery(), ILIAS\Repository\settings(), setTitle(), ILIAS\Repository\tabs(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

Member Function Documentation

◆ __appendToStoredResults()

ilRepositorySearchGUI::__appendToStoredResults ( array  $a_usr_ids)
Returns
int[]

Definition at line 1117 of file class.ilRepositorySearchGUI.php.

1117 : array
1118 {
1119 if (!ilSession::get('search_append')) {
1120 $rep_search = ilSession::get('rep_search') ?? [];
1121 $rep_search['usr'] = $a_usr_ids;
1122 ilSession::set('rep_search', $rep_search);
1123 return $a_usr_ids;
1124 }
1125 $rep_search = ilSession::get('rep_search') ?? [];
1126 foreach ($a_usr_ids as $usr_id) {
1127 $rep_search['usr'][] = $usr_id;
1128 }
1129 $rep_search['usr'] = array_unique($rep_search['usr'] ?? []);
1130 ilSession::set('rep_search', $rep_search);
1131 return $rep_search['usr'];
1132 }
static get(string $a_var)
static set(string $a_var, $a_val)
Set a value.

References ilSession\get(), and ilSession\set().

+ Here is the call graph for this function:

◆ __clearSession()

ilRepositorySearchGUI::__clearSession ( )

Definition at line 419 of file class.ilRepositorySearchGUI.php.

419 : void
420 {
421 ilSession::clear('rep_search');
422 ilSession::clear('append_results');
423 ilSession::clear('rep_query');
424 ilSession::clear('rep_search_type');
425 }
static clear(string $a_var)

References ilSession\clear().

+ Here is the call graph for this function:

◆ __loadQueries()

ilRepositorySearchGUI::__loadQueries ( )

Definition at line 1069 of file class.ilRepositorySearchGUI.php.

1069 : void
1070 {
1071 if ($this->http->wrapper()->post()->has('rep_query')) {
1073 'rep_query',
1074 $this->http->request()->getParsedBody()['rep_query']
1075 );
1076 }
1077 }

References ILIAS\FileDelivery\http(), and ilSession\set().

Referenced by __construct().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __parseQueryString()

ilRepositorySearchGUI::__parseQueryString ( string  $a_string,
bool  $a_combination_or = true,
bool  $a_ignore_length = false 
)
Returns
ilQueryParser|string

Definition at line 1049 of file class.ilRepositorySearchGUI.php.

1050 {
1051 $query_parser = new ilQueryParser(ilUtil::stripSlashes($a_string));
1052 $query_parser->setCombination($a_combination_or ? ilQueryParser::QP_COMBINATION_OR : ilQueryParser::QP_COMBINATION_AND);
1053 $query_parser->setMinWordLength(1);
1054
1055 // #17502
1056 if (!$a_ignore_length) {
1057 $query_parser->setGlobalMinLength(3); // #14768
1058 }
1059
1060 $query_parser->parse();
1061
1062 if (!$query_parser->validate()) {
1063 return $query_parser->getMessage();
1064 }
1065 return $query_parser;
1066 }
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")

References ilQueryParser\QP_COMBINATION_AND, ilQueryParser\QP_COMBINATION_OR, and ilUtil\stripSlashes().

+ Here is the call graph for this function:

◆ __performCourseSearch()

ilRepositorySearchGUI::__performCourseSearch ( )
protected

Definition at line 1013 of file class.ilRepositorySearchGUI.php.

1013 : bool
1014 {
1015 $rep_query = ilSession::get('rep_query');
1016 $query_string = $rep_query['crs']['title'] ?? '';
1017 if (!is_object($query_parser = $this->__parseQueryString($query_string))) {
1018 $this->tpl->setOnScreenMessage('info', $query_parser, true);
1019 return false;
1020 }
1021
1022 $object_search = new ilLikeObjectSearch($query_parser);
1023 $object_search->setFilter(array('crs'));
1024 $this->__storeEntries($object_search->performSearch());
1025
1026 return true;
1027 }
__storeEntries(ilSearchResult $new_res)
__parseQueryString(string $a_string, bool $a_combination_or=true, bool $a_ignore_length=false)

References ilSession\get().

+ Here is the call graph for this function:

◆ __performGroupSearch()

ilRepositorySearchGUI::__performGroupSearch ( )

Definition at line 997 of file class.ilRepositorySearchGUI.php.

997 : bool
998 {
999 $rep_query = ilSession::get('rep_query');
1000 $query_string = $rep_query['grp']['title'] ?? '';
1001 if (!is_object($query_parser = $this->__parseQueryString($query_string))) {
1002 $this->tpl->setOnScreenMessage('info', $query_parser, true);
1003 return false;
1004 }
1005
1006 $object_search = new ilLikeObjectSearch($query_parser);
1007 $object_search->setFilter(array('grp'));
1008 $this->__storeEntries($object_search->performSearch());
1009
1010 return true;
1011 }

References ilSession\get().

+ Here is the call graph for this function:

◆ __performRoleSearch()

ilRepositorySearchGUI::__performRoleSearch ( )

Definition at line 1029 of file class.ilRepositorySearchGUI.php.

1029 : bool
1030 {
1031 $rep_query = ilSession::get('rep_query');
1032 $query_string = $rep_query['role']['title'] ?? '';
1033 if (!is_object($query_parser = $this->__parseQueryString($query_string))) {
1034 $this->tpl->setOnScreenMessage('info', $query_parser, true);
1035 return false;
1036 }
1037
1038 // Perform like search
1039 $object_search = new ilLikeObjectSearch($query_parser);
1040 $object_search->setFilter(array('role'));
1041 $this->__storeEntries($object_search->performSearch());
1042
1043 return true;
1044 }

References ilSession\get().

+ Here is the call graph for this function:

◆ __performUserSearch()

ilRepositorySearchGUI::__performUserSearch ( )

Definition at line 936 of file class.ilRepositorySearchGUI.php.

936 : bool
937 {
939 $name = $info['db'];
940
941 $rep_query = ilSession::get('rep_query');
942 $query_string = $rep_query['usr'][$name] ?? '';
943 // continue if no query string is given
944 if (!$query_string) {
945 continue;
946 }
947
948 if (!is_object($query_parser = $this->__parseQueryString($query_string, true, ($info['type'] == ilUserSearchOptions::FIELD_TYPE_SELECT)))) {
949 $this->tpl->setOnScreenMessage('info', $query_parser);
950 return false;
951 }
952 switch ($info['type']) {
954 $query_parser = $this->__parseQueryString($query_string);
955
956 // no break
959 $udf_search->setFields(array($name));
960 $result_obj = $udf_search->performSearch();
961
962 // Store entries
964 break;
965
967
968 if ($info['db'] == 'org_units') {
970 $result_obj = $user_search->performSearch();
972 break;
973 }
974 $query_parser = $this->__parseQueryString($query_string, true, true);
975
976 // no break
978 $user_search = ilObjectSearchFactory::_getUserSearchInstance($query_parser);
979 $user_search->setFields(array($name));
980 $result_obj = $user_search->performSearch();
981
982 // store entries
984 break;
985
987 $multi_search = ilObjectSearchFactory::getUserMultiFieldSearchInstance($query_parser);
988 $multi_search->setFields(array($name));
989 $result_obj = $multi_search->performSearch();
991 break;
992 }
993 }
994 return true;
995 }
static _getUserDefinedFieldSearchInstance(ilQueryParser $query_parser)
static getUserOrgUnitAssignmentInstance(ilQueryParser $query_parser)
static _getUserSearchInstance(ilQueryParser $query_parser)
static getUserMultiFieldSearchInstance(ilQueryParser $query_parser)
static _getSearchableFieldsInfo(bool $a_admin=false)
$info
Definition: entry_point.php:21

References $info, ilUserSearchOptions\_getSearchableFieldsInfo(), ilObjectSearchFactory\_getUserDefinedFieldSearchInstance(), ilObjectSearchFactory\_getUserSearchInstance(), ilUserSearchOptions\FIELD_TYPE_MULTI, ilUserSearchOptions\FIELD_TYPE_SELECT, ilUserSearchOptions\FIELD_TYPE_TEXT, ilUserSearchOptions\FIELD_TYPE_UDF_SELECT, ilUserSearchOptions\FIELD_TYPE_UDF_TEXT, ilSession\get(), ilObjectSearchFactory\getUserMultiFieldSearchInstance(), and ilObjectSearchFactory\getUserOrgUnitAssignmentInstance().

+ Here is the call graph for this function:

◆ __setSearchType()

ilRepositorySearchGUI::__setSearchType ( )

Definition at line 1080 of file class.ilRepositorySearchGUI.php.

1080 : bool
1081 {
1082 // Update search type. Default to user search
1083 if ($this->http->wrapper()->post()->has('search_for')) {
1085 'rep_search_type',
1086 $this->http->request()->getParsedBody()['search_for']
1087 );
1088 } elseif (!ilSession::get('rep_search_type')) {
1089 ilSession::set('rep_search_type', 'usr');
1090 }
1091 $this->search_type = (string) ilSession::get('rep_search_type');
1092 return true;
1093 }

References ilSession\get(), ILIAS\FileDelivery\http(), and ilSession\set().

Referenced by __construct().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __storeEntries()

ilRepositorySearchGUI::__storeEntries ( ilSearchResult  $new_res)

Definition at line 1134 of file class.ilRepositorySearchGUI.php.

1134 : bool
1135 {
1136 if ($this->stored == false) {
1137 $this->result_obj->mergeEntries($new_res);
1138 $this->stored = true;
1139 return true;
1140 } else {
1141 $this->result_obj->intersectEntries($new_res);
1142 return true;
1143 }
1144 }

◆ __updateResults()

ilRepositorySearchGUI::__updateResults ( )

Definition at line 1096 of file class.ilRepositorySearchGUI.php.

1096 : bool
1097 {
1098 if (!ilSession::get('search_append')) {
1099 ilSession::set('rep_search', []);
1100 }
1101 $rep_search = ilSession::get('rep_search') ?? [];
1102 foreach ($this->search_results as $result) {
1103 $rep_search[$this->search_type][] = $result;
1104 }
1105 if (!$rep_search[$this->search_type]) {
1106 $rep_search[$this->search_type] = [];
1107 } else {
1108 $rep_search[$this->search_type] = array_unique($rep_search[$this->search_type]);
1109 }
1110 ilSession::set('rep_search', $rep_search);
1111 return true;
1112 }

References ilSession\get(), and ilSession\set().

+ Here is the call graph for this function:

◆ addFromClipboard()

ilRepositorySearchGUI::addFromClipboard ( )
protected

Definition at line 544 of file class.ilRepositorySearchGUI.php.

544 : void
545 {
546 $user_type = $this->initUserTypeFromPost();
547 if ($user_type === '') {
548 $user_type = $this->initUserTypeFromQuery();
549 }
550 $this->ctrl->setParameter($this, 'user_type', $user_type);
551
552 $users = [];
553 if ($this->http->wrapper()->post()->has('uids')) {
554 $users = $this->http->wrapper()->post()->retrieve(
555 'uids',
556 $this->refinery->kindlyTo()->dictOf(
557 $this->refinery->kindlyTo()->int()
558 )
559 );
560 }
561 if (!count($users)) {
562 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('select_one'), true);
563 $this->ctrl->redirect($this, 'showClipboard');
564 }
565 $class = $this->callback['class'];
566 $method = $this->callback['method'];
567 if (!$class->$method($users, $user_type)) {
568 $this->ctrl->returnToParent($this);
569 }
570 }

References ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ addNewSearchButton()

ilRepositorySearchGUI::addNewSearchButton ( )
protected

Definition at line 1146 of file class.ilRepositorySearchGUI.php.

1146 : void
1147 {
1148 $toolbar = new ilToolbarGUI();
1149 $toolbar->addButton(
1150 $this->lng->txt('search_new'),
1151 $this->ctrl->getLinkTarget($this, 'showSearch')
1152 );
1153 $this->tpl->setVariable('ACTION_BUTTONS', $toolbar->getHTML());
1154 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ addRole()

ilRepositorySearchGUI::addRole ( )

Definition at line 442 of file class.ilRepositorySearchGUI.php.

442 : void
443 {
444 $class = $this->role_callback['class'];
445 $method = $this->role_callback['method'];
446
447 // call callback if that function does give a return value => show error message
448 // listener redirects if everything is ok.
449 $obj_ids = [];
450 if ($this->http->wrapper()->post()->has('obj')) {
451 $obj_ids = $this->http->wrapper()->post()->retrieve(
452 'obj',
453 $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int())
454 );
455 }
456 $role_ids = array();
457 foreach ($obj_ids as $id) {
458 $obj_type = ilObject::_lookupType($id);
459 if ($obj_type == "crs" || $obj_type == "grp") {
461 $ref_id = end($refs);
463 $role_ids[] = $mem_role;
464 } else {
465 $role_ids[] = $id;
466 }
467 }
468 $class->$method($role_ids);
469
470 $this->showSearchResults();
471 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static _lookupType(int $id, bool $reference=false)
static _getAllReferences(int $id)
get all reference ids for object ID
static getDefaultMemberRole(int $a_ref_id)
$ref_id
Definition: ltiauth.php:66

References $id, $ref_id, ilObject\_getAllReferences(), ilObject\_lookupType(), ilParticipants\getDefaultMemberRole(), ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ addUser()

ilRepositorySearchGUI::addUser ( )

Reimplemented in ilStudyProgrammeRepositorySearchGUI.

Definition at line 473 of file class.ilRepositorySearchGUI.php.

473 : void
474 {
475 $class = $this->callback['class'];
476 $method = $this->callback['method'];
477
478 $users = [];
479 if ($this->http->wrapper()->post()->has('user')) {
480 $users = $this->http->wrapper()->post()->retrieve(
481 'user',
482 $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int())
483 );
484 }
485
486 // call callback if that function does give a return value => show error message
487 // listener redirects if everything is ok.
488 $class->$method($users);
489
490 $this->showSearchResults();
491 }

References ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ addUserAccessFilterCallable()

ilRepositorySearchGUI::addUserAccessFilterCallable ( callable  $user_filter)

Closure for filtering users e.g $rep_search_gui->addUserAccessFilterCallable(function($user_ids) use($ref_id,$rbac_perm,$pos_perm)) { // filter users return $filtered_users }.

Definition at line 141 of file class.ilRepositorySearchGUI.php.

141 : void
142 {
143 $this->user_filter = $user_filter;
144 }

References $user_filter.

◆ addUserFromAutoComplete()

ilRepositorySearchGUI::addUserFromAutoComplete ( )
protected

Definition at line 494 of file class.ilRepositorySearchGUI.php.

494 : void
495 {
496 $class = $this->callback['class'];
497 $method = $this->callback['method'];
498
499 $post_users = '';
500 if ($this->http->wrapper()->post()->has('user_login')) {
501 $post_users = $this->http->wrapper()->post()->retrieve(
502 'user_login',
503 $this->refinery->kindlyTo()->string()
504 );
505 }
506
507 $users = explode(',', $post_users);
508 $user_ids = array();
509 foreach ($users as $user) {
511 if ($user_id) {
512 $user_ids[] = $user_id;
513 }
514 }
515
516 $user_type = $this->initUserTypeFromPost();
517 if (!$class->$method($user_ids, $user_type)) {
518 $this->ctrl->returnToParent($this);
519 }
520 }
static _lookupId(string|array $a_user_str)

References $user_id, ilObjUser\_lookupId(), ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ allowObjectSelection()

ilRepositorySearchGUI::allowObjectSelection ( bool  $a_value = false)

Definition at line 1368 of file class.ilRepositorySearchGUI.php.

1368 : void
1369 {
1370 $this->object_selection = $a_value;
1371 }

◆ appendSearch()

ilRepositorySearchGUI::appendSearch ( )

Definition at line 827 of file class.ilRepositorySearchGUI.php.

827 : void
828 {
829 ilSession::set('search_append', true);
830 $this->performSearch();
831 }

References ilSession\set().

+ Here is the call graph for this function:

◆ cancel()

ilRepositorySearchGUI::cancel ( )

Definition at line 427 of file class.ilRepositorySearchGUI.php.

427 : void
428 {
429 $this->ctrl->returnToParent($this);
430 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ doUserAutoComplete()

ilRepositorySearchGUI::doUserAutoComplete ( )
protected

Definition at line 334 of file class.ilRepositorySearchGUI.php.

334 : ?string
335 {
336 // hide anonymout request
337 if ($this->user->getId() == ANONYMOUS_USER_ID) {
338 echo json_encode(new stdClass(), JSON_THROW_ON_ERROR);
339 exit;
340 }
341 if (!$this->http->wrapper()->query()->has('autoCompleteField')) {
342 $a_fields = [
343 'login',
344 'firstname',
345 'lastname',
346 'email'
347 ];
348 $result_field = 'login';
349 } else {
350 $auto_complete_field = $this->http->wrapper()->query()->retrieve(
351 'autoCompleteField',
352 $this->refinery->kindlyTo()->string()
353 );
354 $a_fields = [$auto_complete_field];
355 $result_field = $auto_complete_field;
356 }
357 $auto = new ilUserAutoComplete();
358 $auto->setPrivacyMode($this->getPrivacyMode());
359
360 if ($this->http->wrapper()->query()->has('fetchall')) {
361 $auto->setLimit(ilUserAutoComplete::MAX_ENTRIES);
362 }
363
364 $auto->setMoreLinkAvailable(true);
365 $auto->setSearchFields($a_fields);
366 $auto->setResultField($result_field);
367 $auto->enableFieldSearchableCheck(true);
368 $auto->setUserLimitations($this->getUserLimitations());
369 if (is_callable($this->user_filter)) { // #0024249
370 $auto->addUserAccessFilterCallable(Closure::fromCallable($this->user_filter));
371 }
372
373 $query = '';
374 if ($this->http->wrapper()->post()->has('term')) {
375 $query = $this->http->wrapper()->post()->retrieve(
376 'term',
377 $this->refinery->kindlyTo()->string()
378 );
379 }
380 if ($query === "") {
381 if ($this->http->wrapper()->query()->has('term')) {
382 $query = $this->http->wrapper()->query()->retrieve(
383 'term',
384 $this->refinery->kindlyTo()->string()
385 );
386 }
387 }
388 echo $auto->getList($query);
389 exit;
390 }
getUserLimitations()
allow user limitations like inactive and access limitations
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const ANONYMOUS_USER_ID
Definition: constants.php:27
exit

References ANONYMOUS_USER_ID, exit, ILIAS\FileDelivery\http(), ilUserAutoComplete\MAX_ENTRIES, ILIAS\Repository\refinery(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ emptyClipboard()

ilRepositorySearchGUI::emptyClipboard ( )
protected

Definition at line 600 of file class.ilRepositorySearchGUI.php.

600 : void
601 {
602 $clip = ilUserClipboard::getInstance($this->user->getId());
603 $clip->clear();
604 $clip->save();
605
606 $this->tpl->setOnScreenMessage('success', $this->lng->txt('settings_saved'), true);
607 $this->ctrl->returnToParent($this);
608 }
static getInstance(int $a_usr_id)

References ILIAS\Repository\ctrl(), ilUserClipboard\getInstance(), ILIAS\Repository\lng(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ enableSearchableCheck()

ilRepositorySearchGUI::enableSearchableCheck ( bool  $a_status)

Definition at line 156 of file class.ilRepositorySearchGUI.php.

156 : void
157 {
158 $this->searchable_check = $a_status;
159 }

◆ executeCommand()

ilRepositorySearchGUI::executeCommand ( )

Definition at line 404 of file class.ilRepositorySearchGUI.php.

404 : bool
405 {
406 $next_class = $this->ctrl->getNextClass($this);
407 $cmd = $this->ctrl->getCmd();
408 switch ($next_class) {
409 default:
410 if (!$cmd) {
411 $cmd = "showSearch";
412 }
413 $this->$cmd();
414 break;
415 }
416 return true;
417 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ fillAutoCompleteToolbar()

static ilRepositorySearchGUI::fillAutoCompleteToolbar ( object  $parent_object,
?ilToolbarGUI  $toolbar = null,
array  $a_options = [],
bool  $a_sticky = false 
)
static

array( auto_complete_name = $lng->txt('user'), auto_complete_size = 15, user_type = array(ilCourseParticipants::CRS_MEMBER,ilCourseParticpants::CRS_TUTOR), submit_name = $lng->txt('add') )

Definition at line 195 of file class.ilRepositorySearchGUI.php.

200 : ilToolbarGUI {
201 global $DIC;
202
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();
210
211 if (!$toolbar instanceof ilToolbarGUI) {
212 $toolbar = $ilToolbar;
213 }
214
215 // Fill default options
216 if (!isset($a_options['auto_complete_name'])) {
217 $a_options['auto_complete_name'] = $lng->txt('obj_user');
218 }
219 if (!isset($a_options['auto_complete_size'])) {
220 $a_options['auto_complete_size'] = 15;
221 }
222 if (!isset($a_options['submit_name'])) {
223 $a_options['submit_name'] = $lng->txt('btn_add');
224 }
225 if (!isset($a_options['user_type_default'])) {
226 $a_options['user_type_default'] = null;
227 }
228
229 if (!isset($a_options['add_search'])) {
230 $a_options['add_search'] = false;
231 }
232 if (!isset($a_options['add_from_container'])) {
233 $a_options['add_from_container'] = null;
234 }
235
236 $ajax_url = $ilCtrl->getLinkTargetByClass(
237 array(get_class($parent_object),'ilRepositorySearchGUI'),
238 'doUserAutoComplete',
239 '',
240 true,
241 false
242 );
243
244 $ul = new ilTextInputGUI($a_options['auto_complete_name'], 'user_login');
245 $ul->setDataSource($ajax_url);
246 $ul->setSize($a_options['auto_complete_size']);
247 if (!$a_sticky) {
248 $toolbar->addInputItem($ul, true);
249 } else {
250 $toolbar->addStickyItem($ul, true);
251 }
252
253 if (isset($a_options['user_type']) && count((array) $a_options['user_type'])) {
254 $si = new ilSelectInputGUI("", "user_type");
255 $si->setOptions($a_options['user_type']);
256 $si->setValue($a_options['user_type_default']);
257 if (!$a_sticky) {
258 $toolbar->addInputItem($si);
259 } else {
260 $toolbar->addStickyItem($si);
261 }
262 }
263
265
266 $add_button = ilSubmitButton::getInstance();
267 $add_button->setCaption($a_options['submit_name'], false);
268 $add_button->setCommand('addUserFromAutoComplete');
269
270 if (!$a_sticky || $clip->hasContent()) {
271 $toolbar->addButtonInstance($add_button);
272 } else {
273 $toolbar->addStickyItem($add_button);
274 }
275
276 if ($clip->hasContent()) {
277 $clip_button = ilSubmitButton::getInstance();
278 $clip_button->addCSSClass('btn btndefault');
279 $lng->loadLanguageModule('user');
280 $clip_button->setCaption($lng->txt('clipboard_add_from_btn'), false);
281 $clip_button->setCommand('showClipboard');
282
283 $toolbar->addButtonInstance($clip_button);
284 }
285
286 if ($a_options['add_search'] ||
287 is_numeric($a_options['add_from_container'])) {
288 $lng->loadLanguageModule("search");
289
290 $toolbar->addSeparator();
291
292 if ($a_options['add_search']) {
293 $button = $ui_factory->button()->standard(
294 $lng->txt('search_users'),
295 $ilCtrl->getLinkTargetByClass(strtolower(self::class), '')
296 );
297 $toolbar->addComponent($button);
298 }
299
300 if (is_numeric($a_options['add_from_container'])) {
301 $parent_ref_id = (int) $a_options['add_from_container'];
302 $parent_container_ref_id = $tree->checkForParentType($parent_ref_id, "grp");
303 $parent_container_type = "grp";
304 if (!$parent_container_ref_id) {
305 $parent_container_ref_id = $tree->checkForParentType($parent_ref_id, "crs");
306 $parent_container_type = "crs";
307 }
308 if ($parent_container_ref_id) {
309 if ($a_options['add_search']) {
310 $toolbar->addSpacer();
311 }
312
313 $ilCtrl->setParameterByClass('ilRepositorySearchGUI', "list_obj", ilObject::_lookupObjId($parent_container_ref_id));
314
315 $button = $ui_factory->button()->standard(
316 $lng->txt('search_add_members_from_container_' . $parent_container_type),
317 $ilCtrl->getLinkTargetByClass(array(get_class($parent_object),'ilRepositorySearchGUI'), 'listUsers')
318 );
319 $toolbar->addComponent($button);
320 }
321 }
322 }
323
324 $toolbar->setFormAction(
325 $ilCtrl->getFormActionByClass(
326 array(
327 get_class($parent_object),
328 'ilRepositorySearchGUI')
329 )
330 );
331 return $toolbar;
332 }
loadLanguageModule(string $a_module)
Load language module.
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...
static _lookupObjId(int $ref_id)
This class represents a selection list property in a property form.
This class represents a text property in a property form.
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...

Referenced by ilTestParticipantsGUI\addUserSearchControls(), ilObjBlogGUI\contributors(), ilOrgUnitUserAssignmentGUI\index(), ilSurveyParticipantsGUI\listAppraiseesObject(), ilExerciseManagementGUI\membersObject(), ilBookingParticipantGUI\render(), ilForumModeratorsGUI\showModeratorsCommand(), ilLearningSequenceMembershipGUI\showParticipantsToolbar(), ilMembershipGUI\showParticipantsToolbar(), ilSkillProfileGUI\showUsers(), ilExSubmissionTeamGUI\submissionScreenTeamObject(), ilObjRoleGUI\userassignmentObject(), and ilIndividualAssessmentMembersGUI\view().

+ Here is the caller graph for this function:

◆ getPrivacyMode()

ilRepositorySearchGUI::getPrivacyMode ( )

Definition at line 171 of file class.ilRepositorySearchGUI.php.

171 : int
172 {
173 return $this->privacy_mode;
174 }

References $privacy_mode.

◆ getRoleCallback()

ilRepositorySearchGUI::getRoleCallback ( )

Definition at line 181 of file class.ilRepositorySearchGUI.php.

181 : array
182 {
184 }

References $role_callback.

◆ getSearchType()

ilRepositorySearchGUI::getSearchType ( )

Definition at line 176 of file class.ilRepositorySearchGUI.php.

176 : string
177 {
178 return $this->search_type;
179 }

References $search_type.

◆ getString()

ilRepositorySearchGUI::getString ( )

Definition at line 399 of file class.ilRepositorySearchGUI.php.

399 : string
400 {
401 return $this->string;
402 }

◆ getTitle()

ilRepositorySearchGUI::getTitle ( )

Definition at line 151 of file class.ilRepositorySearchGUI.php.

151 : string
152 {
153 return $this->search_title;
154 }

References $search_title.

◆ getUserLimitations()

ilRepositorySearchGUI::getUserLimitations ( )

allow user limitations like inactive and access limitations

Definition at line 1418 of file class.ilRepositorySearchGUI.php.

1418 : bool
1419 {
1421 }

◆ handleMultiCommand()

ilRepositorySearchGUI::handleMultiCommand ( )
protected

Definition at line 611 of file class.ilRepositorySearchGUI.php.

611 : void
612 {
613 $class = $this->callback['class'];
614 $method = $this->callback['method'];
615
616 $post_user = (array) ($this->http->request()->getParsedBody()['user'] ?? []);
617 $post_selected_command = '';
618 if (
619 $this->http->wrapper()->post()->has('table_top_cmd') &&
620 $this->http->wrapper()->post()->has('selectedCommand_2')
621 ) {
622 $post_selected_command = $this->http->wrapper()->post()->retrieve(
623 'selectedCommand_2',
624 $this->refinery->kindlyTo()->string()
625 );
626 } elseif ($this->http->wrapper()->post()->has('selectedCommand')) {
627 $post_selected_command = $this->http->wrapper()->post()->retrieve(
628 'selectedCommand',
629 $this->refinery->kindlyTo()->string()
630 );
631 }
632 // Redirects if everything is ok
633 if (!$class->$method($post_user, $post_selected_command)) {
634 $this->showSearchResults();
635 }
636 }

References ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ initFormSearch()

ilRepositorySearchGUI::initFormSearch ( ?ilObjUser  $user = null)

Definition at line 696 of file class.ilRepositorySearchGUI.php.

696 : void
697 {
698 $this->form = new ilPropertyFormGUI();
699 $this->form->setFormAction($this->ctrl->getFormAction($this, 'showSearch'));
700 $this->form->setTitle($this->getTitle());
701 $this->form->addCommandButton('performSearch', $this->lng->txt('search'));
702 $this->form->addCommandButton('cancel', $this->lng->txt('cancel'));
703
704
705 $kind = new ilRadioGroupInputGUI($this->lng->txt('search_type'), 'search_for');
706 $kind->setValue($this->search_type);
707 $this->form->addItem($kind);
708
709 // Users
710 $users = new ilRadioOption($this->lng->txt('search_for_users'), 'usr');
711
712 // UDF
717
718 $sel = new ilSelectInputGUI($info['lang'], "rep_query[usr][" . $info['db'] . "]");
719 $sel->setOptions($info['values']);
720 $users->addSubItem($sel);
721 break;
722
726
727 if (isset($info['autoComplete']) and $info['autoComplete']) {
728 $this->ctrl->setParameterByClass(get_class($this), 'autoCompleteField', $info['db']);
729 $ul = new ilTextInputGUI($info['lang'], "rep_query[usr][" . $info['db'] . "]");
730 $ul->setDataSourceSubmitOnSelection(true);
731 $ul->setDataSourceSubmitUrl(
732 $this->ctrl->getLinkTarget(
733 $this,
734 'showSearchSelected',
735 '',
736 false,
737 false
738 )
739 );
740 $ul->setDataSource($this->ctrl->getLinkTarget(
741 $this,
742 "doUserAutoComplete",
743 "",
744 true
745 ));
746 $ul->setSize(30);
747 $ul->setMaxLength(120);
748
749 if ($user instanceof ilObjUser) {
750 switch ($info['db']) {
751 case 'firstname':
752 $ul->setValue($user->getFirstname());
753 break;
754 case 'lastname':
755 $ul->setValue($user->getLastname());
756 break;
757 case 'login':
758 $ul->setValue($user->getLogin());
759 break;
760 }
761 }
762
763
764
765 $users->addSubItem($ul);
766 } else {
767 $txt = new ilTextInputGUI($info['lang'], "rep_query[usr][" . $info['db'] . "]");
768 $txt->setSize(30);
769 $txt->setMaxLength(120);
770 $users->addSubItem($txt);
771 }
772 break;
773 }
774 }
775 $kind->addOption($users);
776
777
778
779 // Role
780 $roles = new ilRadioOption($this->lng->txt('search_for_role_members'), 'role');
781 $role = new ilTextInputGUI($this->lng->txt('search_role_title'), 'rep_query[role][title]');
782 $role->setSize(30);
783 $role->setMaxLength(120);
784 $roles->addSubItem($role);
785 $kind->addOption($roles);
786
787 // Course
788 $groups = new ilRadioOption($this->lng->txt('search_for_crs_members'), 'crs');
789 $group = new ilTextInputGUI($this->lng->txt('search_crs_title'), 'rep_query[crs][title]');
790 $group->setSize(30);
791 $group->setMaxLength(120);
792 $groups->addSubItem($group);
793 $kind->addOption($groups);
794
795 // Group
796 $groups = new ilRadioOption($this->lng->txt('search_for_grp_members'), 'grp');
797 $group = new ilTextInputGUI($this->lng->txt('search_grp_title'), 'rep_query[grp][title]');
798 $group->setSize(30);
799 $group->setMaxLength(120);
800 $groups->addSubItem($group);
801 $kind->addOption($groups);
802
803 // Orgus
804 if (ilUserSearchOptions::_isEnabled("org_units")) {
805 $orgus = new ilRadioOption($this->lng->txt('search_for_orgu_members'), 'orgu');
807 $this->lng->txt('select_orgu'),
808 'rep_query_orgu',
809 true,
810 $this->form
811 );
812 $orgu->getExplorerGUI()->setSelectableTypes(["orgu"]);
813 $orgu->getExplorerGUI()->setTypeWhiteList(["root", "orgu"]);
814 $orgu->getExplorerGUI()->setRootId(ilObjOrgUnit::getRootOrgRefId());
815 $orgu->getExplorerGUI()->setAjax(false);
816 $orgus->addSubItem($orgu);
817 $kind->addOption($orgus);
818 }
819 }
static getRootOrgRefId()
User class.
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
$txt
Definition: error.php:31
form( $class_path, string $cmd, string $submit_caption="")

References $info, $txt, ilUserSearchOptions\_getSearchableFieldsInfo(), ilUserSearchOptions\_isEnabled(), ILIAS\Repository\ctrl(), ilUserSearchOptions\FIELD_TYPE_MULTI, ilUserSearchOptions\FIELD_TYPE_SELECT, ilUserSearchOptions\FIELD_TYPE_TEXT, ilUserSearchOptions\FIELD_TYPE_UDF_SELECT, ilUserSearchOptions\FIELD_TYPE_UDF_TEXT, ilUserSearchOptions\FIELD_TYPE_UDF_UNDEFINED, ILIAS\Repository\form(), ilObjUser\getFirstname(), ilObjUser\getLastname(), ilObjUser\getLogin(), ilObjOrgUnit\getRootOrgRefId(), ILIAS\GlobalScreen\Scope\Footer\Factory\getTitle(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ initUserTypeFromPost()

ilRepositorySearchGUI::initUserTypeFromPost ( )
protected

Definition at line 122 of file class.ilRepositorySearchGUI.php.

122 : string
123 {
124 if ($this->http->wrapper()->post()->has('user_type')) {
125 return $this->http->wrapper()->post()->retrieve(
126 'user_type',
127 $this->refinery->kindlyTo()->string()
128 );
129 }
130 return '';
131 }

References ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ initUserTypeFromQuery()

ilRepositorySearchGUI::initUserTypeFromQuery ( )
protected

Definition at line 111 of file class.ilRepositorySearchGUI.php.

111 : string
112 {
113 if ($this->http->wrapper()->query()->has('user_type')) {
114 return $this->http->wrapper()->query()->retrieve(
115 'user_type',
116 $this->refinery->kindlyTo()->string()
117 );
118 }
119 return '';
120 }

References ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ isSearchableCheckEnabled()

ilRepositorySearchGUI::isSearchableCheckEnabled ( )

Definition at line 161 of file class.ilRepositorySearchGUI.php.

161 : bool
162 {
164 }

References $searchable_check.

◆ listUsers()

ilRepositorySearchGUI::listUsers ( array  $selected_entries = [])
protected

Definition at line 1245 of file class.ilRepositorySearchGUI.php.

1245 : bool
1246 {
1247 // get parameter is used e.g. in exercises to provide
1248 // "add members of course" link
1249 if (
1250 $this->http->wrapper()->post()->has('obj') &&
1251 !count($selected_entries)
1252 ) {
1253 $selected_entries = $this->http->wrapper()->post()->retrieve(
1254 'obj',
1255 $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int())
1256 );
1257 }
1258 if (
1259 $this->http->wrapper()->query()->has('list_obj') &&
1260 !count($selected_entries)
1261 ) {
1262 $selected_entries[] = $this->http->wrapper()->query()->retrieve(
1263 'list_obj',
1264 $this->refinery->kindlyTo()->int()
1265 );
1266 }
1267 if (!count($selected_entries)) {
1268 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('select_one'));
1269 $this->showSearchResults();
1270 return false;
1271 }
1272 $rep_search = ilSession::get('rep_search') ?? [];
1273 $rep_search['objs'] = $selected_entries;
1274 ilSession::set('rep_search', $rep_search);
1275
1276 // Get all members
1277 $members = array();
1278 foreach ($selected_entries as $obj_id) {
1279 $type = ilObject::_lookupType($obj_id);
1280 switch ($type) {
1281 case 'crs':
1282 case 'grp':
1284 $part = [];
1285 if (is_callable($this->user_filter)) {
1286 $part = call_user_func_array(
1287 $this->user_filter,
1288 [
1289 ilParticipants::getInstanceByObjId($obj_id)->getParticipants()
1290 ]
1291 );
1292 } else {
1293 $part = ilParticipants::getInstanceByObjId($obj_id)->getParticipants();
1294 }
1295
1296 $members = array_merge((array) $members, $part);
1297 }
1298 break;
1299
1300 case 'role':
1301 $assigned = [];
1302 if (is_callable($this->user_filter)) {
1303 $assigned = call_user_func_array(
1304 $this->user_filter,
1305 [
1306 $this->rbacreview->assignedUsers($obj_id)
1307 ]
1308 );
1309 } else {
1310 $assigned = $this->rbacreview->assignedUsers($obj_id);
1311 }
1312
1313 $members = array_merge($members, ilUserFilter::getInstance()->filter($assigned));
1314 break;
1315 case 'orgu':
1316 if ($ref_ids = ilObject::_getAllReferences($obj_id)) {
1318 ->getUserIdsOfOrgUnit(array_shift($ref_ids));
1319 if (is_callable($this->user_filter)) {
1320 $assigned = call_user_func_array(
1321 $this->user_filter,
1322 [$assigned]
1323 );
1324 }
1325
1326 $members = array_merge(
1327 $members,
1328 $assigned
1329 );
1330 }
1331 break;
1332 }
1333 }
1334 $members = array_unique($members);
1335 $this->__appendToStoredResults($members);
1336
1337 $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.rep_search_result.html', 'components/ILIAS/Search');
1338
1339 $this->addNewSearchButton();
1340 $rep_search = ilSession::get('rep_search');
1341 $this->showSearchUserTable($rep_search['usr'] ?? [], 'storedUserList');
1342 return true;
1343 }
static getInstanceByObjId(int $a_obj_id)
Get instance by obj type.
static hasParticipantListAccess(int $a_obj_id, ?int $a_usr_id=null)
Check if (current) user has access to the participant list.
showSearchUserTable(array $a_usr_ids, string $a_parent_cmd)
filter(string $filter_id, $class_path, string $cmd, bool $activated=true, bool $expanded=true)

References ilObject\_getAllReferences(), ilObject\_lookupType(), ILIAS\Repository\filter(), ilSession\get(), ilOrgUnitUserAssignmentQueries\getInstance(), ilUserFilter\getInstance(), ilParticipants\getInstanceByObjId(), ilParticipants\hasParticipantListAccess(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\refinery(), and ilSession\set().

+ Here is the call graph for this function:

◆ performSearch()

ilRepositorySearchGUI::performSearch ( )

Definition at line 833 of file class.ilRepositorySearchGUI.php.

833 : bool
834 {
835 // only autocomplete input field, no search form if user privay should be respected
836 // see bug 25481
838 return false;
839 }
840 $found_query = false;
841
842 $post_rep_query = (array) ($this->http->request()->getParsedBody()['rep_query'] ?? []);
843 $post_search_for = (string) ($this->http->request()->getParsedBody()['search_for'] ?? '');
844 if (isset($post_rep_query[$post_search_for])) {
845 foreach ((array) $post_rep_query[$post_search_for] as $field => $value) {
846 if (trim(ilUtil::stripSlashes($value))) {
847 $found_query = true;
848 break;
849 }
850 }
851 }
852 if ($this->http->wrapper()->post()->has('rep_query_orgu')) {
853 $found_query = true;
854 }
855 if (!$found_query) {
856 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('msg_no_search_string'));
857 $this->start();
858 return false;
859 }
860
861 $post_cmd = (array) ($this->http->request()->getParsedBody()['cmd'] ?? []);
862 // unset search_append if called directly
863 if (isset($post_cmd['performSearch'])) {
864 ilSession::clear('search_append');
865 }
866
867 switch ($this->search_type) {
868 case 'usr':
869 $this->__performUserSearch();
870 break;
871
872 case 'grp':
873 $this->__performGroupSearch();
874 break;
875
876 case 'crs':
877 $this->__performCourseSearch();
878 break;
879
880 case 'role':
881 $this->__performRoleSearch();
882 break;
883 case 'orgu':
884 $post_rep_query_orgu = (array) ($this->http->request()->getParsedBody()['rep_query_orgu'] ?? []);
885 $selected_objects = array_map(
886 function ($ref_id) {
887 return ilObject::_lookupObjId((int) $ref_id);
888 },
889 $post_rep_query_orgu
890 );
891 return $this->listUsers($selected_objects);
892 default:
893 echo 'not defined';
894 }
895
896 $this->result_obj->setRequiredPermission('read');
897 $this->result_obj->addObserver($this, 'searchResultFilterListener');
898 $this->result_obj->filter(ROOT_FOLDER_ID, true);
899
900 // User access filter
901 if ($this->search_type == 'usr') {
902 $callable_name = '';
903 if (is_callable($this->user_filter, true, $callable_name)) {
904 $result_ids = call_user_func_array($this->user_filter, [$this->result_obj->getResultIds()]);
905 } else {
906 $result_ids = $this->result_obj->getResultIds();
907 }
908
909 $this->search_results = array_intersect(
910 $result_ids,
911 ilUserFilter::getInstance()->filter($result_ids)
912 );
913 } else {
914 $this->search_results = array();
915 foreach ($this->result_obj->getResults() as $res) {
916 $this->search_results[] = $res['obj_id'];
917 }
918 }
919
920 if (!count($this->search_results)) {
921 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('search_no_match'));
922 $this->showSearch();
923 return true;
924 }
925 $this->__updateResults();
926 if ($this->result_obj->isLimitReached()) {
927 $message = sprintf($this->lng->txt('search_limit_reached'), $this->settings->getMaxHits());
928 $this->tpl->setOnScreenMessage('info', $message);
929 return true;
930 }
931 // show results
932 $this->show();
933 return true;
934 }
listUsers(array $selected_entries=[])
const ROOT_FOLDER_ID
Definition: constants.php:32
$res
Definition: ltiservices.php:69
$message
Definition: xapiexit.php:31

References $message, $ref_id, $res, ilObject\_lookupObjId(), ilSession\clear(), ILIAS\Repository\filter(), ilUserFilter\getInstance(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ilUserAutoComplete\PRIVACY_MODE_RESPECT_USER_SETTING, ROOT_FOLDER_ID, show(), and ilUtil\stripSlashes().

+ Here is the call graph for this function:

◆ removeFromClipboard()

ilRepositorySearchGUI::removeFromClipboard ( )
protected

Definition at line 573 of file class.ilRepositorySearchGUI.php.

573 : void
574 {
575 $users = [];
576 if ($this->http->wrapper()->post()->has('uids')) {
577 $users = $this->http->wrapper()->post()->retrieve(
578 'uids',
579 $this->refinery->kindlyTo()->listOf(
580 $this->refinery->kindlyTo()->int()
581 )
582 );
583 }
584
585 $this->ctrl->setParameter($this, 'user_type', $this->initUserTypeFromQuery());
586 if (!count($users)) {
587 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('select_one'), true);
588 $this->ctrl->redirect($this, 'showClipboard');
589 }
590
591 $clip = ilUserClipboard::getInstance($this->user->getId());
592 $clip->delete($users);
593 $clip->save();
594
595 $this->tpl->setOnScreenMessage('success', $this->lng->txt('settings_saved'), true);
596 $this->ctrl->redirect($this, 'showClipboard');
597 }

References ILIAS\Repository\ctrl(), ilUserClipboard\getInstance(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\refinery(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ searchResultFilterListener()

ilRepositorySearchGUI::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.

Definition at line 1358 of file class.ilRepositorySearchGUI.php.

1358 : bool
1359 {
1360 if ($a_data['type'] == 'usr') {
1361 if ($a_data['obj_id'] == ANONYMOUS_USER_ID) {
1362 return false;
1363 }
1364 }
1365 return true;
1366 }

References ANONYMOUS_USER_ID.

◆ selectObject()

ilRepositorySearchGUI::selectObject ( )
protected

Return selection of course/group/roles to calling script.

Definition at line 1376 of file class.ilRepositorySearchGUI.php.

1376 : bool
1377 {
1378 // get parameter is used e.g. in exercises to provide
1379 // "add members of course"
1380 $selected_entries = [];
1381 if ($this->http->wrapper()->post()->has('obj')) {
1382 $selected_entries = $this->http->wrapper()->post()->retrieve(
1383 'obj',
1384 $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int())
1385 );
1386 }
1387 if (
1388 $this->http->wrapper()->query()->has('list_obj') &&
1389 !count($selected_entries)
1390 ) {
1391 $selected_entries[] = $this->http->wrapper()->query()->retrieve(
1392 'list_obj',
1393 $this->refinery->kindlyTo()->int()
1394 );
1395 }
1396
1397 if (!count($selected_entries)) {
1398 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('select_one'));
1399 $this->showSearchResults();
1400 return false;
1401 }
1402 $this->ctrl->setParameter($this->callback["class"], "obj", implode(";", $selected_entries));
1403 $this->ctrl->redirect($this->callback["class"], $this->callback["method"]);
1404 return true;
1405 }

References ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ setCallback()

ilRepositorySearchGUI::setCallback ( object  $class,
string  $method,
array  $a_add_options = [],
string  $default_option = '' 
)
Parameters
string[]$a_add_options

Definition at line 641 of file class.ilRepositorySearchGUI.php.

646 : void {
647 $this->callback = array('class' => $class,'method' => $method);
648 $this->add_options = $a_add_options;
649 $this->default_option = $default_option;
650 }

◆ setPermissionQueryCallback()

ilRepositorySearchGUI::setPermissionQueryCallback ( object  $class,
string  $method 
)

Definition at line 667 of file class.ilRepositorySearchGUI.php.

667 : void
668 {
669 }

◆ setPrivacyMode()

ilRepositorySearchGUI::setPrivacyMode ( int  $privacy_mode)

Definition at line 166 of file class.ilRepositorySearchGUI.php.

166 : void
167 {
168 $this->privacy_mode = $privacy_mode;
169 }

References $privacy_mode.

◆ setRoleCallback()

ilRepositorySearchGUI::setRoleCallback ( object  $class,
string  $method,
array  $a_add_options = [],
string  $default_option = '' 
)
Parameters
string[]$a_add_options

Definition at line 655 of file class.ilRepositorySearchGUI.php.

660 : void {
661 $this->role_callback = array('class' => $class,'method' => $method);
662 $this->add_options = $a_add_options;
663 $this->default_option = $default_option;
664 }

◆ setString()

ilRepositorySearchGUI::setString ( string  $a_str)

Definition at line 393 of file class.ilRepositorySearchGUI.php.

393 : void
394 {
395 $search = ilSession::get('search');
396 $search['string'] = $this->string = $a_str;
397 ilSession::set('search', $search);
398 }

References ilSession\get(), and ilSession\set().

+ Here is the call graph for this function:

◆ setTitle()

ilRepositorySearchGUI::setTitle ( string  $a_title)

Definition at line 146 of file class.ilRepositorySearchGUI.php.

146 : void
147 {
148 $this->search_title = $a_title;
149 }

Referenced by __construct().

+ Here is the caller graph for this function:

◆ setUserLimitations()

ilRepositorySearchGUI::setUserLimitations ( bool  $a_limitations)

allow user limitations like inactive and access limitations

Definition at line 1410 of file class.ilRepositorySearchGUI.php.

1410 : void
1411 {
1412 $this->user_limitations = $a_limitations;
1413 }

◆ show()

ilRepositorySearchGUI::show ( )

Definition at line 822 of file class.ilRepositorySearchGUI.php.

822 : void
823 {
824 $this->showSearchResults();
825 }

◆ showClipboard()

ilRepositorySearchGUI::showClipboard ( )
protected

Definition at line 522 of file class.ilRepositorySearchGUI.php.

522 : void
523 {
524 $user_type = $this->initUserTypeFromQuery();
525 if ($user_type === '') {
526 $user_type = $this->initUserTypeFromPost();
527 }
528 $this->ctrl->setParameter($this, 'user_type', $user_type);
529 $this->tabs->clearTargets();
530 $this->tabs->setBackTarget(
531 $this->lng->txt('back'),
532 $this->ctrl->getParentReturn($this)
533 );
534
535 $clip = new ilUserClipboardTableGUI($this, 'showClipboard', $this->user->getId());
536 $clip->setFormAction($this->ctrl->getFormAction($this));
537 $clip->init();
538 $clip->parse();
539
540 $this->tpl->setContent($clip->getHTML());
541 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References ILIAS\Repository\ctrl(), ILIAS\Repository\lng(), ILIAS\Repository\tabs(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ showSearch()

ilRepositorySearchGUI::showSearch ( )

Definition at line 671 of file class.ilRepositorySearchGUI.php.

671 : void
672 {
673 // only autocomplete input field, no search form if user privay should be respected
674 // see bug 25481
676 return;
677 }
678 $this->initFormSearch();
679 $this->tpl->setContent($this->form->getHTML());
680 }
initFormSearch(?ilObjUser $user=null)

References ILIAS\Repository\form(), and ilUserAutoComplete\PRIVACY_MODE_RESPECT_USER_SETTING.

+ Here is the call graph for this function:

◆ showSearchCourseTable()

ilRepositorySearchGUI::showSearchCourseTable ( array  $a_obj_ids)
protected

Definition at line 1237 of file class.ilRepositorySearchGUI.php.

1237 : void
1238 {
1239 $table = new ilRepositoryObjectResultTableGUI($this, 'showSearchResults', $this->object_selection);
1240 $table->parseObjectIds($a_obj_ids);
1241
1242 $this->tpl->setVariable('RES_TABLE', $table->getHTML());
1243 }
TableGUI class object (course,group and role) search results Used in member search.

◆ showSearchGroupTable()

ilRepositorySearchGUI::showSearchGroupTable ( array  $a_obj_ids)
protected

Definition at line 1229 of file class.ilRepositorySearchGUI.php.

1229 : void
1230 {
1231 $table = new ilRepositoryObjectResultTableGUI($this, 'showSearchResults', $this->object_selection);
1232 $table->parseObjectIds($a_obj_ids);
1233
1234 $this->tpl->setVariable('RES_TABLE', $table->getHTML());
1235 }

◆ showSearchResults()

ilRepositorySearchGUI::showSearchResults ( )

Definition at line 1156 of file class.ilRepositorySearchGUI.php.

1156 : void
1157 {
1158 $counter = 0;
1159 $f_result = array();
1160
1161 $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.rep_search_result.html', 'components/ILIAS/Search');
1162 $this->addNewSearchButton();
1163
1164 $rep_search = ilSession::get('rep_search');
1165
1166 switch ($this->search_type) {
1167 case "usr":
1168 $this->showSearchUserTable($rep_search['usr'] ?? [], 'showSearchResults');
1169 break;
1170
1171 case 'grp':
1172 $this->showSearchGroupTable($rep_search['grp'] ?? []);
1173 break;
1174
1175 case 'crs':
1176 $this->showSearchCourseTable($rep_search['crs'] ?? []);
1177 break;
1178
1179 case 'role':
1180 $this->showSearchRoleTable($rep_search['role'] ?? []);
1181 break;
1182 }
1183 }
$counter

References $counter, and ilSession\get().

+ Here is the call graph for this function:

◆ showSearchRoleTable()

ilRepositorySearchGUI::showSearchRoleTable ( array  $a_obj_ids)
protected

Definition at line 1221 of file class.ilRepositorySearchGUI.php.

1221 : void
1222 {
1223 $table = new ilRepositoryObjectResultTableGUI($this, 'showSearchResults', $this->object_selection);
1224 $table->parseObjectIds($a_obj_ids);
1225
1226 $this->tpl->setVariable('RES_TABLE', $table->getHTML());
1227 }

◆ showSearchSelected()

ilRepositorySearchGUI::showSearchSelected ( )

Definition at line 682 of file class.ilRepositorySearchGUI.php.

682 : void
683 {
684 $selected = [];
685 if ($this->http->wrapper()->query()->has('selected_id')) {
686 $selected = $this->http->wrapper()->query()->retrieve(
687 'selected_id',
688 $this->refinery->kindlyTo()->int()
689 );
690 }
691 $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.rep_search_result.html', 'components/ILIAS/Search');
692 $this->addNewSearchButton();
693 $this->showSearchUserTable([$selected], 'showSearchResults');
694 }

References ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ showSearchUserTable()

ilRepositorySearchGUI::showSearchUserTable ( array  $a_usr_ids,
string  $a_parent_cmd 
)
protected

Definition at line 1185 of file class.ilRepositorySearchGUI.php.

1185 : void
1186 {
1187 $base_class = '';
1188 if ($this->http->wrapper()->query()->has('baseClass')) {
1189 $base_class = $this->http->wrapper()->query()->retrieve(
1190 'baseClass',
1191 $this->refinery->kindlyTo()->string()
1192 );
1193 }
1194
1195 // String value of 'baseClass' is in lower case
1196 $is_in_admin = ($base_class === strtolower(ilAdministrationGUI::class));
1197
1198 if ($is_in_admin) {
1199 // remember link target to admin search gui (this)
1200 ilSession::set('usr_search_link', $this->ctrl->getLinkTarget($this, 'show'));
1201 }
1202
1203 $table = new ilRepositoryUserResultTableGUI($this, $a_parent_cmd, $is_in_admin);
1204 if (count($this->add_options)) {
1205 $table->addMultiItemSelectionButton(
1206 'selectedCommand',
1207 $this->add_options,
1208 'handleMultiCommand',
1209 $this->lng->txt('execute'),
1210 $this->default_option
1211 );
1212 } else {
1213 $table->addMultiCommand('addUser', $this->lng->txt('btn_add'));
1214 }
1215 $table->setUserLimitations($this->getUserLimitations());
1216 $table->parseUserIds($a_usr_ids);
1217
1218 $this->tpl->setVariable('RES_TABLE', $table->getHTML());
1219 }

References ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\refinery(), and ilSession\set().

+ Here is the call graph for this function:

◆ start()

ilRepositorySearchGUI::start ( )

Definition at line 432 of file class.ilRepositorySearchGUI.php.

432 : bool
433 {
434 // delete all session info
435 $this->__clearSession();
436 $this->showSearch();
437
438 return true;
439 }

◆ storedUserList()

ilRepositorySearchGUI::storedUserList ( )
protected

Definition at line 1345 of file class.ilRepositorySearchGUI.php.

1345 : bool
1346 {
1347 $rep_search = ilSession::get('rep_search');
1348 $objects = $rep_search['objs'] ?? [];
1349 $this->listUsers($objects);
1350 return true;
1351 }

References ilSession\get().

+ Here is the call graph for this function:

Field Documentation

◆ $add_options

array ilRepositorySearchGUI::$add_options = []
protected

Definition at line 42 of file class.ilRepositorySearchGUI.php.

◆ $callback

array ilRepositorySearchGUI::$callback = []
protected

Definition at line 54 of file class.ilRepositorySearchGUI.php.

◆ $ctrl

ilCtrl ilRepositorySearchGUI::$ctrl
protected

Definition at line 71 of file class.ilRepositorySearchGUI.php.

◆ $default_option

string ilRepositorySearchGUI::$default_option = ''
protected

Definition at line 43 of file class.ilRepositorySearchGUI.php.

◆ $form

ilPropertyFormGUI ilRepositorySearchGUI::$form = null
protected

Definition at line 59 of file class.ilRepositorySearchGUI.php.

◆ $http

GlobalHttpState ilRepositorySearchGUI::$http
private

Definition at line 77 of file class.ilRepositorySearchGUI.php.

◆ $lng

ilLanguage ilRepositorySearchGUI::$lng
protected

Definition at line 76 of file class.ilRepositorySearchGUI.php.

◆ $object_selection

bool ilRepositorySearchGUI::$object_selection = false
protected

Definition at line 44 of file class.ilRepositorySearchGUI.php.

◆ $privacy_mode

int ilRepositorySearchGUI::$privacy_mode = ilUserAutoComplete::PRIVACY_MODE_IGNORE_USER_SETTING
private

Definition at line 66 of file class.ilRepositorySearchGUI.php.

Referenced by getPrivacyMode(), and setPrivacyMode().

◆ $rbacreview

ilRbacReview ilRepositorySearchGUI::$rbacreview
protected

Definition at line 74 of file class.ilRepositorySearchGUI.php.

◆ $refinery

RefineryFactory ilRepositorySearchGUI::$refinery
private

◆ $result_obj

ilSearchResult ilRepositorySearchGUI::$result_obj
protected

Definition at line 57 of file class.ilRepositorySearchGUI.php.

◆ $role_callback

array ilRepositorySearchGUI::$role_callback = []
protected

Definition at line 55 of file class.ilRepositorySearchGUI.php.

Referenced by getRoleCallback().

◆ $search_results

array ilRepositorySearchGUI::$search_results = []
private

Definition at line 40 of file class.ilRepositorySearchGUI.php.

◆ $search_title

string ilRepositorySearchGUI::$search_title = ''
protected

Definition at line 47 of file class.ilRepositorySearchGUI.php.

Referenced by getTitle().

◆ $search_type

string ilRepositorySearchGUI::$search_type = 'usr'
private

Definition at line 49 of file class.ilRepositorySearchGUI.php.

Referenced by getSearchType().

◆ $searchable_check

bool ilRepositorySearchGUI::$searchable_check = true
protected

Definition at line 46 of file class.ilRepositorySearchGUI.php.

Referenced by isSearchableCheckEnabled().

◆ $settings

ilSearchSettings ilRepositorySearchGUI::$settings
protected

Definition at line 58 of file class.ilRepositorySearchGUI.php.

◆ $stored

bool ilRepositorySearchGUI::$stored = false
protected

Definition at line 53 of file class.ilRepositorySearchGUI.php.

◆ $string

string ilRepositorySearchGUI::$string = ''
private

Definition at line 50 of file class.ilRepositorySearchGUI.php.

◆ $tabs

ilTabsGUI ilRepositorySearchGUI::$tabs
protected

Definition at line 75 of file class.ilRepositorySearchGUI.php.

◆ $tpl

ilGlobalTemplateInterface ilRepositorySearchGUI::$tpl
protected

Definition at line 72 of file class.ilRepositorySearchGUI.php.

◆ $tree

ilTree ilRepositorySearchGUI::$tree
protected

Definition at line 68 of file class.ilRepositorySearchGUI.php.

◆ $ui_factory

Factory ilRepositorySearchGUI::$ui_factory
protected

Definition at line 70 of file class.ilRepositorySearchGUI.php.

◆ $ui_renderer

Renderer ilRepositorySearchGUI::$ui_renderer
protected

Definition at line 69 of file class.ilRepositorySearchGUI.php.

◆ $user

ilObjUser ilRepositorySearchGUI::$user = null
protected

Definition at line 73 of file class.ilRepositorySearchGUI.php.

◆ $user_filter

ilRepositorySearchGUI::$user_filter = null
protected

Definition at line 64 of file class.ilRepositorySearchGUI.php.

Referenced by addUserAccessFilterCallable().

◆ $user_limitations

bool ilRepositorySearchGUI::$user_limitations = true
protected

Definition at line 51 of file class.ilRepositorySearchGUI.php.


The documentation for this class was generated from the following file: