ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Style.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
29use ILIAS\Refinery\Factory as Refinery;
30
31class Style implements SettingDefinition
32{
33 private readonly \ilStyleDefinition $style_definition;
34
35 public function __construct()
36 {
37 global $DIC;
38 $this->style_definition = $DIC['styleDefinition'];
39 }
40
41 public function getIdentifier(): string
42 {
43 return 'style';
44 }
45
46 public function isAvailable(): bool
47 {
48 return true;
49 }
50
51 public function getLabel(Language $lng): string
52 {
53 return $lng->txt($this->getIdentifier());
54 }
55
57 {
58 return AvailablePages::MainSettings;
59 }
60
61 public function getSection(): AvailableSections
62 {
64 }
65
66 public function getInput(
67 FieldFactory $field_factory,
70 \ilSetting $settings,
71 ?\ilObjUser $user = null
72 ): Input {
73 $lng->loadLanguageModule('style');
74
75 return $field_factory->select(
76 $lng->txt('usr_skin_style'),
77 $this->buildStyleOptions(),
78 )->withRequired(true)
79 ->withValue(
81 );
82 }
83
84 public function getLegacyInput(
86 \ilSetting $settings,
87 ?\ilObjUser $user = null
89 $lng->loadLanguageModule('style');
90
91 $input = new \ilSelectInputGUI($lng->txt('usr_skin_style'));
92 $input->setOptions($this->buildStyleOptions());
93 $input->setValue($this->buildStyleIdFromUserOrDefault($user));
94 return $input;
95 }
96
99 \ilSetting $settings
100 ): string {
101 $system_style_config = $this->style_definition->getSystemStylesConf();
102 return "{$this->style_definition->getStyle($system_style_config->getDefaultStyleId())->getName()} - "
103 . "{$this->style_definition->getSkin($system_style_config->getDefaultSkinId())->getName()} ";
104 }
105
107 \ilSetting $settings,
108 \ilObjUser $user
109 ): bool {
110 $system_style_config = $this->style_definition->getSystemStylesConf();
111 ['style' => $user_style, 'skin' => $user_skin] = $this->retrieveValueFromUser($user);
112 return $user_style !== $system_style_config->getDefaultStyleId()
113 || $user_skin !== $system_style_config->getDefaultSkinId();
114 }
115
116 public function persistUserInput(
117 \ilObjUser $user,
118 mixed $input
119 ): \ilObjUser {
120 if ($input === null) {
121 $system_style_config = $this->style_definition->getSystemStylesConf();
122 $user->setPref('style', $system_style_config->getDefaultStyleId());
123 $user->setPref('skin', $system_style_config->getDefaultSkinId());
124 return $user;
125 }
126
127 $sknst = explode(':', $input);
128 $user->setPref('skin', $sknst[0]);
129 $user->setPref('style', $sknst[1]);
130 return $user;
131 }
132
133 public function retrieveValueFromUser(\ilObjUser $user): array
134 {
135 return [
136 'style' => $user->getPref('style'),
137 'skin' => $user->getSkin()
138 ];
139 }
140
141 private function buildStyleOptions(): array
142 {
143 $options = [];
144 foreach ($this->style_definition::getAllSkins() as $skin) {
145 foreach ($skin->getStyles() as $style) {
146 if (
147 !\ilSystemStyleSettings::_lookupActivatedStyle($skin->getId(), $style->getId()) ||
148 $style->isSubstyle()
149 ) {
150 continue;
151 }
152
153 $options[$skin->getId() . ':' . $style->getId()] = $skin->getName() . ' / ' . $style->getName();
154 }
155 }
156 return $options;
157 }
158
160 ?\ilObjUser $user
161 ): string {
162 if ($user !== null) {
163 ['style' => $style, 'skin' => $skin] = $this->retrieveValueFromUser($user);
164 } else {
165 $style = $this->style_definition->getSystemStylesConf()->getDefaultStyleId();
166 $skin = $this->style_definition->getSystemStylesConf()->getDefaultSkinId();
167 }
168 return "{$skin}:{$style}";
169 }
170}
Builds data types.
Definition: Factory.php:36
readonly ilStyleDefinition $style_definition
Definition: Style.php:33
getDefaultValueForDisplay(Language $lng, \ilSetting $settings)
Definition: Style.php:97
isAvailable()
If this function returns false the setting will not be shown, even if it's PropertyAttributes would a...
Definition: Style.php:46
getLegacyInput(Language $lng, \ilSetting $settings, ?\ilObjUser $user=null)
You don't need to add a post_var to the input as the User will handle this for you,...
Definition: Style.php:84
hasUserPersonalizedSetting(\ilSetting $settings, \ilObjUser $user)
Definition: Style.php:106
buildStyleIdFromUserOrDefault(?\ilObjUser $user)
Definition: Style.php:159
persistUserInput(\ilObjUser $user, mixed $input)
Definition: Style.php:116
getInput(FieldFactory $field_factory, Language $lng, Refinery $refinery, \ilSetting $settings, ?\ilObjUser $user=null)
Definition: Style.php:66
retrieveValueFromUser(\ilObjUser $user)
Definition: Style.php:133
This class represents a property in a property form.
User class.
setPref(string $a_keyword, ?string $a_value)
getPref(string $a_keyword)
ILIAS Setting Class.
static _lookupActivatedStyle(string $a_skin, string $a_style)
lookup if a style is activated
This is what a factory for input fields looks like.
Definition: Factory.php:31
This describes commonalities between all inputs.
Definition: Input.php:47
global $lng
Definition: privfeed.php:31
if(!file_exists('../ilias.ini.php'))
global $DIC
Definition: shib_login.php:26