Passed
Push — develop ( 190495...6fc664 )
by Jens
15:25
created

DocumentRouting::documentOverviewRoute()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 21
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 16
c 0
b 0
f 0
nc 4
nop 2
dl 0
loc 21
rs 9.0534
1
<?php
2
/**
3
 * User: Jens
4
 * Date: 29-1-2017
5
 * Time: 15:23
6
 */
7
8
namespace library\components\cms;
9
10
11
use library\components\CmsComponent;
12
13
class DocumentRouting implements CmsRouting
14
{
15
    /**
16
     * DocumentRouting constructor.
17
     * @param $request
18
     * @param $relativeCmsUri
19
     * @param CmsComponent $cmsComponent
20
     */
21
    public function __construct($request, $relativeCmsUri, $cmsComponent)
22
    {
23
        if ($relativeCmsUri == '/documents') {
24
            $cmsComponent->subTemplate = 'cms/documents';
25
            $cmsComponent->setParameter(CmsComponent::PARAMETER_DOCUMENTS, $cmsComponent->storage->getDocuments());
26
            $cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_DOCUMENTS);
27
        }
28
        $this->documentRouting($request, $relativeCmsUri, $cmsComponent);
29
        $this->folderRouting($request, $relativeCmsUri, $cmsComponent);
30
    }
31
32
33
    /**
34
     * @param $request
35
     * @param $relativeCmsUri
36
     * @param CmsComponent $cmsComponent
37
     * @throws \Exception
38
     */
39
    private function documentRouting($request, $relativeCmsUri, $cmsComponent)
40
    {
41
        if ($relativeCmsUri == '/documents/new-document' && isset($request::$get[CmsComponent::GET_PARAMETER_PATH])) {
42
			$this->documentOverviewRoute($request, $cmsComponent);
43
        } elseif ($relativeCmsUri == '/documents/edit-document' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
44
			$this->editDocumentRoute($request, $cmsComponent);
45
        } elseif ($relativeCmsUri == '/documents/get-brick' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
46
			$this->getBrickRoute($request, $cmsComponent);
47
        } else if ($relativeCmsUri == '/documents/delete-document' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
48
			$this->deleteDocumentRoute($request, $cmsComponent);
49
        }
50
    }
51
52
    /**
53
     * @param $request
54
     * @param $relativeCmsUri
55
     * @param CmsComponent $cmsComponent
56
     */
57
    private function folderRouting($request, $relativeCmsUri, $cmsComponent)
58
    {
59
        if ($relativeCmsUri == '/documents/new-folder' && isset($request::$get[CmsComponent::GET_PARAMETER_PATH])) {
60
			$this->newFolderRoute($request, $cmsComponent);
61
        } else if ($relativeCmsUri == '/documents/edit-folder' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
62
			$this->editFolderRoute($request, $cmsComponent);
63
        } else if ($relativeCmsUri == '/documents/delete-folder' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
64
			$this->deleteFolderRoute($request, $cmsComponent);
65
        }
66
    }
67
68
	/**
69
	 * @param $request
70
	 * @param $cmsComponent
71
	 *
72
	 * @throws \Exception
73
	 */
74
	private function documentOverviewRoute($request, $cmsComponent)
75
	{
76
		$cmsComponent->subTemplate = 'cms/documents/document-form';
77
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_DOCUMENTS);
78
		$cmsComponent->setParameter(CmsComponent::PARAMETER_SMALLEST_IMAGE, $cmsComponent->storage->getSmallestImageSet()->slug);
79
		if (isset($request::$get[CmsComponent::PARAMETER_DOCUMENT_TYPE])) {
80
			if (isset($request::$post[CmsComponent::POST_PARAMETER_TITLE], $request::$get[CmsComponent::PARAMETER_DOCUMENT_TYPE], $request::$get[CmsComponent::GET_PARAMETER_PATH])) {
81
				$cmsComponent->storage->addDocument($request::$post);
82
				header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/documents');
83
				exit;
84
			}
85
			$cmsComponent->setParameter(CmsComponent::PARAMETER_DOCUMENT_TYPE, $cmsComponent->storage->getDocumentTypeBySlug($request::$get[CmsComponent::PARAMETER_DOCUMENT_TYPE], true));
86
			$cmsComponent->setParameter(CmsComponent::PARAMETER_BRICKS, $cmsComponent->storage->getBricks());
87
		} else {
88
			$documentTypes = $cmsComponent->storage->getDocumentTypes();
89
			if (count($documentTypes) < 1) {
90
				throw new \Exception('No Document Types defined yet. <a href="' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/configuration/document-types/new">Please do so first.</a>');
91
			}
92
			$cmsComponent->setParameter(CmsComponent::PARAMETER_DOCUMENT_TYPES, $documentTypes);
93
		}
94
	}
95
96
	/**
97
	 * @param $request
98
	 * @param $cmsComponent
99
	 */
100
	private function editDocumentRoute($request, $cmsComponent)
101
	{
102
		$cmsComponent->subTemplate = 'cms/documents/document-form';
103
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_DOCUMENTS);
104
		$cmsComponent->setParameter(CmsComponent::PARAMETER_SMALLEST_IMAGE, $cmsComponent->storage->getSmallestImageSet()->slug);
105
		if (isset($request::$post[CmsComponent::POST_PARAMETER_TITLE], $request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
106
			$cmsComponent->storage->saveDocument($request::$post);
107
			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/documents');
108
			exit;
109
		}
110
		$cmsComponent->setParameter(CmsComponent::PARAMETER_DOCUMENT, $cmsComponent->storage->getDocumentBySlug($request::$get[CmsComponent::GET_PARAMETER_SLUG]));
111
		$request::$get[CmsComponent::GET_PARAMETER_PATH] = $request::$get[CmsComponent::GET_PARAMETER_SLUG];
112
		$cmsComponent->setParameter(CmsComponent::PARAMETER_DOCUMENT_TYPE, $cmsComponent->storage->getDocumentTypeBySlug($cmsComponent->getParameter(CmsComponent::PARAMETER_DOCUMENT)->documentTypeSlug, true));
113
		$cmsComponent->setParameter(CmsComponent::PARAMETER_BRICKS, $cmsComponent->storage->getBricks());
114
	}
115
116
	/**
117
	 * @param $request
118
	 * @param $cmsComponent
119
	 */
120
	private function getBrickRoute($request, $cmsComponent)
121
	{
122
		$cmsComponent->setParameter(CmsComponent::PARAMETER_SMALLEST_IMAGE, $cmsComponent->storage->getSmallestImageSet()->slug);
123
		$cmsComponent->subTemplate = 'cms/documents/brick';
124
		$cmsComponent->setParameter(CmsComponent::PARAMETER_BRICK, $cmsComponent->storage->getBrickBySlug($request::$get[CmsComponent::GET_PARAMETER_SLUG]));
125
		$cmsComponent->setParameter(CmsComponent::PARAMETER_STATIC, $request::$get[CmsComponent::PARAMETER_STATIC] === 'true');
126
		if (isset($request::$get[CmsComponent::PARAMETER_MY_BRICK_SLUG])) {
127
			$cmsComponent->setParameter(CmsComponent::PARAMETER_MY_BRICK_SLUG, $request::$get[CmsComponent::PARAMETER_MY_BRICK_SLUG]);
128
		}
129
		$result = new \stdClass();
130
		$result->body = $cmsComponent->renderTemplate('cms/documents/brick');
131
		$result->rteList = isset($GLOBALS['rteList']) ? $GLOBALS['rteList'] : array();
132
		ob_clean();
133
		header(CmsComponent::CONTENT_TYPE_APPLICATION_JSON);
134
		die(json_encode($result));
135
	}
136
137
	/**
138
	 * @param $request
139
	 * @param $cmsComponent
140
	 */
141
	private function deleteDocumentRoute($request, $cmsComponent)
142
	{
143
		$cmsComponent->storage->deleteDocumentBySlug($request::$get[CmsComponent::GET_PARAMETER_SLUG]);
144
		header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/documents');
145
		exit;
146
	}
147
148
	/**
149
	 * @param $request
150
	 * @param $cmsComponent
151
	 */
152
	private function newFolderRoute($request, $cmsComponent)
153
	{
154
		$cmsComponent->subTemplate = 'cms/documents/folder-form';
155
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_DOCUMENTS);
156
		if (isset($request::$post[CmsComponent::POST_PARAMETER_TITLE], $request::$post[CmsComponent::GET_PARAMETER_PATH])) {
157
			$cmsComponent->storage->addDocumentFolder($request::$post);
158
			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/documents');
159
			exit;
160
		}
161
	}
162
163
	/**
164
	 * @param $request
165
	 * @param $cmsComponent
166
	 */
167
	private function editFolderRoute($request, $cmsComponent)
168
	{
169
		$cmsComponent->subTemplate = 'cms/documents/folder-form';
170
		$folder = $cmsComponent->storage->getDocumentFolderBySlug($request::$get[CmsComponent::GET_PARAMETER_SLUG]);
171
172
		$path = $request::$get[CmsComponent::GET_PARAMETER_SLUG];
173
		$path = explode('/', $path);
174
		array_pop($path);
175
		$path = implode('/', $path);
176
177
		$request::$get[CmsComponent::GET_PARAMETER_PATH] = '/' . $path;
178
179
		if (isset($request::$post[CmsComponent::POST_PARAMETER_TITLE], $request::$post['content'])) {
180
			$cmsComponent->storage->saveDocumentFolder($request::$post);
181
			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/documents');
182
			exit;
183
		}
184
185
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_DOCUMENTS);
186
		$cmsComponent->setParameter(CmsComponent::PARAMETER_FOLDER, $folder);
187
	}
188
189
	/**
190
	 * @param $request
191
	 * @param $cmsComponent
192
	 */
193
	private function deleteFolderRoute($request, $cmsComponent)
194
	{
195
		$cmsComponent->storage->deleteDocumentFolderBySlug($request::$get[CmsComponent::GET_PARAMETER_SLUG]);
196
		header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/documents');
197
		exit;
198
	}
199
}