19declare(strict_types=1);
34 private readonly UUIDFactory $uuid_factory,
35 private readonly array $available_custom_field_types,
36 private readonly array $available_standard_profile_fields
43 return $this->db->fetchObject(
45 'SELECT COUNT(field_id) cnt FROM ' . self::USER_FIELD_CONFIGURATION_TABLE
50 public function get(): array
53 $this->available_profile_fields,
64 foreach ($this->available_profile_fields as $definition) {
65 if ($definition->getIdentifier() === $identifier) {
74 foreach ($this->available_profile_fields as $definition) {
75 if ($definition::class === $class) {
85 self::USER_FIELD_CONFIGURATION_TABLE,
88 'visible_in_registration' => [
92 'visible_to_user' => [
100 'visible_in_crss' => [
104 'visible_in_grps' => [
108 'visible_in_prgs' => [
112 'changeable_by_user' => [
116 'changeable_in_lua' => [
132 'available_in_certs' => [
141 self::UDF_DEFINITIONS_TABLE,
153 fn(
string $v): Custom\
Type =>
new $v(),
154 $this->available_custom_field_types
162 $this->uuid_factory->uuid4()
172 $this->db->manipulate(
174 .
" WHERE field_id={$this->db->quote($field->getIdentifier(), \ilDBConstants::T_TEXT)}"
176 $this->db->manipulate(
177 'DELETE FROM ' . self::UDF_DEFINITIONS_TABLE
178 .
" WHERE field_id={$this->db->quote($field->getIdentifier(), \ilDBConstants::T_TEXT)}"
184 array $available_custom_field_types
186 $query_result = $this->db->query(
190 $custom_field_definitions = [];
191 while (($field = $this->db->fetchObject($query_result)) !==
null) {
192 $field_type = array_search($field->field_type, $available_custom_field_types);
193 if ($field_type ===
null) {
196 $custom_field_definitions[] =
new Custom\Custom(
197 $this->uuid_factory->fromString($field->field_id),
198 new $available_custom_field_types[$field_type](),
204 return $custom_field_definitions;
210 $values_from_database = $this->db->fetchObject(
212 'SELECT * FROM ' . self::USER_FIELD_CONFIGURATION_TABLE .
" WHERE field_id ='{$definition->getIdentifier()}'"
216 if ($values_from_database ===
null) {
224 $values_from_database->visible_in_registration === 1,
225 $values_from_database->visible_to_user === 1,
226 $values_from_database->visible_in_lua === 1,
227 $values_from_database->visible_in_crss === 1,
228 $values_from_database->visible_in_grps === 1,
229 $values_from_database->visible_in_prgs === 1,
230 $values_from_database->changeable_by_user === 1,
231 $values_from_database->changeable_in_lua === 1,
232 $values_from_database->required === 1,
233 $values_from_database->export === 1,
234 $values_from_database->searchable === 1,
235 $values_from_database->available_in_certs === 1
242 $this->available_standard_profile_fields,
243 $this->buildCustomFieldDefinitions($this->available_custom_field_types)
const string USER_VALUES_TABLE
buildCustomFieldDefinitions(array $available_custom_field_types)
const string UDF_DEFINITIONS_TABLE
__construct(private readonly \ilDBInterface $db, private readonly UUIDFactory $uuid_factory, private readonly array $available_custom_field_types, private readonly array $available_standard_profile_fields)
getByClass(string $class)
storeConfiguration(Field $field)
getUnspecifiedCustomField()
const string USER_FIELD_CONFIGURATION_TABLE
generateAvailableProfielFields()
deleteCustomField(Field $field)
buildFieldFromDefinition(FieldDefinition $definition)
array $available_profile_fields
getByIdentifier(string $identifier)
isVisibleInStudyProgrammes()
isVisibleInRegistration()
isChangeableInLocalUserAdministration()
isVisibleInLocalUserAdministration()
isAvailableInCertificates()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...