ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.ilCustomUserFieldsHelper.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 // still needed, since constants are defined in ilUserDefinedFields
22 require_once __DIR__ . '/class.ilUserDefinedFields.php';
23 
25 
30 {
32  private Language $lng;
35 
36  public function __construct()
37  {
38  global $DIC;
39 
40  $this->lng = $DIC->language();
41  $this->component_repository = $DIC['component.repository'];
42  $this->component_factory = $DIC['component.factory'];
43  }
44 
45  public static function getInstance(): ilCustomUserFieldsHelper
46  {
47  if (self::$instance) {
48  return self::$instance;
49  }
50  return self::$instance = new self();
51  }
52 
56  public function getUDFTypes(): array
57  {
58  $types = [
59  UDF_TYPE_TEXT => $this->lng->txt('udf_type_text'),
60  UDF_TYPE_SELECT => $this->lng->txt('udf_type_select'),
61  UDF_TYPE_WYSIWYG => $this->lng->txt('udf_type_wysiwyg')
62  ];
63  foreach ($this->getActivePlugins() as $plugin) {
64  $types[$plugin->getDefinitionType()] = $plugin->getDefinitionTypeName();
65  }
66  return $types;
67  }
68 
72  public function getPluginForType(int $type): ?ilUDFDefinitionPlugin
73  {
74  foreach ($this->getActivePlugins() as $plugin) {
75  if ($plugin->getDefinitionType() === $type) {
76  return $plugin;
77  }
78  }
79  return null;
80  }
81 
86  public function getActivePlugins(): array
87  {
88  return iterator_to_array($this->component_factory->getActivePluginsInSlot(ilUDFDefinitionPlugin::UDF_SLOT_ID));
89  }
90 
95  array $definition,
96  bool $changeable = true,
97  string $default_value = ''
98  ): ?ilFormPropertyGUI {
99  $fprop = null;
100 
101  switch ($definition['field_type']) {
102  case UDF_TYPE_TEXT:
103  $fprop = new ilTextInputGUI(
104  $definition['field_name'],
105  'udf_' . $definition['field_id']
106  );
107 
108  $fprop->setValue($default_value);
109  $fprop->setSize(40);
110  $fprop->setMaxLength(255);
111  $fprop->setRequired((bool) $definition['required']);
112  if (!$changeable && (!$definition['required'] || $default_value !== '')) {
113  $fprop->setDisabled(true);
114  }
115  break;
116 
117  case UDF_TYPE_WYSIWYG:
118  $fprop = new ilTextAreaInputGUI(
119  $definition['field_name'],
120  'udf_' . $definition['field_id']
121  );
122 
123  $fprop->setValue($default_value);
124  $fprop->setUseRte(true);
125  $fprop->setRequired((bool) $definition['required']);
126  if (!$changeable && (!$definition['required'] || $default_value !== '')) {
127  $fprop->setDisabled(true);
128  }
129  break;
130 
131  case UDF_TYPE_SELECT:
132  $fprop = new ilSelectInputGUI(
133  $definition['field_name'],
134  'udf_' . $definition['field_id']
135  );
136 
137  $user_defined_fields = ilUserDefinedFields::_getInstance();
138 
139  $fprop->setOptions($user_defined_fields->fieldValuesToSelectArray($definition['field_values']));
140  $fprop->setValue($default_value);
141  $fprop->setRequired((bool) $definition['required']);
142  if (!$changeable && (!$definition['required'] || $default_value !== '')) {
143  $fprop->setDisabled(true);
144  }
145  break;
146 
147  default:
148  // should be a plugin
149  foreach ($this->getActivePlugins() as $plugin) {
150  if ($plugin->getDefinitionType() == $definition['field_type']) {
151  $fprop = $plugin->getFormPropertyForDefinition(
152  $definition,
153  $changeable,
154  $default_value
155  );
156  break;
157  }
158  }
159  break;
160  }
161 
162  return $fprop;
163  }
164 }
getPluginForType(int $type)
Get plugin for udf type.
const UDF_TYPE_SELECT
Readable part of repository interface to ilComponentDataDB.
This class represents a selection list property in a property form.
getFormPropertyForDefinition(array $definition, bool $changeable=true, string $default_value='')
Get form property for definition.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getActivePlugins()
Get plugins for fields.
global $DIC
Definition: shib_login.php:22
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 text area property in a property form.
static ilCustomUserFieldsHelper $instance