25 protected \ILIAS\User\StandardGUIRequest
$request;
38 int $requested_field_id
41 $this->main_tpl = $DIC->ui()->mainTemplate();
44 $ilCtrl = $DIC[
'ilCtrl'];
47 $lng->loadLanguageModule(
"user");
48 $lng->loadLanguageModule(
"administration");
50 $this->field_id = $requested_field_id;
51 $ilCtrl->saveParameter($this,
"field_id", $this->field_id);
53 if ($this->field_id) {
55 $this->field_definition = $user_field_definitions->getDefinition($this->field_id);
59 $DIC->user()->getId(),
62 $this->request = new \ILIAS\User\StandardGUIRequest(
77 $ilCtrl = $DIC[
'ilCtrl'];
79 $next_class = $ilCtrl->getNextClass($this);
80 $cmd = $ilCtrl->getCmd();
82 switch ($next_class) {
85 $cmd =
"listUserDefinedFields";
98 $ilToolbar = $DIC[
'ilToolbar'];
99 $ilCtrl = $DIC[
'ilCtrl'];
103 (
string) $this->ref_id,
106 $ilToolbar->addButton(
107 $lng->txt(
"add_user_defined_field"),
108 $ilCtrl->getLinkTarget($this,
"addField")
113 if ($this->confirm_change) {
114 $tab->setConfirmChange();
116 $tpl->setContent($tab->getHTML());
126 $a_form = $this->
initForm(
'create');
129 $tpl->setContent($a_form->getHTML());
143 $opts[
"visible"] =
$lng->txt(
"user_visible_in_profile");
144 $opts[
"visib_reg"] =
$lng->txt(
"visible_registration");
145 $opts[
"visib_lua"] =
$lng->txt(
"usr_settings_visib_lua");
146 $opts[
"course_export"] =
$lng->txt(
"course_export");
147 $opts[
"group_export"] =
$lng->txt(
"group_export");
148 $opts[
"changeable"] =
$lng->txt(
"changeable");
149 $opts[
"changeable_lua"] =
$lng->txt(
"usr_settings_changeable_lua");
150 $opts[
"required"] =
$lng->txt(
"required_field");
151 $opts[
"export"] =
$lng->txt(
"export");
152 $opts[
"searchable"] =
$lng->txt(
"header_searchable");
153 $opts[
"certificate"] =
$lng->txt(
"certificate");
183 $lng->loadLanguageModule(
"ps");
184 $this->main_tpl->setOnScreenMessage(
'info',
$lng->txt(
"ps_warning_modify"));
188 if ($this->field_definition) {
189 $perms = $this->permissions->hasPermissions(
191 (
string) $this->field_definition[
"field_id"],
227 global $ilCtrl,
$lng;
235 $lng->loadLanguageModule(
"ps");
236 $this->main_tpl->setOnScreenMessage(
'info', $lng->txt(
"ps_warning_modify"));
239 if ($this->field_definition) {
241 $perm_map = self::getAccessPermissions();
245 $form->setFormAction($ilCtrl->getFormAction($this));
248 $name->setRequired(
true);
249 $form->addItem(
$name);
252 $name->setDisabled(
true);
260 $radg->addOption($op);
272 $se_mu->setMaxLength(128);
273 $se_mu->setValues(array(
''));
274 $op->addSubItem($se_mu);
280 $plugin->addDefinitionTypeOptionsToRadioOption($op, $this->field_id);
286 $form->addItem($radg);
289 $se_mu->setDisabled(
true);
290 $se_mu->setRequired(
false);
297 $acc_values = array();
300 $acc->addOption($opt);
302 if ($this->field_definition && $this->field_definition[
$id]) {
307 $opt->setDisabled(
true);
311 $form->addItem($acc);
314 if ($a_mode ==
'create') {
316 $form->setTitle($lng->txt(
'add_new_user_defined_field'));
317 $form->addCommandButton(
"create", $lng->txt(
"save"));
319 $name->setValue($this->field_definition[
"field_name"]);
320 $radg->setValue($this->field_definition[
"field_type"]);
321 $radg->setDisabled(
true);
322 $acc->setValue($acc_values);
324 switch ($this->field_definition[
"field_type"]) {
326 $values = $this->field_definition[
"field_values"];
327 if (!is_array($values) || $values === []) {
330 $se_mu->setValue($values);
331 $form->setTitle($lng->txt(
"udf_update_select_field"));
335 $form->setTitle($lng->txt(
"udf_update_text_field"));
339 $form->setTitle($lng->txt(
"udf_update_wysiwyg_field"));
345 $form->setTitle(
$plugin->getDefinitionUpdateFormTitle());
349 $form->addCommandButton(
"update", $lng->txt(
"save"));
351 $form->addCommandButton(
"listUserDefinedFields", $lng->txt(
"cancel"));
359 array $a_field_permissions = null
369 $incoming = (array) $form->
getInput(
"access");
371 if ($a_field_permissions) {
372 $perm_map = self::getAccessPermissions();
377 $access[
$id] = in_array($id, $incoming);
381 $access[
$id] = $this->field_definition[
$id];
385 if ($access[
'required'] && !$access[
'visib_reg']) {
386 $this->confirm_change =
true;
391 if (!$this->field_id && $user_field_definitions->
nameExists($form->
getInput(
"name"))) {
410 $this->main_tpl->setOnScreenMessage(
'failure',
$lng->txt(
"form_input_not_valid"));
423 $ilCtrl = $DIC[
'ilCtrl'];
426 $user_field_definitions->setFieldType(
427 $this->request->getFieldType()
432 if ($this->
validateForm($form, $user_field_definitions, $access)) {
433 $user_field_definitions->setFieldName($form->getInput(
"name"));
434 $user_field_definitions->enableVisible($access[
'visible']);
435 $user_field_definitions->enableVisibleRegistration((
int) $access[
'visib_reg']);
436 $user_field_definitions->enableVisibleLocalUserAdministration($access[
'visib_lua']);
437 $user_field_definitions->enableCourseExport($access[
'course_export']);
438 $user_field_definitions->enableGroupExport($access[
'group_export']);
439 $user_field_definitions->enableChangeable($access[
'changeable']);
440 $user_field_definitions->enableChangeableLocalUserAdministration($access[
'changeable_lua']);
441 $user_field_definitions->enableRequired($access[
'required']);
442 $user_field_definitions->enableExport($access[
'export']);
443 $user_field_definitions->enableSearchable($access[
'searchable']);
444 $user_field_definitions->enableCertificate($access[
'certificate']);
445 $new_id = $user_field_definitions->add();
447 if ($user_field_definitions->isPluginType()) {
450 $plugin->updateDefinitionFromForm($form, $new_id);
453 if ($access[
'course_export']) {
457 $this->main_tpl->setOnScreenMessage(
'success',
$lng->txt(
'udf_added_field'),
true);
458 $ilCtrl->redirect($this);
461 $form->setValuesByPost();
475 $tpl->setContent($a_form->getHTML());
483 $ilCtrl = $DIC[
'ilCtrl'];
487 $user_field_definitions->setFieldType($this->field_definition[
"field_type"]);
491 if ($this->field_id) {
492 $old_values = $user_field_definitions->getDefinition($this->field_id);
494 $old_options = $old_values[
"field_values"];
497 $perms = $this->permissions->hasPermissions(
499 (
string) $this->field_id,
533 if ($this->
validateForm($form, $user_field_definitions, $access, $perms) && $this->field_id) {
538 if (is_array($old_options)) {
539 foreach ($old_options as $old_option) {
540 if (!in_array($old_option, $user_field_definitions->getFieldValues())) {
547 elseif (is_array($old_options)) {
548 $user_field_definitions->setFieldValues($old_options);
552 $user_field_definitions->setFieldName($form->getInput(
"name"));
554 $user_field_definitions->setFieldName($this->field_definition[
"field_name"]);
557 $user_field_definitions->enableVisible($access[
'visible']);
558 $user_field_definitions->enableVisibleRegistration((
int) $access[
'visib_reg']);
559 $user_field_definitions->enableVisibleLocalUserAdministration($access[
'visib_lua']);
560 $user_field_definitions->enableCourseExport($access[
'course_export']);
561 $user_field_definitions->enableGroupExport($access[
'group_export']);
562 $user_field_definitions->enableChangeable($access[
'changeable']);
563 $user_field_definitions->enableChangeableLocalUserAdministration($access[
'changeable_lua']);
564 $user_field_definitions->enableRequired($access[
'required']);
565 $user_field_definitions->enableExport($access[
'export']);
566 $user_field_definitions->enableSearchable($access[
'searchable']);
567 $user_field_definitions->enableCertificate($access[
'certificate']);
568 $user_field_definitions->update($this->field_id);
570 if ($user_field_definitions->isPluginType()) {
573 $plugin->updateDefinitionFromForm($form, $this->field_id);
577 if ($access[
'course_export']) {
581 $this->main_tpl->setOnScreenMessage(
'success',
$lng->txt(
'settings_saved'),
true);
582 $ilCtrl->redirect($this);
585 $form->setValuesByPost();
593 $ilCtrl = $DIC[
'ilCtrl'];
597 $fields = $this->request->getFields();
598 if (count($fields) == 0) {
599 $this->main_tpl->setOnScreenMessage(
'failure',
$lng->txt(
"select_one"));
605 $confirmation_gui->setFormAction($ilCtrl->getFormAction($this));
606 $confirmation_gui->setHeaderText(
$lng->txt(
"udf_delete_sure"));
607 $confirmation_gui->setCancel(
$lng->txt(
"cancel"),
"listUserDefinedFields");
608 $confirmation_gui->setConfirm(
$lng->txt(
"delete"),
"deleteField");
611 foreach ($fields as
$id) {
612 $definition = $user_field_definitions->getDefinition($id);
613 $confirmation_gui->addItem(
"fields[]", $id, $definition[
"field_name"]);
616 $tpl->setContent($confirmation_gui->getHTML());
626 $ilCtrl = $DIC[
'ilCtrl'];
629 $fields = $this->request->getFields();
633 foreach ($fields as
$id) {
639 $field = $user_field_definitions->getDefinition($id);
640 $fail[] = $field[
"field_name"];
644 $this->main_tpl->setOnScreenMessage(
'failure',
$lng->txt(
'msg_no_perm_delete') .
" " . implode(
", ", $fail),
true);
645 $ilCtrl->redirect($this,
"listUserDefinedFields");
648 foreach ($fields as $id) {
649 $user_field_definitions->delete($id);
652 $this->main_tpl->setOnScreenMessage(
'success',
$lng->txt(
'udf_field_deleted'),
true);
653 $ilCtrl->redirect($this);
664 $ilCtrl = $DIC[
'ilCtrl'];
667 $a_fields = $user_field_definitions->getDefinitions();
669 $checked = $this->request->getChecked();
671 $perm_map = self::getAccessPermissions();
673 foreach ($a_fields as $field_id => $definition) {
674 $perms = $this->permissions->hasPermissions(
704 foreach ($perm_map as $prop => $perm) {
706 $checked[$prop .
'_' .
$field_id] = $definition[$prop];
712 foreach ($a_fields as $field_id => $definition) {
713 if (isset($checked[
'required_' . $field_id]) && (
int) $checked[
'required_' . $field_id] &&
714 (!isset($checked[
'visib_reg_' . $field_id]) || !(
int) $checked[
'visib_reg_' . $field_id])) {
715 $this->confirm_change =
true;
717 $this->main_tpl->setOnScreenMessage(
'failure',
$lng->txt(
'invalid_visible_required_options_selected'));
727 foreach ($a_fields as $field_id => $definition) {
728 $user_field_definitions->setFieldName($definition[
'field_name']);
729 $user_field_definitions->setFieldType($definition[
'field_type']);
730 $user_field_definitions->setFieldValues($definition[
'field_values']);
731 $user_field_definitions->enableVisible((
bool) ($checked[
'visible_' . $field_id] ??
false));
732 $user_field_definitions->enableChangeable((
bool) ($checked[
'changeable_' . $field_id] ??
false));
733 $user_field_definitions->enableRequired((
bool) ($checked[
'required_' . $field_id] ??
false));
734 $user_field_definitions->enableSearchable((
bool) ($checked[
'searchable_' . $field_id] ??
false));
735 $user_field_definitions->enableExport((
bool) ($checked[
'export_' . $field_id] ??
false));
736 $user_field_definitions->enableCourseExport((
bool) ($checked[
'course_export_' . $field_id] ??
false));
737 $user_field_definitions->enableVisibleLocalUserAdministration((
bool) ($checked[
'visib_lua_' . $field_id] ??
false));
738 $user_field_definitions->enableChangeableLocalUserAdministration((
bool) ($checked[
'changeable_lua_' . $field_id] ??
false));
739 $user_field_definitions->enableGroupExport((
bool) ($checked[
'group_export_' . $field_id] ??
false));
740 $user_field_definitions->enableVisibleRegistration((
bool) ($checked[
'visib_reg_' . $field_id] ??
false));
741 $user_field_definitions->enableCertificate((
bool) ($checked[
'certificate_' . $field_id] ??
false));
743 $user_field_definitions->update($field_id);
746 $this->main_tpl->setOnScreenMessage(
'success',
$lng->txt(
'settings_saved'),
true);
747 $ilCtrl->redirect($this);
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const SUBACTION_FIELD_ACCESS_VISIBLE_GROUPS
const SUBACTION_FIELD_ACCESS_SEARCHABLE
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Additional user data fields definition.
ilGlobalTemplateInterface $main_tpl
ilClaimingPermissionHelper $permissions
const SUBACTION_FIELD_ACCESS_VISIBLE_COURSES
const ACTION_FIELD_DELETE
edit(ilPropertyFormGUI $a_form=null)
const SUBACTION_FIELD_ACCESS_EXPORT
static _reset()
Reset all.
getAccessOptions()
Get all access options, order is kept in forms.
const SUBACTION_FIELD_ACCESS_CERTIFICATE
const SUBACTION_FIELD_ACCESS_CHANGEABLE_PERSONAL
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const SUBACTION_FIELD_ACCESS_REQUIRED
const ACTION_FIELD_EDIT_ACCESS
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const ACTION_FIELD_EDIT_PROPERTY
const SUBACTION_FIELD_ACCESS_VISIBLE_PERSONAL
ILIAS User StandardGUIRequest $request
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const SUBACTION_FIELD_PROPERTIES
nameExists(string $a_field_name)
const UDF_TYPE_TEXT
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getAccessPermissions()
__construct(int $ref_id, int $requested_field_id)
validateForm(ilPropertyFormGUI $form, ilUserDefinedFields $user_field_definitions, array &$access, array $a_field_permissions=null)
static _hasAgreements()
Check if there is any user agreement.
static deleteFieldValue(int $a_field_id, string $a_value)
Delete data of particular value of a (selection) field.
const SUBACTION_FIELD_TITLE
addField(ilPropertyFormGUI $a_form=null)
initForm(string $a_mode='create')
const SUBACTION_FIELD_ACCESS_VISIBLE_LOCAL
updateFields(string $action="")
Update custom fields properties (from table gui)
const ACTION_UDF_CREATE_FIELD
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
static getInstance(int $a_user_id, int $a_ref_id)
const SUBACTION_FIELD_ACCESS_VISIBLE_REGISTRATION
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const UDF_DUPLICATE_VALUES
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
const SUBACTION_FIELD_ACCESS_CHANGEABLE_LOCAL
setFieldValues(array $a_values)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...