Passed
Push — master ( 3f6c85...9c6499 )
by Jens
02:40
created

FilesRouting::__construct()   B

Complexity

Conditions 7
Paths 5

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 9
c 1
b 0
f 0
nc 5
nop 3
dl 0
loc 12
rs 8.2222
1
<?php
2
/**
3
 * User: jensk
4
 * Date: 30-1-2017
5
 * Time: 12:46
6
 */
7
8
namespace library\components\cms;
9
10
use library\cc\Request;
11
use library\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 library\storage\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
		$path = realpath(__DIR__ . '/../../../www/files/');
43
		$quoted = sprintf('"%s"', addcslashes(basename($path . '/' . $file->file), '"\\'));
44
		$size = filesize($path . '/' . $file->file);
45
46
		header('Content-Description: File Transfer');
47
		header('Content-Type: ' . $file->type);
48
		header('Content-Disposition: attachment; filename=' . $quoted);
49
		header('Content-Transfer-Encoding: binary');
50
		header('Connection: Keep-Alive');
51
		header('Expires: 0');
52
		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
53
		header('Pragma: public');
54
		header('Content-Length: ' . $size);
55
56
		readfile($path . '/' . $file->file);
57
		exit;
58
	}
59
60
	/**
61
	 * @param CmsComponent $cmsComponent
62
	 */
63
	private function overviewRoute($cmsComponent)
64
	{
65
		$cmsComponent->subTemplate = 'cms/files';
66
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_FILES);
67
		$cmsComponent->setParameter(CmsComponent::PARAMETER_FILES, $cmsComponent->storage->getFiles()->getFiles());
68
	}
69
70
	/**
71
	 * @param $request
72
	 * @param CmsComponent $cmsComponent
73
	 */
74
	private function newRoute($request, $cmsComponent)
75
	{
76
		$cmsComponent->subTemplate = 'cms/files/form';
77
		$cmsComponent->setParameter(CmsComponent::PARAMETER_MAIN_NAV_CLASS, CmsComponent::PARAMETER_FILES);
78
		if (isset($_FILES[CmsComponent::FILES_PARAMETER_FILE])) {
79
			$cmsComponent->storage->getFiles()->addFile($_FILES[CmsComponent::FILES_PARAMETER_FILE]);
80
			header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/files');
81
			exit;
82
		}
83
	}
84
85
	/**
86
	 * @param $request
87
	 * @param CmsComponent $cmsComponent
88
	 */
89
	private function deleteRoute($request, $cmsComponent)
90
	{
91
		$cmsComponent->storage->getFiles()->deleteFileByName($request::$get[CmsComponent::FILES_PARAMETER_FILE]);
92
		header('Location: ' . $request::$subfolders . $cmsComponent->getParameter(CmsComponent::PARAMETER_CMS_PREFIX) . '/files');
93
		exit;
94
	}
95
96
}