Passed
Push — master ( a1bf27...3a2d72 )
by Jens
04:20
created

Request::isSecure()   B

Complexity

Conditions 5
Paths 7

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 4
nc 7
nop 0
dl 0
loc 6
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
namespace CloudControl\Cms\cc {
4
5
    /**
6
     * Class Request
7
     * @package CloudControl\Cms\cc
8
     */
9
    class Request
10
    {
11
12
        /**
13
         * @var string
14
         */
15
        public static $subfolders;
16
        /**
17
         * @var string
18
         */
19
        public static $requestUri;
20
        /**
21
         * @var string
22
         */
23
        public static $relativeUri;
24
        /**
25
         * @var string
26
         */
27
        public static $queryString;
28
        /**
29
         * @var array
30
         */
31
        public static $requestParameters;
32
        /**
33
         * @var array
34
         */
35
        public static $post = array();
36
        /**
37
         * @var array
38
         */
39
        public static $get = array();
40
        /**
41
         * @var array|mixed
42
         */
43
        public static $argv;
44
        /**
45
         * @var array
46
         */
47
        private $statics;
48
49
        /**
50
         * Request constructor.
51
         */
52
        public function __construct()
53
        {
54
            $rootPath = str_replace('\\', '/', realpath(str_replace('\\', '/', dirname(__FILE__)) . '/../../') . '/');
55
56
            if (PHP_SAPI === 'cli-server' || PHP_SAPI === 'cli') {
57
                self::$subfolders = '/';
58
            } else {
59
                self::$subfolders = '/' . str_replace('//', '/',
60
                        str_replace(str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']), "", $rootPath));
61
                self::$subfolders = str_replace('//', '/', self::$subfolders);
62
                self::$subfolders = str_replace('vendor/getcloudcontrol/cloudcontrol/', '', self::$subfolders);
63
            }
64
65
            if (PHP_SAPI === 'cli') {
66
                array_shift(self::$argv);
67
                self::$queryString = '';
68
                self::$requestUri = self::$subfolders . implode('/', self::$argv);
69
            } else {
70
                self::$requestUri = $_SERVER['REQUEST_URI'];
71
                self::$queryString = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
72
            }
73
            if (self::$subfolders === '/') {
74
                self::$relativeUri = str_replace('?' . self::$queryString, '', substr(self::$requestUri, 1));
75
            } else {
76
                self::$relativeUri = str_replace('?' . self::$queryString, '',
77
                    str_replace(self::$subfolders, '', self::$requestUri));
78
            }
79
80
            self::$requestParameters = explode('/', self::$relativeUri);
81
82
            self::$get = $_GET;
83
            self::$post = $_POST;
84
85
            $this->statics = array(
86
                'subfolders' => self::$subfolders,
87
                'requestUri' => self::$requestUri,
88
                'relativeUri' => self::$relativeUri,
89
                'queryString' => self::$queryString,
90
                'requestParameters' => self::$requestParameters,
91
                'post' => self::$post,
92
                'get' => self::$get
93
            );
94
        }
95
96
        public static function isSecure()
97
        {
98
            return
99
                (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
100
                || $_SERVER['SERVER_PORT'] == 443
101
                || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https');
102
        }
103
104
        public static function isLocalhost()
105
        {
106
            $ipchecklist = array("localhost", "127.0.0.1", "::1");
107
            return in_array($_SERVER['REMOTE_ADDR'], $ipchecklist, true);
108
        }
109
    }
110
}