1 | <?php |
||
40 | class ViewController extends Controller { |
||
41 | |||
42 | /** |
||
43 | * @var IConfig |
||
44 | */ |
||
45 | private $config; |
||
46 | |||
47 | /** |
||
48 | * @var IUserSession |
||
49 | */ |
||
50 | private $userSession; |
||
51 | |||
52 | /** |
||
53 | 8 | * @var IMailer |
|
54 | */ |
||
55 | 8 | private $mailer; |
|
56 | 8 | ||
57 | 8 | /** |
|
58 | 8 | * @var L10N |
|
59 | */ |
||
60 | private $l10n; |
||
61 | |||
62 | /** |
||
63 | * @var Defaults |
||
64 | */ |
||
65 | private $defaults; |
||
66 | 4 | ||
67 | 4 | /** |
|
68 | * @param string $appName |
||
69 | 4 | * @param IRequest $request an instance of the request |
|
70 | 4 | * @param IUserSession $userSession |
|
71 | 2 | * @param IConfig $config |
|
72 | * @param IMailer $mailer |
||
73 | * @param L10N $l10N |
||
74 | 2 | * @param Defaults $defaults |
|
75 | 2 | */ |
|
76 | 2 | public function __construct($appName, IRequest $request, |
|
85 | 2 | ||
86 | 2 | /** |
|
87 | * @NoAdminRequired |
||
88 | 2 | * @NoCSRFRequired |
|
89 | * |
||
90 | * @return TemplateResponse |
||
91 | */ |
||
92 | public function index() { |
||
93 | $runningOn = $this->config->getSystemValue('version'); |
||
94 | $runningOnServer91OrLater = version_compare($runningOn, '9.1', '>='); |
||
95 | |||
96 | $supportsClass = $runningOnServer91OrLater; |
||
97 | 4 | $assetPipelineBroken = !$runningOnServer91OrLater; |
|
98 | 4 | ||
99 | 2 | $isAssetPipelineEnabled = $this->config->getSystemValue('asset-pipeline.enabled', false); |
|
100 | if ($isAssetPipelineEnabled && $assetPipelineBroken) { |
||
101 | return new TemplateResponse('calendar', 'main-asset-pipeline-unsupported'); |
||
102 | 2 | } |
|
103 | |||
104 | 2 | $user = $this->userSession->getUser(); |
|
105 | 2 | $userId = $user->getUID(); |
|
106 | 2 | $emailAddress = $user->getEMailAddress(); |
|
107 | |||
108 | $appVersion = $this->config->getAppValue($this->appName, 'installed_version'); |
||
109 | $defaultView = $this->config->getUserValue($userId, $this->appName, 'currentView', 'month'); |
||
110 | $skipPopover = $this->config->getUserValue($userId, $this->appName, 'skipPopover', 'no'); |
||
111 | |||
112 | return new TemplateResponse('calendar', 'main', [ |
||
113 | 'appVersion' => $appVersion, |
||
114 | 'defaultView' => $defaultView, |
||
115 | 'emailAddress' => $emailAddress, |
||
116 | 'skipPopover' => $skipPopover, |
||
117 | 2 | 'supportsClass' => $supportsClass, |
|
118 | 2 | 'isPublic' => false, |
|
119 | ]); |
||
120 | } |
||
121 | |||
122 | /** |
||
123 | * @PublicPage |
||
124 | * @NoCSRFRequired |
||
125 | * |
||
126 | * @return TemplateResponse |
||
127 | */ |
||
128 | public function publicIndex() { |
||
156 | |||
157 | /** |
||
158 | * @NoAdminRequired |
||
159 | * |
||
160 | * @param string $id |
||
161 | * @return NotFoundResponse|DataDisplayResponse |
||
162 | */ |
||
163 | public function getTimezone($id) { |
||
174 | |||
175 | |||
176 | /** |
||
177 | * @NoAdminRequired |
||
178 | * @NoCSRFRequired |
||
179 | * @PublicPage |
||
180 | * |
||
181 | * @param $region |
||
182 | * @param $city |
||
183 | * @return DataDisplayResponse |
||
184 | */ |
||
185 | public function getTimezoneWithRegion($region, $city) { |
||
188 | |||
189 | |||
190 | /** |
||
191 | * @NoAdminRequired |
||
192 | * @PublicPage |
||
193 | * @NoCSRFRequired |
||
194 | * |
||
195 | * @param $region |
||
196 | * @param $subregion |
||
197 | * @param $city |
||
198 | * @return DataDisplayResponse |
||
199 | */ |
||
200 | public function getTimezoneWithSubRegion($region, $subregion, $city) { |
||
203 | |||
204 | |||
205 | /** |
||
206 | * get a list of default timezones |
||
207 | * |
||
208 | * @return array |
||
209 | */ |
||
210 | private function getTimezoneList() { |
||
211 | $allFiles = scandir(__DIR__ . '/../timezones/'); |
||
212 | |||
213 | return array_values(array_filter($allFiles, function($file) { |
||
214 | return (substr($file, -4) === '.ics'); |
||
215 | })); |
||
216 | } |
||
217 | |||
218 | /** |
||
219 | * @param string $to |
||
220 | * @param string $url |
||
221 | * @param string $name |
||
222 | * @return JSONResponse |
||
223 | * @NoAdminRequired |
||
224 | */ |
||
225 | public function sendEmailPublicLink($to, $url, $name) { |
||
237 | |||
238 | /** |
||
239 | * @param string $target |
||
240 | * @param string $subject |
||
241 | * @param string $body |
||
242 | * @param boolean $useHTML |
||
243 | * @return JSONResponse |
||
244 | * |
||
245 | * TODO : This should be moved to a Tools class |
||
246 | * |
||
247 | */ |
||
248 | private function sendEmail($target, $subject, $body, $useHTML = false) { |
||
270 | } |
||
271 |