Passed
Push — develop ( 64b408...917e37 )
by Jens
02:16
created
cloudcontrol/library/components/cms/ImagesRouting.php 2 patches
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -13,38 +13,38 @@
 block discarded – undo
13 13
 class ImagesRouting
14 14
 {
15 15
 
16
-    /**
17
-     * ImagesRouting constructor.
18
-     * @param \library\cc\Request $request
19
-     * @param mixed|string $relativeCmsUri
20
-     * @param CmsComponent $cmsComponent
21
-     */
22
-    public function __construct($request, $relativeCmsUri, $cmsComponent)
23
-    {
24
-        if ($relativeCmsUri == '/images') {
25
-            $cmsComponent->subTemplate = 'cms/images';
26
-            $cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_IMAGES);
27
-            $cmsComponent->setParameter(CmsComponent::PARAMETER_IMAGES, $cmsComponent->storage->getImages());
28
-            $cmsComponent->setParameter(CmsComponent::PARAMETER_SMALLEST_IMAGE, $cmsComponent->storage->getSmallestImageSet()->slug);
29
-        } elseif ($relativeCmsUri == '/images.json') {
30
-            header(CmsComponent::CONTENT_TYPE_APPLICATION_JSON);
31
-            die(json_encode($cmsComponent->storage->getImages()));
32
-        } elseif ($relativeCmsUri == '/images/new') {
33
-            $cmsComponent->subTemplate = 'cms/images/form';
34
-            $cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_IMAGES);
35
-            if (isset($_FILES[CmsComponent::FILES_PARAMETER_FILE])) {
36
-                $cmsComponent->storage->addImage($_FILES[CmsComponent::FILES_PARAMETER_FILE]);
37
-                header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/images');
38
-                exit;
39
-            }
40
-        } elseif ($relativeCmsUri == '/images/delete' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
41
-            $cmsComponent->storage->deleteImageByName($request::$get[CmsComponent::FILES_PARAMETER_FILE]);
42
-            header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/images');
43
-            exit;
44
-        } elseif ($relativeCmsUri == '/images/show' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
45
-            $cmsComponent->subTemplate = 'cms/images/show';
46
-            $cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_IMAGES);
47
-            $cmsComponent->setParameter(CmsComponent::PARAMETER_IMAGE, $cmsComponent->storage->getImageByName($request::$get[CmsComponent::FILES_PARAMETER_FILE]));
48
-        }
49
-    }
16
+	/**
17
+	 * ImagesRouting constructor.
18
+	 * @param \library\cc\Request $request
19
+	 * @param mixed|string $relativeCmsUri
20
+	 * @param CmsComponent $cmsComponent
21
+	 */
22
+	public function __construct($request, $relativeCmsUri, $cmsComponent)
23
+	{
24
+		if ($relativeCmsUri == '/images') {
25
+			$cmsComponent->subTemplate = 'cms/images';
26
+			$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_IMAGES);
27
+			$cmsComponent->setParameter(CmsComponent::PARAMETER_IMAGES, $cmsComponent->storage->getImages());
28
+			$cmsComponent->setParameter(CmsComponent::PARAMETER_SMALLEST_IMAGE, $cmsComponent->storage->getSmallestImageSet()->slug);
29
+		} elseif ($relativeCmsUri == '/images.json') {
30
+			header(CmsComponent::CONTENT_TYPE_APPLICATION_JSON);
31
+			die(json_encode($cmsComponent->storage->getImages()));
32
+		} elseif ($relativeCmsUri == '/images/new') {
33
+			$cmsComponent->subTemplate = 'cms/images/form';
34
+			$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_IMAGES);
35
+			if (isset($_FILES[CmsComponent::FILES_PARAMETER_FILE])) {
36
+				$cmsComponent->storage->addImage($_FILES[CmsComponent::FILES_PARAMETER_FILE]);
37
+				header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/images');
38
+				exit;
39
+			}
40
+		} elseif ($relativeCmsUri == '/images/delete' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
41
+			$cmsComponent->storage->deleteImageByName($request::$get[CmsComponent::FILES_PARAMETER_FILE]);
42
+			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/images');
43
+			exit;
44
+		} elseif ($relativeCmsUri == '/images/show' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
45
+			$cmsComponent->subTemplate = 'cms/images/show';
46
+			$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_IMAGES);
47
+			$cmsComponent->setParameter(CmsComponent::PARAMETER_IMAGE, $cmsComponent->storage->getImageByName($request::$get[CmsComponent::FILES_PARAMETER_FILE]));
48
+		}
49
+	}
50 50
 }
51 51
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -34,12 +34,12 @@
 block discarded – undo
34 34
             $cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_IMAGES);
35 35
             if (isset($_FILES[CmsComponent::FILES_PARAMETER_FILE])) {
36 36
                 $cmsComponent->storage->addImage($_FILES[CmsComponent::FILES_PARAMETER_FILE]);
37
-                header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/images');
37
+                header('Location: '.$request::$subfolders.$cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX).'/images');
38 38
                 exit;
39 39
             }
40 40
         } elseif ($relativeCmsUri == '/images/delete' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
41 41
             $cmsComponent->storage->deleteImageByName($request::$get[CmsComponent::FILES_PARAMETER_FILE]);
42
-            header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/images');
42
+            header('Location: '.$request::$subfolders.$cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX).'/images');
43 43
             exit;
44 44
         } elseif ($relativeCmsUri == '/images/show' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
45 45
             $cmsComponent->subTemplate = 'cms/images/show';
Please login to merge, or discard this patch.
cloudcontrol/library/components/CmsComponent.php 2 patches
Indentation   +550 added lines, -550 removed lines patch added patch discarded remove patch
@@ -1,556 +1,556 @@
 block discarded – undo
1 1
 <?php
2 2
 namespace library\components {
3 3
 
4
-    use library\components\cms\DocumentRouting;
5
-    use library\components\cms\ImagesRouting;
6
-    use library\crypt\Crypt;
7
-    use library\storage\Storage;
8
-
9
-    class CmsComponent extends BaseComponent
10
-    {
11
-        /*
4
+	use library\components\cms\DocumentRouting;
5
+	use library\components\cms\ImagesRouting;
6
+	use library\crypt\Crypt;
7
+	use library\storage\Storage;
8
+
9
+	class CmsComponent extends BaseComponent
10
+	{
11
+		/*
12 12
          * var \library\storage\Storage
13 13
          */
14
-        public $storage;
15
-
16
-        const INVALID_CREDENTIALS_MESSAGE = 'Invalid username / password combination';
17
-
18
-        const MAIN_NAV_CLASS = 'default';
19
-
20
-        const PARAMETER_BLACKLIST_IPS = 'blacklistIps';
21
-        const PARAMETER_BODY = 'body';
22
-        const PARAMETER_BRICK = 'brick';
23
-        const PARAMETER_BRICKS = 'bricks';
24
-        const PARAMETER_CMS_PREFIX = 'cmsPrefix';
25
-        const PARAMETER_DOCUMENT = 'document';
26
-        const PARAMETER_DOCUMENTS = 'documents';
27
-        const PARAMETER_DOCUMENT_TYPE = 'documentType';
28
-        const PARAMETER_DOCUMENT_TYPES = 'documentTypes';
29
-        const PARAMETER_ERROR_MESSAGE = 'errorMsg';
30
-        const PARAMETER_FILES = 'files';
31
-        const PARAMETER_FOLDER = 'folder';
32
-        const PARAMETER_IMAGE = 'image';
33
-        const PARAMETER_IMAGES = 'images';
34
-        const PARAMETER_IMAGE_SET = 'imageSet';
35
-        const PARAMETER_MAIN_NAV_CLASS = 'mainNavClass';
36
-        const PARAMETER_MY_BRICK_SLUG = 'myBrickSlug';
37
-        const PARAMETER_SITEMAP = 'sitemap';
38
-        const PARAMETER_SITEMAP_ITEM = 'sitemapItem';
39
-        const PARAMETER_SMALLEST_IMAGE = 'smallestImage';
40
-        const PARAMETER_STATIC = 'static';
41
-        const PARAMETER_USER = 'user';
42
-        const PARAMETER_USERS = 'users';
43
-        const PARAMETER_USER_RIGHTS = 'userRights';
44
-        const PARAMETER_WHITELIST_IPS = 'whitelistIps';
45
-
46
-        const POST_PARAMETER_COMPONENT = 'component';
47
-        const POST_PARAMETER_PASSWORD = 'password';
48
-        const POST_PARAMETER_SAVE = 'save';
49
-        const POST_PARAMETER_TEMPLATE = 'template';
50
-        const POST_PARAMETER_TITLE = 'title';
51
-        const POST_PARAMETER_USERNAME = 'username';
52
-
53
-        const GET_PARAMETER_PATH = 'path';
54
-        const GET_PARAMETER_SLUG = 'slug';
55
-
56
-        const FILES_PARAMETER_FILE = 'file';
57
-
58
-        const SESSION_PARAMETER_CLOUD_CONTROL = 'cloudcontrol';
59
-
60
-        const LOGIN_TEMPLATE_PATH = 'cms/login';
61
-
62
-        const CONTENT_TYPE_APPLICATION_JSON = 'Content-type:application/json';
63
-
64
-        public $subTemplate = null;
65
-
66
-
67
-        /**
68
-         * @param \library\storage\Storage $storage
69
-         *
70
-         * @return void
71
-         */
72
-        public function run(Storage $storage)
73
-        {
74
-            $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::MAIN_NAV_CLASS;
75
-            $this->storage = $storage;
76
-
77
-            $remoteAddress = $_SERVER['REMOTE_ADDR'];
78
-            $this->checkWhiteList($remoteAddress);
79
-            $this->checkBlackList($remoteAddress);
80
-
81
-            $this->checkLogin();
82
-
83
-            $this->parameters[self::PARAMETER_USER_RIGHTS] = $_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL]->rights;
84
-
85
-            $this->routing();
86
-        }
87
-
88
-        /**
89
-         * See if a user is logged or wants to log in and
90
-         * takes appropriate actions.
91
-         *
92
-         * @throws \Exception
93
-         */
94
-        protected function checkLogin()
95
-        {
96
-            $request = $this->request;
97
-
98
-            if (!isset($_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL])) {
99
-                if (isset($request::$post[self::POST_PARAMETER_USERNAME], $request::$post[self::POST_PARAMETER_PASSWORD])) {
100
-                    $user = $this->storage->getUserByUsername($request::$post[self::POST_PARAMETER_USERNAME]);
101
-                    $crypt = new Crypt();
102
-                    if (empty($user)) {
103
-                        $crypt->encrypt($request::$post[self::POST_PARAMETER_PASSWORD], 16); // Buy time, to avoid brute forcing
104
-                        $this->parameters[self::PARAMETER_ERROR_MESSAGE] = self::INVALID_CREDENTIALS_MESSAGE;
105
-                        $this->showLogin();
106
-                    } else {
107
-                        $salt = $user->salt;
108
-                        $password = $user->password;
109
-
110
-                        $passwordCorrect = $crypt->compare($request::$post[self::POST_PARAMETER_PASSWORD], $password, $salt);
111
-
112
-                        if ($passwordCorrect) {
113
-                            $_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL] = $user;
114
-                        } else {
115
-                            $this->parameters[self::PARAMETER_ERROR_MESSAGE] = self::INVALID_CREDENTIALS_MESSAGE;
116
-                            $this->showLogin();
117
-                        }
118
-                    }
119
-                } else {
120
-                    $this->showLogin();
121
-                }
122
-            }
123
-        }
124
-
125
-        /**
126
-         * Overrides normal behaviour and only renders the
127
-         * login screen
128
-         *
129
-         * @throws \Exception
130
-         */
131
-        protected function showLogin()
132
-        {
133
-            $loginTemplatePath = self::LOGIN_TEMPLATE_PATH;
134
-            $this->renderTemplate($loginTemplatePath);
135
-            ob_end_flush();
136
-            exit;
137
-        }
138
-
139
-        /**
140
-         * As an exception, to keep the initial file structure simple
141
-         * the cms implements it's own routing, apart from the regular sitemap functionality
142
-         *
143
-         * @throws \Exception
144
-         */
145
-        protected function routing()
146
-        {
147
-            $relativeCmsUri = $this->getRelativeCmsUri($this->request);
148
-
149
-            $userRights = $_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL]->rights;
150
-
151
-            if ($relativeCmsUri == '' || $relativeCmsUri == '/') {
152
-                $this->subTemplate = 'cms/dashboard';
153
-            }
154
-
155
-            $this->logOffRouting($this->request, $relativeCmsUri);
156
-
157
-            $this->apiRouting($relativeCmsUri);
158
-
159
-            if (in_array(self::PARAMETER_DOCUMENTS, $userRights)) {
160
-                new DocumentRouting($this->request, $relativeCmsUri, $this);
161
-            }
162
-
163
-            if (in_array(self::PARAMETER_SITEMAP, $userRights)) {
164
-                $this->sitemapRouting($this->request, $relativeCmsUri);
165
-            }
166
-
167
-            if (in_array(self::PARAMETER_IMAGES, $userRights)) {
168
-                new ImagesRouting($this->request, $relativeCmsUri, $this);
169
-            }
170
-
171
-            if (in_array(self::PARAMETER_FILES, $userRights)) {
172
-                $this->filesRouting($this->request, $relativeCmsUri);
173
-            }
174
-
175
-            if (in_array('configuration', $userRights)) {
176
-                $this->configurationRouting($this->request, $relativeCmsUri);
177
-            }
178
-
179
-            if ($this->subTemplate !== null) {
180
-                $this->parameters[self::PARAMETER_BODY] = $this->renderTemplate($this->subTemplate);
181
-            }
182
-        }
183
-
184
-        /**
185
-         * @param $remoteAddress
186
-         * @throws \Exception
187
-         */
188
-        private function checkWhiteList($remoteAddress)
189
-        {
190
-            if (isset($this->parameters[self::PARAMETER_WHITELIST_IPS])) {
191
-                $whitelistIps = explode(',', $this->parameters[self::PARAMETER_WHITELIST_IPS]);
192
-                $whitelistIps = array_map("trim", $whitelistIps);
193
-                if (!in_array($remoteAddress, $whitelistIps)) {
194
-                    throw new \Exception('Ip address ' . $remoteAddress . ' is not on whitelist');
195
-                }
196
-            }
197
-        }
198
-
199
-        /**
200
-         * @param $remoteAddress
201
-         * @throws \Exception
202
-         */
203
-        private function checkBlackList($remoteAddress)
204
-        {
205
-            if (isset($this->parameters[self::PARAMETER_BLACKLIST_IPS])) {
206
-                $blacklistIps = explode(',', $this->parameters[self::PARAMETER_BLACKLIST_IPS]);
207
-                $blacklistIps = array_map("trim", $blacklistIps);
208
-                if (in_array($remoteAddress, $blacklistIps)) {
209
-                    throw new \Exception('Ip address ' . $remoteAddress . ' is on blacklist');
210
-                }
211
-            }
212
-        }
213
-
214
-        /**
215
-         * @param $request
216
-         * @return mixed|string
217
-         */
218
-        private function getRelativeCmsUri($request)
219
-        {
220
-            // TODO Use regex match parameter instead of calculating relative uri
221
-            $pos = strpos($request::$relativeUri, $this->parameters[self::PARAMETER_CMS_PREFIX]);
222
-            $relativeCmsUri = '/';
223
-            if ($pos !== false) {
224
-                $relativeCmsUri = substr_replace($request::$relativeUri, '', $pos, strlen($this->parameters[self::PARAMETER_CMS_PREFIX]));
225
-            }
226
-            return $relativeCmsUri;
227
-        }
228
-
229
-        /**
230
-         * @param \library\cc\Request $request
231
-         * @param $relativeCmsUri
232
-         */
233
-        private function sitemapRouting($request, $relativeCmsUri)
234
-        {
235
-            if ($relativeCmsUri == '/sitemap') {
236
-                $this->subTemplate = 'cms/sitemap';
237
-                if (isset($request::$post[self::POST_PARAMETER_SAVE])) {
238
-                    $this->storage->saveSitemap($request::$post);
239
-                }
240
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_SITEMAP;
241
-                $this->parameters[self::PARAMETER_SITEMAP] = $this->storage->getSitemap();
242
-            } elseif ($relativeCmsUri == '/sitemap/new') {
243
-                $this->subTemplate = 'cms/sitemap/form';
244
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_SITEMAP;
245
-                if (isset($request::$post[self::POST_PARAMETER_TITLE], $request::$post[self::POST_PARAMETER_TEMPLATE], $request::$post[self::POST_PARAMETER_COMPONENT])) {
246
-                    $this->storage->addSitemapItem($request::$post);
247
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
248
-                    exit;
249
-                }
250
-            } elseif ($relativeCmsUri == '/sitemap/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
251
-                $this->subTemplate = 'cms/sitemap/form';
252
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_SITEMAP;
253
-                $sitemapItem = $this->storage->getSitemapItemBySlug($request::$get[self::GET_PARAMETER_SLUG]);
254
-                if (isset($request::$post[self::POST_PARAMETER_TITLE], $request::$post[self::POST_PARAMETER_TEMPLATE], $request::$post[self::POST_PARAMETER_COMPONENT])) {
255
-                    $this->storage->saveSitemapItem($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
256
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
257
-                    exit;
258
-                }
259
-                $this->parameters[self::PARAMETER_SITEMAP_ITEM] = $sitemapItem;
260
-            } elseif ($relativeCmsUri == '/sitemap/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
261
-                $this->storage->deleteSitemapItemBySlug($request::$get[self::GET_PARAMETER_SLUG]);
262
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
263
-                exit;
264
-            }
265
-        }
266
-
267
-        /**
268
-         * @param $relativeCmsUri
269
-         */
270
-        private function apiRouting($relativeCmsUri)
271
-        {
272
-            if ($relativeCmsUri == '/images.json') {
273
-                header(self::CONTENT_TYPE_APPLICATION_JSON);
274
-                die(json_encode($this->storage->getImages()));
275
-            } elseif ($relativeCmsUri == '/files.json') {
276
-                header(self::CONTENT_TYPE_APPLICATION_JSON);
277
-                die(json_encode($this->storage->getFiles()));
278
-            } elseif ($relativeCmsUri == '/documents.json') {
279
-                header(self::CONTENT_TYPE_APPLICATION_JSON);
280
-                die(json_encode($this->storage->getDocuments()));
281
-            }
282
-        }
283
-
284
-        /**
285
-         * @param $request
286
-         * @param $relativeCmsUri
287
-         */
288
-        private function filesRouting($request, $relativeCmsUri)
289
-        {
290
-            if ($relativeCmsUri == '/files') {
291
-                $this->subTemplate = 'cms/files';
292
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_FILES;
293
-                $this->parameters[self::PARAMETER_FILES] = $this->storage->getFiles();
294
-            } elseif ($relativeCmsUri == '/files/new') {
295
-                $this->subTemplate = 'cms/files/form';
296
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_FILES;
297
-                if (isset($_FILES[self::FILES_PARAMETER_FILE])) {
298
-                    $this->storage->addFile($_FILES[self::FILES_PARAMETER_FILE]);
299
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/files');
300
-                    exit;
301
-                }
302
-            } elseif ($relativeCmsUri == '/files/get' && isset($request::$get[self::FILES_PARAMETER_FILE])) {
303
-                $this->downloadFile($request::$get[self::FILES_PARAMETER_FILE]);
304
-            } elseif ($relativeCmsUri == '/files/delete' && isset($request::$get[self::FILES_PARAMETER_FILE])) {
305
-                $this->storage->deleteFileByName($request::$get[self::FILES_PARAMETER_FILE]);
306
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/files');
307
-                exit;
308
-            }
309
-        }
310
-
311
-        /**
312
-         * @param $slug
313
-         */
314
-        private function downloadFile($slug)
315
-        {
316
-            $file = $this->storage->getFileByName($slug);
317
-            $path = realpath(__DIR__ . '/../../www/files/');
318
-            $quoted = sprintf('"%s"', addcslashes(basename($path . '/' . $file->file), '"\\'));
319
-            $size = filesize($path . '/' . $file->file);
320
-
321
-            header('Content-Description: File Transfer');
322
-            header('Content-Type: ' . $file->type);
323
-            header('Content-Disposition: attachment; filename=' . $quoted);
324
-            header('Content-Transfer-Encoding: binary');
325
-            header('Connection: Keep-Alive');
326
-            header('Expires: 0');
327
-            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
328
-            header('Pragma: public');
329
-            header('Content-Length: ' . $size);
330
-
331
-            readfile($path . '/' . $file->file);
332
-            exit;
333
-        }
334
-
335
-        /**
336
-         * @param $request
337
-         * @param $relativeCmsUri
338
-         */
339
-        private function configurationRouting($request, $relativeCmsUri)
340
-        {
341
-            if ($relativeCmsUri == '/configuration') {
342
-                $this->subTemplate = 'cms/configuration';
343
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
344
-            }
345
-
346
-            $this->usersRouting($request, $relativeCmsUri);
347
-            $this->documentTypesRouting($request, $relativeCmsUri);
348
-            $this->bricksRouting($request, $relativeCmsUri);
349
-            $this->imageSetRouting($request, $relativeCmsUri);
350
-            $this->applicationComponentRouting($request, $relativeCmsUri);
351
-        }
352
-
353
-
354
-        /**
355
-         * @param $request
356
-         * @param $relativeCmsUri
357
-         */
358
-        private function usersRouting($request, $relativeCmsUri)
359
-        {
360
-            if ($relativeCmsUri == '/configuration/users') {
361
-                $this->subTemplate = 'cms/configuration/users';
362
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
363
-                $this->parameters[self::PARAMETER_USERS] = $this->storage->getUsers();
364
-            } elseif ($relativeCmsUri == '/configuration/users/new') {
365
-                $this->subTemplate = 'cms/configuration/users-form';
366
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
367
-                if (isset($_POST[self::POST_PARAMETER_USERNAME])) {
368
-                    $this->storage->addUser($request::$post);
369
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
370
-                    exit;
371
-                }
372
-            } elseif ($relativeCmsUri == '/configuration/users/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
373
-                $this->storage->deleteUserBySlug($request::$get[self::GET_PARAMETER_SLUG]);
374
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
375
-                exit;
376
-            } elseif ($relativeCmsUri == '/configuration/users/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
377
-                $this->subTemplate = 'cms/configuration/users-form';
378
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
379
-                $this->parameters[self::PARAMETER_USER] = $this->storage->getUserBySlug($request::$get[self::GET_PARAMETER_SLUG]);
380
-                if (isset($_POST[self::POST_PARAMETER_USERNAME])) {
381
-                    $this->storage->saveUser($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
382
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
383
-                    exit;
384
-                }
385
-            }
386
-        }
387
-
388
-        /**
389
-         * @param $request
390
-         * @param $relativeCmsUri
391
-         */
392
-        private function documentTypesRouting($request, $relativeCmsUri)
393
-        {
394
-            if ($relativeCmsUri == '/configuration/document-types') {
395
-                $this->subTemplate = 'cms/configuration/document-types';
396
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
397
-                $this->parameters[self::PARAMETER_DOCUMENT_TYPES] = $this->storage->getDocumentTypes();
398
-            } elseif ($relativeCmsUri == '/configuration/document-types/new') {
399
-                $this->subTemplate = 'cms/configuration/document-types-form';
400
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
401
-                $bricks = $this->storage->getBricks();
402
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
403
-                    $this->storage->addDocumentType($request::$post);
404
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
405
-                    exit;
406
-                }
407
-                $this->parameters[self::PARAMETER_BRICKS] = $bricks;
408
-            } elseif ($relativeCmsUri == '/configuration/document-types/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
409
-                $this->subTemplate = 'cms/configuration/document-types-form';
410
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
411
-                $documentType = $this->storage->getDocumentTypeBySlug($request::$get[self::GET_PARAMETER_SLUG], false);
412
-                $bricks = $this->storage->getBricks();
413
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
414
-                    $this->storage->saveDocumentType($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
415
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
416
-                    exit;
417
-                }
418
-                $this->parameters[self::PARAMETER_DOCUMENT_TYPE] = $documentType;
419
-                $this->parameters[self::PARAMETER_BRICKS] = $bricks;
420
-            } elseif ($relativeCmsUri == '/configuration/document-types/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
421
-                $this->storage->deleteDocumentTypeBySlug($request::$get[self::GET_PARAMETER_SLUG]);
422
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
423
-                exit;
424
-            }
425
-        }
426
-
427
-        /**
428
-         * @param $request
429
-         * @param $relativeCmsUri
430
-         */
431
-        private function bricksRouting($request, $relativeCmsUri)
432
-        {
433
-            if ($relativeCmsUri == '/configuration/bricks') {
434
-                $this->subTemplate = 'cms/configuration/bricks';
435
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
436
-                $this->parameters[self::PARAMETER_BRICKS] = $this->storage->getBricks();
437
-            } elseif ($relativeCmsUri == '/configuration/bricks/new') {
438
-                $this->subTemplate = 'cms/configuration/bricks-form';
439
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
440
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
441
-                    $this->storage->addBrick($request::$post);
442
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
443
-                    exit;
444
-                }
445
-            } elseif ($relativeCmsUri == '/configuration/bricks/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
446
-                $this->subTemplate = 'cms/configuration/bricks-form';
447
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
448
-                $brick = $this->storage->getBrickBySlug($request::$get[self::GET_PARAMETER_SLUG]);
449
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
450
-                    $this->storage->saveBrick($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
451
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
452
-                    exit;
453
-                }
454
-                $this->parameters[self::PARAMETER_BRICK] = $brick;
455
-            } elseif ($relativeCmsUri == '/configuration/bricks/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
456
-                $this->storage->deleteBrickBySlug($request::$get[self::GET_PARAMETER_SLUG]);
457
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
458
-                exit;
459
-            } elseif ($relativeCmsUri == '/configuration/image-set') {
460
-                $this->subTemplate = 'cms/configuration/image-set';
461
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
462
-                $this->parameters[self::PARAMETER_IMAGE_SET] = $this->storage->getImageSet();
463
-            }
464
-        }
465
-
466
-        /**
467
-         * @param $request
468
-         * @param $relativeCmsUri
469
-         */
470
-        private function imageSetRouting($request, $relativeCmsUri)
471
-        {
472
-            if ($relativeCmsUri == '/configuration/image-set') {
473
-                $this->subTemplate = 'cms/configuration/image-set';
474
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
475
-                $this->parameters[self::PARAMETER_IMAGE_SET] = $this->storage->getImageSet();
476
-            } elseif ($relativeCmsUri == '/configuration/image-set/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
477
-                $this->subTemplate = 'cms/configuration/image-set-form';
478
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
479
-                $imageSet = $this->storage->getImageSetBySlug($request::$get[self::GET_PARAMETER_SLUG]);
480
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
481
-                    $this->storage->saveImageSet($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
482
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
483
-                    exit;
484
-                }
485
-                $this->parameters[self::PARAMETER_IMAGE_SET] = $imageSet;
486
-            } elseif ($relativeCmsUri == '/configuration/image-set/new') {
487
-                $this->subTemplate = 'cms/configuration/image-set-form';
488
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
489
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
490
-                    $this->storage->addImageSet($request::$post);
491
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
492
-                    exit;
493
-                }
494
-            } elseif ($relativeCmsUri == '/configuration/image-set/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
495
-                $this->storage->deleteImageSetBySlug($request::$get[self::GET_PARAMETER_SLUG]);
496
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
497
-                exit;
498
-            }
499
-        }
500
-
501
-        /**
502
-         * @param $request
503
-         * @param $relativeCmsUri
504
-         */
505
-        private function applicationComponentRouting($request, $relativeCmsUri)
506
-        {
507
-            if ($relativeCmsUri == '/configuration/application-components') {
508
-                $this->subTemplate = 'cms/configuration/application-components';
509
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
510
-                $this->parameters['applicationComponents'] = $this->storage->getApplicationComponents();
511
-            } elseif ($relativeCmsUri == '/configuration/application-components/new') {
512
-                $this->subTemplate = 'cms/configuration/application-components-form';
513
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
514
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
515
-                    $this->storage->addApplicationComponent($request::$post);
516
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
517
-                    exit;
518
-                }
519
-            } elseif ($relativeCmsUri == '/configuration/application-components/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
520
-                $this->subTemplate = 'cms/configuration/application-components-form';
521
-                $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
522
-                $applicationComponent = $this->storage->getApplicationComponentBySlug($request::$get[self::GET_PARAMETER_SLUG]);
523
-                if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
524
-                    $this->storage->saveApplicationComponent($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
525
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
526
-                    exit;
527
-                }
528
-                $this->parameters['applicationComponent'] = $applicationComponent;
529
-            } elseif ($relativeCmsUri == '/configuration/application-components/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
530
-                $this->storage->deleteApplicationComponentBySlug($request::$get[self::GET_PARAMETER_SLUG]);
531
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
532
-                exit;
533
-            }
534
-        }
535
-
536
-        private function logOffRouting($request, $relativeCmsUri)
537
-        {
538
-            if ($relativeCmsUri == '/log-off') {
539
-                $_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL] = null;
540
-                unset($_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL]);
541
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX]);
542
-                exit;
543
-            }
544
-        }
545
-
546
-        public function setParameter($parameterName, $parameterValue)
547
-        {
548
-            $this->parameters[$parameterName] = $parameterValue;
549
-        }
550
-
551
-        public function getParameter($parameterName)
552
-        {
553
-            return $this->parameters[$parameterName];
554
-        }
555
-    }
14
+		public $storage;
15
+
16
+		const INVALID_CREDENTIALS_MESSAGE = 'Invalid username / password combination';
17
+
18
+		const MAIN_NAV_CLASS = 'default';
19
+
20
+		const PARAMETER_BLACKLIST_IPS = 'blacklistIps';
21
+		const PARAMETER_BODY = 'body';
22
+		const PARAMETER_BRICK = 'brick';
23
+		const PARAMETER_BRICKS = 'bricks';
24
+		const PARAMETER_CMS_PREFIX = 'cmsPrefix';
25
+		const PARAMETER_DOCUMENT = 'document';
26
+		const PARAMETER_DOCUMENTS = 'documents';
27
+		const PARAMETER_DOCUMENT_TYPE = 'documentType';
28
+		const PARAMETER_DOCUMENT_TYPES = 'documentTypes';
29
+		const PARAMETER_ERROR_MESSAGE = 'errorMsg';
30
+		const PARAMETER_FILES = 'files';
31
+		const PARAMETER_FOLDER = 'folder';
32
+		const PARAMETER_IMAGE = 'image';
33
+		const PARAMETER_IMAGES = 'images';
34
+		const PARAMETER_IMAGE_SET = 'imageSet';
35
+		const PARAMETER_MAIN_NAV_CLASS = 'mainNavClass';
36
+		const PARAMETER_MY_BRICK_SLUG = 'myBrickSlug';
37
+		const PARAMETER_SITEMAP = 'sitemap';
38
+		const PARAMETER_SITEMAP_ITEM = 'sitemapItem';
39
+		const PARAMETER_SMALLEST_IMAGE = 'smallestImage';
40
+		const PARAMETER_STATIC = 'static';
41
+		const PARAMETER_USER = 'user';
42
+		const PARAMETER_USERS = 'users';
43
+		const PARAMETER_USER_RIGHTS = 'userRights';
44
+		const PARAMETER_WHITELIST_IPS = 'whitelistIps';
45
+
46
+		const POST_PARAMETER_COMPONENT = 'component';
47
+		const POST_PARAMETER_PASSWORD = 'password';
48
+		const POST_PARAMETER_SAVE = 'save';
49
+		const POST_PARAMETER_TEMPLATE = 'template';
50
+		const POST_PARAMETER_TITLE = 'title';
51
+		const POST_PARAMETER_USERNAME = 'username';
52
+
53
+		const GET_PARAMETER_PATH = 'path';
54
+		const GET_PARAMETER_SLUG = 'slug';
55
+
56
+		const FILES_PARAMETER_FILE = 'file';
57
+
58
+		const SESSION_PARAMETER_CLOUD_CONTROL = 'cloudcontrol';
59
+
60
+		const LOGIN_TEMPLATE_PATH = 'cms/login';
61
+
62
+		const CONTENT_TYPE_APPLICATION_JSON = 'Content-type:application/json';
63
+
64
+		public $subTemplate = null;
65
+
66
+
67
+		/**
68
+		 * @param \library\storage\Storage $storage
69
+		 *
70
+		 * @return void
71
+		 */
72
+		public function run(Storage $storage)
73
+		{
74
+			$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::MAIN_NAV_CLASS;
75
+			$this->storage = $storage;
76
+
77
+			$remoteAddress = $_SERVER['REMOTE_ADDR'];
78
+			$this->checkWhiteList($remoteAddress);
79
+			$this->checkBlackList($remoteAddress);
80
+
81
+			$this->checkLogin();
82
+
83
+			$this->parameters[self::PARAMETER_USER_RIGHTS] = $_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL]->rights;
84
+
85
+			$this->routing();
86
+		}
87
+
88
+		/**
89
+		 * See if a user is logged or wants to log in and
90
+		 * takes appropriate actions.
91
+		 *
92
+		 * @throws \Exception
93
+		 */
94
+		protected function checkLogin()
95
+		{
96
+			$request = $this->request;
97
+
98
+			if (!isset($_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL])) {
99
+				if (isset($request::$post[self::POST_PARAMETER_USERNAME], $request::$post[self::POST_PARAMETER_PASSWORD])) {
100
+					$user = $this->storage->getUserByUsername($request::$post[self::POST_PARAMETER_USERNAME]);
101
+					$crypt = new Crypt();
102
+					if (empty($user)) {
103
+						$crypt->encrypt($request::$post[self::POST_PARAMETER_PASSWORD], 16); // Buy time, to avoid brute forcing
104
+						$this->parameters[self::PARAMETER_ERROR_MESSAGE] = self::INVALID_CREDENTIALS_MESSAGE;
105
+						$this->showLogin();
106
+					} else {
107
+						$salt = $user->salt;
108
+						$password = $user->password;
109
+
110
+						$passwordCorrect = $crypt->compare($request::$post[self::POST_PARAMETER_PASSWORD], $password, $salt);
111
+
112
+						if ($passwordCorrect) {
113
+							$_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL] = $user;
114
+						} else {
115
+							$this->parameters[self::PARAMETER_ERROR_MESSAGE] = self::INVALID_CREDENTIALS_MESSAGE;
116
+							$this->showLogin();
117
+						}
118
+					}
119
+				} else {
120
+					$this->showLogin();
121
+				}
122
+			}
123
+		}
124
+
125
+		/**
126
+		 * Overrides normal behaviour and only renders the
127
+		 * login screen
128
+		 *
129
+		 * @throws \Exception
130
+		 */
131
+		protected function showLogin()
132
+		{
133
+			$loginTemplatePath = self::LOGIN_TEMPLATE_PATH;
134
+			$this->renderTemplate($loginTemplatePath);
135
+			ob_end_flush();
136
+			exit;
137
+		}
138
+
139
+		/**
140
+		 * As an exception, to keep the initial file structure simple
141
+		 * the cms implements it's own routing, apart from the regular sitemap functionality
142
+		 *
143
+		 * @throws \Exception
144
+		 */
145
+		protected function routing()
146
+		{
147
+			$relativeCmsUri = $this->getRelativeCmsUri($this->request);
148
+
149
+			$userRights = $_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL]->rights;
150
+
151
+			if ($relativeCmsUri == '' || $relativeCmsUri == '/') {
152
+				$this->subTemplate = 'cms/dashboard';
153
+			}
154
+
155
+			$this->logOffRouting($this->request, $relativeCmsUri);
156
+
157
+			$this->apiRouting($relativeCmsUri);
158
+
159
+			if (in_array(self::PARAMETER_DOCUMENTS, $userRights)) {
160
+				new DocumentRouting($this->request, $relativeCmsUri, $this);
161
+			}
162
+
163
+			if (in_array(self::PARAMETER_SITEMAP, $userRights)) {
164
+				$this->sitemapRouting($this->request, $relativeCmsUri);
165
+			}
166
+
167
+			if (in_array(self::PARAMETER_IMAGES, $userRights)) {
168
+				new ImagesRouting($this->request, $relativeCmsUri, $this);
169
+			}
170
+
171
+			if (in_array(self::PARAMETER_FILES, $userRights)) {
172
+				$this->filesRouting($this->request, $relativeCmsUri);
173
+			}
174
+
175
+			if (in_array('configuration', $userRights)) {
176
+				$this->configurationRouting($this->request, $relativeCmsUri);
177
+			}
178
+
179
+			if ($this->subTemplate !== null) {
180
+				$this->parameters[self::PARAMETER_BODY] = $this->renderTemplate($this->subTemplate);
181
+			}
182
+		}
183
+
184
+		/**
185
+		 * @param $remoteAddress
186
+		 * @throws \Exception
187
+		 */
188
+		private function checkWhiteList($remoteAddress)
189
+		{
190
+			if (isset($this->parameters[self::PARAMETER_WHITELIST_IPS])) {
191
+				$whitelistIps = explode(',', $this->parameters[self::PARAMETER_WHITELIST_IPS]);
192
+				$whitelistIps = array_map("trim", $whitelistIps);
193
+				if (!in_array($remoteAddress, $whitelistIps)) {
194
+					throw new \Exception('Ip address ' . $remoteAddress . ' is not on whitelist');
195
+				}
196
+			}
197
+		}
198
+
199
+		/**
200
+		 * @param $remoteAddress
201
+		 * @throws \Exception
202
+		 */
203
+		private function checkBlackList($remoteAddress)
204
+		{
205
+			if (isset($this->parameters[self::PARAMETER_BLACKLIST_IPS])) {
206
+				$blacklistIps = explode(',', $this->parameters[self::PARAMETER_BLACKLIST_IPS]);
207
+				$blacklistIps = array_map("trim", $blacklistIps);
208
+				if (in_array($remoteAddress, $blacklistIps)) {
209
+					throw new \Exception('Ip address ' . $remoteAddress . ' is on blacklist');
210
+				}
211
+			}
212
+		}
213
+
214
+		/**
215
+		 * @param $request
216
+		 * @return mixed|string
217
+		 */
218
+		private function getRelativeCmsUri($request)
219
+		{
220
+			// TODO Use regex match parameter instead of calculating relative uri
221
+			$pos = strpos($request::$relativeUri, $this->parameters[self::PARAMETER_CMS_PREFIX]);
222
+			$relativeCmsUri = '/';
223
+			if ($pos !== false) {
224
+				$relativeCmsUri = substr_replace($request::$relativeUri, '', $pos, strlen($this->parameters[self::PARAMETER_CMS_PREFIX]));
225
+			}
226
+			return $relativeCmsUri;
227
+		}
228
+
229
+		/**
230
+		 * @param \library\cc\Request $request
231
+		 * @param $relativeCmsUri
232
+		 */
233
+		private function sitemapRouting($request, $relativeCmsUri)
234
+		{
235
+			if ($relativeCmsUri == '/sitemap') {
236
+				$this->subTemplate = 'cms/sitemap';
237
+				if (isset($request::$post[self::POST_PARAMETER_SAVE])) {
238
+					$this->storage->saveSitemap($request::$post);
239
+				}
240
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_SITEMAP;
241
+				$this->parameters[self::PARAMETER_SITEMAP] = $this->storage->getSitemap();
242
+			} elseif ($relativeCmsUri == '/sitemap/new') {
243
+				$this->subTemplate = 'cms/sitemap/form';
244
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_SITEMAP;
245
+				if (isset($request::$post[self::POST_PARAMETER_TITLE], $request::$post[self::POST_PARAMETER_TEMPLATE], $request::$post[self::POST_PARAMETER_COMPONENT])) {
246
+					$this->storage->addSitemapItem($request::$post);
247
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
248
+					exit;
249
+				}
250
+			} elseif ($relativeCmsUri == '/sitemap/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
251
+				$this->subTemplate = 'cms/sitemap/form';
252
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_SITEMAP;
253
+				$sitemapItem = $this->storage->getSitemapItemBySlug($request::$get[self::GET_PARAMETER_SLUG]);
254
+				if (isset($request::$post[self::POST_PARAMETER_TITLE], $request::$post[self::POST_PARAMETER_TEMPLATE], $request::$post[self::POST_PARAMETER_COMPONENT])) {
255
+					$this->storage->saveSitemapItem($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
256
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
257
+					exit;
258
+				}
259
+				$this->parameters[self::PARAMETER_SITEMAP_ITEM] = $sitemapItem;
260
+			} elseif ($relativeCmsUri == '/sitemap/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
261
+				$this->storage->deleteSitemapItemBySlug($request::$get[self::GET_PARAMETER_SLUG]);
262
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
263
+				exit;
264
+			}
265
+		}
266
+
267
+		/**
268
+		 * @param $relativeCmsUri
269
+		 */
270
+		private function apiRouting($relativeCmsUri)
271
+		{
272
+			if ($relativeCmsUri == '/images.json') {
273
+				header(self::CONTENT_TYPE_APPLICATION_JSON);
274
+				die(json_encode($this->storage->getImages()));
275
+			} elseif ($relativeCmsUri == '/files.json') {
276
+				header(self::CONTENT_TYPE_APPLICATION_JSON);
277
+				die(json_encode($this->storage->getFiles()));
278
+			} elseif ($relativeCmsUri == '/documents.json') {
279
+				header(self::CONTENT_TYPE_APPLICATION_JSON);
280
+				die(json_encode($this->storage->getDocuments()));
281
+			}
282
+		}
283
+
284
+		/**
285
+		 * @param $request
286
+		 * @param $relativeCmsUri
287
+		 */
288
+		private function filesRouting($request, $relativeCmsUri)
289
+		{
290
+			if ($relativeCmsUri == '/files') {
291
+				$this->subTemplate = 'cms/files';
292
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_FILES;
293
+				$this->parameters[self::PARAMETER_FILES] = $this->storage->getFiles();
294
+			} elseif ($relativeCmsUri == '/files/new') {
295
+				$this->subTemplate = 'cms/files/form';
296
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_FILES;
297
+				if (isset($_FILES[self::FILES_PARAMETER_FILE])) {
298
+					$this->storage->addFile($_FILES[self::FILES_PARAMETER_FILE]);
299
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/files');
300
+					exit;
301
+				}
302
+			} elseif ($relativeCmsUri == '/files/get' && isset($request::$get[self::FILES_PARAMETER_FILE])) {
303
+				$this->downloadFile($request::$get[self::FILES_PARAMETER_FILE]);
304
+			} elseif ($relativeCmsUri == '/files/delete' && isset($request::$get[self::FILES_PARAMETER_FILE])) {
305
+				$this->storage->deleteFileByName($request::$get[self::FILES_PARAMETER_FILE]);
306
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/files');
307
+				exit;
308
+			}
309
+		}
310
+
311
+		/**
312
+		 * @param $slug
313
+		 */
314
+		private function downloadFile($slug)
315
+		{
316
+			$file = $this->storage->getFileByName($slug);
317
+			$path = realpath(__DIR__ . '/../../www/files/');
318
+			$quoted = sprintf('"%s"', addcslashes(basename($path . '/' . $file->file), '"\\'));
319
+			$size = filesize($path . '/' . $file->file);
320
+
321
+			header('Content-Description: File Transfer');
322
+			header('Content-Type: ' . $file->type);
323
+			header('Content-Disposition: attachment; filename=' . $quoted);
324
+			header('Content-Transfer-Encoding: binary');
325
+			header('Connection: Keep-Alive');
326
+			header('Expires: 0');
327
+			header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
328
+			header('Pragma: public');
329
+			header('Content-Length: ' . $size);
330
+
331
+			readfile($path . '/' . $file->file);
332
+			exit;
333
+		}
334
+
335
+		/**
336
+		 * @param $request
337
+		 * @param $relativeCmsUri
338
+		 */
339
+		private function configurationRouting($request, $relativeCmsUri)
340
+		{
341
+			if ($relativeCmsUri == '/configuration') {
342
+				$this->subTemplate = 'cms/configuration';
343
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
344
+			}
345
+
346
+			$this->usersRouting($request, $relativeCmsUri);
347
+			$this->documentTypesRouting($request, $relativeCmsUri);
348
+			$this->bricksRouting($request, $relativeCmsUri);
349
+			$this->imageSetRouting($request, $relativeCmsUri);
350
+			$this->applicationComponentRouting($request, $relativeCmsUri);
351
+		}
352
+
353
+
354
+		/**
355
+		 * @param $request
356
+		 * @param $relativeCmsUri
357
+		 */
358
+		private function usersRouting($request, $relativeCmsUri)
359
+		{
360
+			if ($relativeCmsUri == '/configuration/users') {
361
+				$this->subTemplate = 'cms/configuration/users';
362
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
363
+				$this->parameters[self::PARAMETER_USERS] = $this->storage->getUsers();
364
+			} elseif ($relativeCmsUri == '/configuration/users/new') {
365
+				$this->subTemplate = 'cms/configuration/users-form';
366
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
367
+				if (isset($_POST[self::POST_PARAMETER_USERNAME])) {
368
+					$this->storage->addUser($request::$post);
369
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
370
+					exit;
371
+				}
372
+			} elseif ($relativeCmsUri == '/configuration/users/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
373
+				$this->storage->deleteUserBySlug($request::$get[self::GET_PARAMETER_SLUG]);
374
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
375
+				exit;
376
+			} elseif ($relativeCmsUri == '/configuration/users/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
377
+				$this->subTemplate = 'cms/configuration/users-form';
378
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
379
+				$this->parameters[self::PARAMETER_USER] = $this->storage->getUserBySlug($request::$get[self::GET_PARAMETER_SLUG]);
380
+				if (isset($_POST[self::POST_PARAMETER_USERNAME])) {
381
+					$this->storage->saveUser($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
382
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
383
+					exit;
384
+				}
385
+			}
386
+		}
387
+
388
+		/**
389
+		 * @param $request
390
+		 * @param $relativeCmsUri
391
+		 */
392
+		private function documentTypesRouting($request, $relativeCmsUri)
393
+		{
394
+			if ($relativeCmsUri == '/configuration/document-types') {
395
+				$this->subTemplate = 'cms/configuration/document-types';
396
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
397
+				$this->parameters[self::PARAMETER_DOCUMENT_TYPES] = $this->storage->getDocumentTypes();
398
+			} elseif ($relativeCmsUri == '/configuration/document-types/new') {
399
+				$this->subTemplate = 'cms/configuration/document-types-form';
400
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
401
+				$bricks = $this->storage->getBricks();
402
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
403
+					$this->storage->addDocumentType($request::$post);
404
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
405
+					exit;
406
+				}
407
+				$this->parameters[self::PARAMETER_BRICKS] = $bricks;
408
+			} elseif ($relativeCmsUri == '/configuration/document-types/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
409
+				$this->subTemplate = 'cms/configuration/document-types-form';
410
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
411
+				$documentType = $this->storage->getDocumentTypeBySlug($request::$get[self::GET_PARAMETER_SLUG], false);
412
+				$bricks = $this->storage->getBricks();
413
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
414
+					$this->storage->saveDocumentType($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
415
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
416
+					exit;
417
+				}
418
+				$this->parameters[self::PARAMETER_DOCUMENT_TYPE] = $documentType;
419
+				$this->parameters[self::PARAMETER_BRICKS] = $bricks;
420
+			} elseif ($relativeCmsUri == '/configuration/document-types/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
421
+				$this->storage->deleteDocumentTypeBySlug($request::$get[self::GET_PARAMETER_SLUG]);
422
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
423
+				exit;
424
+			}
425
+		}
426
+
427
+		/**
428
+		 * @param $request
429
+		 * @param $relativeCmsUri
430
+		 */
431
+		private function bricksRouting($request, $relativeCmsUri)
432
+		{
433
+			if ($relativeCmsUri == '/configuration/bricks') {
434
+				$this->subTemplate = 'cms/configuration/bricks';
435
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
436
+				$this->parameters[self::PARAMETER_BRICKS] = $this->storage->getBricks();
437
+			} elseif ($relativeCmsUri == '/configuration/bricks/new') {
438
+				$this->subTemplate = 'cms/configuration/bricks-form';
439
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
440
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
441
+					$this->storage->addBrick($request::$post);
442
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
443
+					exit;
444
+				}
445
+			} elseif ($relativeCmsUri == '/configuration/bricks/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
446
+				$this->subTemplate = 'cms/configuration/bricks-form';
447
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
448
+				$brick = $this->storage->getBrickBySlug($request::$get[self::GET_PARAMETER_SLUG]);
449
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
450
+					$this->storage->saveBrick($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
451
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
452
+					exit;
453
+				}
454
+				$this->parameters[self::PARAMETER_BRICK] = $brick;
455
+			} elseif ($relativeCmsUri == '/configuration/bricks/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
456
+				$this->storage->deleteBrickBySlug($request::$get[self::GET_PARAMETER_SLUG]);
457
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
458
+				exit;
459
+			} elseif ($relativeCmsUri == '/configuration/image-set') {
460
+				$this->subTemplate = 'cms/configuration/image-set';
461
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
462
+				$this->parameters[self::PARAMETER_IMAGE_SET] = $this->storage->getImageSet();
463
+			}
464
+		}
465
+
466
+		/**
467
+		 * @param $request
468
+		 * @param $relativeCmsUri
469
+		 */
470
+		private function imageSetRouting($request, $relativeCmsUri)
471
+		{
472
+			if ($relativeCmsUri == '/configuration/image-set') {
473
+				$this->subTemplate = 'cms/configuration/image-set';
474
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
475
+				$this->parameters[self::PARAMETER_IMAGE_SET] = $this->storage->getImageSet();
476
+			} elseif ($relativeCmsUri == '/configuration/image-set/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
477
+				$this->subTemplate = 'cms/configuration/image-set-form';
478
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
479
+				$imageSet = $this->storage->getImageSetBySlug($request::$get[self::GET_PARAMETER_SLUG]);
480
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
481
+					$this->storage->saveImageSet($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
482
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
483
+					exit;
484
+				}
485
+				$this->parameters[self::PARAMETER_IMAGE_SET] = $imageSet;
486
+			} elseif ($relativeCmsUri == '/configuration/image-set/new') {
487
+				$this->subTemplate = 'cms/configuration/image-set-form';
488
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
489
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
490
+					$this->storage->addImageSet($request::$post);
491
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
492
+					exit;
493
+				}
494
+			} elseif ($relativeCmsUri == '/configuration/image-set/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
495
+				$this->storage->deleteImageSetBySlug($request::$get[self::GET_PARAMETER_SLUG]);
496
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
497
+				exit;
498
+			}
499
+		}
500
+
501
+		/**
502
+		 * @param $request
503
+		 * @param $relativeCmsUri
504
+		 */
505
+		private function applicationComponentRouting($request, $relativeCmsUri)
506
+		{
507
+			if ($relativeCmsUri == '/configuration/application-components') {
508
+				$this->subTemplate = 'cms/configuration/application-components';
509
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
510
+				$this->parameters['applicationComponents'] = $this->storage->getApplicationComponents();
511
+			} elseif ($relativeCmsUri == '/configuration/application-components/new') {
512
+				$this->subTemplate = 'cms/configuration/application-components-form';
513
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
514
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
515
+					$this->storage->addApplicationComponent($request::$post);
516
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
517
+					exit;
518
+				}
519
+			} elseif ($relativeCmsUri == '/configuration/application-components/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
520
+				$this->subTemplate = 'cms/configuration/application-components-form';
521
+				$this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
522
+				$applicationComponent = $this->storage->getApplicationComponentBySlug($request::$get[self::GET_PARAMETER_SLUG]);
523
+				if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
524
+					$this->storage->saveApplicationComponent($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
525
+					header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
526
+					exit;
527
+				}
528
+				$this->parameters['applicationComponent'] = $applicationComponent;
529
+			} elseif ($relativeCmsUri == '/configuration/application-components/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
530
+				$this->storage->deleteApplicationComponentBySlug($request::$get[self::GET_PARAMETER_SLUG]);
531
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
532
+				exit;
533
+			}
534
+		}
535
+
536
+		private function logOffRouting($request, $relativeCmsUri)
537
+		{
538
+			if ($relativeCmsUri == '/log-off') {
539
+				$_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL] = null;
540
+				unset($_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL]);
541
+				header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX]);
542
+				exit;
543
+			}
544
+		}
545
+
546
+		public function setParameter($parameterName, $parameterValue)
547
+		{
548
+			$this->parameters[$parameterName] = $parameterValue;
549
+		}
550
+
551
+		public function getParameter($parameterName)
552
+		{
553
+			return $this->parameters[$parameterName];
554
+		}
555
+	}
556 556
 }
557 557
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -191,7 +191,7 @@  discard block
 block discarded – undo
191 191
                 $whitelistIps = explode(',', $this->parameters[self::PARAMETER_WHITELIST_IPS]);
192 192
                 $whitelistIps = array_map("trim", $whitelistIps);
193 193
                 if (!in_array($remoteAddress, $whitelistIps)) {
194
-                    throw new \Exception('Ip address ' . $remoteAddress . ' is not on whitelist');
194
+                    throw new \Exception('Ip address '.$remoteAddress.' is not on whitelist');
195 195
                 }
196 196
             }
197 197
         }
@@ -206,7 +206,7 @@  discard block
 block discarded – undo
206 206
                 $blacklistIps = explode(',', $this->parameters[self::PARAMETER_BLACKLIST_IPS]);
207 207
                 $blacklistIps = array_map("trim", $blacklistIps);
208 208
                 if (in_array($remoteAddress, $blacklistIps)) {
209
-                    throw new \Exception('Ip address ' . $remoteAddress . ' is on blacklist');
209
+                    throw new \Exception('Ip address '.$remoteAddress.' is on blacklist');
210 210
                 }
211 211
             }
212 212
         }
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
                 $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_SITEMAP;
245 245
                 if (isset($request::$post[self::POST_PARAMETER_TITLE], $request::$post[self::POST_PARAMETER_TEMPLATE], $request::$post[self::POST_PARAMETER_COMPONENT])) {
246 246
                     $this->storage->addSitemapItem($request::$post);
247
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
247
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/sitemap');
248 248
                     exit;
249 249
                 }
250 250
             } elseif ($relativeCmsUri == '/sitemap/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
@@ -253,13 +253,13 @@  discard block
 block discarded – undo
253 253
                 $sitemapItem = $this->storage->getSitemapItemBySlug($request::$get[self::GET_PARAMETER_SLUG]);
254 254
                 if (isset($request::$post[self::POST_PARAMETER_TITLE], $request::$post[self::POST_PARAMETER_TEMPLATE], $request::$post[self::POST_PARAMETER_COMPONENT])) {
255 255
                     $this->storage->saveSitemapItem($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
256
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
256
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/sitemap');
257 257
                     exit;
258 258
                 }
259 259
                 $this->parameters[self::PARAMETER_SITEMAP_ITEM] = $sitemapItem;
260 260
             } elseif ($relativeCmsUri == '/sitemap/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
261 261
                 $this->storage->deleteSitemapItemBySlug($request::$get[self::GET_PARAMETER_SLUG]);
262
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/sitemap');
262
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/sitemap');
263 263
                 exit;
264 264
             }
265 265
         }
@@ -296,14 +296,14 @@  discard block
 block discarded – undo
296 296
                 $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = self::PARAMETER_FILES;
297 297
                 if (isset($_FILES[self::FILES_PARAMETER_FILE])) {
298 298
                     $this->storage->addFile($_FILES[self::FILES_PARAMETER_FILE]);
299
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/files');
299
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/files');
300 300
                     exit;
301 301
                 }
302 302
             } elseif ($relativeCmsUri == '/files/get' && isset($request::$get[self::FILES_PARAMETER_FILE])) {
303 303
                 $this->downloadFile($request::$get[self::FILES_PARAMETER_FILE]);
304 304
             } elseif ($relativeCmsUri == '/files/delete' && isset($request::$get[self::FILES_PARAMETER_FILE])) {
305 305
                 $this->storage->deleteFileByName($request::$get[self::FILES_PARAMETER_FILE]);
306
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/files');
306
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/files');
307 307
                 exit;
308 308
             }
309 309
         }
@@ -314,21 +314,21 @@  discard block
 block discarded – undo
314 314
         private function downloadFile($slug)
315 315
         {
316 316
             $file = $this->storage->getFileByName($slug);
317
-            $path = realpath(__DIR__ . '/../../www/files/');
318
-            $quoted = sprintf('"%s"', addcslashes(basename($path . '/' . $file->file), '"\\'));
319
-            $size = filesize($path . '/' . $file->file);
317
+            $path = realpath(__DIR__.'/../../www/files/');
318
+            $quoted = sprintf('"%s"', addcslashes(basename($path.'/'.$file->file), '"\\'));
319
+            $size = filesize($path.'/'.$file->file);
320 320
 
321 321
             header('Content-Description: File Transfer');
322
-            header('Content-Type: ' . $file->type);
323
-            header('Content-Disposition: attachment; filename=' . $quoted);
322
+            header('Content-Type: '.$file->type);
323
+            header('Content-Disposition: attachment; filename='.$quoted);
324 324
             header('Content-Transfer-Encoding: binary');
325 325
             header('Connection: Keep-Alive');
326 326
             header('Expires: 0');
327 327
             header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
328 328
             header('Pragma: public');
329
-            header('Content-Length: ' . $size);
329
+            header('Content-Length: '.$size);
330 330
 
331
-            readfile($path . '/' . $file->file);
331
+            readfile($path.'/'.$file->file);
332 332
             exit;
333 333
         }
334 334
 
@@ -366,12 +366,12 @@  discard block
 block discarded – undo
366 366
                 $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
367 367
                 if (isset($_POST[self::POST_PARAMETER_USERNAME])) {
368 368
                     $this->storage->addUser($request::$post);
369
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
369
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/users');
370 370
                     exit;
371 371
                 }
372 372
             } elseif ($relativeCmsUri == '/configuration/users/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
373 373
                 $this->storage->deleteUserBySlug($request::$get[self::GET_PARAMETER_SLUG]);
374
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
374
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/users');
375 375
                 exit;
376 376
             } elseif ($relativeCmsUri == '/configuration/users/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
377 377
                 $this->subTemplate = 'cms/configuration/users-form';
@@ -379,7 +379,7 @@  discard block
 block discarded – undo
379 379
                 $this->parameters[self::PARAMETER_USER] = $this->storage->getUserBySlug($request::$get[self::GET_PARAMETER_SLUG]);
380 380
                 if (isset($_POST[self::POST_PARAMETER_USERNAME])) {
381 381
                     $this->storage->saveUser($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
382
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/users');
382
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/users');
383 383
                     exit;
384 384
                 }
385 385
             }
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
                 $bricks = $this->storage->getBricks();
402 402
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
403 403
                     $this->storage->addDocumentType($request::$post);
404
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
404
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/document-types');
405 405
                     exit;
406 406
                 }
407 407
                 $this->parameters[self::PARAMETER_BRICKS] = $bricks;
@@ -412,14 +412,14 @@  discard block
 block discarded – undo
412 412
                 $bricks = $this->storage->getBricks();
413 413
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
414 414
                     $this->storage->saveDocumentType($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
415
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
415
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/document-types');
416 416
                     exit;
417 417
                 }
418 418
                 $this->parameters[self::PARAMETER_DOCUMENT_TYPE] = $documentType;
419 419
                 $this->parameters[self::PARAMETER_BRICKS] = $bricks;
420 420
             } elseif ($relativeCmsUri == '/configuration/document-types/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
421 421
                 $this->storage->deleteDocumentTypeBySlug($request::$get[self::GET_PARAMETER_SLUG]);
422
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/document-types');
422
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/document-types');
423 423
                 exit;
424 424
             }
425 425
         }
@@ -439,7 +439,7 @@  discard block
 block discarded – undo
439 439
                 $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
440 440
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
441 441
                     $this->storage->addBrick($request::$post);
442
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
442
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/bricks');
443 443
                     exit;
444 444
                 }
445 445
             } elseif ($relativeCmsUri == '/configuration/bricks/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
@@ -448,13 +448,13 @@  discard block
 block discarded – undo
448 448
                 $brick = $this->storage->getBrickBySlug($request::$get[self::GET_PARAMETER_SLUG]);
449 449
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
450 450
                     $this->storage->saveBrick($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
451
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
451
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/bricks');
452 452
                     exit;
453 453
                 }
454 454
                 $this->parameters[self::PARAMETER_BRICK] = $brick;
455 455
             } elseif ($relativeCmsUri == '/configuration/bricks/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
456 456
                 $this->storage->deleteBrickBySlug($request::$get[self::GET_PARAMETER_SLUG]);
457
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/bricks');
457
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/bricks');
458 458
                 exit;
459 459
             } elseif ($relativeCmsUri == '/configuration/image-set') {
460 460
                 $this->subTemplate = 'cms/configuration/image-set';
@@ -479,7 +479,7 @@  discard block
 block discarded – undo
479 479
                 $imageSet = $this->storage->getImageSetBySlug($request::$get[self::GET_PARAMETER_SLUG]);
480 480
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
481 481
                     $this->storage->saveImageSet($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
482
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
482
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/image-set');
483 483
                     exit;
484 484
                 }
485 485
                 $this->parameters[self::PARAMETER_IMAGE_SET] = $imageSet;
@@ -488,12 +488,12 @@  discard block
 block discarded – undo
488 488
                 $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
489 489
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
490 490
                     $this->storage->addImageSet($request::$post);
491
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
491
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/image-set');
492 492
                     exit;
493 493
                 }
494 494
             } elseif ($relativeCmsUri == '/configuration/image-set/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
495 495
                 $this->storage->deleteImageSetBySlug($request::$get[self::GET_PARAMETER_SLUG]);
496
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/image-set');
496
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/image-set');
497 497
                 exit;
498 498
             }
499 499
         }
@@ -513,7 +513,7 @@  discard block
 block discarded – undo
513 513
                 $this->parameters[self::PARAMETER_MAIN_NAV_CLASS] = 'configuration';
514 514
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
515 515
                     $this->storage->addApplicationComponent($request::$post);
516
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
516
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/application-components');
517 517
                     exit;
518 518
                 }
519 519
             } elseif ($relativeCmsUri == '/configuration/application-components/edit' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
@@ -522,13 +522,13 @@  discard block
 block discarded – undo
522 522
                 $applicationComponent = $this->storage->getApplicationComponentBySlug($request::$get[self::GET_PARAMETER_SLUG]);
523 523
                 if (isset($request::$post[self::POST_PARAMETER_TITLE])) {
524 524
                     $this->storage->saveApplicationComponent($request::$get[self::GET_PARAMETER_SLUG], $request::$post);
525
-                    header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
525
+                    header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/application-components');
526 526
                     exit;
527 527
                 }
528 528
                 $this->parameters['applicationComponent'] = $applicationComponent;
529 529
             } elseif ($relativeCmsUri == '/configuration/application-components/delete' && isset($request::$get[self::GET_PARAMETER_SLUG])) {
530 530
                 $this->storage->deleteApplicationComponentBySlug($request::$get[self::GET_PARAMETER_SLUG]);
531
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX] . '/configuration/application-components');
531
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX].'/configuration/application-components');
532 532
                 exit;
533 533
             }
534 534
         }
@@ -538,7 +538,7 @@  discard block
 block discarded – undo
538 538
             if ($relativeCmsUri == '/log-off') {
539 539
                 $_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL] = null;
540 540
                 unset($_SESSION[self::SESSION_PARAMETER_CLOUD_CONTROL]);
541
-                header('Location: ' . $request::$subfolders . $this->parameters[self::PARAMETER_CMS_PREFIX]);
541
+                header('Location: '.$request::$subfolders.$this->parameters[self::PARAMETER_CMS_PREFIX]);
542 542
                 exit;
543 543
             }
544 544
         }
Please login to merge, or discard this patch.