Passed
Push — master ( fa28f5...070d6c )
by Jens
02:40
created

CmsComponent::imagesRouting()   D

Complexity

Conditions 9
Paths 7

Size

Total Lines 28
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 9
eloc 24
c 1
b 0
f 0
nc 7
nop 2
dl 0
loc 28
rs 4.909
1
<?php
2
namespace library\components
3
{
4
5
	use library\crypt\Crypt;
6
	use library\storage\Storage;
7
8
	class CmsComponent extends BaseComponent
9
	{
10
		/**
11
		 * @var \library\storage\Storage
12
		 */
13
		protected $storage;
14
		/**
15
		 * @var string
16
		 */
17
		protected $invalidCredentialsMsg = 'Invalid username / password combination';
18
19
		/**
20
		 * @var null|string
21
         */
22
		protected $subTemplate = null;
23
24
		/**
25
		 * @param \library\storage\Storage $storage
26
		 *
27
		 * @return void
28
		 */
29
		public function run(Storage $storage)
30
		{
31
			$this->parameters['mainNavClass'] = 'default';
32
			$this->storage = $storage;
33
34
			$remoteAddress = $_SERVER['REMOTE_ADDR'];
35
			$this->checkWhiteList($remoteAddress);
36
			$this->checkBlackList($remoteAddress);
37
38
			$this->checkLogin();
39
40
			$this->parameters['userRights'] = $_SESSION['cloudcontrol']->rights;
41
42
			$this->routing();
43
		}
44
45
		/**
46
		 * See if a user is logged or wants to log in and
47
		 * takes appropriate actions.
48
		 *
49
		 * @throws \Exception
50
		 */
51
		protected function checkLogin()
52
		{
53
			$request = $this->request;
54
			
55
			if (!isset($_SESSION['cloudcontrol'])) {
56
				if (isset($request::$post['username'], $request::$post['password'])) {
57
					$user = $this->storage->getUserByUsername($request::$post['username']);
58
					$crypt = new Crypt();
59
					if (empty($user)) {
60
						$crypt->encrypt($request::$post['password'], 16); // Buy time, to avoid brute forcing
61
						$this->parameters['errorMsg'] = $this->invalidCredentialsMsg;
62
						$this->showLogin();
63
					} else {
64
						$salt = $user->salt;
65
						$password = $user->password;
66
						
67
						$passwordCorrect = $crypt->compare($request::$post['password'], $password, $salt);
68
						
69
						if ($passwordCorrect) {
70
							$_SESSION['cloudcontrol'] = $user;
71
						} else {
72
							$this->parameters['errorMsg'] = $this->invalidCredentialsMsg;
73
							$this->showLogin();
74
						}
75
					}
76
				} else {
77
					$this->showLogin();
78
				}
79
			}
80
		}
81
82
		/**
83
		 * Overrides normal behaviour and only renders the
84
		 * login screen
85
		 *
86
		 * @throws \Exception
87
		 */
88
		protected function showLogin()
89
		{
90
			$loginTemplatePath = 'cms/login';
91
			$this->renderTemplate($loginTemplatePath);
92
			ob_end_flush();
93
			exit;
94
		}
95
96
		/**
97
		 * As an exception, to keep the initial file structure simple
98
		 * the cms implements it's own routing, apart from the regular sitemap functionality
99
		 *
100
		 * @throws \Exception
101
		 */
102
		protected function routing()
103
		{
104
			$relativeCmsUri = $this->getRelativeCmsUri($this->request);
105
106
			$userRights = $_SESSION['cloudcontrol']->rights;
107
108
			if ($relativeCmsUri == '' || $relativeCmsUri == '/') {
109
				$this->subTemplate = 'cms/dashboard';
110
			}
111
112
			$this->logOffRouting($this->request, $relativeCmsUri);
113
114
			$this->apiRouting($relativeCmsUri);
115
116
			if (in_array('documents', $userRights)) {
117
				$this->documentsRouting($this->request, $relativeCmsUri);
118
			}
119
120
			if (in_array('sitemap', $userRights)) {
121
				$this->sitemapRouting($this->request, $relativeCmsUri);
122
			}
123
124
			if (in_array('images', $userRights)) {
125
				$this->imagesRouting($this->request, $relativeCmsUri);
126
			}
127
128
			if (in_array('files', $userRights)) {
129
				$this->filesRouting($this->request, $relativeCmsUri);
130
			}
131
132
			if (in_array('configuration', $userRights)) {
133
				$this->configurationRouting($this->request, $relativeCmsUri);
134
			}
135
136
			if ($this->subTemplate !== null) {
137
				$this->parameters['body'] = $this->renderTemplate($this->subTemplate);
138
			}			
139
		}
140
141
		/**
142
		 * @param $remoteAddress
143
		 * @throws \Exception
144
         */
145 View Code Duplication
		private function checkWhiteList($remoteAddress)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
146
		{
147
			if (isset($this->parameters['whitelistIps'])) {
148
				$whitelistIps = explode(',', $this->parameters['whitelistIps']);
149
				$whitelistIps = array_map("trim", $whitelistIps);
150
				if (!in_array($remoteAddress, $whitelistIps)) {
151
					throw new \Exception('Ip address ' . $remoteAddress . ' is not on whitelist');
152
				}
153
			}
154
		}
155
156
		/**
157
		 * @param $remoteAddress
158
		 * @throws \Exception
159
         */
160 View Code Duplication
		private function checkBlackList($remoteAddress)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
161
		{
162
			if (isset($this->parameters['blacklistIps'])) {
163
				$blacklistIps = explode(',', $this->parameters['blacklistIps']);
164
				$blacklistIps = array_map("trim", $blacklistIps);
165
				if (in_array($remoteAddress, $blacklistIps)) {
166
					throw new \Exception('Ip address ' . $remoteAddress . ' is on blacklist');
167
				}
168
			}
169
		}
170
171
		/**
172
		 * @param $request
173
		 * @return mixed|string
174
         */
175
		private function getRelativeCmsUri($request)
176
		{
177
			// TODO Use regex match parameter instead of calculating relative uri
178
			$pos = strpos($request::$relativeUri, $this->parameters['cmsPrefix']);
179
			$relativeCmsUri = '/';
180
			if ($pos !== false) {
181
				$relativeCmsUri = substr_replace($request::$relativeUri, '', $pos, strlen($this->parameters['cmsPrefix']));
182
			}
183
			return $relativeCmsUri;
184
		}
185
186
		/**
187
		 * @param $request
188
		 * @param $relativeCmsUri
189
         */
190
		private function documentsRouting($request, $relativeCmsUri)
191
		{
192
			if ($relativeCmsUri == '/documents') {
193
				$this->subTemplate = 'cms/documents';
194
				$this->parameters['documents'] = $this->storage->getDocuments();
195
				$this->parameters['mainNavClass'] = 'documents';
196
			}
197
			$this->documentRouting($request, $relativeCmsUri);
198
			$this->folderRouting($request, $relativeCmsUri);
199
		}
200
201
		/**
202
		 * @param $request
203
		 * @param $relativeCmsUri
204
         */
205
		private function sitemapRouting($request, $relativeCmsUri)
206
		{
207
			if ($relativeCmsUri == '/sitemap') {
208
				$this->subTemplate = 'cms/sitemap';
209
				if (isset($request::$post['save'])) {
210
					$this->storage->saveSitemap($request::$post);
211
				}
212
				$this->parameters['mainNavClass'] = 'sitemap';
213
				$this->parameters['sitemap'] = $this->storage->getSitemap();
214
			} elseif ($relativeCmsUri == '/sitemap/new') {
215
				$this->subTemplate = 'cms/sitemap/form';
216
				$this->parameters['mainNavClass'] = 'sitemap';
217 View Code Duplication
				if (isset($request::$post['title'], $request::$post['template'], $request::$post['component'])) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
218
					$this->storage->addSitemapItem($request::$post);
219
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/sitemap');
220
					exit;
221
				}
222
			} elseif ($relativeCmsUri == '/sitemap/edit' && isset($request::$get['slug'])) {
223
				$this->subTemplate = 'cms/sitemap/form';
224
				$this->parameters['mainNavClass'] = 'sitemap';
225
				$sitemapItem = $this->storage->getSitemapItemBySlug($request::$get['slug']);
226 View Code Duplication
				if (isset($request::$post['title'], $request::$post['template'], $request::$post['component'])) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
227
					$this->storage->saveSitemapItem($request::$get['slug'], $request::$post);
228
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/sitemap');
229
					exit;
230
				}
231
				$this->parameters['sitemapItem'] = $sitemapItem;
232
			} elseif ($relativeCmsUri == '/sitemap/delete' && isset($request::$get['slug'])) {
233
				$this->storage->deleteSitemapItemBySlug($request::$get['slug']);
234
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/sitemap');
235
				exit;
236
			}
237
		}
238
239
		/**
240
		 * @param $request
241
		 * @param $relativeCmsUri
242
         */
243
		private function imagesRouting($request, $relativeCmsUri)
244
		{
245
			if ($relativeCmsUri == '/images') {
246
				$this->subTemplate = 'cms/images';
247
				$this->parameters['mainNavClass'] = 'images';
248
				$this->parameters['images'] = $this->storage->getImages();
249
				$this->parameters['smallestImage'] = $this->storage->getSmallestImageSet()->slug;
250
			} elseif ($relativeCmsUri == '/images.json') {
251
				header('Content-type:application/json');
252
				die(json_encode($this->storage->getImages()));
253
			} elseif ($relativeCmsUri == '/images/new') {
254
				$this->subTemplate = 'cms/images/form';
255
				$this->parameters['mainNavClass'] = 'images';
256
				if (isset($_FILES['file'])) {
257
					$this->storage->addImage($_FILES['file']);
258
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/images');
259
					exit;
260
				}
261
			} elseif ($relativeCmsUri == '/images/delete' && isset($request::$get['file'])) {
262
				$this->storage->deleteImageByName($request::$get['file']);
263
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/images');
264
				exit;
265
			} elseif ($relativeCmsUri == '/images/show' && isset($request::$get['file'])) {
266
				$this->subTemplate = 'cms/images/show';
267
				$this->parameters['mainNavClass'] = 'images';
268
				$this->parameters['image'] = $this->storage->getImageByName($request::$get['file']);
269
			}
270
		}
271
272
		/**
273
		 * @param $relativeCmsUri
274
         */
275
		private function apiRouting($relativeCmsUri)
276
		{
277
			if ($relativeCmsUri == '/images.json') {
278
				header('Content-type:application/json');
279
				die(json_encode($this->storage->getImages()));
280
			} elseif ($relativeCmsUri == '/files.json') {
281
				header('Content-type:application/json');
282
				die(json_encode($this->storage->getFiles()));
283
			} elseif ($relativeCmsUri == '/documents.json') {
284
				header('Content-type:application/json');
285
				die(json_encode($this->storage->getDocuments()));
286
			}
287
		}
288
289
		/**
290
		 * @param $request
291
		 * @param $relativeCmsUri
292
         */
293
		private function filesRouting($request, $relativeCmsUri)
294
		{
295
			if ($relativeCmsUri == '/files') {
296
				$this->subTemplate = 'cms/files';
297
				$this->parameters['mainNavClass'] = 'files';
298
				$this->parameters['files'] = $this->storage->getFiles();
299
			} elseif ($relativeCmsUri == '/files/new') {
300
				$this->subTemplate = 'cms/files/form';
301
				$this->parameters['mainNavClass'] = 'files';
302
				if (isset($_FILES['file'])) {
303
					$this->storage->addFile($_FILES['file']);
304
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/files');
305
					exit;
306
				}
307
			} elseif ($relativeCmsUri == '/files/get' && isset($request::$get['file'])) {
308
				$this->downloadFile($request::$get['file']);
309
			} elseif ($relativeCmsUri == '/files/delete' && isset($request::$get['file'])) {
310
				$this->storage->deleteFileByName($request::$get['file']);
311
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/files');
312
				exit;
313
			}
314
		}
315
316
		/**
317
		 * @param $slug
318
         */
319
		private function downloadFile($slug)
320
		{
321
			$file = $this->storage->getFileByName($slug);
322
			$path = realpath(__DIR__ . '/../../www/files/');
323
			$quoted = sprintf('"%s"', addcslashes(basename($path . '/' . $file->file), '"\\'));
324
			$size   = filesize($path . '/' . $file->file);
325
326
			header('Content-Description: File Transfer');
327
			header('Content-Type: ' . $file->type);
328
			header('Content-Disposition: attachment; filename=' . $quoted);
329
			header('Content-Transfer-Encoding: binary');
330
			header('Connection: Keep-Alive');
331
			header('Expires: 0');
332
			header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
333
			header('Pragma: public');
334
			header('Content-Length: ' . $size);
335
336
			readfile($path . '/' . $file->file);
337
			exit;
338
		}
339
340
		/**
341
		 * @param $request
342
		 * @param $relativeCmsUri
343
         */
344
		private function configurationRouting($request, $relativeCmsUri)
345
		{
346
			if ($relativeCmsUri == '/configuration') {
347
				$this->subTemplate = 'cms/configuration';
348
				$this->parameters['mainNavClass'] = 'configuration';
349
			}
350
351
			$this->usersRouting($request, $relativeCmsUri);
352
			$this->documentTypesRouting($request, $relativeCmsUri);
353
			$this->bricksRouting($request, $relativeCmsUri);
354
			$this->imageSetRouting($request, $relativeCmsUri);
355
			$this->applicationComponentRouting($request, $relativeCmsUri);
356
		}
357
358
		/**
359
		 * @param $request
360
		 * @param $relativeCmsUri
361
		 * @throws \Exception
362
         */
363
		private function documentRouting($request, $relativeCmsUri)
364
		{
365
			if ($relativeCmsUri == '/documents/new-document' && isset($request::$get['path'])) {
366
				$this->subTemplate = 'cms/documents/document-form';
367
				$this->parameters['mainNavClass'] = 'documents';
368
				$this->parameters['smallestImage'] = $this->storage->getSmallestImageSet()->slug;
369
				if (isset($request::$get['documentType'])) {
370
					if (isset($request::$post['title'], $request::$get['documentType'], $request::$get['path'])) {
371
						$this->storage->addDocument($request::$post);
372
						header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/documents');
373
						exit;
374
					}
375
					$this->parameters['documentType'] = $this->storage->getDocumentTypeBySlug($request::$get['documentType'], true);
376
					$this->parameters['bricks'] = $this->storage->getBricks();
377
				} else {
378
					$this->parameters['documentTypes'] = $this->storage->getDocumentTypes();
379
				}
380
			} elseif ($relativeCmsUri == '/documents/edit-document' && isset($request::$get['slug'])) {
381
				$this->subTemplate = 'cms/documents/document-form';
382
				$this->parameters['mainNavClass'] = 'documents';
383
				$this->parameters['smallestImage'] = $this->storage->getSmallestImageSet()->slug;
384
				if (isset($request::$post['title'], $request::$get['slug'])) {
385
					$this->storage->saveDocument($request::$post);
386
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/documents');
387
					exit;
388
				}
389
				$this->parameters['document'] = $this->storage->getDocumentBySlug($request::$get['slug']);
390
				$request::$get['path'] = $request::$get['slug'];
391
				$this->parameters['documentType'] = $this->storage->getDocumentTypeBySlug($this->parameters['document']->documentTypeSlug, true);
392
				$this->parameters['bricks'] = $this->storage->getBricks();
393
			} elseif ($relativeCmsUri == '/documents/get-brick' && isset($request::$get['slug'])) {
394
				$this->parameters['smallestImage'] = $this->storage->getSmallestImageSet()->slug;
395
				$this->subTemplate = 'cms/documents/brick';
396
				$this->parameters['brick'] = $this->storage->getBrickBySlug($request::$get['slug']);
397
				$this->parameters['static'] = $request::$get['static'] === 'true';
398
				if (isset($request::$get['myBrickSlug'])) {
399
					$this->parameters['myBrickSlug'] = $request::$get['myBrickSlug'];
400
				}
401
				$result = new \stdClass();
402
				$result->body = $this->renderTemplate('cms/documents/brick');
403
				$result->rteList = isset($GLOBALS['rteList']) ? $GLOBALS['rteList'] : array();
404
				ob_clean();
405
				header('Content-type: application/json');
406
				die(json_encode($result));
407
			} else if ($relativeCmsUri == '/documents/delete-document' && isset($request::$get['slug'])) {
408
				$this->storage->deleteDocumentBySlug($request::$get['slug']);
409
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/documents');
410
				exit;
411
			}
412
		}
413
414
		/**
415
		 * @param $request
416
		 * @param $relativeCmsUri
417
         */
418
		private function folderRouting($request, $relativeCmsUri)
419
		{
420
			if ($relativeCmsUri == '/documents/new-folder' && isset($request::$get['path'])) {
421
				$this->subTemplate = 'cms/documents/folder-form';
422
				$this->parameters['mainNavClass'] = 'documents';
423
				if (isset($request::$post['title'], $request::$post['path'])) {
424
					$this->storage->addDocumentFolder($request::$post);
425
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/documents');
426
					exit;
427
				}
428
			} else if ($relativeCmsUri == '/documents/edit-folder' && isset($request::$get['slug'])) {
429
430
				$this->subTemplate = 'cms/documents/folder-form';
431
				$folder = $this->storage->getDocumentFolderBySlug($request::$get['slug']);
432
433
				$path = $request::$get['slug'];
434
				$path = explode('/', $path);
435
				array_pop($path);
436
				$path = implode('/', $path);
437
438
				$request::$get['path'] = '/' . $path;
439
440
				if (isset($request::$post['title'], $request::$post['content'])) {
441
					$this->storage->saveDocumentFolder($request::$post);
442
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/documents');
443
					exit;
444
				}
445
446
				$this->parameters['mainNavClass'] = 'documents';
447
				$this->parameters['folder'] = $folder;
448
			} else if ($relativeCmsUri == '/documents/delete-folder' && isset($request::$get['slug'])) {
449
				$this->storage->deleteDocumentFolderBySlug($request::$get['slug']);
450
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/documents');
451
				exit;
452
			}
453
		}
454
455
		/**
456
		 * @param $request
457
		 * @param $relativeCmsUri
458
         */
459 View Code Duplication
		private function usersRouting($request, $relativeCmsUri)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
460
		{
461
			if ($relativeCmsUri == '/configuration/users') {
462
				$this->subTemplate = 'cms/configuration/users';
463
				$this->parameters['mainNavClass'] = 'configuration';
464
				$this->parameters['users'] = $this->storage->getUsers();
465
			} elseif ($relativeCmsUri == '/configuration/users/new') {
466
				$this->subTemplate = 'cms/configuration/users-form';
467
				$this->parameters['mainNavClass'] = 'configuration';
468
				if (isset($_POST['username'])) {
469
					$this->storage->addUser($request::$post);
470
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/users');
471
					exit;
472
				}
473
			} elseif ($relativeCmsUri == '/configuration/users/delete' && isset($request::$get['slug'])) {
474
				$this->storage->deleteUserBySlug($request::$get['slug']);
475
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/users');
476
				exit;
477
			} elseif ($relativeCmsUri == '/configuration/users/edit' && isset($request::$get['slug'])) {
478
				$this->subTemplate = 'cms/configuration/users-form';
479
				$this->parameters['mainNavClass'] = 'configuration';
480
				$this->parameters['user'] = $this->storage->getUserBySlug($request::$get['slug']);
481
				if (isset($_POST['username'])) {
482
					$this->storage->saveUser($request::$get['slug'], $request::$post);
483
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/users');
484
					exit;
485
				}
486
			}
487
		}
488
489
		/**
490
		 * @param $request
491
		 * @param $relativeCmsUri
492
         */
493
		private function documentTypesRouting($request, $relativeCmsUri)
494
		{
495
			if ($relativeCmsUri == '/configuration/document-types') {
496
				$this->subTemplate = 'cms/configuration/document-types';
497
				$this->parameters['mainNavClass'] = 'configuration';
498
				$this->parameters['documentTypes'] = $this->storage->getDocumentTypes();
499
			} elseif ($relativeCmsUri == '/configuration/document-types/new') {
500
				$this->subTemplate = 'cms/configuration/document-types-form';
501
				$this->parameters['mainNavClass'] = 'configuration';
502
				$bricks = $this->storage->getBricks();
503
				if (isset($request::$post['title'])) {
504
					$this->storage->addDocumentType($request::$post);
505
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/document-types');
506
					exit;
507
				}
508
				$this->parameters['bricks'] = $bricks;
509
			} elseif ($relativeCmsUri == '/configuration/document-types/edit' && isset($request::$get['slug'])) {
510
				$this->subTemplate = 'cms/configuration/document-types-form';
511
				$this->parameters['mainNavClass'] = 'configuration';
512
				$documentType = $this->storage->getDocumentTypeBySlug($request::$get['slug'], false);
513
				$bricks = $this->storage->getBricks();
514
				if (isset($request::$post['title'])) {
515
					$this->storage->saveDocumentType($request::$get['slug'], $request::$post);
516
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/document-types');
517
					exit;
518
				}
519
				$this->parameters['documentType'] = $documentType;
520
				$this->parameters['bricks'] = $bricks;
521
			} elseif ($relativeCmsUri == '/configuration/document-types/delete' && isset($request::$get['slug'])) {
522
				$this->storage->deleteDocumentTypeBySlug($request::$get['slug']);
523
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/document-types');
524
				exit;
525
			}
526
		}
527
528
		/**
529
		 * @param $request
530
		 * @param $relativeCmsUri
531
         */
532
		private function bricksRouting($request, $relativeCmsUri)
533
		{
534
			if ($relativeCmsUri == '/configuration/bricks') {
535
				$this->subTemplate = 'cms/configuration/bricks';
536
				$this->parameters['mainNavClass'] = 'configuration';
537
				$this->parameters['bricks'] = $this->storage->getBricks();
538
			} elseif ($relativeCmsUri == '/configuration/bricks/new') {
539
				$this->subTemplate = 'cms/configuration/bricks-form';
540
				$this->parameters['mainNavClass'] = 'configuration';
541
				if (isset($request::$post['title'])) {
542
					$this->storage->addBrick($request::$post);
543
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/bricks');
544
					exit;
545
				}
546
			} elseif ($relativeCmsUri == '/configuration/bricks/edit' && isset($request::$get['slug'])) {
547
				$this->subTemplate = 'cms/configuration/bricks-form';
548
				$this->parameters['mainNavClass'] = 'configuration';
549
				$brick = $this->storage->getBrickBySlug($request::$get['slug']);
550
				if (isset($request::$post['title'])) {
551
					$this->storage->saveBrick($request::$get['slug'], $request::$post);
552
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/bricks');
553
					exit;
554
				}
555
				$this->parameters['brick'] = $brick;
556
			} elseif ($relativeCmsUri == '/configuration/bricks/delete' && isset($request::$get['slug'])) {
557
				$this->storage->deleteBrickBySlug($request::$get['slug']);
558
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/bricks');
559
				exit;
560
			} elseif ($relativeCmsUri == '/configuration/image-set') {
561
				$this->subTemplate = 'cms/configuration/image-set';
562
				$this->parameters['mainNavClass'] = 'configuration';
563
				$this->parameters['imageSet'] = $this->storage->getImageSet();
564
			}
565
		}
566
567
		/**
568
		 * @param $request
569
		 * @param $relativeCmsUri
570
         */
571 View Code Duplication
		private function imageSetRouting($request, $relativeCmsUri)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
572
		{
573
			if ($relativeCmsUri == '/configuration/image-set') {
574
				$this->subTemplate = 'cms/configuration/image-set';
575
				$this->parameters['mainNavClass'] = 'configuration';
576
				$this->parameters['imageSet'] = $this->storage->getImageSet();
577
			} elseif ($relativeCmsUri == '/configuration/image-set/edit' && isset($request::$get['slug'])) {
578
				$this->subTemplate = 'cms/configuration/image-set-form';
579
				$this->parameters['mainNavClass'] = 'configuration';
580
				$imageSet = $this->storage->getImageSetBySlug($request::$get['slug']);
581
				if (isset($request::$post['title'])) {
582
					$this->storage->saveImageSet($request::$get['slug'], $request::$post);
583
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/image-set');
584
					exit;
585
				}
586
				$this->parameters['imageSet'] = $imageSet;
587
			} elseif ($relativeCmsUri == '/configuration/image-set/new') {
588
				$this->subTemplate = 'cms/configuration/image-set-form';
589
				$this->parameters['mainNavClass'] = 'configuration';
590
				if (isset($request::$post['title'])) {
591
					$this->storage->addImageSet($request::$post);
592
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/image-set');
593
					exit;
594
				}
595
			} elseif ($relativeCmsUri == '/configuration/image-set/delete' && isset($request::$get['slug'])) {
596
				$this->storage->deleteImageSetBySlug($request::$get['slug']);
597
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/image-set');
598
				exit;
599
			}
600
		}
601
602
		/**
603
		 * @param $request
604
		 * @param $relativeCmsUri
605
         */
606 View Code Duplication
		private function applicationComponentRouting($request, $relativeCmsUri)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
607
		{
608
			if ($relativeCmsUri == '/configuration/application-components') {
609
				$this->subTemplate = 'cms/configuration/application-components';
610
				$this->parameters['mainNavClass'] = 'configuration';
611
				$this->parameters['applicationComponents'] = $this->storage->getApplicationComponents();
612
			} elseif ($relativeCmsUri == '/configuration/application-components/new') {
613
				$this->subTemplate = 'cms/configuration/application-components-form';
614
				$this->parameters['mainNavClass'] = 'configuration';
615
				if (isset($request::$post['title'])) {
616
					$this->storage->addApplicationComponent($request::$post);
617
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/application-components');
618
					exit;
619
				}
620
			} elseif ($relativeCmsUri == '/configuration/application-components/edit' && isset($request::$get['slug'])) {
621
				$this->subTemplate = 'cms/configuration/application-components-form';
622
				$this->parameters['mainNavClass'] = 'configuration';
623
				$applicationComponent = $this->storage->getApplicationComponentBySlug($request::$get['slug']);
624
				if (isset($request::$post['title'])) {
625
					$this->storage->saveApplicationComponent($request::$get['slug'], $request::$post);
626
					header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/application-components');
627
					exit;
628
				}
629
				$this->parameters['applicationComponent'] = $applicationComponent;
630
			} elseif ($relativeCmsUri == '/configuration/application-components/delete' && isset($request::$get['slug'])) {
631
				$this->storage->deleteApplicationComponentBySlug($request::$get['slug']);
632
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix'] . '/configuration/application-components');
633
				exit;
634
			}
635
		}
636
637
		private function logOffRouting($request, $relativeCmsUri)
638
		{
639
			if ($relativeCmsUri == '/log-off') {
640
				$_SESSION['cloudcontrol'] = null;
641
				unset($_SESSION['cloudcontrol']);
642
				header('Location: ' . $request::$subfolders . $this->parameters['cmsPrefix']);
643
				exit;
644
			}
645
		}
646
	}
647
}