30 private int $mode = self::MODE_DESKTOP;
48 $this->
lng = $DIC[
'lng'];
49 $this->rbac_review = $DIC[
'rbacreview'];
54 $this->skip_groups = [];
55 $this->skip_fields = [];
57 $this->
lng->loadLanguageModule(
'awrn');
58 $this->
lng->loadLanguageModule(
'buddysystem');
64 foreach ($this->user_fields as
$f => $p) {
66 if (in_array($p[
'group'], $this->skip_groups) ||
67 in_array(
$f, $this->skip_fields)) {
79 if ($this->
settings->get(
'usr_settings_visib_lua_' . $field,
'1')) {
80 $fields[$field] = $info;
81 } elseif ($info[
'visib_lua_fix_value'] ??
false) {
82 $fields[$field] = $info;
90 $this->skip_groups[] = $group;
95 $this->skip_fields[] = $field;
101 array $custom_fields = []
103 $registration_settings = null;
104 if ($this->mode == self::MODE_REGISTRATION) {
110 $custom_fields_done =
false;
113 if (($field_definition[
'group'] !== $current_group) &&
118 $field_definition[
'group'],
128 $registration_settings
133 if ($custom_fields !== [] && !$custom_fields_done) {
144 $this->user_fields[
'username'][
'group'] =
'login_data';
145 $this->user_fields[
'password'][
'group'] =
'login_data';
146 $this->user_fields[
'language'][
'default'] = $this->
lng->lang_key;
149 $roles = $this->user_fields[
'roles'];
150 unset($this->user_fields[
'roles']);
151 $this->user_fields[
'roles'] = $roles;
152 $this->user_fields[
'roles'][
'group'] =
'settings';
157 string $current_group,
159 array $custom_fields,
160 bool $custom_fields_done
162 if ($custom_fields !== [] && !$custom_fields_done
163 && ($current_group ===
'other' || $next_group ===
'settings')) {
170 $custom_fields_done =
true;
174 $section_header->setTitle($this->
lng->txt($next_group));
175 $form->
addItem($section_header);
185 array $field_definition,
190 $method = $field_definition[
'method'] ??
'';
192 $lang_var = (isset($field_definition[
'lang_var']) && $field_definition[
'lang_var'] !==
'')
193 ? $field_definition[
'lang_var']
196 switch ($field_definition[
'input']) {
298 $roles_input = $this->
getRolesInput($field_id, $registration_settings, $user);
299 if ($roles_input !== null) {
316 if ($this->mode !== self::MODE_REGISTRATION) {
324 $registration_settings
360 array $field_definition,
365 $text_input =
new ilTextInputGUI($this->
lng->txt($lang_var),
'usr_' . $field_id);
366 $text_input->setValue(
'');
367 if ($user !== null) {
368 $text_input->setValue($user->$method() ??
'');
370 $text_input->setMaxLength($field_definition[
'maxlength']);
371 $text_input->setSize($field_definition[
'size']);
372 $text_input->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
373 if (!$text_input->getRequired() || $text_input->getValue()) {
374 $text_input->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
382 array $field_definition,
388 if ($user !== null) {
389 $text_area->
setValue($user->$method() ??
'');
391 $text_area->setRows($field_definition[
'rows']);
392 $text_area->setCols($field_definition[
'cols']);
393 $text_area->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
394 if (!$text_area->getRequired() || $text_area->getValue()) {
395 $text_area->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
402 array $field_definition,
407 $multi_text_input =
new ilTextInputGUI($this->
lng->txt($lang_var),
'usr_' . $field_id);
408 $multi_text_input->setMulti(
true);
409 if ($user !== null) {
410 $multi_text_input->setValue($user->$method());
412 $multi_text_input->setMaxLength($field_definition[
'maxlength']);
413 $multi_text_input->setSize($field_definition[
'size']);
414 $multi_text_input->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
415 if (!$multi_text_input->getRequired() || $multi_text_input->getValue()) {
416 $multi_text_input->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
418 if ($this->ajax_href) {
420 $multi_text_input->setDataSource($this->ajax_href .
'&f=' . $field_id);
422 return $multi_text_input;
427 array $field_definition,
434 $radio_group->
setValue($user->$method());
436 foreach ($field_definition[
'values'] as $k => $v) {
438 $radio_group->addOption($op);
440 $radio_group->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
441 if (!$radio_group->getRequired() || $radio_group->getValue()) {
442 $radio_group->
setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
448 array $field_definition,
453 if ((
int) $this->
settings->get(
'allow_change_loginname') || $this->mode == self::MODE_REGISTRATION) {
455 $login_input->setMaxLength((
int) $field_definition[
'maxlength']);
456 $login_input->setSize(255);
457 $login_input->setRequired(
true);
460 if ($user !== null) {
461 $login_input->setValue($user->
getLogin());
474 $country_input->
setValue($user->$method());
476 $country_input->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
477 if (!$country_input->getRequired() || $country_input->getValue()) {
478 $country_input->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
480 return $country_input;
491 if ($user && $user->$method() && strlen($user->$method())) {
493 $birthday_input->setDate($date);
495 $birthday_input->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
496 if (!$birthday_input->getRequired() || $date !== null) {
497 $birthday_input->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
499 return $birthday_input;
508 $image_input->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_upload'));
510 if ($file_upload[
'name'] ??
false) {
511 $image_input->setPending($file_upload[
'name']);
519 if ($picture_path !==
'') {
520 $image_input->setImage($picture_path);
521 $image_input->setAlt($this->
lng->txt(
'personal_picture'));
533 if ($this->mode === self::MODE_DESKTOP
535 $global_roles = $this->rbac_review->getGlobalRoles();
536 foreach ($global_roles as $role_id) {
537 if (in_array($role_id, $this->rbac_review->assignedRoles($user->
getId()))) {
539 $role_names .= $role_obj->getTitle() .
', ';
544 $roles_input->setValue(substr($role_names, 0, -2));
548 if ($this->mode === self::MODE_REGISTRATION
552 $options[$role[
'id']] = $role[
'title'];
555 if ($options === []) {
559 if (count($options) === 1) {
561 $keys = array_keys($options);
562 $roles_input->setValue(array_shift($keys));
566 $options_with_empty_value = [
'' => $this->
lng->txt(
'please_choose')] + $options;
568 $roles_input->
setOptions($options_with_empty_value);
569 $roles_input->setRequired(
true);
570 if (!$roles_input->getRequired()) {
571 $roles_input->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
587 $email_input->
setValue($user->$method());
589 $email_input->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
590 if (!$email_input->getRequired() || $email_input->getValue()) {
591 $email_input->setDisabled((
bool) $this->
settings->get(
'usr_settings_disable_' . $field_id));
593 if (self::MODE_REGISTRATION == $this->mode) {
594 $email_input->setRetype(
true);
606 $password_input->setValue($this->
lng->txt(
'reg_passwd_via_mail'));
607 return $password_input;
612 $password_input->setRequired(
true);
614 return $password_input;
624 $this->
lng->loadLanguageModule(
'meta');
625 foreach ($this->
lng->getInstalledLanguages() as $lang_key) {
626 $options[$lang_key] = $this->
lng->txt(
'meta_l_' . $lang_key);
631 if ($user !== null) {
632 $language_input->
setValue($user->$method());
635 $language_input->setOptions($options);
636 $language_input->setRequired((
bool) $this->
settings->get(
'require_' . $field_id));
637 if (!$language_input->getRequired() || $language_input->getValue()) {
638 $language_input->setDisabled(
639 $this->
settings->get(
'usr_settings_disable_' . $field_id) ===
'1' 640 || count($options) <= 1
643 return $language_input;
652 $non_editable_input->setValue($user->$method());
653 return $non_editable_input;
658 array $custom_fields,
659 string $current_group
661 if ($current_group !==
'other') {
663 $section_header->setTitle($this->
lng->txt(
'other'));
664 $form->
addItem($section_header);
666 foreach ($custom_fields as $custom_field) {
674 $this->ajax_href = $href;
679 if ($this->mode === self::MODE_DESKTOP) {
680 return ($this->user_settings_config->isVisible($setting));
683 if (isset($this->user_fields[$setting][
'visib_reg_hide'])
684 && $this->user_fields[$setting][
'visib_reg_hide'] ===
true) {
688 return ($this->
settings->get(
'usr_settings_visib_reg_' . $setting,
'1')
689 || $this->
settings->get(
'require_' . $setting,
'0'));
694 if (in_array($mode, [self::MODE_DESKTOP, self::MODE_REGISTRATION])) {
703 bool $include_udf =
true,
704 bool $personal_data_only =
true 707 foreach ($this->user_fields as $field => $definition) {
709 if ($personal_data_only && !$this->user_settings_config->isVisible($field)) {
713 if ($this->
settings->get(
'require_' . $field) && $definition[
'method']
714 && empty($user->{$definition[
'method']}())) {
724 $user_defined_data = $user->getUserDefinedData();
726 foreach ($user_defined_fields->getRequiredDefinitions() as $field => $definition) {
728 if ($personal_data_only && !$definition[
'visible']) {
732 if (!($user_defined_data[
'f_' . $field] ??
false)) {
743 return $this->user_settings_config->isVisibleAndChangeable($setting);
748 $ignorableSettings = [];
750 foreach (array_keys($this->user_fields) as $field) {
752 if (
'username' == $field ||
753 'password' == $field) {
758 if (!$this->
settings->get(
'require_' . $field)) {
763 $ignorableSettings[] = $field;
767 return $ignorableSettings;
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setAjaxCallback(string $href)
getIgnorableRequiredSettings()
addCustomFieldsToForm(ilPropertyFormGUI $form, array $custom_fields, string $current_group)
static getLogger(string $a_component_id)
Get component logger.
getLocalUserAdministrationFields()
static _lookupRegisterAllowed()
get all roles that are activated in user registration
setDisabled(bool $a_disabled)
userSettingVisible(string $setting)
getRolesInput(string $field_id, ?ilRegistrationSettings $registration_settings, ?ilObjUser $user)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getTextareaInput(string $field_id, array $field_definition, string $method, string $lang_var, ?ilObjUser $user)
addStandardFieldsToForm(ilPropertyFormGUI $form, ?ilObjUser $user=null, array $custom_fields=[])
getMultitextInput(string $field_id, array $field_definition, string $method, string $lang_var, ?ilObjUser $user)
getBirthdayInput(string $field_id, string $method, string $lang_var, ?ilObjUser $user)
handleSectionChange(ilPropertyFormGUI $form, string $current_group, string $next_group, array $custom_fields, bool $custom_fields_done)
passwordGenerationEnabled()
setValue(string $a_value)
ilRbacReview $rbac_review
addFieldToForm(string $field_id, array $field_definition, ?ilObjUser $user, ilPropertyFormGUI $form, ?ilRegistrationSettings $registration_settings)
addRegistrationFieldsToFieldArray()
getLoginInput(array $field_definition, ?ilObjUser $user)
getTextInput(string $field_id, array $field_definition, string $method, string $lang_var, ?ilObjUser $user)
static getPasswordRequirementsInfo()
infotext for ilPasswordInputGUI setInfo()
getNonEditableInput(string $method, string $lang_var, ilObjUser $user)
static _getPersonalPicturePath(int $a_usr_id, string $a_size="small", bool $a_force_pic=false, bool $a_prevent_no_photo_image=false, bool $html_export=false)
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
Class ilObjAuthSettingsGUI.
ilUserSettingsConfig $user_settings_config
isProfileIncomplete(ilObjUser $user, bool $include_udf=true, bool $personal_data_only=true)
getPasswordInput(string $field_id, string $lang_var, ilRegistrationSettings $registration_settings)
This class represents a text area property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getRadioInput(string $field_id, array $field_definition, string $method, string $lang_var, ?ilObjUser $user)
getCountryInput(string $field_id, string $method, string $lang_var, ?ilObjUser $user)
getEmailInput(string $field_id, string $method, string $lang_var, ?ilObjUser $user)
getLanguageInput(string $field_id, string $method, string $lang_var, ?ilObjUser $user)
isEditableByUser(string $setting)
getImageInput(array $file_upload, ?ilObjUser $user)