Glide::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
/*
4
    HCSF - A multilingual CMS and Shopsystem
5
    Copyright (C) 2014  Marcus Haase - [email protected]
6
7
    This program is free software: you can redistribute it and/or modify
8
    it under the terms of the GNU General Public License as published by
9
    the Free Software Foundation, either version 3 of the License, or
10
    (at your option) any later version.
11
12
    This program is distributed in the hope that it will be useful,
13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
    GNU General Public License for more details.
16
17
    You should have received a copy of the GNU General Public License
18
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
 */
20
21
namespace HaaseIT\HCSF\Controller;
22
23
24
use Zend\ServiceManager\ServiceManager;
25
26
class Glide extends Base
27
{
28
    private $aPath;
29
30
    public function __construct(ServiceManager $serviceManager, $aPath)
31
    {
32
        parent::__construct($serviceManager);
33
        $this->aPath = $aPath;
34
    }
35
36
    public function preparePage()
37
    {
38
        $sPath = implode('/', $this->aPath);
39
        $sImageroot = PATH_BASEDIR.$this->config->getCore('directory_glide_master');
40
41
        if (
42
            is_file($sImageroot.substr($sPath, strlen($this->config->getCore('directory_images')) + 1))
43
            && getimagesize($sImageroot.substr($sPath, strlen($this->config->getCore('directory_images')) + 1))
44
        ) {
45
            $glideserver = \League\Glide\ServerFactory::create([
46
                'source' => $sImageroot,
47
                'cache' => PATH_GLIDECACHE,
48
                'max_image_size' => $this->config->getCore('glide_max_imagesize'),
49
            ]);
50
            $glideserver->setBaseUrl('/'.$this->config->getCore('directory_images').'/');
51
            // Generate a URL
52
53
            try {
54
                // Validate HTTP signature
55
                \League\Glide\Signatures\SignatureFactory::create($this->config->getSecret('glide_signkey'))->validateRequest($sPath, $_GET);
56
                $glideserver->outputImage($sPath, $_GET);
57
                $this->helper->terminateScript();
58
59
            } catch (\League\Glide\Signatures\SignatureException $e) {
60
                $this->P->setStatus(404);
61
            }
62
        } else {
63
            $this->P->setStatus(404);
64
        }
65
66
        return $this->P;
67
    }
68
}
69