Passed
Push — develop ( 4b65e1...8da09c )
by Jens
02:48
created

BaseRouting::filesApiRouting()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * User: Jens
4
 * Date: 4-9-2017
5
 * Time: 20:18
6
 */
7
8
namespace CloudControl\Cms\components\cms;
9
10
11
use CloudControl\Cms\cc\Request;
12
use CloudControl\Cms\cc\ResponseHeaders;
13
use CloudControl\Cms\components\CmsComponent;
14
use CloudControl\Cms\search\Search;
15
16
class BaseRouting extends CmsRouting
17
{
18
    protected $userRights;
19
    /**
20
     * @var Request
21
     */
22
    protected $request;
23
    /**
24
     * @var string
25
     */
26
    protected $relativeCmsUri;
27
    /**
28
     * @var CmsComponent
29
     */
30
    protected $cmsComponent;
31
32
    /**
33
     * CmsRouting constructor.
34
     *
35
     * @param Request $request
36
     * @param string $relativeCmsUri
37
     * @param CmsComponent $cmsComponent
38
     */
39
    public function __construct(Request $request, $relativeCmsUri, CmsComponent $cmsComponent)
40
    {
41
        $this->request = $request;
42
        $this->relativeCmsUri = $relativeCmsUri;
43
        $this->cmsComponent = $cmsComponent;
44
    }
45
46
    /**
47
     * @param $userRights
48
     */
49
    public function setUserRights($userRights)
50
    {
51
        $this->userRights = $userRights;
52
    }
53
54
    /**
55
     * Call the different routing methods
56
     * @throws \Exception
57
     */
58
    public function route()
59
    {
60
        $this->dashboardRouting($this->relativeCmsUri);
61
        $this->logOffRouting($this->request, $this->relativeCmsUri);
62
        $this->apiRouting($this->relativeCmsUri);
63
        $this->documentRouting($this->userRights, $this->relativeCmsUri);
64
        $this->valuelistsRouting($this->userRights, $this->relativeCmsUri);
65
        $this->sitemapRouting($this->userRights, $this->relativeCmsUri);
66
        $this->redirectRouting($this->userRights, $this->relativeCmsUri);
67
        $this->imageRouting($this->userRights, $this->relativeCmsUri);
68
        $this->filesRouting($this->userRights, $this->relativeCmsUri);
69
        $this->configurationRouting($this->userRights, $this->relativeCmsUri);
70
        $this->searchRouting($this->relativeCmsUri);
71
    }
72
73
    /**
74
     * @param string $relativeCmsUri
75
     * @throws \Exception
76
     */
77
    protected function dashboardRouting($relativeCmsUri)
78
    {
79
        if ($relativeCmsUri === '' || $relativeCmsUri === '/') {
80
            $this->cmsComponent->subTemplate = 'dashboard';
81
            $this->cmsComponent->setParameter('activityLog',
82
                $this->cmsComponent->storage->getActivityLog()->getActivityLog());
83
            $documentCount = $this->cmsComponent->storage->getDocuments()->getTotalDocumentCount();
84
            $indexer = new Search($this->cmsComponent->storage);
85
            $indexedDocuments = $indexer->getIndexedDocuments();
86
            $this->cmsComponent->setParameter(CmsConstants::PARAMETER_SEARCH_NEEDS_UPDATE,
87
                $documentCount !== $indexedDocuments);
88
        }
89
    }
90
91
    /**
92
     * @param Request $request
93
     * @param string $relativeCmsUri
94
     */
95
    protected function logOffRouting($request, $relativeCmsUri)
96
    {
97
        if ($relativeCmsUri === '/log-off') {
98
            $this->cmsComponent->storage->getActivityLog()->add('logged off', 'user');
99
            $_SESSION[CmsConstants::SESSION_PARAMETER_CLOUD_CONTROL] = null;
100
            unset($_SESSION[CmsConstants::SESSION_PARAMETER_CLOUD_CONTROL]);
101
            header('Location: ' . $request::$subfolders . $this->cmsComponent->getParameter(CmsConstants::PARAMETER_CMS_PREFIX));
102
            exit;
103
        }
104
    }
105
106
    /**
107
     * @param string $relativeCmsUri
108
     * @throws \Exception
109
     */
110
    protected function apiRouting($relativeCmsUri)
111
    {
112
        $this->imagesApiRouting($relativeCmsUri);
113
        $this->filesApiRouting($relativeCmsUri);
114
        $this->documentsApiRouting($relativeCmsUri);
115
    }
116
117
    /**
118
     * @param $userRights
119
     * @param string $relativeCmsUri
120
     * @throws \Exception
121
     */
122
    protected function documentRouting($userRights, $relativeCmsUri)
123
    {
124
        if (in_array(CmsConstants::PARAMETER_DOCUMENTS, $userRights, true)) {
125
            new DocumentRouting($this->request, $relativeCmsUri, $this->cmsComponent);
126
        }
127
    }
128
129
    /**
130
     * @param $userRights
131
     * @param string $relativeCmsUri
132
     */
133
    protected function valuelistsRouting($userRights, $relativeCmsUri)
134
    {
135
        if (in_array(CmsConstants::PARAMETER_VALUELISTS, $userRights, true)) {
136
            new ValuelistRouting($this->request, $relativeCmsUri, $this->cmsComponent);
137
        }
138
    }
139
140
    /**
141
     * @param $userRights
142
     * @param string $relativeCmsUri
143
     */
144
    protected function sitemapRouting($userRights, $relativeCmsUri)
145
    {
146
        if (in_array(CmsConstants::PARAMETER_SITEMAP, $userRights, true)) {
147
            new SitemapRouting($this->request, $relativeCmsUri, $this->cmsComponent);
148
        }
149
    }
150
151
    /**
152
     * @param $userRights
153
     * @param string $relativeCmsUri
154
     */
155
    protected function redirectRouting($userRights, $relativeCmsUri)
156
    {
157
        if (in_array(CmsConstants::PARAMETER_SITEMAP, $userRights, true)) {
158
            new RedirectRouting($this->request, $relativeCmsUri, $this->cmsComponent);
159
        }
160
    }
161
162
    /**
163
     * @param $userRights
164
     * @param string $relativeCmsUri
165
     */
166
    protected function imageRouting($userRights, $relativeCmsUri)
167
    {
168
        if (in_array(CmsConstants::PARAMETER_IMAGES, $userRights, true)) {
169
            new ImagesRouting($this->request, $relativeCmsUri, $this->cmsComponent);
170
        }
171
    }
172
173
    /**
174
     * @param $userRights
175
     * @param string $relativeCmsUri
176
     */
177
    protected function filesRouting($userRights, $relativeCmsUri)
178
    {
179
        if (in_array(CmsConstants::PARAMETER_FILES, $userRights, true)) {
180
            new FilesRouting($this->request, $relativeCmsUri, $this->cmsComponent);
181
        }
182
    }
183
184
    /**
185
     * @param $userRights
186
     * @param string $relativeCmsUri
187
     */
188
    protected function configurationRouting($userRights, $relativeCmsUri)
189
    {
190
        if (in_array(CmsConstants::PARAMETER_CONFIGURATION, $userRights, true)) {
191
            new ConfigurationRouting($this->request, $relativeCmsUri, $this->cmsComponent);
192
        }
193
    }
194
195
    /**
196
     * @param string $relativeCmsUri
197
     * @throws \Exception
198
     */
199
    protected function searchRouting($relativeCmsUri)
200
    {
201
        new SearchRouting($this->request, $relativeCmsUri, $this->cmsComponent);
202
    }
203
204
    /**
205
     * @param $relativeCmsUri
206
     */
207
    protected function imagesApiRouting($relativeCmsUri)
208
    {
209
        if ($relativeCmsUri === '/images.json') {
210
            ResponseHeaders::add(ResponseHeaders::HEADER_CONTENT_TYPE, ResponseHeaders::HEADER_CONTENT_TYPE_CONTENT_APPLICATION_JSON);
211
            ResponseHeaders::sendAllHeaders();
212
            die(json_encode($this->cmsComponent->storage->getImages()->getImages()));
213
        }
214
    }
215
216
    /**
217
     * @param $relativeCmsUri
218
     */
219
    protected function filesApiRouting($relativeCmsUri)
220
    {
221
        if ($relativeCmsUri === '/files.json') {
222
            ResponseHeaders::add(ResponseHeaders::HEADER_CONTENT_TYPE, ResponseHeaders::HEADER_CONTENT_TYPE_CONTENT_APPLICATION_JSON);
223
            ResponseHeaders::sendAllHeaders();
224
            die(json_encode($this->cmsComponent->storage->getFiles()->getFiles()));
225
        }
226
    }
227
228
    /**
229
     * @param $relativeCmsUri
230
     */
231
    protected function documentsApiRouting($relativeCmsUri)
232
    {
233
        if ($relativeCmsUri === '/documents.json') {
234
            ResponseHeaders::add(ResponseHeaders::HEADER_CONTENT_TYPE, ResponseHeaders::HEADER_CONTENT_TYPE_CONTENT_APPLICATION_JSON);
235
            ResponseHeaders::sendAllHeaders();
236
            die(json_encode($this->cmsComponent->storage->getDocuments()->getDocuments()));
237
        }
238
    }
239
}