XoopsLoad   A
last analyzed

Complexity

Total Complexity 32

Size/Duplication

Total Lines 244
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 147
c 0
b 0
f 0
dl 0
loc 244
rs 9.84
wmc 32

6 Methods

Rating   Name   Duplication   Size   Complexity  
B load() 0 53 11
B loadCore() 0 25 7
A loadModule() 0 13 4
A loadFramework() 0 13 3
A loadConfig() 0 20 6
B loadCoreConfig() 0 64 1
1
<?php
2
/**
3
 * Xoops Autoload class
4
 *
5
 * You may not change or alter any portion of this comment or credits
6
 * of supporting developers from this source code or any supporting source code
7
 * which is considered copyrighted (c) material of the original comment or credit authors.
8
 * This program is distributed in the hope that it will be useful,
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * @copyright       (c) 2000-2016 XOOPS Project (www.xoops.org)
13
 * @license             GNU GPL 2 (https://www.gnu.org/licenses/gpl-2.0.html)
14
 * @package             class
15
 * @since               2.3.0
16
 * @author              Taiwen Jiang <[email protected]>
17
 * @todo                For PHP 5 compliant
18
 */
19
defined('XOOPS_ROOT_PATH') || exit('Restricted access');
20
21
/**
22
 * Class XoopsLoad
23
 */
24
class XoopsLoad
25
{
26
    //static  $loaded;
27
    //static  $configs;
28
29
    /**
30
     * @param        $name
31
     * @param string $type
32
     *
33
     * @return bool
34
     */
35
    public static function load($name, $type = 'core')
36
    {
37
        static $loaded;
38
        static $deprecated;
39
40
        if (!isset($deprecated)) {
41
            $deprecated = array(
42
                'uploader'    => 'xoopsmediauploader',
43
                'utility'     => 'xoopsutility',
44
                'captcha'     => 'xoopscaptcha',
45
                'cache'       => 'xoopscache',
46
                'file'        => 'xoopsfile',
47
                'model'       => 'xoopsmodelfactory',
48
                'calendar'    => 'xoopscalendar',
49
                'userutility' => 'xoopsuserutility');
50
        }
51
        $name = strtolower($name);
52
        if (in_array($type, array('core', 'class')) && array_key_exists($name, $deprecated)) {
53
            if (isset($GLOBALS['xoopsLogger'])) {
54
                $GLOBALS['xoopsLogger']->addDeprecated("xoops_load('{$name}') is deprecated, use xoops_load('{$deprecated[$name]}')");
55
            } else {
56
                trigger_error("xoops_load('{$name}') is deprecated, use xoops_load('{$deprecated[$name]}')", E_USER_DEPRECATED);
57
            }
58
            $name = $deprecated[$name];
59
        }
60
61
        $type = empty($type) ? 'core' : $type;
62
        if (isset($loaded[$type][$name])) {
63
            return $loaded[$type][$name];
64
        }
65
66
        if (class_exists($name, false)) {
67
            $loaded[$type][$name] = true;
68
69
            return true;
70
        }
71
        $isloaded = false;
72
        switch ($type) {
73
            case 'framework':
74
                $isloaded = XoopsLoad::loadFramework($name);
75
                break;
76
            case 'class':
77
            case 'core':
78
                $type     = 'core';
79
                $isloaded = XoopsLoad::loadCore($name);
80
                break;
81
            default:
82
                $isloaded = XoopsLoad::loadModule($name, $type);
83
                break;
84
        }
85
        $loaded[$type][$name] = $isloaded;
86
87
        return $loaded[$type][$name];
88
    }
89
90
    /**
91
     * Load core class
92
     *
93
     * @access private
94
     * @param $name
95
     * @return bool|string
96
     */
97
    public static function loadCore($name)
98
    {
99
        static $configs;
100
101
        if (!isset($configs)) {
102
            $configs = XoopsLoad::loadCoreConfig();
103
        }
104
        if (isset($configs[$name])) {
105
            require_once $configs[$name];
106
            if (class_exists($name) && method_exists($name, '__autoload')) {
107
                call_user_func(array($name, '__autoload'));
108
            }
109
110
            return true;
111
        } elseif (file_exists($file = XOOPS_ROOT_PATH . '/class/' . $name . '.php')) {
112
            include_once $file;
113
            $class = 'Xoops' . ucfirst($name);
114
            if (class_exists($class)) {
115
                return $class;
116
            } else {
117
                trigger_error('Class ' . $name . ' not found in file ' . __FILE__ . ' at line ' . __LINE__, E_USER_WARNING);
118
            }
119
        }
120
121
        return false;
122
    }
123
124
    /**
125
     * Load Framework class
126
     *
127
     * @access private
128
     * @param $name
129
     * @return bool|string
130
     */
131
    public static function loadFramework($name)
132
    {
133
        if (!file_exists($file = XOOPS_ROOT_PATH . '/Frameworks/' . $name . '/xoops' . $name . '.php')) {
134
            trigger_error('File ' . str_replace(XOOPS_ROOT_PATH, '', $file) . ' not found in file ' . __FILE__ . ' at line ' . __LINE__, E_USER_WARNING);
135
136
            return false;
137
        }
138
        include_once $file;
139
        $class = 'Xoops' . ucfirst($name);
140
        if (class_exists($class)) {
141
            return $class;
142
        }
143
        return null;
144
    }
145
146
    /**
147
     * Load module class
148
     *
149
     * @access private
150
     * @param  string      $name    class file name
151
     * @param  string|null $dirname module directory name
152
     * @return bool
153
     */
154
    public static function loadModule($name, $dirname = null)
155
    {
156
        if (empty($dirname)) {
157
            return false;
158
        }
159
        if (file_exists($file = XOOPS_ROOT_PATH . '/modules/' . $dirname . '/class/' . $name . '.php')) {
160
            include_once $file;
161
            if (class_exists(ucfirst($dirname) . ucfirst($name))) {
162
                return true;
163
            }
164
        }
165
166
        return false;
167
    }
168
169
    /**
170
     * XoopsLoad::loadCoreConfig()
171
     *
172
     * @return array
173
     */
174
    public static function loadCoreConfig()
175
    {
176
        return $configs = array(
0 ignored issues
show
Unused Code introduced by
The assignment to $configs is dead and can be removed.
Loading history...
177
            'xoopsuserutility'           => XOOPS_ROOT_PATH . '/class/userutility.php',
178
            'xoopsmediauploader'         => XOOPS_ROOT_PATH . '/class/uploader.php',
179
            'xoopsutility'               => XOOPS_ROOT_PATH . '/class/utility/xoopsutility.php',
180
            'xoopscaptcha'               => XOOPS_ROOT_PATH . '/class/captcha/xoopscaptcha.php',
181
            'xoopscache'                 => XOOPS_ROOT_PATH . '/class/cache/xoopscache.php',
182
            'xoopsfile'                  => XOOPS_ROOT_PATH . '/class/file/xoopsfile.php',
183
            'xoopsmodelfactory'          => XOOPS_ROOT_PATH . '/class/model/xoopsmodel.php',
184
            'xoopscalendar'              => XOOPS_ROOT_PATH . '/class/calendar/xoopscalendar.php',
185
            'xoopskernel'                => XOOPS_ROOT_PATH . '/class/xoopskernel.php',
186
            'xoopssecurity'              => XOOPS_ROOT_PATH . '/class/xoopssecurity.php',
187
            'xoopslogger'                => XOOPS_ROOT_PATH . '/class/logger/xoopslogger.php',
188
            'xoopspagenav'               => XOOPS_ROOT_PATH . '/class/pagenav.php',
189
            'xoopslists'                 => XOOPS_ROOT_PATH . '/class/xoopslists.php',
190
            'xoopslocal'                 => XOOPS_ROOT_PATH . '/include/xoopslocal.php',
191
            'xoopslocalabstract'         => XOOPS_ROOT_PATH . '/class/xoopslocal.php',
192
            'xoopseditor'                => XOOPS_ROOT_PATH . '/class/xoopseditor/xoopseditor.php',
193
            'xoopseditorhandler'         => XOOPS_ROOT_PATH . '/class/xoopseditor/xoopseditor.php',
194
            'xoopsformloader'            => XOOPS_ROOT_PATH . '/class/xoopsformloader.php',
195
            'xoopsformelement'           => XOOPS_ROOT_PATH . '/class/xoopsform/formelement.php',
196
            'xoopsform'                  => XOOPS_ROOT_PATH . '/class/xoopsform/form.php',
197
            'xoopsformlabel'             => XOOPS_ROOT_PATH . '/class/xoopsform/formlabel.php',
198
            'xoopsformselect'            => XOOPS_ROOT_PATH . '/class/xoopsform/formselect.php',
199
            'xoopsformpassword'          => XOOPS_ROOT_PATH . '/class/xoopsform/formpassword.php',
200
            'xoopsformbutton'            => XOOPS_ROOT_PATH . '/class/xoopsform/formbutton.php',
201
            'xoopsformbuttontray'        => XOOPS_ROOT_PATH . '/class/xoopsform/formbuttontray.php',
202
            'xoopsformcheckbox'          => XOOPS_ROOT_PATH . '/class/xoopsform/formcheckbox.php',
203
            'xoopsformselectcheckgroup'  => XOOPS_ROOT_PATH . '/class/xoopsform/formselectcheckgroup.php',
204
            'xoopsformhidden'            => XOOPS_ROOT_PATH . '/class/xoopsform/formhidden.php',
205
            'xoopsformfile'              => XOOPS_ROOT_PATH . '/class/xoopsform/formfile.php',
206
            'xoopsformradio'             => XOOPS_ROOT_PATH . '/class/xoopsform/formradio.php',
207
            'xoopsformradioyn'           => XOOPS_ROOT_PATH . '/class/xoopsform/formradioyn.php',
208
            'xoopsformselectcountry'     => XOOPS_ROOT_PATH . '/class/xoopsform/formselectcountry.php',
209
            'xoopsformselecttimezone'    => XOOPS_ROOT_PATH . '/class/xoopsform/formselecttimezone.php',
210
            'xoopsformselectlang'        => XOOPS_ROOT_PATH . '/class/xoopsform/formselectlang.php',
211
            'xoopsformselectgroup'       => XOOPS_ROOT_PATH . '/class/xoopsform/formselectgroup.php',
212
            'xoopsformselectuser'        => XOOPS_ROOT_PATH . '/class/xoopsform/formselectuser.php',
213
            'xoopsformselecttheme'       => XOOPS_ROOT_PATH . '/class/xoopsform/formselecttheme.php',
214
            'xoopsformselectmatchoption' => XOOPS_ROOT_PATH . '/class/xoopsform/formselectmatchoption.php',
215
            'xoopsformtext'              => XOOPS_ROOT_PATH . '/class/xoopsform/formtext.php',
216
            'xoopsformtextarea'          => XOOPS_ROOT_PATH . '/class/xoopsform/formtextarea.php',
217
            'xoopsformdhtmltextarea'     => XOOPS_ROOT_PATH . '/class/xoopsform/formdhtmltextarea.php',
218
            'xoopsformelementtray'       => XOOPS_ROOT_PATH . '/class/xoopsform/formelementtray.php',
219
            'xoopsthemeform'             => XOOPS_ROOT_PATH . '/class/xoopsform/themeform.php',
220
            'xoopssimpleform'            => XOOPS_ROOT_PATH . '/class/xoopsform/simpleform.php',
221
            'xoopsformtextdateselect'    => XOOPS_ROOT_PATH . '/class/xoopsform/formtextdateselect.php',
222
            'xoopsformdatetime'          => XOOPS_ROOT_PATH . '/class/xoopsform/formdatetime.php',
223
            'xoopsformhiddentoken'       => XOOPS_ROOT_PATH . '/class/xoopsform/formhiddentoken.php',
224
            'xoopsformcolorpicker'       => XOOPS_ROOT_PATH . '/class/xoopsform/formcolorpicker.php',
225
            'xoopsformcaptcha'           => XOOPS_ROOT_PATH . '/class/xoopsform/formcaptcha.php',
226
            'xoopsformeditor'            => XOOPS_ROOT_PATH . '/class/xoopsform/formeditor.php',
227
            'xoopsformselecteditor'      => XOOPS_ROOT_PATH . '/class/xoopsform/formselecteditor.php',
228
            'xoopsformcalendar'          => XOOPS_ROOT_PATH . '/class/xoopsform/formcalendar.php',
229
            'xoopsformrenderer'          => XOOPS_ROOT_PATH . '/class/xoopsform/renderer/XoopsFormRenderer.php',
230
            'xoopsformrendererinterface' => XOOPS_ROOT_PATH . '/class/xoopsform/renderer/XoopsFormRendererInterface.php',
231
            'xoopsformrendererlegacy'    => XOOPS_ROOT_PATH . '/class/xoopsform/renderer/XoopsFormRendererLegacy.php',
232
            'xoopsformrendererbootstrap3'=> XOOPS_ROOT_PATH . '/class/xoopsform/renderer/XoopsFormRendererBootstrap3.php',
233
            'xoopsformrendererbootstrap4'=> XOOPS_ROOT_PATH . '/class/xoopsform/renderer/XoopsFormRendererBootstrap4.php',
234
            'xoopsformrendererbootstrap5'=> XOOPS_ROOT_PATH . '/class/xoopsform/renderer/XoopsFormRendererBootstrap5.php',
235
            'xoopsfilterinput'           => XOOPS_ROOT_PATH . '/class/xoopsfilterinput.php',
236
            'xoopsrequest'               => XOOPS_ROOT_PATH . '/class/xoopsrequest.php',
237
            'xoopshttpget'               => XOOPS_ROOT_PATH . '/class/xoopshttpget.php',
238
        );
239
    }
240
241
    /**
242
     * XoopsLoad::loadConfig()
243
     *
244
     * @param mixed $data
245
     *
246
     * @return array|bool
247
     */
248
    public function loadConfig($data = null)
249
    {
250
        if (is_array($data)) {
251
            $configs = $data;
252
        } else {
253
            if (!empty($data)) {
254
                $dirname = $data;
255
            } elseif (is_object($GLOBALS['xoopsModule'])) {
256
                $dirname = $GLOBALS['xoopsModule']->getVar('dirname', 'n');
257
            } else {
258
                return false;
259
            }
260
            if (file_exists($file = XOOPS_ROOT_PATH . '/modules/' . $dirname . '/include/autoload.php')) {
261
                if (!$configs = include $file) {
262
                    return false;
263
                }
264
            }
265
        }
266
267
        return $configs = array_merge(XoopsLoad::loadCoreConfig(), $configs);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $configs does not seem to be defined for all execution paths leading up to this point.
Loading history...
Unused Code introduced by
The assignment to $configs is dead and can be removed.
Loading history...
268
    }
269
}
270
// To be enabled in XOOPS 3.0
271
// spl_autoload_register(array('XoopsLoad', 'load'));
272
273
/**
274
 * XMF libraries
275
 */
276
include_once XOOPS_ROOT_PATH . '/class/libraries/vendor/autoload.php';
277