ILIAS  trunk Revision v12.0_alpha-1540-g00f839d5fa1
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 $sections_to_skip=[], array $fields_to_skip=[])
 
 getVisibleFields (Context $context, ?\ilObjUser $user=null, array $sections_to_skip=[], array $fields_to_skip=[])
 
 getFieldByIdentifier (string $identifier)
 
 getFieldByClass (string $class)
 
 addFieldsToForm (\ilPropertyFormGUI $form, Context $context, bool $do_require, ?\ilObjUser $user, array $fields_to_skip=[])
 
 addFormValuesToUser (\ilPropertyFormGUI $form, Context $context, \ilObjUser $user, array $skip_fields=[])
 
 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)
 
- Public Member Functions inherited from ILIAS\User\Profile\Profile
 getFields (array $sections_to_skip=[], array $fields_to_skip=[])
 
 getVisibleFields (Context $context, ?\ilObjUser $user=null, array $sections_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 30 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 37 of file ProfileImplementation.php.

41 {
42 $this->user_fields = $this->profile_fields_repository->get();
43 }

Member Function Documentation

◆ addFieldsToForm()

ILIAS\User\Profile\ProfileImplementation::addFieldsToForm ( \ilPropertyFormGUI  $form,
Context  $context,
bool  $do_require,
?\ilObjUser  $current_user,
array  $fields_to_skip = [] 
)
Parameters
list<class-string<

ILIAS\User\Profile\Fields\FieldDefinition>> $fields_to_skip

Implements ILIAS\User\Profile\Profile.

Definition at line 87 of file ProfileImplementation.php.

94 return array_reduce(
95 $this->getVisibleFieldsBySection($context, $user, $fields_to_skip),
96 function (\ilPropertyFormGUI $c, array $v) use ($context, $user, $do_require): \ilPropertyFormGUI {
97 $section_header = new \ilFormSectionHeaderGUI();
98 $section_header->setTitle($this->lng->txt($v[0]->getSection()->value));
99 $c->addItem($section_header);
100 return $this->addSectionFieldsToForm($c, $context, $do_require, $user, $v);
101 },
102 $form
103 );
104 }
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

◆ addFormValuesToUser()

ILIAS\User\Profile\ProfileImplementation::addFormValuesToUser ( \ilPropertyFormGUI  $form,
Context  $context,
\ilObjUser  $user,
array  $skip_fields = [] 
)

Definition at line 106 of file ProfileImplementation.php.

111 : \ilObjUser {
112 return array_reduce(
113 $this->getVisibleFields($context, $user, [], $skip_fields),
114 static function (\ilObjUser $c, ProfileField $v) use ($form, $context, $user): \ilObjUser {
115 if ($form->getItemByPostVar($v->getIdentifier())->getDisabled()) {
116 return $c;
117 }
118 return $v->addValueToUserObject(
119 $c,
120 $context,
121 $form->getInput($v->getIdentifier()),
122 $form
123 );
124 },
125 $user
126 );
127 }
getVisibleFields(Context $context, ?\ilObjUser $user=null, array $sections_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 259 of file ProfileImplementation.php.

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

◆ getAllUserDefinedFields()

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

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 static 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 129 of file ProfileImplementation.php.

129 : Data
130 {
131 return $this->profile_data_repository->getSingle($usr_id);
132 }

◆ getDataForMultiple()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 134 of file ProfileImplementation.php.

136 : \Generator {
137 return $this->profile_data_repository->getMultiple($usr_ids);
138 }

◆ getFieldByClass()

ILIAS\User\Profile\ProfileImplementation::getFieldByClass ( string  $class)

Definition at line 82 of file ProfileImplementation.php.

82 : ?ProfileField
83 {
84 return $this->profile_fields_repository->getByClass($class);
85 }

◆ getFieldByIdentifier()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 77 of file ProfileImplementation.php.

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

◆ getFields()

ILIAS\User\Profile\ProfileImplementation::getFields ( array  $sections_to_skip = [],
array  $fields_to_skip = [] 
)
Parameters
list<

ILIAS\User\Profile\Fields\AvailableSections> $fields_to_skip

Parameters
list<class-string<

ILIAS\User\Profile\Fields\FieldDefinition>> $fields_to_skip

Returns
array<string, ProfileField>

Implements ILIAS\User\Profile\Profile.

Definition at line 45 of file ProfileImplementation.php.

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

References $c.

◆ getIgnorableRequiredFields()

ILIAS\User\Profile\ProfileImplementation::getIgnorableRequiredFields ( )
Returns
list<ProfileField>

Implements ILIAS\User\Profile\Profile.

Definition at line 175 of file ProfileImplementation.php.

175 : array
176 {
177 return array_reduce(
178 $this->user_fields,
179 static function (array $c, ProfileField $v): array {
180 if ($v->getIdentifier() === 'username'
181 || $v->getIdentifier() === 'password'
182 || $v->isRequired()
183 || !$v->isChangeableByUser()) {
184 return $c;
185 }
186 $c[] = $v;
187 return $c;
188 },
189 []
190 );
191 }

References $c.

◆ getVisibleFields()

ILIAS\User\Profile\ProfileImplementation::getVisibleFields ( Context  $context,
?\ilObjUser  $user = null,
array  $sections_to_skip = [],
array  $fields_to_skip = [] 
)
Parameters
list<

ILIAS\User\Profile\Fields\AvailableSections> $fields_to_skip

Parameters
list<class-string<

ILIAS\User\Profile\Fields\FieldDefinition>> $fields_to_skip

Returns
array<int, ProfileField>

Implements ILIAS\User\Profile\Profile.

Definition at line 62 of file ProfileImplementation.php.

67 : array {
68 return array_filter(
69 $this->user_fields,
70 static fn(ProfileField $v) => !in_array($v->getSection(), $sections_to_skip)
71 && !in_array($v->getDefinition()::class, $fields_to_skip)
72 && $context->isFieldVisible($v, $user)
73 ? true : false
74 );
75 }

◆ getVisibleFieldsBySection()

ILIAS\User\Profile\ProfileImplementation::getVisibleFieldsBySection ( Context  $context,
?\ilObjUser  $user,
array  $fields_to_skip = [] 
)
private
Returns
array<value-of<AvailableSections>, array<int, ProfileField>>

Definition at line 235 of file ProfileImplementation.php.

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

◆ getVisibleUserDefinedFields()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 207 of file ProfileImplementation.php.

209 : array {
210 return array_reduce(
211 $this->getVisibleFields($context),
212 static function (array $c, ProfileField $v): array {
213 if ($v->isCustom()) {
214 $c[$v->getIdentifier()] = $v;
215 }
216 return $c;
217 },
218 []
219 );
220 }

References $c.

◆ isProfileIncomplete()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 140 of file ProfileImplementation.php.

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

◆ tempStorePicture()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 225 of file ProfileImplementation.php.

228 return $this->profile_fields_repository->getByClass(Fields\Standard\Avatar::class)
229 ->getDefinition()->tempStorePicture($form);
230 }

◆ userFieldEditableByUser()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 166 of file ProfileImplementation.php.

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

◆ userFieldVisibleToUser()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 155 of file ProfileImplementation.php.

157 : bool {
158 $field = $this->profile_fields_repository->getByIdentifier($setting_identifier);
159 if ($field === null) {
160 return false;
161 }
162
163 return $field->isVisibleToUser();
164 }

Field Documentation

◆ $user_fields

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

Definition at line 35 of file ProfileImplementation.php.


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