ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ilCustomUserFieldsGUI Class Reference

Class ilCustomUserFieldsGUI. More...

+ Collaboration diagram for ilCustomUserFieldsGUI:

Public Member Functions

 __construct (int $ref_id, int $requested_field_id)
 
 executeCommand ()
 
 listUserDefinedFields ()
 
 addField (ilPropertyFormGUI $a_form=null)
 
 getAccessOptions ()
 Get all access options, order is kept in forms. More...
 
 create ()
 
 edit (ilPropertyFormGUI $a_form=null)
 
 update ()
 
 askDeleteField ()
 
 deleteField ()
 
 updateFields (string $action='')
 Update custom fields properties (from table gui) More...
 

Static Public Member Functions

static getAccessPermissions ()
 

Protected Member Functions

 getPermissions ()
 
 initFieldDefinition ()
 
 initForm (string $a_mode='create')
 
 validateForm (ilPropertyFormGUI $form, ilUserDefinedFields $user_field_definitions, array &$access, array $a_field_permissions=null)
 

Private Attributes

UserGUIRequest $request
 
ilCtrlInterface $ctrl
 
ilLanguage $lng
 
UIFactory $ui_factory
 
ilGlobalTemplateInterface $main_tpl
 
ilToolbarGUI $toolbar
 
int $ref_id = 0
 
bool $confirm_change = false
 
int $field_id = 0
 
array $field_definition = []
 
ilClaimingPermissionHelper $permissions
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilCustomUserFieldsGUI::__construct ( int  $ref_id,
int  $requested_field_id 
)

Definition at line 47 of file class.ilCustomUserFieldsGUI.php.

References $DIC, $ref_id, ilUserDefinedFields\_getInstance(), ILIAS\Repository\ctrl(), ilClaimingPermissionHelper\getInstance(), ILIAS\Repository\lng(), and ILIAS\Repository\toolbar().

50  {
51  global $DIC;
52  $this->main_tpl = $DIC->ui()->mainTemplate();
53  $this->ctrl = $DIC['ilCtrl'];
54  $this->lng = $DIC['lng'];
55  $this->ui_factory = $DIC['ui.factory'];
56  $this->toolbar = $DIC['ilToolbar'];
57 
58  $this->lng->loadLanguageModule('user');
59  $this->lng->loadLanguageModule('administration');
60 
61  $this->ref_id = $ref_id;
62 
63  $this->field_id = $requested_field_id;
64  $this->ctrl->saveParameter($this, 'field_id', $this->field_id);
65 
66  if ($this->field_id) {
67  $user_field_definitions = ilUserDefinedFields::_getInstance();
68  $this->field_definition = $user_field_definitions->getDefinition($this->field_id);
69  }
70 
71  $this->permissions = ilUDFPermissionHelper::getInstance(
72  $DIC->user()->getId(),
73  $ref_id
74  );
75  $this->request = new UserGUIRequest(
76  $DIC->http(),
77  $DIC->refinery()
78  );
79  }
global $DIC
Definition: feed.php:28
static getInstance(int $a_user_id, int $a_ref_id)
+ Here is the call graph for this function:

Member Function Documentation

◆ addField()

ilCustomUserFieldsGUI::addField ( ilPropertyFormGUI  $a_form = null)

Definition at line 123 of file class.ilCustomUserFieldsGUI.php.

References initForm().

Referenced by create().

123  : void
124  {
125  if (!$a_form) {
126  $a_form = $this->initForm('create');
127  }
128 
129  $this->main_tpl->setContent($a_form->getHTML());
130  }
initForm(string $a_mode='create')
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ askDeleteField()

ilCustomUserFieldsGUI::askDeleteField ( )

Definition at line 628 of file class.ilCustomUserFieldsGUI.php.

References $id, ilUserDefinedFields\_getInstance(), ILIAS\Repository\ctrl(), listUserDefinedFields(), and ILIAS\Repository\lng().

628  : bool
629  {
630  $fields = $this->request->getFields();
631  if (count($fields) == 0) {
632  $this->main_tpl->setOnScreenMessage('failure', $this->lng->txt('select_one'));
633  $this->listUserDefinedFields();
634  return false;
635  }
636 
637  $confirmation_gui = new ilConfirmationGUI();
638  $confirmation_gui->setFormAction($this->ctrl->getFormAction($this));
639  $confirmation_gui->setHeaderText($this->lng->txt('udf_delete_sure'));
640  $confirmation_gui->setCancel($this->lng->txt('cancel'), 'listUserDefinedFields');
641  $confirmation_gui->setConfirm($this->lng->txt('delete'), 'deleteField');
642 
643  $user_field_definitions = ilUserDefinedFields::_getInstance();
644  foreach ($fields as $id) {
645  $definition = $user_field_definitions->getDefinition($id);
646  $confirmation_gui->addItem('fields[]', (string) $id, $definition['field_name']);
647  }
648 
649  $this->main_tpl->setContent($confirmation_gui->getHTML());
650 
651  return true;
652  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

◆ create()

ilCustomUserFieldsGUI::create ( )

Definition at line 438 of file class.ilCustomUserFieldsGUI.php.

References XapiProxy\$plugin, ilUserDefinedFields\_getInstance(), ilMemberAgreement\_reset(), addField(), ILIAS\Repository\ctrl(), ilCustomUserFieldsHelper\getInstance(), initForm(), ILIAS\Repository\lng(), and validateForm().

438  : void
439  {
440  $user_field_definitions = ilUserDefinedFields::_getInstance();
441  $user_field_definitions->setFieldType(
442  $this->request->getFieldType()
443  );
444 
445  $access = [];
446  $form = $this->initForm('create');
447  if ($this->validateForm($form, $user_field_definitions, $access)) {
448  $user_field_definitions->setFieldName($form->getInput('name'));
449  $user_field_definitions->enableVisible($access['visible']);
450  $user_field_definitions->enableVisibleRegistration((bool) $access['visib_reg']);
451  $user_field_definitions->enableVisibleLocalUserAdministration($access['visib_lua']);
452  $user_field_definitions->enableCourseExport($access['course_export']);
453  $user_field_definitions->enableGroupExport($access['group_export']);
454  $user_field_definitions->enablePrgExport($access['prg_export']);
455  $user_field_definitions->enableChangeable($access['changeable']);
456  $user_field_definitions->enableChangeableLocalUserAdministration($access['changeable_lua']);
457  $user_field_definitions->enableRequired($access['required']);
458  $user_field_definitions->enableExport($access['export']);
459  $user_field_definitions->enableSearchable($access['searchable']);
460  $user_field_definitions->enableCertificate($access['certificate']);
461  $new_id = $user_field_definitions->add();
462 
463  if ($user_field_definitions->isPluginType()) {
464  $plugin = ilCustomUserFieldsHelper::getInstance()->getPluginForType($user_field_definitions->getFieldType());
465  if ($plugin instanceof ilUDFDefinitionPlugin) {
466  $plugin->updateDefinitionFromForm($form, $new_id);
467  }
468  }
469  if ($access['course_export']) {
471  }
472 
473  $this->main_tpl->setOnScreenMessage('success', $this->lng->txt('udf_added_field'), true);
474  $this->ctrl->redirect($this);
475  }
476 
477  $form->setValuesByPost();
478  $this->addField($form);
479  }
static _reset()
Reset all.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
validateForm(ilPropertyFormGUI $form, ilUserDefinedFields $user_field_definitions, array &$access, array $a_field_permissions=null)
addField(ilPropertyFormGUI $a_form=null)
initForm(string $a_mode='create')
+ Here is the call graph for this function:

◆ deleteField()

ilCustomUserFieldsGUI::deleteField ( )

Definition at line 654 of file class.ilCustomUserFieldsGUI.php.

References $id, ilUserDefinedFields\_getInstance(), ilUDFPermissionHelper\ACTION_FIELD_DELETE, ilUDFPermissionHelper\CONTEXT_FIELD, ILIAS\Repository\ctrl(), getPermissions(), and ILIAS\Repository\lng().

654  : void
655  {
656  $user_field_definitions = ilUserDefinedFields::_getInstance();
657  $fields = $this->request->getFields();
658 
659  // all fields have to be deletable
660  $fail = [];
661  foreach ($fields as $id) {
662  if (!$this->getPermissions()->hasPermission(
664  (string) $id,
666  )) {
667  $field = $user_field_definitions->getDefinition($id);
668  $fail[] = $field['field_name'];
669  }
670  }
671  if ($fail) {
672  $this->main_tpl->setOnScreenMessage('failure', $this->lng->txt('msg_no_perm_delete') . ' ' . implode(', ', $fail), true);
673  $this->ctrl->redirect($this, 'listUserDefinedFields');
674  }
675 
676  foreach ($fields as $id) {
677  $user_field_definitions->delete($id);
678  }
679 
680  $this->main_tpl->setOnScreenMessage('success', $this->lng->txt('udf_field_deleted'), true);
681  $this->ctrl->redirect($this);
682  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

◆ edit()

ilCustomUserFieldsGUI::edit ( ilPropertyFormGUI  $a_form = null)

Definition at line 481 of file class.ilCustomUserFieldsGUI.php.

References initForm().

Referenced by update().

481  : void
482  {
483  if (!$a_form) {
484  $a_form = $this->initForm('edit');
485  }
486 
487  $this->main_tpl->setContent($a_form->getHTML());
488  }
initForm(string $a_mode='create')
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ executeCommand()

ilCustomUserFieldsGUI::executeCommand ( )

Definition at line 86 of file class.ilCustomUserFieldsGUI.php.

References ILIAS\Repository\ctrl().

86  : void
87  {
88  $next_class = $this->ctrl->getNextClass($this);
89  $cmd = $this->ctrl->getCmd();
90 
91  switch ($next_class) {
92  default:
93  if (!$cmd) {
94  $cmd = 'listUserDefinedFields';
95  }
96  $this->$cmd();
97  break;
98  }
99  }
+ Here is the call graph for this function:

◆ getAccessOptions()

ilCustomUserFieldsGUI::getAccessOptions ( )

Get all access options, order is kept in forms.

Returns
array<string,string>

Definition at line 136 of file class.ilCustomUserFieldsGUI.php.

References ILIAS\Repository\lng().

Referenced by initForm(), and validateForm().

136  : array
137  {
138  $opts = [];
139  $opts['visible'] = $this->lng->txt('user_visible_in_profile');
140  $opts['visib_reg'] = $this->lng->txt('visible_registration');
141  $opts['visib_lua'] = $this->lng->txt('usr_settings_visib_lua');
142  $opts['course_export'] = $this->lng->txt('course_export');
143  $opts['group_export'] = $this->lng->txt('group_export');
144  $opts["prg_export"] = $this->lng->txt("prg_export");
145  $opts['changeable'] = $this->lng->txt('changeable');
146  $opts['changeable_lua'] = $this->lng->txt('usr_settings_changeable_lua');
147  $opts['required'] = $this->lng->txt('required_field');
148  $opts['export'] = $this->lng->txt('export');
149  $opts['searchable'] = $this->lng->txt('header_searchable');
150  $opts['certificate'] = $this->lng->txt('certificate');
151  return $opts;
152  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAccessPermissions()

static ilCustomUserFieldsGUI::getAccessPermissions ( )
static
Returns
array<string,string>

Definition at line 157 of file class.ilCustomUserFieldsGUI.php.

References ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CERTIFICATE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_EXPORT, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_REQUIRED, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_SEARCHABLE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_COURSES, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_GROUPS, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PRG, and ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_REGISTRATION.

Referenced by ilCustomUserFieldSettingsTableGUI\__construct().

157  : array
158  {
159  return [
172  ];
173  }
+ Here is the caller graph for this function:

◆ getPermissions()

ilCustomUserFieldsGUI::getPermissions ( )
protected

Definition at line 81 of file class.ilCustomUserFieldsGUI.php.

References $permissions.

Referenced by deleteField(), and listUserDefinedFields().

82  {
83  return $this->permissions;
84  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilClaimingPermissionHelper $permissions
+ Here is the caller graph for this function:

◆ initFieldDefinition()

ilCustomUserFieldsGUI::initFieldDefinition ( )
protected

Definition at line 175 of file class.ilCustomUserFieldsGUI.php.

References ilMemberAgreement\_hasAgreements(), ilUDFPermissionHelper\ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper\ACTION_FIELD_EDIT_PROPERTY, ilUDFPermissionHelper\CONTEXT_FIELD, ILIAS\Repository\lng(), ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CERTIFICATE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_EXPORT, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_REQUIRED, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_SEARCHABLE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_COURSES, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_GROUPS, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PRG, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_REGISTRATION, ilUDFPermissionHelper\SUBACTION_FIELD_PROPERTIES, and ilUDFPermissionHelper\SUBACTION_FIELD_TITLE.

Referenced by initForm().

175  : array // Missing array type.
176  {
178  $this->lng->loadLanguageModule('ps');
179  $this->main_tpl->setOnScreenMessage('info', $this->lng->txt('ps_warning_modify'));
180  }
181 
182  $perms = [];
183  if ($this->field_definition) {
184  $perms = $this->permissions->hasPermissions(
186  (string) $this->field_definition['field_id'],
187  [
188  [
191  ],
192  [
195  ],
196  [
199  ],
200  [
203  ],
204  [
207  ],
208  [
211  ],
212  [
215  ],
216  [
219  ],
220  [
223  ],
224  [
227  ],
228  [
231  ],
232  [
235  ],
236  [
239  ],
240  [
243  ]
244  ]
245  );
246  }
247  return $perms;
248  }
static _hasAgreements()
Check if there is any user agreement.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initForm()

ilCustomUserFieldsGUI::initForm ( string  $a_mode = 'create')
protected

Definition at line 250 of file class.ilCustomUserFieldsGUI.php.

References $id, XapiProxy\$plugin, ilMemberAgreement\_hasAgreements(), ilUDFPermissionHelper\ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper\ACTION_FIELD_EDIT_PROPERTY, ILIAS\Repository\ctrl(), getAccessOptions(), ilCustomUserFieldsHelper\getInstance(), initFieldDefinition(), ILIAS\Repository\lng(), ilFormPropertyGUI\setRequired(), ilUDFPermissionHelper\SUBACTION_FIELD_PROPERTIES, ilUDFPermissionHelper\SUBACTION_FIELD_TITLE, UDF_TYPE_SELECT, UDF_TYPE_TEXT, and UDF_TYPE_WYSIWYG.

Referenced by addField(), create(), edit(), and update().

251  {
252  $perms = [];
253  $se_mu = null;
254  $perm_map = [];
255  $udf_type = null;
256 
258  $this->lng->loadLanguageModule('ps');
259  $this->main_tpl->setOnScreenMessage('info', $this->lng->txt('ps_warning_modify'));
260  }
261 
262  if ($this->field_definition) {
263  $perms = $this->initFieldDefinition();
264  $perm_map = self::getAccessPermissions();
265  }
266 
267  $form = new ilPropertyFormGUI();
268  $form->setFormAction($this->ctrl->getFormAction($this));
269 
270  $name = new ilTextInputGUI($this->lng->txt('field_name'), 'name');
271  $name->setRequired(true);
272  $form->addItem($name);
273 
275  $name->setDisabled(true);
276  }
277 
278  // type
279  $radg = new ilRadioGroupInputGUI($this->lng->txt('field_type'), 'field_type');
280  $radg->setRequired(true);
281  foreach (ilCustomUserFieldsHelper::getInstance()->getUDFTypes() as $udf_type => $udf_name) {
282  $op = new ilRadioOption($udf_name, (string) $udf_type);
283  $radg->addOption($op);
284 
285  switch ($udf_type) {
286  case UDF_TYPE_TEXT:
287  case UDF_TYPE_WYSIWYG:
288  // do nothing
289  break;
290  case UDF_TYPE_SELECT:
291  // select values
292  $se_mu = new ilTextWizardInputGUI($this->lng->txt('value'), 'selvalue');
293  $se_mu->setRequired(true);
294  $se_mu->setSize(32);
295  $se_mu->setMaxLength(128);
296  $se_mu->setValues(['']);
297  $op->addSubItem($se_mu);
298  break;
299 
300  default:
301  $plugin = ilCustomUserFieldsHelper::getInstance()->getPluginForType($udf_type);
302  if ($plugin instanceof ilUDFDefinitionPlugin) {
303  $plugin->addDefinitionTypeOptionsToRadioOption($op, $this->field_id);
304  }
305  break;
306  }
307  }
308 
309  $form->addItem($radg);
310 
312  $se_mu->setDisabled(true);
313  $se_mu->setRequired(false);
314  }
315 
316 
317  // access
318  $acc = new ilCheckboxGroupInputGUI($this->lng->txt('access'), 'access');
319 
320  $acc_values = [];
321  foreach ($this->getAccessOptions() as $id => $caption) {
322  $opt = new ilCheckboxOption($caption, $id);
323  $acc->addOption($opt);
324 
325  if ($this->field_definition && $this->field_definition[$id]) {
326  $acc_values[] = $id;
327  }
328 
329  if ($perms && !$perms[ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS][$perm_map[$id]]) {
330  $opt->setDisabled(true);
331  }
332  }
333 
334  $form->addItem($acc);
335 
336 
337  if ($a_mode == 'create') {
338  $radg->setValue((string) UDF_TYPE_TEXT);
339  $form->setTitle($this->lng->txt('add_new_user_defined_field'));
340  $form->addCommandButton('create', $this->lng->txt('save'));
341  } else {
342  $name->setValue($this->field_definition['field_name']);
343  $radg->setValue((string) $this->field_definition['field_type']);
344  $radg->setDisabled(true);
345  $acc->setValue($acc_values);
346 
347  switch ($this->field_definition['field_type']) {
348  case UDF_TYPE_SELECT:
349  $values = $this->field_definition['field_values'];
350  if (!is_array($values) || $values === []) {
351  $values = [''];
352  }
353  $se_mu->setValue($values);
354  $form->setTitle($this->lng->txt('udf_update_select_field'));
355  break;
356 
357  case UDF_TYPE_TEXT:
358  $form->setTitle($this->lng->txt('udf_update_text_field'));
359  break;
360 
361  case UDF_TYPE_WYSIWYG:
362  $form->setTitle($this->lng->txt('udf_update_wysiwyg_field'));
363  break;
364 
365  default:
366  $plugin = ilCustomUserFieldsHelper::getInstance()->getPluginForType($udf_type);
367  if ($plugin instanceof ilUDFDefinitionPlugin) {
368  $form->setTitle($plugin->getDefinitionUpdateFormTitle());
369  }
370  break;
371  }
372  $form->addCommandButton('update', $this->lng->txt('save'));
373  }
374  $form->addCommandButton('listUserDefinedFields', $this->lng->txt('cancel'));
375  return $form;
376  }
const UDF_TYPE_SELECT
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...
getAccessOptions()
Get all access options, order is kept in forms.
This class represents a property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const UDF_TYPE_TEXT
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...
static _hasAgreements()
Check if there is any user agreement.
setRequired(bool $a_required)
const UDF_TYPE_WYSIWYG
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
This class represents a text wizard property in a property form.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ listUserDefinedFields()

ilCustomUserFieldsGUI::listUserDefinedFields ( )

Definition at line 101 of file class.ilCustomUserFieldsGUI.php.

References ilUDFPermissionHelper\ACTION_UDF_CREATE_FIELD, ilUDFPermissionHelper\CONTEXT_UDF, ILIAS\Repository\ctrl(), getPermissions(), ILIAS\Repository\lng(), and ILIAS\Repository\toolbar().

Referenced by askDeleteField(), and updateFields().

101  : void
102  {
103  if ($this->getPermissions()->hasPermission(
105  (string) $this->ref_id,
107  )) {
108  $this->toolbar->addComponent(
109  $this->ui_factory->link()->standard(
110  $this->lng->txt('add_user_defined_field'),
111  $this->ctrl->getLinkTarget($this, 'addField')
112  )
113  );
114  }
115 
116  $tab = new ilCustomUserFieldSettingsTableGUI($this, 'listUserDefinedFields', $this->getPermissions());
117  if ($this->confirm_change) {
118  $tab->setConfirmChange();
119  }
120  $this->main_tpl->setContent($tab->getHTML());
121  }
TableGUI class for custom defined user fields.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update()

ilCustomUserFieldsGUI::update ( )

Definition at line 490 of file class.ilCustomUserFieldsGUI.php.

References XapiProxy\$plugin, ilUserDefinedFields\_getInstance(), ilMemberAgreement\_reset(), ilUDFPermissionHelper\ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper\ACTION_FIELD_EDIT_PROPERTY, ilUDFPermissionHelper\CONTEXT_FIELD, ILIAS\Repository\ctrl(), ilUserDefinedData\deleteFieldValue(), edit(), ilCustomUserFieldsHelper\getInstance(), initForm(), ILIAS\Repository\lng(), ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CERTIFICATE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_EXPORT, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_REQUIRED, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_SEARCHABLE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_COURSES, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_GROUPS, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PRG, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_REGISTRATION, ilUDFPermissionHelper\SUBACTION_FIELD_PROPERTIES, ilUDFPermissionHelper\SUBACTION_FIELD_TITLE, UDF_TYPE_SELECT, and validateForm().

490  : void
491  {
492  $perms = [];
493 
494  $user_field_definitions = ilUserDefinedFields::_getInstance();
495  $user_field_definitions->setFieldType($this->field_definition['field_type']);
496 
497  // gather old select options
498  $old_options = null;
499  if ($this->field_id) {
500  $old_values = $user_field_definitions->getDefinition($this->field_id);
501  if ($old_values['field_type'] == UDF_TYPE_SELECT) {
502  $old_options = $old_values['field_values'];
503  }
504 
505  $perms = $this->permissions->hasPermissions(
507  (string) $this->field_id,
508  [
509  [
512  ],
513  [
516  ],
517  [
520  ],
521  [
524  ],
525  [
528  ],
529  [
532  ],
533  [
536  ],
537  [
540  ],
541  [
544  ],
545  [
548  ],
549  [
552  ],
553  [
556  ],
557  [
560  ],
561  [
564  ]
565  ]
566  );
567  }
568 
569  $access = [];
570  $form = $this->initForm('edit');
571  if ($this->validateForm($form, $user_field_definitions, $access, $perms) && $this->field_id) {
572  // field values are set in validateForm()...
573 
575  // diff old select options against new to handle deleted values properly
576  if (is_array($old_options)) {
577  foreach ($old_options as $old_option) {
578  if (!in_array($old_option, $user_field_definitions->getFieldValues())) {
579  ilUserDefinedData::deleteFieldValue($this->field_id, $old_option);
580  }
581  }
582  }
583  }
584  // disabled fields
585  elseif (is_array($old_options)) {
586  $user_field_definitions->setFieldValues($old_options);
587  }
588 
590  $user_field_definitions->setFieldName($form->getInput('name'));
591  } else {
592  $user_field_definitions->setFieldName($this->field_definition['field_name']);
593  }
594 
595  $user_field_definitions->enableVisible($access['visible']);
596  $user_field_definitions->enableVisibleRegistration($access['visib_reg']);
597  $user_field_definitions->enableVisibleLocalUserAdministration($access['visib_lua']);
598  $user_field_definitions->enableCourseExport($access['course_export']);
599  $user_field_definitions->enableGroupExport($access['group_export']);
600  $user_field_definitions->enablePrgExport($access['prg_export']);
601  $user_field_definitions->enableChangeable($access['changeable']);
602  $user_field_definitions->enableChangeableLocalUserAdministration($access['changeable_lua']);
603  $user_field_definitions->enableRequired($access['required']);
604  $user_field_definitions->enableExport($access['export']);
605  $user_field_definitions->enableSearchable($access['searchable']);
606  $user_field_definitions->enableCertificate($access['certificate']);
607  $user_field_definitions->update($this->field_id);
608 
609  if ($user_field_definitions->isPluginType()) {
610  $plugin = ilCustomUserFieldsHelper::getInstance()->getPluginForType($user_field_definitions->getFieldType());
611  if ($plugin instanceof ilUDFDefinitionPlugin) {
612  $plugin->updateDefinitionFromForm($form, $this->field_id);
613  }
614  }
615 
616  if ($access['course_export']) {
618  }
619 
620  $this->main_tpl->setOnScreenMessage('success', $this->lng->txt('settings_saved'), true);
621  $this->ctrl->redirect($this);
622  }
623 
624  $form->setValuesByPost();
625  $this->edit($form);
626  }
const UDF_TYPE_SELECT
edit(ilPropertyFormGUI $a_form=null)
static _reset()
Reset all.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
validateForm(ilPropertyFormGUI $form, ilUserDefinedFields $user_field_definitions, array &$access, array $a_field_permissions=null)
static deleteFieldValue(int $a_field_id, string $a_value)
Delete data of particular value of a (selection) field.
initForm(string $a_mode='create')
+ Here is the call graph for this function:

◆ updateFields()

ilCustomUserFieldsGUI::updateFields ( string  $action = '')

Update custom fields properties (from table gui)

Definition at line 687 of file class.ilCustomUserFieldsGUI.php.

References $field_id, $valid, ilUserDefinedFields\_getInstance(), ilUDFPermissionHelper\ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper\CONTEXT_FIELD, ILIAS\Repository\ctrl(), listUserDefinedFields(), ILIAS\Repository\lng(), ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CERTIFICATE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_CHANGEABLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_EXPORT, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_REQUIRED, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_SEARCHABLE, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_COURSES, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_GROUPS, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_LOCAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PERSONAL, ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_PRG, and ilUDFPermissionHelper\SUBACTION_FIELD_ACCESS_VISIBLE_REGISTRATION.

687  : void
688  {
689  $user_field_definitions = ilUserDefinedFields::_getInstance();
690  $a_fields = $user_field_definitions->getDefinitions();
691 
692  $checked = $this->request->getChecked();
693 
694  $perm_map = self::getAccessPermissions();
695 
696  foreach ($a_fields as $field_id => $definition) {
697  $perms = $this->permissions->hasPermissions(
699  (string) $field_id,
700  [
701  [
704  ],
705  [
708  ],
709  [
712  ],
713  [
716  ],
717  [
720  ],
721  [
724  ],
725  [
728  ],
729  [
732  ],
733  [
736  ],
737  [
740  ],
741  [
744  ],
745  [
748  ]
749  ]
750  );
751 
752  // disabled field
753  foreach ($perm_map as $prop => $perm) {
755  $checked[$prop . '_' . $field_id] = $definition[$prop];
756  }
757  }
758  }
759 
760  $valid = true;
761  foreach ($a_fields as $field_id => $definition) {
762  if (isset($checked['required_' . $field_id]) && (int) $checked['required_' . $field_id] &&
763  (!isset($checked['visib_reg_' . $field_id]) || !(int) $checked['visib_reg_' . $field_id])) {
764  $this->confirm_change = true;
765 
766  $this->main_tpl->setOnScreenMessage('failure', $this->lng->txt('invalid_visible_required_options_selected'));
767  $valid = false;
768  }
769  }
770 
771  if (!$valid) {
772  $this->listUserDefinedFields();
773  return;
774  }
775 
776  foreach ($a_fields as $field_id => $definition) {
777  $user_field_definitions->setFieldName($definition['field_name']);
778  $user_field_definitions->setFieldType($definition['field_type']);
779  $user_field_definitions->setFieldValues($definition['field_values']);
780  $user_field_definitions->enableVisible((bool) ($checked['visible_' . $field_id] ?? false));
781  $user_field_definitions->enableChangeable((bool) ($checked['changeable_' . $field_id] ?? false));
782  $user_field_definitions->enableRequired((bool) ($checked['required_' . $field_id] ?? false));
783  $user_field_definitions->enableSearchable((bool) ($checked['searchable_' . $field_id] ?? false));
784  $user_field_definitions->enableExport((bool) ($checked['export_' . $field_id] ?? false));
785  $user_field_definitions->enableCourseExport((bool) ($checked['course_export_' . $field_id] ?? false));
786  $user_field_definitions->enableVisibleLocalUserAdministration((bool) ($checked['visib_lua_' . $field_id] ?? false));
787  $user_field_definitions->enableChangeableLocalUserAdministration((bool) ($checked['changeable_lua_' . $field_id] ?? false));
788  $user_field_definitions->enableGroupExport((bool) ($checked['group_export_' . $field_id] ?? false));
789  $user_field_definitions->enableVisibleRegistration((bool) ($checked['visib_reg_' . $field_id] ?? false));
790  $user_field_definitions->enableCertificate((bool) ($checked['certificate_' . $field_id] ?? false));
791  $user_field_definitions->enablePrgExport((bool) ($checked['prg_export_' . $field_id] ?? false));
792 
793  $user_field_definitions->update($field_id);
794  }
795 
796  $this->main_tpl->setOnScreenMessage('success', $this->lng->txt('settings_saved'), true);
797  $this->ctrl->redirect($this);
798  }
$valid
+ Here is the call graph for this function:

◆ validateForm()

ilCustomUserFieldsGUI::validateForm ( ilPropertyFormGUI  $form,
ilUserDefinedFields  $user_field_definitions,
array &  $access,
array  $a_field_permissions = null 
)
protected

Definition at line 378 of file class.ilCustomUserFieldsGUI.php.

References $id, $valid, ilUDFPermissionHelper\ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper\ACTION_FIELD_EDIT_PROPERTY, ilPropertyFormGUI\checkInput(), getAccessOptions(), ilPropertyFormGUI\getInput(), ilPropertyFormGUI\getItemByPostVar(), ILIAS\Repository\lng(), ilUserDefinedFields\nameExists(), ilUserDefinedFields\setFieldValues(), ilUDFPermissionHelper\SUBACTION_FIELD_PROPERTIES, UDF_DUPLICATE_VALUES, UDF_TYPE_SELECT, and ilUserDefinedFields\validateValues().

Referenced by create(), and update().

383  : bool {
384  $perm_map = [];
385 
386  if ($form->checkInput()) {
387  $valid = true;
388 
389  $incoming = (array) $form->getInput('access');
390 
391  if ($a_field_permissions) {
392  $perm_map = self::getAccessPermissions();
393  }
394 
395  $access = [];
396  foreach (array_keys($this->getAccessOptions()) as $id) {
397  $access[$id] = in_array($id, $incoming);
398 
399  // disabled fields
400  if ($a_field_permissions && !$a_field_permissions[ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS][$perm_map[$id]]) {
401  $access[$id] = $this->field_definition[$id];
402  }
403  }
404 
405  if ($access['required'] && !$access['visib_reg']) {
406  $this->confirm_change = true;
407  $form->getItemByPostVar('access')->setAlert($this->lng->txt('udf_required_requires_visib_reg'));
408  $valid = false;
409  }
410 
411  if (!$this->field_id && $user_field_definitions->nameExists($form->getInput('name'))) {
412  $form->getItemByPostVar('name')->setAlert($this->lng->txt('udf_name_already_exists'));
413  $valid = false;
414  }
415 
416  if ($form->getInput('field_type') == UDF_TYPE_SELECT &&
418  $user_field_definitions->setFieldValues($form->getInput('selvalue'));
419  if ($error = $user_field_definitions->validateValues()) {
420  switch ($error) {
422  $form->getItemByPostVar('selvalue')->setAlert($this->lng->txt('udf_duplicate_entries'));
423  $valid = false;
424  break;
425  }
426  }
427  }
428 
429  if (!$valid) {
430  $this->main_tpl->setOnScreenMessage('failure', $this->lng->txt('form_input_not_valid'));
431  }
432  return $valid;
433  }
434 
435  return false;
436  }
const UDF_TYPE_SELECT
getItemByPostVar(string $a_post_var)
$valid
getAccessOptions()
Get all access options, order is kept in forms.
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
nameExists(string $a_field_name)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
const UDF_DUPLICATE_VALUES
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $confirm_change

bool ilCustomUserFieldsGUI::$confirm_change = false
private

Definition at line 39 of file class.ilCustomUserFieldsGUI.php.

◆ $ctrl

ilCtrlInterface ilCustomUserFieldsGUI::$ctrl
private

Definition at line 32 of file class.ilCustomUserFieldsGUI.php.

◆ $field_definition

array ilCustomUserFieldsGUI::$field_definition = []
private

Definition at line 44 of file class.ilCustomUserFieldsGUI.php.

◆ $field_id

int ilCustomUserFieldsGUI::$field_id = 0
private

Definition at line 40 of file class.ilCustomUserFieldsGUI.php.

Referenced by updateFields().

◆ $lng

ilLanguage ilCustomUserFieldsGUI::$lng
private

Definition at line 33 of file class.ilCustomUserFieldsGUI.php.

◆ $main_tpl

ilGlobalTemplateInterface ilCustomUserFieldsGUI::$main_tpl
private

Definition at line 35 of file class.ilCustomUserFieldsGUI.php.

◆ $permissions

ilClaimingPermissionHelper ilCustomUserFieldsGUI::$permissions
private

Definition at line 45 of file class.ilCustomUserFieldsGUI.php.

Referenced by getPermissions().

◆ $ref_id

int ilCustomUserFieldsGUI::$ref_id = 0
private

Definition at line 38 of file class.ilCustomUserFieldsGUI.php.

Referenced by __construct().

◆ $request

UserGUIRequest ilCustomUserFieldsGUI::$request
private

Definition at line 31 of file class.ilCustomUserFieldsGUI.php.

◆ $toolbar

ilToolbarGUI ilCustomUserFieldsGUI::$toolbar
private

Definition at line 36 of file class.ilCustomUserFieldsGUI.php.

◆ $ui_factory

UIFactory ilCustomUserFieldsGUI::$ui_factory
private

Definition at line 34 of file class.ilCustomUserFieldsGUI.php.


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