XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
non_installation_module.php
1<?php
10
11if (!defined('XOOPS_ROOT_PATH')) {
12 exit();
13}
14
15/***
16 * @internal
17 * This handler handles XoopsModule objects without DB. So it doesn't implement
18 * some methods for difficult query. Only override methods are usable.
19 */
21{
22 /***
23 * object cache.
24 * @var Array
25 */
26 public $_mXoopsModules = [];
27
28 /***
29 * readonly property
30 */
31 public $_mExclusions = ['.', '..', 'CVS'];
32
33 public function __construct(&$db)
34 {
35 parent::__construct($db);
36 $this->_setupObjects();
37 }
38
39 /***
40 * Once, load module objects to a member property from XOOPS_MODULE_PATH.
41 */
42 public function _setupObjects()
43 {
44 if ((count ($this -> _mXoopsModules) == 0) && $handler = opendir (XOOPS_MODULE_PATH)) {
45 while (($dir = readdir($handler)) !== false) {
46 if (!in_array ($dir, $this -> _mExclusions, true) && is_dir(XOOPS_MODULE_PATH . '/' . $dir)) {
47 $module =& $this->get($dir);
48 if ($module !== false) {
49 $this->_mXoopsModules[] =& $module;
50 }
51 unset($module);
52 }
53 }
54 }
55 }
56
57 /***
58 * Return module object by $dirname that is specified module directory.
59 * If specified module has been installed or doesn't keep xoops_version, not return it.
60 * @param string $dirname
61 * @param XoopsModule or false
62 * @return bool
63 */
64 public function &get($dirname)
65 {
66 $ret = false;
67
68 if (!file_exists(XOOPS_MODULE_PATH . '/' . $dirname . '/xoops_version.php')) {
69 return $ret;
70 }
71
72 $moduleHandler =& xoops_gethandler('module');
73
74 $check =& $moduleHandler->getByDirname($dirname);
75 if (is_object($check)) {
76 return $ret;
77 }
78
79 $module =& $moduleHandler->create();
80 $module->loadInfoAsVar($dirname);
81
82 return $module;
83 }
84
85 public function &getObjects($criteria=null)
86 {
87 return $this->_mXoopsModules;
88 }
89
90 public function &getObjectsFor2ndInstaller()
91 {
92 $ret = [];
93
94 foreach (array_keys($this->_mXoopsModules) as $key) {
95 if (empty($this->_mXoopsModules[$key]->modinfo['disable_legacy_2nd_installer'])) {
96 $ret[] =& $this->_mXoopsModules[$key];
97 }
98 }
99
100 return $ret;
101 }
102}