ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
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 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 89 of file ProfileImplementation.php.

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

Definition at line 108 of file ProfileImplementation.php.

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

273 return array_reduce(
274 $fields,
275 function (\ilPropertyFormGUI $form, ProfileField $v) use ($context, $user, $do_require): \ilPropertyFormGUI {
276 $input = $v->getLegacyInput($this->lng, $context, $user);
277 $input->setDisabled(!$context->isFieldChangeable($v, $user));
278 $input->setRequired($do_require && $input->getRequired());
279 $form->addItem($input);
280 return $form;
281 },
282 $form
283 );
284 }

◆ 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 199 of file ProfileImplementation.php.

199 : array
200 {
201 return array_reduce(
202 $this->user_fields,
203 function (array $c, ProfileField $v): array {
204 if ($v->isCustom()) {
205 $c[$v->getIdentifier()] = $v;
206 }
207 return $c;
208 },
209 []
210 );
211 }

References $c.

◆ getDataFor()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 131 of file ProfileImplementation.php.

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

◆ 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 136 of file ProfileImplementation.php.

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

◆ getFieldByClass()

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

Definition at line 84 of file ProfileImplementation.php.

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

◆ 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  $sections_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 ($sections_to_skip, $fields_to_skip): array {
51 if (!in_array($v->getSection(), $sections_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 177 of file ProfileImplementation.php.

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

References $c.

◆ getVisibleFields()

ILIAS\User\Profile\ProfileImplementation::getVisibleFields ( Context  $context,
?\ilObjUser  $user = null,
array  $sections_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(), $sections_to_skip)
73 && !in_array($v->getDefinition()::class, $fields_to_skip)
74 && $context->isFieldVisible($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 242 of file ProfileImplementation.php.

246 : array {
247 return array_filter(
248 array_reduce(
249 $this->getVisibleFields($context, $user, [], $fields_to_skip),
250 function (array $c, ProfileField $v): array {
251 $c[$v->getSection()->value][] = $v;
252 return $c;
253 },
254 array_reduce(
255 AvailableProfileSections::cases(),
256 static function (array $c, AvailableProfileSections $v): array {
257 $c[$v->value] = [];
258 return $c;
259 },
260 []
261 )
262 )
263 );
264 }

◆ 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 217 of file ProfileImplementation.php.

219 : array {
220 return array_reduce(
222 function (array $c, ProfileField $v): array {
223 if ($v->isCustom()) {
224 $c[$v->getIdentifier()] = $v;
225 }
226 return $c;
227 },
228 []
229 );
230 }

References $c.

◆ isProfileIncomplete()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 142 of file ProfileImplementation.php.

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

◆ tempStorePicture()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 235 of file ProfileImplementation.php.

238 return $this->profile_fields_repository->getByClass(Fields\Standard\Avatar::class)
239 ->getDefinition()->tempStorePicture($form);
240 }

◆ userFieldEditableByUser()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 168 of file ProfileImplementation.php.

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

◆ userFieldVisibleToUser()

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

Implements ILIAS\User\Profile\Profile.

Definition at line 157 of file ProfileImplementation.php.

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

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: