Passed
Push — master ( 9c6499...c22bc5 )
by Jens
04:52 queued 02:21
created

FilesRouting::__construct()   B

Complexity

Conditions 7
Paths 5

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 9
nc 5
nop 3
dl 0
loc 12
rs 8.2222
c 0
b 0
f 0
1
<?php
2
/**
3
 * User: jensk
4
 * Date: 30-1-2017
5
 * Time: 12:46
6
 */
7
8
namespace CloudControl\Cms\components\cms;
9
10
use CloudControl\Cms\cc\Request;
11
use CloudControl\Cms\components\CmsComponent;
12
13
class FilesRouting implements CmsRouting
14
{
15
	/**
16
	 * FilesRouting constructor.
17
	 *
18
	 * @param Request $request
19
	 * @param $relativeCmsUri
20
	 * @param CmsComponent $cmsComponent
21
	 */
22
	public function __construct($request, $relativeCmsUri, $cmsComponent)
23
	{
24
		if ($relativeCmsUri == '/files') {
25
			$this->overviewRoute($cmsComponent);
26
		} elseif ($relativeCmsUri == '/files/new') {
27
			$this->newRoute($request, $cmsComponent);
28
		} elseif ($relativeCmsUri == '/files/get' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
29
			$this->downloadRoute($request::$get[CmsComponent::FILES_PARAMETER_FILE], $cmsComponent);
30
		} elseif ($relativeCmsUri == '/files/delete' && isset($request::$get[CmsComponent::FILES_PARAMETER_FILE])) {
31
			$this->deleteRoute($request, $cmsComponent);
32
		}
33
	}
34
35
	/**
36
	 * @param $slug
37
	 * @param CmsComponent $cmsComponent
38
	 */
39
	private function downloadRoute($slug, $cmsComponent)
40
	{
41
		$file = $cmsComponent->storage->getFiles()->getFileByName($slug);
0 ignored issues
show
Bug introduced by
Are you sure the assignment to $file is correct as $cmsComponent->storage->...)->getFileByName($slug) (which targets CloudControl\Cms\storage...torage::getFileByName()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
42
		// TODO FIX THIS PATH
43
		$path = realpath(__DIR__ . '/../www/files/');
44
		$quoted = sprintf('"%s"', addcslashes(basename($path . '/' . $file->file), '"\\'));
45
		$size = filesize($path . '/' . $file->file);
46
47
		header('Content-Description: File Transfer');
48
		header('Content-Type: ' . $file->type);
49
		header('Content-Disposition: attachment; filename=' . $quoted);
50
		header('Content-Transfer-Encoding: binary');
51
		header('Connection: Keep-Alive');
52
		header('Expires: 0');
53
		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
54
		header('Pragma: public');
55
		header('Content-Length: ' . $size);
56
57
		readfile($path . '/' . $file->file);
58
		exit;
59
	}
60
61
	/**
62
	 * @param CmsComponent $cmsComponent
63
	 */
64
	private function overviewRoute($cmsComponent)
65
	{
66
		$cmsComponent->subTemplate = 'files';
67
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_FILES);
68
		$cmsComponent->setParameter(CmsComponent::PARAMETER_FILES, $cmsComponent->storage->getFiles()->getFiles());
69
	}
70
71
	/**
72
	 * @param $request
73
	 * @param CmsComponent $cmsComponent
74
	 */
75
	private function newRoute($request, $cmsComponent)
76
	{
77
		$cmsComponent->subTemplate = 'files/form';
78
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_FILES);
79
		if (isset($_FILES[CmsComponent::FILES_PARAMETER_FILE])) {
80
			$cmsComponent->storage->getFiles()->addFile($_FILES[CmsComponent::FILES_PARAMETER_FILE]);
81
			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/files');
82
			exit;
83
		}
84
	}
85
86
	/**
87
	 * @param $request
88
	 * @param CmsComponent $cmsComponent
89
	 */
90
	private function deleteRoute($request, $cmsComponent)
91
	{
92
		$cmsComponent->storage->getFiles()->deleteFileByName($request::$get[CmsComponent::FILES_PARAMETER_FILE]);
93
		header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/files');
94
		exit;
95
	}
96
97
}