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

FolderRouting::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Created by jensk on 4-9-2017.
4
 */
5
6
namespace CloudControl\Cms\components\cms\document {
7
8
9
    use CloudControl\Cms\cc\Request;
10
    use CloudControl\Cms\components\cms\CmsConstants;
11
    use CloudControl\Cms\components\cms\CmsRouting;
12
    use CloudControl\Cms\components\CmsComponent;
13
14
    class FolderRouting extends CmsRouting
15
    {
16
17
        protected static $routes = array(
18
            '/documents/new-folder' => 'newFolderRoute',
19
            '/documents/edit-folder' => 'editFolderRoute',
20
            '/documents/delete-folder' => 'deleteFolderRoute',
21
        );
22
23
        /**
24
         * CmsRouting constructor.
25
         *
26
         * @param Request $request
27
         * @param string $relativeCmsUri
28
         * @param CmsComponent $cmsComponent
29
         * @throws \Exception
30
         */
31
        public function __construct(Request $request, $relativeCmsUri, CmsComponent $cmsComponent)
32
        {
33
            $this->doRouting($request, $relativeCmsUri, $cmsComponent);
34
        }
35
36
        /**
37
         * @param Request $request
38
         * @param CmsComponent $cmsComponent
39
         * @throws \Exception
40
         */
41
        protected function newFolderRoute($request, $cmsComponent)
42
        {
43
            $cmsComponent->subTemplate = 'documents/folder-form';
44
            $cmsComponent->setParameter(CmsConstants::PARAMETER_MAIN_NAV_CLASS, CmsConstants::PARAMETER_DOCUMENTS);
45
            if (isset($request::$post[CmsConstants::POST_PARAMETER_TITLE], $request::$post[CmsConstants::GET_PARAMETER_PATH])) {
46
                $cmsComponent->storage->getDocuments()->addDocumentFolder($request::$post);
47
                $cmsComponent->storage->getActivityLog()->add('created folder ' . $request::$post[CmsConstants::POST_PARAMETER_TITLE] . ' in path ' . $request::$get[CmsConstants::GET_PARAMETER_PATH],
48
                    'plus');
49
                header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsConstants::PARAMETER_CMS_PREFIX) . '/documents');
50
                exit;
51
            }
52
        }
53
54
        /**
55
         * @param Request $request
56
         * @param CmsComponent $cmsComponent
57
         * @throws \Exception
58
         */
59
        protected function editFolderRoute($request, $cmsComponent)
60
        {
61
            $cmsComponent->subTemplate = 'documents/folder-form';
62
            $folder = $cmsComponent->storage->getDocuments()->getDocumentFolderBySlug($request::$get[CmsConstants::GET_PARAMETER_SLUG]);
63
64
            $path = $request::$get[CmsConstants::GET_PARAMETER_SLUG];
65
            $path = explode('/', $path);
66
            array_pop($path);
67
            $path = implode('/', $path);
68
69
            $request::$get[CmsConstants::GET_PARAMETER_PATH] = '/' . $path;
70
71
            if (isset($request::$post[CmsConstants::POST_PARAMETER_TITLE], $request::$post['content'])) {
72
                $cmsComponent->storage->getDocuments()->addDocumentFolder($request::$post);
73
                $cmsComponent->storage->getActivityLog()->add('edited folder ' . $request::$post[CmsConstants::POST_PARAMETER_TITLE] . ' in path ' . $request::$get[CmsConstants::GET_PARAMETER_PATH],
74
                    'pencil');
75
                header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsConstants::PARAMETER_CMS_PREFIX) . '/documents');
76
                exit;
77
            }
78
79
            $cmsComponent->setParameter(CmsConstants::PARAMETER_MAIN_NAV_CLASS, CmsConstants::PARAMETER_DOCUMENTS);
80
            $cmsComponent->setParameter(CmsConstants::PARAMETER_FOLDER, $folder);
81
        }
82
83
        /**
84
         * @param Request $request
85
         * @param CmsComponent $cmsComponent
86
         * @throws \Exception
87
         */
88
        protected function deleteFolderRoute($request, $cmsComponent)
89
        {
90
            $cmsComponent->storage->getDocuments()->deleteDocumentFolderBySlug($request::$get[CmsConstants::GET_PARAMETER_SLUG]);
91
            $cmsComponent->storage->getActivityLog()->add('deleted folder /' . $request::$get[CmsConstants::GET_PARAMETER_SLUG],
92
                'trash');
93
            header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsConstants::PARAMETER_CMS_PREFIX) . '/documents?folder-delete');
94
            exit;
95
        }
96
    }
97
}