ILIAS  release_8 Revision v8.24
class.ilCustomUserFieldsHelper.php
Go to the documentation of this file.
1<?php
2
19// still needed, since constants are defined in ilUserDefinedFields
20include_once("./Services/User/classes/class.ilUserDefinedFields.php");
21
26{
27 private static ?ilCustomUserFieldsHelper $instance = null;
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
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
const UDF_TYPE_WYSIWYG
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...
getActivePlugins()
Get plugins for fields.
static ilCustomUserFieldsHelper $instance
getFormPropertyForDefinition(array $definition, bool $changeable=true, string $a_default_value=null)
Get form property for definition.
getPluginForType(string $a_type)
Get plugin for udf type.
This class represents a property in a property form.
language handling
This class represents a selection list property in a property form.
This class represents a text area property in a property form.
This class represents a text property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: feed.php:28
Readable part of repository interface to ilComponentDataDB.