ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ILIAS\User\Profile\ProfileImplementation Class Reference
+ Inheritance diagram for ILIAS\User\Profile\ProfileImplementation:
+ Collaboration diagram for ILIAS\User\Profile\ProfileImplementation:

Public Member Functions

 __construct (private readonly Language $lng, private readonly FieldsConfigurationRepository $profile_fields_repository, private readonly DataRepository $profile_data_repository)
 
 getFields (array $groups_to_skip=[], array $fields_to_skip=[])
 
 getVisibleFields (Context $context, ?\ilObjUser $user=null, array $groups_to_skip=[], array $fields_to_skip=[])
 
 getFieldByIdentifier (string $identifier)
 
 addFieldsToForm (\ilPropertyFormGUI $form, Context $context, bool $do_require, ?\ilObjUser $user, array $fields_to_skip=[])
 
 addFormValuesToUser (\ilPropertyFormGUI $form, Context $context, \ilObjUser $user)
 
 getDataFor (int $usr_id)
 
 getDataForMultiple (array $usr_ids)
 
 isProfileIncomplete (\ilObjUser $user)
 
 userFieldVisibleToUser (string $setting_identifier)
 
 userFieldEditableByUser (string $setting)
 
 getIgnorableRequiredFields ()
 
 getAllUserDefinedFields ()
 
 getVisibleUserDefinedFields (Context $context)
 
 tempStorePicture (\ilPropertyFormGUI $form)
 
 getFields (array $groups_to_skip=[], array $fields_to_skip=[])
 
 getVisibleFields (Context $context, ?\ilObjUser $user=null, array $groups_to_skip=[], array $fields_to_skip=[])
 
 getFieldByIdentifier (string $identifier)
 
 addFieldsToForm (\ilPropertyFormGUI $form, Context $context, bool $do_require, ?\ilObjUser $current_user, array $fields_to_skip=[])
 
 addFormValuesToUser (\ilPropertyFormGUI $form, Context $context, \ilObjUser $current_user)
 
 getDataFor (int $usr_id)
 
 getDataForMultiple (array $usr_ids)
 
 isProfileIncomplete (\ilObjUser $user)
 
 userFieldVisibleToUser (string $definition_class)
 
 userFieldEditableByUser (string $definition_class)
 
 getIgnorableRequiredFields ()
 
 getAllUserDefinedFields ()
 
 getVisibleUserDefinedFields (Context $context)
 
 tempStorePicture (\ilPropertyFormGUI $form)
 

Private Member Functions

 getVisibleFieldsBySection (Context $context, ?\ilObjUser $user, array $fields_to_skip=[])
 
 addSectionFieldsToForm (\ilPropertyFormGUI $form, Context $context, bool $do_require, ?\ilObjUser $user, array $fields)
 

Private Attributes

array $user_fields
 

Detailed Description

Definition at line 29 of file ProfileImplementation.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\User\Profile\ProfileImplementation::__construct ( private readonly Language  $lng,
private readonly FieldsConfigurationRepository  $profile_fields_repository,
private readonly DataRepository  $profile_data_repository 
)

Definition at line 33 of file ProfileImplementation.php.

37 {
38 $this->user_fields = $this->profile_fields_repository->get();
39 }

Member Function Documentation

◆ addFieldsToForm()

ILIAS\User\Profile\ProfileImplementation::addFieldsToForm ( \ilPropertyFormGUI  $form,
Context  $context,
bool  $do_require,
?\ilObjUser  $user,
array  $fields_to_skip = [] 
)

Implements ILIAS\User\Profile\Profile.

Definition at line 84 of file ProfileImplementation.php.

91 return array_reduce(
92 $this->getVisibleFieldsBySection($context, $user, $fields_to_skip),
93 function (\ilPropertyFormGUI $c, array $v) use ($context, $user, $do_require): \ilPropertyFormGUI {
94 $section_header = new \ilFormSectionHeaderGUI();
95 $section_header->setTitle($this->lng->txt($v[0]->getSection()->value));
96 $c->addItem($section_header);
97 return $this->addSectionFieldsToForm($c, $context, $do_require, $user, $v);
98 },
99 $form
100 );
101 }
getVisibleFieldsBySection(Context $context, ?\ilObjUser $user, array $fields_to_skip=[])
addSectionFieldsToForm(\ilPropertyFormGUI $form, Context $context, bool $do_require, ?\ilObjUser $user, array $fields)
This class represents a property form user interface.
$c
Definition: deliver.php:25
$context
Definition: webdav.php:31

◆ addFormValuesToUser()

ILIAS\User\Profile\ProfileImplementation::addFormValuesToUser ( \ilPropertyFormGUI  $form,
Context  $context,
\ilObjUser  $user 
)

Implements ILIAS\User\Profile\Profile.

Definition at line 103 of file ProfileImplementation.php.

107 : \ilObjUser {
108 return array_reduce(
109 $this->getVisibleFields($context, $user),
110 static function (\ilObjUser $c, ProfileField $v) use ($form, $context, $user): \ilObjUser {
111 if ($form->getItemByPostVar($v->getIdentifier())->getDisabled()) {
112 return $c;
113 }
114 return $v->addValueToUserObject(
115 $c,
116 $context,
117 $form->getInput($v->getIdentifier()),
118 $form
119 );
120 },
121 $user
122 );
123 }
getVisibleFields(Context $context, ?\ilObjUser $user=null, array $groups_to_skip=[], array $fields_to_skip=[])
User class.

References $c.

◆ addSectionFieldsToForm()

ILIAS\User\Profile\ProfileImplementation::addSectionFieldsToForm ( \ilPropertyFormGUI  $form,
Context  $context,
bool  $do_require,
?\ilObjUser  $user,
array  $fields 
)
private

Definition at line 260 of file ProfileImplementation.php.

267 return array_reduce(
268 $fields,
269 function (\ilPropertyFormGUI $form, ProfileField $v) use ($context, $user, $do_require): \ilPropertyFormGUI {
270 $input = $v->getLegacyInput($this->lng, $context, $user);
271 $input->setDisabled(!$context->isFieldChangeableInType($v, $user));
272 $input->setRequired($do_require && $v->isRequired());
273 $form->addItem($input);
274 return $form;
275 },
276 $form
277 );
278 }

◆ getAllUserDefinedFields()

ILIAS\User\Profile\ProfileImplementation::getAllUserDefinedFields ( )
Deprecated:
since version 11 will be removed with 13
Returns
array<string, \ILIAS\User\Profile\Field>

Implements ILIAS\User\Profile\Profile.

Definition at line 193 of file ProfileImplementation.php.

193 : array
194 {
195 return array_reduce(
196 $this->user_fields,
197 function (array $c, ProfileField $v): array {
198 if ($v->isCustom()) {
199 $c[$v->getIdentifier()] = $v;
200 }
201 return $c;
202 },
203 []
204 );
205 }

References $c.

◆ getDataFor()

ILIAS\User\Profile\ProfileImplementation::getDataFor ( int  $usr_id)

Implements ILIAS\User\Profile\Profile.

Definition at line 125 of file ProfileImplementation.php.

125 : Data
126 {
127 return $this->profile_data_repository->getSingle($usr_id);
128 }

◆ getDataForMultiple()

ILIAS\User\Profile\ProfileImplementation::getDataForMultiple ( array  $usr_ids)
Parameters
array$usr_ids
Returns
\Generator<ILIAS\User\Profile\Data>

Implements ILIAS\User\Profile\Profile.

Definition at line 130 of file ProfileImplementation.php.

132 : \Generator {
133 return $this->profile_data_repository->getMultiple($usr_ids);
134 }

◆ getFieldByIdentifier()

ILIAS\User\Profile\ProfileImplementation::getFieldByIdentifier ( string  $identifier)

Implements ILIAS\User\Profile\Profile.

Definition at line 79 of file ProfileImplementation.php.

79 : ?ProfileField
80 {
81 return $this->profile_fields_repository->getByIdentifier($identifier);
82 }

◆ getFields()

ILIAS\User\Profile\ProfileImplementation::getFields ( array  $groups_to_skip = [],
array  $fields_to_skip = [] 
)
Returns
array<\ILIAS\User\Profile\Fields\Field>

Implements ILIAS\User\Profile\Profile.

Definition at line 44 of file ProfileImplementation.php.

47 : array {
48 return array_reduce(
49 $this->user_fields,
50 function (array $c, ProfileField $v) use ($groups_to_skip, $fields_to_skip): array {
51 if (!in_array($v->getSection(), $groups_to_skip)
52 && !in_array(get_class($v->getDefinition()), $fields_to_skip)) {
53 $c[$v->getIdentifier()] = $v;
54 }
55 return $c;
56 },
57 []
58 );
59 }

References $c.

◆ getIgnorableRequiredFields()

ILIAS\User\Profile\ProfileImplementation::getIgnorableRequiredFields ( )
Returns
array<\ILIAS\User\Profile\Fields\Field>

Implements ILIAS\User\Profile\Profile.

Definition at line 171 of file ProfileImplementation.php.

171 : array // Missing array type.
172 {
173 return array_reduce(
174 $this->user_fields,
175 static function (array $c, ProfileField $v): array {
176 if ($v->getIdentifier() === 'username'
177 || $v->getIdentifier() === 'password'
178 || $v->isRequired()
179 || !$v->isChangeableByUser()) {
180 return $c;
181 }
182 $c[] = $v;
183 return $c;
184 },
185 []
186 );
187 }

References $c.

◆ getVisibleFields()

ILIAS\User\Profile\ProfileImplementation::getVisibleFields ( Context  $context,
?\ilObjUser  $user = null,
array  $groups_to_skip = [],
array  $fields_to_skip = [] 
)
Returns
array<\ILIAS\User\Profile\Fields\Field>

Implements ILIAS\User\Profile\Profile.

Definition at line 64 of file ProfileImplementation.php.

69 : array {
70 return array_filter(
71 $this->user_fields,
72 fn(ProfileField $v) => !in_array($v->getSection(), $groups_to_skip)
73 && !in_array(get_class($v->getDefinition()), $fields_to_skip)
74 && $context->isFieldVisibleInType($v, $user)
75 ? true : false
76 );
77 }

◆ getVisibleFieldsBySection()

ILIAS\User\Profile\ProfileImplementation::getVisibleFieldsBySection ( Context  $context,
?\ilObjUser  $user,
array  $fields_to_skip = [] 
)
private

Definition at line 236 of file ProfileImplementation.php.

240 : array {
241 return array_filter(
242 array_reduce(
243 $this->getVisibleFields($context, $user, [], $fields_to_skip),
244 function (array $c, ProfileField $v): array {
245 $c[$v->getSection()->value][] = $v;
246 return $c;
247 },
248 array_reduce(
249 AvailableProfileSections::cases(),
250 static function (array $c, AvailableProfileSections $v): array {
251 $c[$v->value] = [];
252 return $c;
253 },
254 []
255 )
256 )
257 );
258 }

◆ getVisibleUserDefinedFields()

ILIAS\User\Profile\ProfileImplementation::getVisibleUserDefinedFields ( Context  $context)
Deprecated:
since version 11 will be removed with 13
Returns
array<string, \ILIAS\User\Profile\Field>

Implements ILIAS\User\Profile\Profile.

Definition at line 211 of file ProfileImplementation.php.

213 : array {
214 return array_reduce(
216 function (array $c, ProfileField $v): array {
217 if ($v->isCustom()) {
218 $c[$v->getIdentifier()] = $v;
219 }
220 return $c;
221 },
222 []
223 );
224 }

References $c.

◆ isProfileIncomplete()

ILIAS\User\Profile\ProfileImplementation::isProfileIncomplete ( \ilObjUser  $user)

Implements ILIAS\User\Profile\Profile.

Definition at line 136 of file ProfileImplementation.php.

136 : bool
137 {
138 foreach ($this->user_fields as $field) {
139 if (!$field->isVisibleToUser()) {
140 continue;
141 }
142
143 if ($field->isRequired() && empty($field->retrieveValueFromUser($user))) {
144 return true;
145 }
146 }
147
148 return false;
149 }

◆ tempStorePicture()

ILIAS\User\Profile\ProfileImplementation::tempStorePicture ( \ilPropertyFormGUI  $form)
Deprecated:
since version 11 will be removed asap

Implements ILIAS\User\Profile\Profile.

Definition at line 229 of file ProfileImplementation.php.

232 return $this->profile_fields_repository->getByClass(Fields\Standard\Avatar::class)
233 ->getDefinition()->tempStorePicture($form);
234 }

◆ userFieldEditableByUser()

ILIAS\User\Profile\ProfileImplementation::userFieldEditableByUser ( string  $setting)

Implements ILIAS\User\Profile\Profile.

Definition at line 162 of file ProfileImplementation.php.

162 : bool
163 {
164 $field = $this->profile_fields_repository->getByIdentifier($setting);
165 if ($field === null) {
166 return false;
167 }
168 return $field->isVisibleToUser() && $field->isChangeableByUser();
169 }
ilSetting $setting
Definition: class.ilias.php:68

◆ userFieldVisibleToUser()

ILIAS\User\Profile\ProfileImplementation::userFieldVisibleToUser ( string  $setting_identifier)

Implements ILIAS\User\Profile\Profile.

Definition at line 151 of file ProfileImplementation.php.

153 : bool {
154 $field = $this->profile_fields_repository->getByIdentifier($setting_identifier);
155 if ($field === null) {
156 return false;
157 }
158
159 return $field->isVisibleToUser();
160 }

Field Documentation

◆ $user_fields

array ILIAS\User\Profile\ProfileImplementation::$user_fields
private

Definition at line 31 of file ProfileImplementation.php.


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