ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilCustomUserFieldsHelper.php
Go to the documentation of this file.
1 <?php
2 
19 // still needed, since constants are defined in ilUserDefinedFields
20 include_once("./Services/User/classes/class.ilUserDefinedFields.php");
21 
26 {
27  private static ?ilCustomUserFieldsHelper $instance = null;
28  private ilLanguage $lng;
31 
32  public function __construct()
33  {
34  global $DIC;
35 
36  $this->lng = $DIC->language();
37  $this->component_repository = $DIC['component.repository'];
38  $this->component_factory = $DIC['component.factory'];
39  }
40 
41  public static function getInstance(): ilCustomUserFieldsHelper
42  {
43  if (self::$instance) {
44  return self::$instance;
45  }
46  return self::$instance = new self();
47  }
48 
52  public function getUDFTypes(): array
53  {
54  $types = array(
55  UDF_TYPE_TEXT => $this->lng->txt('udf_type_text'),
56  UDF_TYPE_SELECT => $this->lng->txt('udf_type_select'),
57  UDF_TYPE_WYSIWYG => $this->lng->txt('udf_type_wysiwyg')
58  );
59  foreach ($this->getActivePlugins() as $plugin) {
60  $types[$plugin->getDefinitionType()] = $plugin->getDefinitionTypeName();
61  }
62  return $types;
63  }
64 
68  public function getPluginForType(string $a_type): ?ilUDFDefinitionPlugin
69  {
70  foreach ($this->getActivePlugins() as $plugin) {
71  if ($plugin->getDefinitionType() == $a_type) {
72  return $plugin;
73  }
74  }
75  return null;
76  }
77 
82  public function getActivePlugins(): array
83  {
84  return iterator_to_array($this->component_factory->getActivePluginsInSlot(ilUDFDefinitionPlugin::UDF_SLOT_ID));
85  }
86 
91  array $definition,
92  bool $changeable = true,
93  string $a_default_value = null
94  ): ?ilFormPropertyGUI {
95  $fprop = null;
96  $default_value = $a_default_value ?? '';
97 
98  switch ($definition['field_type']) {
99  case UDF_TYPE_TEXT:
100  $fprop = new ilTextInputGUI(
101  $definition['field_name'],
102  'udf_' . $definition['field_id']
103  );
104 
105  $fprop->setValue($default_value);
106  $fprop->setSize(40);
107  $fprop->setMaxLength(255);
108  $fprop->setRequired((bool) $definition['required']);
109  if (!$changeable && (!$definition['required'] || $default_value !== '')) {
110  $fprop->setDisabled(true);
111  }
112  break;
113 
114  case UDF_TYPE_WYSIWYG:
115  $fprop = new ilTextAreaInputGUI(
116  $definition['field_name'],
117  'udf_' . $definition['field_id']
118  );
119 
120  $fprop->setValue($default_value);
121  $fprop->setUseRte(true);
122  $fprop->setRequired((bool) $definition['required']);
123  if (!$changeable && (!$definition['required'] || $default_value !== '')) {
124  $fprop->setDisabled(true);
125  }
126  break;
127 
128  case UDF_TYPE_SELECT:
129  $fprop = new ilSelectInputGUI(
130  $definition['field_name'],
131  'udf_' . $definition['field_id']
132  );
133 
134  $user_defined_fields = ilUserDefinedFields::_getInstance();
135 
136  $fprop->setOptions($user_defined_fields->fieldValuesToSelectArray($definition['field_values']));
137  $fprop->setValue($default_value);
138  $fprop->setRequired((bool) $definition['required']);
139  if (!$changeable && (!$definition['required'] || $default_value !== '')) {
140  $fprop->setDisabled(true);
141  }
142  break;
143 
144  default:
145  // should be a plugin
146  foreach ($this->getActivePlugins() as $plugin) {
147  if ($plugin->getDefinitionType() == $definition['field_type']) {
148  $fprop = $plugin->getFormPropertyForDefinition(
149  $definition,
150  $changeable,
151  $a_default_value
152  );
153  break;
154  }
155  }
156  break;
157  }
158 
159  return $fprop;
160  }
161 }
const UDF_TYPE_SELECT
Readable part of repository interface to ilComponentDataDB.
getPluginForType(string $a_type)
Get plugin for udf type.
global $DIC
Definition: feed.php:28
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getActivePlugins()
Get plugins for fields.
const UDF_TYPE_TEXT
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const UDF_TYPE_WYSIWYG
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...
This class represents a text area property in a property form.
getFormPropertyForDefinition(array $definition, bool $changeable=true, string $a_default_value=null)
Get form property for definition.
static ilCustomUserFieldsHelper $instance