Passed
Push — master ( f61691...1918f3 )
by Jens
07:18
created

BaseRouting::apiRouting()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 13
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 10
c 1
b 0
f 0
nc 4
nop 1
dl 0
loc 13
rs 9.2
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\components\CmsComponent;
13
use CloudControl\Cms\search\Search;
14
15
class BaseRouting implements CmsRouting
16
{
17
    protected $userRights;
18
    /**
19
     * @var Request
20
     */
21
    protected $request;
22
    /**
23
     * @var string
24
     */
25
    protected $relativeCmsUri;
26
    /**
27
     * @var CmsComponent
28
     */
29
    protected $cmsComponent;
30
31
    /**
32
     * CmsRouting constructor.
33
     *
34
     * @param Request $request
35
     * @param string $relativeCmsUri
36
     * @param CmsComponent $cmsComponent
37
     */
38
    public function __construct(Request $request, $relativeCmsUri, CmsComponent $cmsComponent)
39
    {
40
        $this->request = $request;
41
        $this->relativeCmsUri = $relativeCmsUri;
42
        $this->cmsComponent = $cmsComponent;
43
    }
44
45
    /**
46
     * @param $userRights
47
     */
48
    public function setUserRights($userRights)
49
    {
50
        $this->userRights = $userRights;
51
    }
52
53
    /**
54
     * Call the different routing methods
55
     */
56
    public function route()
57
    {
58
        $this->dashboardRouting($this->relativeCmsUri);
59
        $this->logOffRouting($this->request, $this->relativeCmsUri);
60
        $this->apiRouting($this->relativeCmsUri);
61
        $this->documentRouting($this->userRights, $this->relativeCmsUri);
62
        $this->valuelistsRouting($this->userRights, $this->relativeCmsUri);
63
        $this->sitemapRouting($this->userRights, $this->relativeCmsUri);
64
        $this->redirectRouting($this->userRights, $this->relativeCmsUri);
65
        $this->imageRouting($this->userRights, $this->relativeCmsUri);
66
        $this->filesRouting($this->userRights, $this->relativeCmsUri);
67
        $this->configurationRouting($this->userRights, $this->relativeCmsUri);
68
        $this->searchRouting($this->relativeCmsUri);
69
    }
70
71
    /**
72
     * @param string $relativeCmsUri
73
     */
74
    protected function dashboardRouting($relativeCmsUri)
75
    {
76
        if ($relativeCmsUri == '' || $relativeCmsUri == '/') {
77
            $this->cmsComponent->subTemplate = 'dashboard';
78
            $this->cmsComponent->setParameter('activityLog', $this->cmsComponent->storage->getActivityLog()->getActivityLog());
79
            $documentCount = $this->cmsComponent->storage->getDocuments()->getTotalDocumentCount();
80
            $indexer = new Search($this->cmsComponent->storage);
81
            $indexedDocuments = $indexer->getIndexedDocuments();
82
            $this->cmsComponent->setParameter(CmsConstants::PARAMETER_SEARCH_NEEDS_UPDATE, $documentCount !== $indexedDocuments);
83
        }
84
    }
85
86
    /**
87
     * @param Request $request
88
     * @param string $relativeCmsUri
89
     */
90
    protected function logOffRouting($request, $relativeCmsUri)
91
    {
92
        if ($relativeCmsUri == '/log-off') {
93
            $this->cmsComponent->storage->getActivityLog()->add('logged off', 'user');
94
            $_SESSION[CmsConstants::SESSION_PARAMETER_CLOUD_CONTROL] = null;
95
            unset($_SESSION[CmsConstants::SESSION_PARAMETER_CLOUD_CONTROL]);
96
            header('Location: ' . $request::$subfolders . $this->cmsComponent->getParameter(CmsConstants::PARAMETER_CMS_PREFIX));
97
            exit;
98
        }
99
    }
100
101
    /**
102
     * @param string $relativeCmsUri
103
     */
104
    protected function apiRouting($relativeCmsUri)
105
    {
106
        if ($relativeCmsUri == '/images.json') {
107
            header(CmsConstants::CONTENT_TYPE_APPLICATION_JSON);
108
            die(json_encode($this->cmsComponent->storage->getImages()->getImages()));
109
        } elseif ($relativeCmsUri == '/files.json') {
110
            header(CmsConstants::CONTENT_TYPE_APPLICATION_JSON);
111
            die(json_encode($this->cmsComponent->storage->getFiles()->getFiles()));
112
        } elseif ($relativeCmsUri == '/documents.json') {
113
            header(CmsConstants::CONTENT_TYPE_APPLICATION_JSON);
114
            die(json_encode($this->cmsComponent->storage->getDocuments()->getDocuments()));
115
        }
116
    }
117
118
    /**
119
     * @param $userRights
120
     * @param string $relativeCmsUri
121
     */
122
    protected function documentRouting($userRights, $relativeCmsUri)
123
    {
124
        if (in_array(CmsConstants::PARAMETER_DOCUMENTS, $userRights)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
191
            new ConfigurationRouting($this->request, $relativeCmsUri, $this->cmsComponent);
192
        }
193
    }
194
195
    /**
196
     * @param string $relativeCmsUri
197
     */
198
    protected function searchRouting($relativeCmsUri)
199
    {
200
        new SearchRouting($this->request, $relativeCmsUri, $this->cmsComponent);
201
    }
202
}