ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Repository.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\User\Settings;
22
24
26{
27 public function __construct(
28 private readonly \ilSetting $settings,
29 private readonly array $available_user_settings
30 ) {
31 }
32
33 public function get(): array
34 {
35 return array_reduce(
36 $this->available_user_settings,
37 function (array $c, string $v): array {
38 $definition = new $v();
39 if (!$definition->isAvailable()) {
40 return $c;
41 }
42 $c[] = $this->buildSettingFromDefinition($definition);
43 return $c;
44 },
45 []
46 );
47 }
48
49 public function getByIdentifier(string $identifier): ?Setting
50 {
51 foreach ($this->available_user_settings as $setting) {
52 $definition = new $setting();
53 if ($definition->getIdentifier() === $identifier) {
54 return $this->buildSettingFromDefinition($definition);
55 }
56 }
57 return null;
58 }
59
60 public function getByDefinitionClass(string $class): ?Setting
61 {
62 if (!in_array($class, $this->available_user_settings)) {
63 return null;
64 }
65 return $this->buildSettingFromDefinition(new $class());
66 }
67
68 public function storeConfiguration(Setting $setting): void
69 {
71 PropertyAttributes::ChangeableByUser->getSettingsAccessPrefix(),
72 $setting->getIdentifier(),
73 $setting->isChangeableByUser()
74 );
76 PropertyAttributes::ChangeableInLocalUserAdministration->getSettingsAccessPrefix(),
77 $setting->getIdentifier(),
78 $setting->isChangeableInLocalUserAdministration()
79 );
81 PropertyAttributes::Export->getSettingsAccessPrefix(),
82 $setting->getIdentifier(),
83 $setting->export()
84 );
85 }
86
88 SettingDefinition $definition
89 ): Setting {
90 $this->updateLegacyValues($definition);
91 return new Setting(
92 $definition,
94 PropertyAttributes::ChangeableByUser->getSettingsAccessPrefix(),
95 $definition->getIdentifier()
96 ),
97 $this->retrieveConfigurationValue(
98 PropertyAttributes::ChangeableInLocalUserAdministration->getSettingsAccessPrefix(),
99 $definition->getIdentifier()
100 ),
101 $this->retrieveConfigurationValue(
102 PropertyAttributes::Export->getSettingsAccessPrefix(),
103 $definition->getIdentifier()
104 ),
105 );
106 }
107
111 private function updateLegacyValues(SettingDefinition $definition): void
112 {
113 if ($this->settings->get(
114 PropertyAttributes::ChangeableByUser->getSettingsAccessPrefix() . "_{$definition->getIdentifier()}"
115 ) !== null) {
116 return;
117 }
118
119 $legacy_disabled_value = $this->settings->get("usr_settings_disable_{$definition->getIdentifier()}", '0');
120 $this->settings->delete("usr_settings_disable_{$definition->getIdentifier()}");
121 $this->storeConfigurationValue(
122 PropertyAttributes::ChangeableByUser->getSettingsAccessPrefix(),
123 $definition->getIdentifier(),
124 $legacy_disabled_value !== '1'
125 );
126 }
127
129 string $prefix,
130 string $identifier
131 ): bool {
132 return $this->settings->get("{$prefix}_{$identifier}", '0') === '1';
133 }
134
135 private function storeConfigurationValue(
136 string $prefix,
137 string $identifier,
138 bool $value
139 ): void {
140 $this->settings->set("{$prefix}_{$identifier}", $value ? '1' : '0');
141 }
142}
getByDefinitionClass(string $class)
Definition: Repository.php:60
updateLegacyValues(SettingDefinition $definition)
Definition: Repository.php:111
storeConfigurationValue(string $prefix, string $identifier, bool $value)
Definition: Repository.php:135
retrieveConfigurationValue(string $prefix, string $identifier)
Definition: Repository.php:128
buildSettingFromDefinition(SettingDefinition $definition)
Definition: Repository.php:87
storeConfiguration(Setting $setting)
Definition: Repository.php:68
__construct(private readonly \ilSetting $settings, private readonly array $available_user_settings)
Definition: Repository.php:27
getByIdentifier(string $identifier)
Definition: Repository.php:49
ilSetting $setting
Definition: class.ilias.php:68
ILIAS Setting Class.
$c
Definition: deliver.php:25
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
get(string $class_name)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...