ILIAS  trunk Revision v12.0_alpha-1338-g8f7e531aa3c
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 $default_skin = $this->style_definition->getSkin();
102 return "{$default_skin->getName()} / {$default_skin->getDefaultStyle()->getName()}";
103 }
104
106 \ilSetting $settings,
107 \ilObjUser $user
108 ): bool {
109 $system_style_config = $this->style_definition->getSystemStylesConf();
110 ['style' => $user_style, 'skin' => $user_skin] = $this->retrieveValueFromUser($user);
111 return $user_style !== $system_style_config->getDefaultStyleId()
112 || $user_skin !== $system_style_config->getDefaultSkinId();
113 }
114
115 public function persistUserInput(
116 \ilObjUser $user,
117 mixed $input
118 ): \ilObjUser {
119 if ($input === null) {
120 $system_style_config = $this->style_definition->getSystemStylesConf();
121 $user->setPref('style', $system_style_config->getDefaultStyleId());
122 $user->setPref('skin', $system_style_config->getDefaultSkinId());
123 return $user;
124 }
125
126 $sknst = explode(':', $input);
127 $user->setPref('skin', $sknst[0]);
128 $user->setPref('style', $sknst[1]);
129 return $user;
130 }
131
132 public function retrieveValueFromUser(\ilObjUser $user): array
133 {
134 return [
135 'style' => $user->getPref('style'),
136 'skin' => $user->getSkin()
137 ];
138 }
139
140 private function buildStyleOptions(): array
141 {
142 $options = [];
143 foreach ($this->style_definition::getAllSkins() as $skin) {
144 foreach ($skin->getStyles() as $style) {
145 if (
146 !\ilSystemStyleSettings::_lookupActivatedStyle($skin->getId(), $style->getId()) ||
147 $style->isSubstyle()
148 ) {
149 continue;
150 }
151
152 $options[$skin->getId() . ':' . $style->getId()] = $skin->getName() . ' / ' . $style->getName();
153 }
154 }
155 return $options;
156 }
157
159 ?\ilObjUser $user
160 ): string {
161 if ($user !== null) {
162 ['style' => $style, 'skin' => $skin] = $this->retrieveValueFromUser($user);
163 } else {
164 $style = $this->style_definition->getSystemStylesConf()->getDefaultStyleId();
165 $skin = $this->style_definition->getSystemStylesConf()->getDefaultSkinId();
166 }
167 return "{$skin}:{$style}";
168 }
169}
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:105
buildStyleIdFromUserOrDefault(?\ilObjUser $user)
Definition: Style.php:158
persistUserInput(\ilObjUser $user, mixed $input)
Definition: Style.php:115
getInput(FieldFactory $field_factory, Language $lng, Refinery $refinery, \ilSetting $settings, ?\ilObjUser $user=null)
Definition: Style.php:66
retrieveValueFromUser(\ilObjUser $user)
Definition: Style.php:132
This class represents a property in a property form.
User class.
setPref(string $a_keyword, ?string $a_value)
getPref(string $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:26
if(!file_exists('../ilias.ini.php'))
global $DIC
Definition: shib_login.php:26