xos_kernel_Xoops2::path()   A
last analyzed

Complexity

Conditions 5
Paths 12

Size

Total Lines 24
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 5
eloc 14
nc 12
nop 2
dl 0
loc 24
rs 9.4888
c 3
b 0
f 0
1
<?php
2
/**
3
 * XOOPS kernel
4
 *
5
 * !IMPORTANT: The file should have not been created and will be removed
6
 *
7
 * You may not change or alter any portion of this comment or credits
8
 * of supporting developers from this source code or any supporting source code
9
 * which is considered copyrighted (c) material of the original comment or credit authors.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
 *
14
 * @copyright       (c) 2000-2016 XOOPS Project (www.xoops.org)
15
 * @license             GNU GPL 2 (https://www.gnu.org/licenses/gpl-2.0.html)
16
 * @package             kernel
17
 * @since               2.0.0
18
 * @deprecated
19
 */
20
21
defined('XOOPS_ROOT_PATH') || exit('Restricted access');
22
23
/**
24
 * Class xos_kernel_Xoops2
25
 */
26
class xos_kernel_Xoops2
27
{
28
    public $paths = array('XOOPS' => array(), 'www' => array(), 'var' => array(), 'lib' => array(), 'modules' => array(), 'themes' => array());
29
30
    /**
31
     * Actual Xoops OS
32
     */
33
    public function __construct()
34
    {
35
        $this->paths['XOOPS']   = array(XOOPS_PATH, XOOPS_URL . 'browse.php');
36
        $this->paths['www']     = array(XOOPS_ROOT_PATH, XOOPS_URL);
37
        $this->paths['var']     = array(XOOPS_VAR_PATH, null);
38
        $this->paths['lib']     = array(XOOPS_PATH, XOOPS_URL . 'browse.php');
39
        $this->paths['modules'] = array(XOOPS_ROOT_PATH . '/modules', XOOPS_URL . '/modules');
40
        $this->paths['themes']  = array(XOOPS_ROOT_PATH . '/themes', XOOPS_URL . '/themes');
41
    }
42
43
    /**
44
     * Convert a XOOPS path to a physical one
45
     * @param               $url
46
     * @param  bool         $virtual
47
     * @return mixed|string
48
     */
49
    public function path($url, $virtual = false)
50
    {
51
        $path = '';
52
        $parts = explode('/', $url, 2);
53
54
        if (count($parts) < 2) {
55
            $root = 'www'; // Default root
56
            $path = $url;  // Entire URL is treated as the path
57
        } else {
58
            list($root, $path) = $parts;
59
        }
60
61
        if (!isset($this->paths[$root])) {
62
            list($root, $path) = array('www', $url);
63
        }
64
65
        if (!$virtual) { // Returns a physical path
66
            $path = $this->paths[$root][0] . '/' . $path;
67
            $path = str_replace('/', DS, $path);
68
69
            return $path;
70
        }
71
72
        return !isset($this->paths[$root][1]) ? '' : ($this->paths[$root][1] . '/' . $path);
73
    }
74
75
    /**
76
     * Convert a XOOPS path to a URL
77
     * @param $url
78
     * @return mixed|string
79
     */
80
    public function url($url)
81
    {
82
        return (false !== strpos($url, '://') ? $url : $this->path($url, true));
83
    }
84
85
    /**
86
     * Build a URL with the specified request params
87
     * @param         $url
88
     * @param  array  $params
89
     * @return string
90
     */
91
    public function buildUrl($url, $params = array())
92
    {
93
        if ($url === '.') {
94
            $url = $_SERVER['REQUEST_URI'];
95
        }
96
        $split = explode('?', $url);
97
        if (count($split) > 1) {
98
            list($url, $query) = $split;
99
            parse_str($query, $query);
0 ignored issues
show
Bug introduced by
$query of type string is incompatible with the type array expected by parameter $result of parse_str(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

99
            parse_str($query, /** @scrutinizer ignore-type */ $query);
Loading history...
100
            $params = array_merge($query, $params);
101
        }
102
        if (!empty($params)) {
103
            foreach ($params as $k => $v) {
104
                $params[$k] = $k . '=' . rawurlencode((string)$v);
105
            }
106
            $url .= '?' . implode('&', $params);
107
        }
108
109
        return $url;
110
    }
111
112
    /**
113
     * xos_kernel_Xoops2::pathExists()
114
     *
115
     * @param $path
116
     * @param $error_type
117
     *
118
     * @return bool
119
     */
120
    public function pathExists($path, $error_type)
121
    {
122
        if (file_exists($path)) {
123
            return $path;
124
        } else {
125
            $GLOBALS['xoopsLogger']->triggerError($path, _XO_ER_FILENOTFOUND, __FILE__, __LINE__, $error_type);
126
127
            return false;
128
        }
129
    }
130
131
    /**
132
     * xos_kernel_Xoops2::gzipCompression()
133
     *
134
     * @return void
135
     */
136
    public function gzipCompression()
137
    {
138
        /**
139
         * Disable gzip compression if PHP is run under CLI mode and needs to be refactored to work correctly
140
         */
141
        if (empty($_SERVER['SERVER_NAME']) || substr(PHP_SAPI, 0, 3) === 'cli') {
142
            xoops_setConfigOption('gzip_compression', 0);
0 ignored issues
show
Deprecated Code introduced by
The function xoops_setConfigOption() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

142
            /** @scrutinizer ignore-deprecated */ xoops_setConfigOption('gzip_compression', 0);
Loading history...
143
        }
144
145
        if (xoops_getConfigOption('gzip_compression') == 1 && extension_loaded('zlib') && !ini_get('zlib.output_compression')) {
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getConfigOption() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

145
        if (/** @scrutinizer ignore-deprecated */ xoops_getConfigOption('gzip_compression') == 1 && extension_loaded('zlib') && !ini_get('zlib.output_compression')) {
Loading history...
146
            if (@ini_get('zlib.output_compression_level') < 0) {
147
                ini_set('zlib.output_compression_level', 6);
148
            }
149
            ob_start('ob_gzhandler');
150
        }
151
    }
152
153
    /**
154
     * xos_kernel_Xoops2::pathTranslation()
155
     *
156
     * @return void
157
     */
158
    public function pathTranslation()
159
    {
160
        /**
161
         * *#@+
162
         * Host abstraction layer
163
         */
164
        if (!isset($_SERVER['PATH_TRANSLATED']) && isset($_SERVER['SCRIPT_FILENAME'])) {
165
            $_SERVER['PATH_TRANSLATED'] = $_SERVER['SCRIPT_FILENAME']; // For Apache CGI
166
        } elseif (isset($_SERVER['PATH_TRANSLATED']) && !isset($_SERVER['SCRIPT_FILENAME'])) {
167
            $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED']; // For IIS/2K now I think :-(
168
        }
169
        /**
170
         * User Mulitbytes
171
         */
172
        if (empty($_SERVER['REQUEST_URI'])) { // Not defined by IIS
173
            // Under some configs, IIS makes SCRIPT_NAME point to php.exe :-(
174
            if (!(isset($_SERVER['PHP_SELF']) && ($_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF']))) {
175
                $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'];
176
            }
177
178
            if (isset($_SERVER['QUERY_STRING'])) {
179
                $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
180
            }
181
        }
182
    }
183
184
    /**
185
     * xos_kernel_Xoops2::themeSelect()
186
     *
187
     * @return void
188
     */
189
    public function themeSelect()
190
    {
191
        if (!empty($_POST['xoops_theme_select']) && in_array($_POST['xoops_theme_select'], xoops_getConfigOption('theme_set_allowed'))) {
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getConfigOption() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

191
        if (!empty($_POST['xoops_theme_select']) && in_array($_POST['xoops_theme_select'], /** @scrutinizer ignore-deprecated */ xoops_getConfigOption('theme_set_allowed'))) {
Loading history...
Bug introduced by
xoops_getConfigOption('theme_set_allowed') of type boolean is incompatible with the type array expected by parameter $haystack of in_array(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

191
        if (!empty($_POST['xoops_theme_select']) && in_array($_POST['xoops_theme_select'], /** @scrutinizer ignore-type */ xoops_getConfigOption('theme_set_allowed'))) {
Loading history...
192
            xoops_setConfigOption('theme_set', $_POST['xoops_theme_select']);
0 ignored issues
show
Deprecated Code introduced by
The function xoops_setConfigOption() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

192
            /** @scrutinizer ignore-deprecated */ xoops_setConfigOption('theme_set', $_POST['xoops_theme_select']);
Loading history...
193
            $_SESSION['xoopsUserTheme'] = $_POST['xoops_theme_select'];
194
        } elseif (!empty($_SESSION['xoopsUserTheme']) && in_array($_SESSION['xoopsUserTheme'], xoops_getConfigOption('theme_set_allowed'))) {
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getConfigOption() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

194
        } elseif (!empty($_SESSION['xoopsUserTheme']) && in_array($_SESSION['xoopsUserTheme'], /** @scrutinizer ignore-deprecated */ xoops_getConfigOption('theme_set_allowed'))) {
Loading history...
195
            xoops_setConfigOption('theme_set', $_SESSION['xoopsUserTheme']);
0 ignored issues
show
Deprecated Code introduced by
The function xoops_setConfigOption() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

195
            /** @scrutinizer ignore-deprecated */ xoops_setConfigOption('theme_set', $_SESSION['xoopsUserTheme']);
Loading history...
196
        }
197
    }
198
}
199