ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ilUserQuery Class Reference

User query class. More...

+ Collaboration diagram for ilUserQuery:

Public Member Functions

 setUdfFilter (array $filter_array)
 Set udf filter. More...
 
 getUdfFilter ()
 Get udf filter. More...
 
 setOrderField (string $a_order)
 Set order field (column in usr_data) Default order is 'login'. More...
 
 setOrderDirection (string $a_dir)
 Set order direction 'asc' or 'desc' Default is 'asc'. More...
 
 setOffset (int $a_offset)
 
 setLimit (int $a_limit)
 
 setTextFilter (string $a_filter)
 Text (like) filter in login, firstname, lastname or email. More...
 
 setActionFilter (string $a_activation)
 Set activation filter 'active' or 'inactive' or empty. More...
 
 setLastLogin (?ilDateTime $dt=null)
 Set last login filter. More...
 
 setLimitedAccessFilter (bool $a_status)
 Enable limited access filter. More...
 
 setNoCourseFilter (bool $a_no_course)
 
 setNoGroupFilter (bool $a_no_group)
 
 setCourseGroupFilter (int $a_cg_id)
 Set course / group filter object_id of course or group. More...
 
 setRoleFilter (int $a_role_id)
 Set role filter obj_id of role. More...
 
 setUserFolder (?array $user_folder_id)
 Set user folder filter reference id of user folder or category (local user administration) More...
 
 setAdditionalFields (array $additional_fields)
 Set additional fields (columns in usr_data or 'online_time') More...
 
 setUserFilter (array $a_filter)
 Array with user ids to query against. More...
 
 setFirstLetterLastname (string $a_fll)
 set first letter lastname filter More...
 
 setAccessFilter (bool $a_access)
 set filter for user that are limited but has access More...
 
 setAuthenticationFilter (string $a_authentication)
 Set authentication filter. More...
 

Static Public Member Functions

static getUserListData (string $a_order_field, string $a_order_dir, int $a_offset, int $a_limit, string $a_string_filter="", string $a_activation_filter="", ?ilDateTime $a_last_login_filter=null, bool $a_limited_access_filter=false, bool $a_no_courses_filter=false, int $a_course_group_filter=0, int $a_role_filter=0, ?array $a_user_folder_filter=null, ?array $a_additional_fields=null, ?array $a_user_filter=null, string $a_first_letter="", string $a_authentication_filter="")
 Get data for user administration list. More...
 

Data Fields

const DEFAULT_ORDER_FIELD = 'login'
 

Protected Attributes

array $udf_filter = []
 

Private Member Functions

 addOrderToQuery (DataQuery $query)
 
 addUdfFilterToQuery (DataQuery $query)
 

Private Attributes

const array DEFAULT_MULTI_FIELDS
 
const array DEFAULT_FIELDS
 
Language $lng
 
ilDBInterface $db
 
string $order_field = self::DEFAULT_ORDER_FIELD
 
string $order_dir = 'asc'
 
int $offset = 0
 
int $limit = 50
 
string $text_filter = ''
 
string $activation = ''
 
ilDateTime $last_login = null
 
bool $limited_access = false
 
bool $no_courses = false
 
bool $no_groups = false
 
int $crs_grp = 0
 
int $role = 0
 
array $user_folder = []
 
array $additional_fields = []
 
array $users = []
 
string $first_letter = ''
 
bool $has_access = false
 
string $authentication_method = ''
 
ProfileFieldsConfigurationRepository $profile_fields_repository
 
ProfileDataRepository $profile_data_repository
 

Detailed Description

User query class.

Put any complex that queries for a set of users into this class and keep ilObjUser "small".

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e

Definition at line 32 of file class.ilUserQuery.php.

Member Function Documentation

◆ addOrderToQuery()

ilUserQuery::addOrderToQuery ( DataQuery  $query)
private

Definition at line 425 of file class.ilUserQuery.php.

425 : DataQuery
426 {
427 $direction = $this->order_dir === 'desc' ? 'DESC' : 'ASC';
428 switch ($this->order_field) {
429 case 'access_until':
430 return $query->withDefaultTableOrderFields(
431 ['active', 'time_limit_unlimited', 'time_limit_until'],
432 $direction
433 );
434
435 case 'online_time':
436 return $query->withAdditionalTableOrder("ORDER BY ut_online.online_time {$direction}");
437
438 default:
439 if (!in_array($this->order_field, array_merge(self::DEFAULT_FIELDS, $this->additional_fields))) {
440 $this->order_field = 'login';
441 }
442
443 if (in_array($this->order_field, self::DEFAULT_MULTI_FIELDS)
444 || str_starts_with($this->order_field, 'udf_')) {
445 return $query->withMultiDataTableOrder($this->order_field, $this->order_dir);
446 }
447
448 return $query->withDefaultTableOrderFields([$this->order_field], $this->order_dir);
449 }
450 }
withMultiDataTableOrder(string $order_field, string $direction)
Definition: DataQuery.php:116
withDefaultTableOrderFields(array $order_fields, string $direction)
Definition: DataQuery.php:123
withAdditionalTableOrder(string $order)
Definition: DataQuery.php:109

References ILIAS\User\Profile\DataQuery\withAdditionalTableOrder(), ILIAS\User\Profile\DataQuery\withDefaultTableOrderFields(), and ILIAS\User\Profile\DataQuery\withMultiDataTableOrder().

+ Here is the call graph for this function:

◆ addUdfFilterToQuery()

ilUserQuery::addUdfFilterToQuery ( DataQuery  $query)
private

Definition at line 452 of file class.ilUserQuery.php.

452 : DataQuery
453 {
454 if ($this->getUdfFilter() === []) {
455 return $query;
456 }
457
458 $udf_filter = $this->getUdfFilter();
459 return array_reduce(
460 array_keys(
461 array_filter($udf_filter)
462 ),
463 fn(DataQuery $c, string $v): DataQuery => $c->withAdditionalMultiDataWhere(
464 $v,
465 $udf_filter[$v]
466 ),
468 );
469 }
getUdfFilter()
Get udf filter.
$c
Definition: deliver.php:25

References $c, $udf_filter, getUdfFilter(), and ILIAS\User\Profile\DataQuery\withJoinedMultiDataTable().

+ Here is the call graph for this function:

◆ getUdfFilter()

ilUserQuery::getUdfFilter ( )

Get udf filter.

Returns
array udf filter array

Definition at line 117 of file class.ilUserQuery.php.

117 : array // Missing array type.
118 {
119 return $this->udf_filter;
120 }

References $udf_filter.

Referenced by addUdfFilterToQuery().

+ Here is the caller graph for this function:

◆ getUserListData()

static ilUserQuery::getUserListData ( string  $a_order_field,
string  $a_order_dir,
int  $a_offset,
int  $a_limit,
string  $a_string_filter = "",
string  $a_activation_filter = "",
?ilDateTime  $a_last_login_filter = null,
bool  $a_limited_access_filter = false,
bool  $a_no_courses_filter = false,
int  $a_course_group_filter = 0,
int  $a_role_filter = 0,
?array  $a_user_folder_filter = null,
?array  $a_additional_fields = null,
?array  $a_user_filter = null,
string  $a_first_letter = "",
string  $a_authentication_filter = "" 
)
static

Get data for user administration list.

Deprecated:

Definition at line 476 of file class.ilUserQuery.php.

493 : array {
494 $query = new ilUserQuery();
495 $query->setOrderField($a_order_field);
496 $query->setOrderDirection($a_order_dir);
497 $query->setOffset($a_offset);
498 $query->setLimit($a_limit);
499 $query->setTextFilter($a_string_filter);
500 $query->setActionFilter($a_activation_filter);
501 $query->setLastLogin($a_last_login_filter);
502 $query->setLimitedAccessFilter($a_limited_access_filter);
503 $query->setNoCourseFilter($a_no_courses_filter);
504 $query->setCourseGroupFilter($a_course_group_filter);
505 $query->setRoleFilter($a_role_filter);
506 $query->setUserFolder($a_user_folder_filter);
507 $query->setAdditionalFields($a_additional_fields ?? []);
508 $query->setUserFilter($a_user_filter ?? []);
509 $query->setFirstLetterLastname($a_first_letter);
510 $query->setAuthenticationFilter($a_authentication_filter);
511 return $query->query();
512 }
User query class.

Referenced by ilAssignedUsersTableGUI\getItems(), ilUserLPTableGUI\getItems(), ilCourseParticipantsTableGUI\parse(), ilGroupParticipantsTableGUI\parse(), ilLearningSequenceParticipantsTableGUI\parse(), ilSubscriberTableGUI\readSubscriberData(), and ilWaitingListTableGUI\readUserData().

+ Here is the caller graph for this function:

◆ setAccessFilter()

ilUserQuery::setAccessFilter ( bool  $a_access)

set filter for user that are limited but has access

Definition at line 248 of file class.ilUserQuery.php.

248 : void
249 {
250 $this->has_access = $a_access;
251 }

◆ setActionFilter()

ilUserQuery::setActionFilter ( string  $a_activation)

Set activation filter 'active' or 'inactive' or empty.

Definition at line 163 of file class.ilUserQuery.php.

163 : void
164 {
165 $this->activation = $a_activation;
166 }

◆ setAdditionalFields()

ilUserQuery::setAdditionalFields ( array  $additional_fields)

Set additional fields (columns in usr_data or 'online_time')

Definition at line 224 of file class.ilUserQuery.php.

224 : void
225 {
226 $this->additional_fields = $additional_fields;
227 }
array $additional_fields

References $additional_fields.

◆ setAuthenticationFilter()

ilUserQuery::setAuthenticationFilter ( string  $a_authentication)

Set authentication filter.

Parameters
string$a_authentication'default', 'local' or 'lti'

Definition at line 257 of file class.ilUserQuery.php.

257 : void
258 {
259 $this->authentication_method = $a_authentication;
260 }

◆ setCourseGroupFilter()

ilUserQuery::setCourseGroupFilter ( int  $a_cg_id)

Set course / group filter object_id of course or group.

Definition at line 198 of file class.ilUserQuery.php.

198 : void
199 {
200 $this->crs_grp = $a_cg_id;
201 }

◆ setFirstLetterLastname()

ilUserQuery::setFirstLetterLastname ( string  $a_fll)

set first letter lastname filter

Definition at line 240 of file class.ilUserQuery.php.

240 : void
241 {
242 $this->first_letter = $a_fll;
243 }

◆ setLastLogin()

ilUserQuery::setLastLogin ( ?ilDateTime  $dt = null)

Set last login filter.

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

171 : void
172 {
173 $this->last_login = $dt;
174 }

◆ setLimit()

ilUserQuery::setLimit ( int  $a_limit)

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

146 : void
147 {
148 $this->limit = $a_limit;
149 }

◆ setLimitedAccessFilter()

ilUserQuery::setLimitedAccessFilter ( bool  $a_status)

Enable limited access filter.

Definition at line 179 of file class.ilUserQuery.php.

179 : void
180 {
181 $this->limited_access = $a_status;
182 }

◆ setNoCourseFilter()

ilUserQuery::setNoCourseFilter ( bool  $a_no_course)

Definition at line 184 of file class.ilUserQuery.php.

184 : void
185 {
186 $this->no_courses = $a_no_course;
187 }

◆ setNoGroupFilter()

ilUserQuery::setNoGroupFilter ( bool  $a_no_group)

Definition at line 189 of file class.ilUserQuery.php.

189 : void
190 {
191 $this->no_groups = $a_no_group;
192 }

◆ setOffset()

ilUserQuery::setOffset ( int  $a_offset)

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

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

◆ setOrderDirection()

ilUserQuery::setOrderDirection ( string  $a_dir)

Set order direction 'asc' or 'desc' Default is 'asc'.

Definition at line 136 of file class.ilUserQuery.php.

136 : void
137 {
138 $this->order_dir = $a_dir;
139 }

◆ setOrderField()

ilUserQuery::setOrderField ( string  $a_order)

Set order field (column in usr_data) Default order is 'login'.

Definition at line 126 of file class.ilUserQuery.php.

126 : void
127 {
128 $this->order_field = $a_order;
129 }

◆ setRoleFilter()

ilUserQuery::setRoleFilter ( int  $a_role_id)

Set role filter obj_id of role.

Definition at line 207 of file class.ilUserQuery.php.

207 : void
208 {
209 $this->role = $a_role_id;
210 }

◆ setTextFilter()

ilUserQuery::setTextFilter ( string  $a_filter)

Text (like) filter in login, firstname, lastname or email.

Definition at line 154 of file class.ilUserQuery.php.

154 : void
155 {
156 $this->text_filter = $a_filter;
157 }

◆ setUdfFilter()

ilUserQuery::setUdfFilter ( array  $filter_array)

Set udf filter.

Parameters
array$a_valudf filter array

Definition at line 98 of file class.ilUserQuery.php.

98 : void // Missing array type.
99 {
100 $this->udf_filter = array_reduce(
101 array_keys($filter_array),
102 function (array $c, string $v) use ($filter_array): array {
103 if ($filter_array[$v] === '') {
104 return $c;
105 }
106 $c[mb_substr($v, 4)] = $filter_array[$v];
107 return $c;
108 },
109 []
110 );
111 }

References $c.

◆ setUserFilter()

ilUserQuery::setUserFilter ( array  $a_filter)

Array with user ids to query against.

Definition at line 232 of file class.ilUserQuery.php.

232 : void // Missing array type.
233 {
234 $this->users = $a_filter;
235 }

◆ setUserFolder()

ilUserQuery::setUserFolder ( ?array  $user_folder_id)

Set user folder filter reference id of user folder or category (local user administration)

Definition at line 216 of file class.ilUserQuery.php.

216 : void
217 {
218 $this->user_folder = $user_folder_id ?? [];
219 }

Field Documentation

◆ $activation

string ilUserQuery::$activation = ''
private

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

◆ $additional_fields

array ilUserQuery::$additional_fields = []
private

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

Referenced by setAdditionalFields().

◆ $authentication_method

string ilUserQuery::$authentication_method = ''
private

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

◆ $crs_grp

int ilUserQuery::$crs_grp = 0
private

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

◆ $db

ilDBInterface ilUserQuery::$db
private

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

◆ $first_letter

string ilUserQuery::$first_letter = ''
private

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

◆ $has_access

bool ilUserQuery::$has_access = false
private

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

◆ $last_login

ilDateTime ilUserQuery::$last_login = null
private

Definition at line 65 of file class.ilUserQuery.php.

◆ $limit

int ilUserQuery::$limit = 50
private

Definition at line 62 of file class.ilUserQuery.php.

◆ $limited_access

bool ilUserQuery::$limited_access = false
private

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

◆ $lng

Language ilUserQuery::$lng
private

Definition at line 56 of file class.ilUserQuery.php.

◆ $no_courses

bool ilUserQuery::$no_courses = false
private

Definition at line 67 of file class.ilUserQuery.php.

◆ $no_groups

bool ilUserQuery::$no_groups = false
private

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

◆ $offset

int ilUserQuery::$offset = 0
private

Definition at line 61 of file class.ilUserQuery.php.

◆ $order_dir

string ilUserQuery::$order_dir = 'asc'
private

Definition at line 60 of file class.ilUserQuery.php.

◆ $order_field

string ilUserQuery::$order_field = self::DEFAULT_ORDER_FIELD
private

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

◆ $profile_data_repository

ProfileDataRepository ilUserQuery::$profile_data_repository
private

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

◆ $profile_fields_repository

ProfileFieldsConfigurationRepository ilUserQuery::$profile_fields_repository
private

Definition at line 79 of file class.ilUserQuery.php.

◆ $role

int ilUserQuery::$role = 0
private

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

◆ $text_filter

string ilUserQuery::$text_filter = ''
private

Definition at line 63 of file class.ilUserQuery.php.

◆ $udf_filter

array ilUserQuery::$udf_filter = []
protected

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

Referenced by addUdfFilterToQuery(), and getUdfFilter().

◆ $user_folder

array ilUserQuery::$user_folder = []
private

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

◆ $users

array ilUserQuery::$users = []
private

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

◆ DEFAULT_FIELDS

const array ilUserQuery::DEFAULT_FIELDS
private
Initial value:
= [
'usr_id',
'login',
'firstname',
'lastname',
'email',
'second_email',
'time_limit_until',
'time_limit_unlimited',
'time_limit_owner',
'last_login',
'active'
]

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

◆ DEFAULT_MULTI_FIELDS

const array ilUserQuery::DEFAULT_MULTI_FIELDS
private
Initial value:
= [
'interests_general',
'interests_help_offered',
'interests_help_looking'
]

Definition at line 36 of file class.ilUserQuery.php.

◆ DEFAULT_ORDER_FIELD

const ilUserQuery::DEFAULT_ORDER_FIELD = 'login'

Definition at line 34 of file class.ilUserQuery.php.


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