Passed
Push — develop ( ac6bc8...190495 )
by Jens
02:51
created

DocumentTypeRouting   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 80
rs 10
c 0
b 0
f 0
wmc 13
lcom 0
cbo 1

5 Methods

Rating   Name   Duplication   Size   Complexity  
B __construct() 0 12 7
A overviewRoute() 0 6 1
A newRoute() 0 12 2
A editRoute() 0 14 2
A deleteRoute() 0 6 1
1
<?php
2
/**
3
 * User: jensk
4
 * Date: 30-1-2017
5
 * Time: 13:22
6
 */
7
8
namespace library\components\cms\configuration;
9
10
11
use library\cc\Request;
12
use library\components\cms\CmsRouting;
13
use library\components\CmsComponent;
14
15
class DocumentTypeRouting implements CmsRouting
16
{
17
18
	/**
19
	 * DocumentTypeRouting constructor.
20
	 *
21
	 * @param Request      $request
22
	 * @param String       $relativeCmsUri
23
	 * @param CmsComponent $cmsComponent
24
	 */
25
	public function __construct($request, $relativeCmsUri, $cmsComponent)
26
	{
27
		if ($relativeCmsUri == '/configuration/document-types') {
28
			$this->overviewRoute($cmsComponent);
29
		} elseif ($relativeCmsUri == '/configuration/document-types/new') {
30
			$this->newRoute($request, $cmsComponent);
31
		} elseif ($relativeCmsUri == '/configuration/document-types/edit' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
32
			$this->editRoute($request, $cmsComponent);
33
		} elseif ($relativeCmsUri == '/configuration/document-types/delete' && isset($request::$get[CmsComponent::GET_PARAMETER_SLUG])) {
34
			$this->deleteRoute($request, $cmsComponent);
35
		}
36
	}
37
38
	/**
39
	 * @param $cmsComponent
40
	 */
41
	private function overviewRoute($cmsComponent)
42
	{
43
		$cmsComponent->subTemplate = 'cms/configuration/document-types';
44
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_CONFIGURATION);
45
		$cmsComponent->setParameter(CmsComponent::PARAMETER_DOCUMENT_TYPES, $cmsComponent->storage->getDocumentTypes());
46
	}
47
48
	/**
49
	 * @param $request
50
	 * @param $cmsComponent
51
	 */
52
	private function newRoute($request, $cmsComponent)
53
	{
54
		$cmsComponent->subTemplate = 'cms/configuration/document-types-form';
55
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_CONFIGURATION);
56
		$bricks = $cmsComponent->storage->getBricks();
57
		if (isset($request::$post[CmsComponent::POST_PARAMETER_TITLE])) {
58
			$cmsComponent->storage->addDocumentType($request::$post);
59
			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/configuration/document-types');
60
			exit;
61
		}
62
		$cmsComponent->setParameter(CmsComponent::PARAMETER_BRICKS, $bricks);
63
	}
64
65
	/**
66
	 * @param $request
67
	 * @param $cmsComponent
68
	 */
69
	private function editRoute($request, $cmsComponent)
70
	{
71
		$cmsComponent->subTemplate = 'cms/configuration/document-types-form';
72
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_CONFIGURATION);
73
		$documentType = $cmsComponent->storage->getDocumentTypeBySlug($request::$get[CmsComponent::GET_PARAMETER_SLUG], false);
74
		$bricks = $cmsComponent->storage->getBricks();
75
		if (isset($request::$post[CmsComponent::POST_PARAMETER_TITLE])) {
76
			$cmsComponent->storage->saveDocumentType($request::$get[CmsComponent::GET_PARAMETER_SLUG], $request::$post);
77
			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/configuration/document-types');
78
			exit;
79
		}
80
		$cmsComponent->setParameter(CmsComponent::PARAMETER_DOCUMENT_TYPE, $documentType);
81
		$cmsComponent->setParameter(CmsComponent::PARAMETER_BRICKS, $bricks);
82
	}
83
84
	/**
85
	 * @param $request
86
	 * @param $cmsComponent
87
	 */
88
	private function deleteRoute($request, $cmsComponent)
89
	{
90
		$cmsComponent->storage->deleteDocumentTypeBySlug($request::$get[CmsComponent::GET_PARAMETER_SLUG]);
91
		header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/configuration/document-types');
92
		exit;
93
	}
94
}