ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
TimeZone.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
29use ILIAS\Refinery\Factory as Refinery;
30
32{
33 public function getIdentifier(): string
34 {
35 return 'timezone';
36 }
37
38 public function isAvailable(): bool
39 {
40 return true;
41 }
42
43 public function getLabel(Language $lng): string
44 {
45 return $lng->txt('cal_user_timezone');
46 }
47
49 {
50 return AvailablePages::MainSettings;
51 }
52
53 public function getSection(): AvailableSections
54 {
55 return AvailableSections::DateTime;
56 }
57
58 public function getInput(
59 FieldFactory $field_factory,
62 \ilSetting $settings,
63 ?\ilObjUser $user = null
64 ): Input {
65 $lng->loadLanguageModule('dateplaner');
66 return $field_factory->select(
67 $lng->txt('cal_user_timezone'),
69 $lng->txt('cal_timezone_info')
70 )->withValue(
71 $user !== null
72 ? $this->retrieveValueFromUser($user)
73 : \ilCalendarSettings::_getInstance()->getDefaultTimeZone()
74 );
75 }
76
77 public function getLegacyInput(
79 \ilSetting $settings,
80 ?\ilObjUser $user = null
82 $lng->loadLanguageModule('dateplaner');
83 $input = new \ilSelectInputGUI($lng->txt('cal_user_timezone'));
84 $input->setOptions(\ilCalendarUtil::_getShortTimeZoneList());
85 $input->setInfo($lng->txt('cal_timezone_info'));
86 $input->setValue(
87 $user !== null
88 ? $this->retrieveValueFromUser($user)
89 : \ilCalendarSettings::_getInstance()->getDefaultTimeZone()
90 );
91 return $input;
92 }
93
96 \ilSetting $settings
97 ): string {
98 return \ilCalendarUtil::_getShortTimeZoneList()[\ilCalendarSettings::_getInstance()->getDefaultTimeZone()];
99 }
100
102 \ilSetting $settings,
103 \ilObjUser $user
104 ): bool {
105 return $this->retrieveValueFromUser($user) !== \ilCalendarSettings::_getInstance()->getDefaultTimeZone();
106 }
107
108 public function persistUserInput(
109 \ilObjUser $user,
110 mixed $input
111 ): \ilObjUser {
112 $calendar_settings = \ilCalendarUserSettings::_getInstance($user->getId());
113 $calendar_settings->setTimeZone(
114 $input !== null ? $input : \ilCalendarSettings::_getInstance()->getDefaultTimeZone()
115 );
116 $calendar_settings->save();
117 return $user;
118 }
119
120 public function retrieveValueFromUser(\ilObjUser $user): string
121 {
122 return $user->getTimeZone();
123 }
124}
retrieveValueFromUser(\ilObjUser $user)
Definition: TimeZone.php:120
hasUserPersonalizedSetting(\ilSetting $settings, \ilObjUser $user)
Definition: TimeZone.php:101
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: TimeZone.php:77
getDefaultValueForDisplay(Language $lng, \ilSetting $settings)
Definition: TimeZone.php:94
getInput(FieldFactory $field_factory, Language $lng, Refinery $refinery, \ilSetting $settings, ?\ilObjUser $user=null)
Definition: TimeZone.php:58
isAvailable()
If this function returns false the setting will not be shown, even if it's PropertyAttributes would a...
Definition: TimeZone.php:38
persistUserInput(\ilObjUser $user, mixed $input)
Definition: TimeZone.php:108
Builds data types.
Definition: Factory.php:36
Stores all calendar relevant settings.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getShortTimeZoneList()
get short timezone list
This class represents a property in a property form.
User class.
ILIAS Setting Class.
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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