XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
SystemModuleInstall.class.php
1<?php
10
11if (!defined('XOOPS_ROOT_PATH')) {
12 exit();
13}
14
19{
20 public function preBlockFilter()
21 {
22 if (is_array(Legacy_Utils::checkSystemModules())) {
23 $this->mController->mSetupUser->add([$this, 'callbackSetupUser'], XCUBE_DELEGATE_PRIORITY_FINAL - 1);
24 $this->mRoot->mDelegateManager->add('Site.CheckLogin.Success', [$this, 'callbackCheckLoginSuccess']);
25 }
26 }
27
36 public function callbackSetupUser(&$principal, &$controller, &$context)
37 {
38 $retArray = Legacy_Utils::checkSystemModules();
39 $accessAllowFlag = false;
40 $xoopsConfig = $controller->mRoot->mContext->getXoopsConfig();
41
42 if (!empty($_POST['xoops_login'])) {
43 define('XOOPS_CPFUNC_LOADED', 1);
44 $controller->checkLogin();
45 return;
46 }
47
48 if (is_object($context->mXoopsUser) && in_array(XOOPS_GROUP_ADMIN, $context->mXoopsUser->getGroups(), true)) {
49 $accessAllowFlag = true;
50 }
51
52 // @todo Devide following lines to another preload file
53 if ($accessAllowFlag) {
54 $GLOBALS['xoopsUser'] = $context->mXoopsUser;
55 if (!empty($_POST['cube_module_install'])) { //@todo use Ticket
56 require_once XOOPS_LEGACY_PATH . '/admin/class/ModuleInstaller.class.php';
57 require_once XOOPS_LEGACY_PATH . '/admin/class/ModuleInstallUtils.class.php';
58 if (isset($_POST['uninstalled_modules']) && is_array($_POST['uninstalled_modules'])) {
59 foreach ($_POST['uninstalled_modules'] as $module) {
60 $module = basename($module);
61 if (in_array($module, $retArray['uninstalled'], true)) {
62 $controller->mRoot->mLanguageManager->loadModuleAdminMessageCatalog('legacy');
63
64 $handler =& xoops_gethandler('module');
65 $xoopsModule =& $handler->create();
66 $xoopsModule->set('weight', 1);
67 $xoopsModule->loadInfoAsVar($module);
68
69 $installer =& Legacy_ModuleInstallUtils::createInstaller($xoopsModule->get('dirname'));
70 $installer->setForceMode(true);
71 $installer->setCurrentXoopsModule($xoopsModule);
72 $installer->executeInstall();
73 }
74 }
75 }
76 if (isset($_POST['disabled_modules']) && is_array($_POST['disabled_modules'])) {
77 $moduleHandler =& xoops_gethandler('module');
78 foreach ($_POST['disabled_modules'] as $module) {
79 $module = basename($module);
80 if (in_array($module, $retArray['disabled'], true) && $moduleObject =& $moduleHandler->getByDirname($module)) {
81 $moduleObject->setVar('isactive', 1);
82 $moduleHandler->insert($moduleObject);
83
84 $blockHandler =& xoops_gethandler('block');
85 $blockHandler->syncIsActive($moduleObject->get('mid'), $moduleObject->get('isactive'));
86 }
87 }
88 }
89 if (isset($_POST['option_modules']) && is_array($_POST['option_modules'])) {
90 $handler =& xoops_getmodulehandler('non_installation_module', 'legacy');
91 $objects = $handler->getObjects();
92 $optionModules = [];
93 foreach ($objects as $module) {
94 if (!in_array($module->get('dirname'), $retArray['uninstalled'], true)) {
95 $optionModules[] = $module->get('dirname');
96 }
97 }
98 foreach ($_POST['option_modules'] as $module) {
99 $module = basename($module);
100 if (in_array($module, $optionModules, true)) {
101 $controller->mRoot->mLanguageManager->loadModuleAdminMessageCatalog('legacy');
102
103 $handler =& xoops_gethandler('module');
104 $xoopsModule =& $handler->create();
105 $xoopsModule->set('weight', 1);
106 $xoopsModule->loadInfoAsVar($module);
107
108 $installer =& Legacy_ModuleInstallUtils::createInstaller($xoopsModule->get('dirname'));
109 $installer->setForceMode(true);
110 $installer->setCurrentXoopsModule($xoopsModule);
111 $installer->executeInstall();
112 }
113 }
114 }
115 $controller->executeRedirect(XOOPS_URL . '/', 1);
116 } elseif (!empty($_GET['cube_module_uninstall'])) {
117 require_once XOOPS_ROOT_PATH . '/class/template.php';
118 $xoopsTpl = new XoopsTpl();
119 $xoopsTpl->assign('cube_module_uninstall', htmlspecialchars($_GET['cube_module_uninstall'], ENT_QUOTES));
120 $xoopsTpl->assign(
121 [
122 'xoops_sitename' => htmlspecialchars($xoopsConfig['sitename']),
123 'xoops_themecss' => xoops_getcss(),
124 'xoops_imageurl' => XOOPS_THEME_URL . '/' . $xoopsConfig['theme_set'] . '/',
125 ]
126 );
128 $xoopsTpl->compile_check = true;
129 $xoopsTpl->display(XOOPS_ROOT_PATH . '/modules/legacy/templates/legacy_uninstall_modules.html');
130 exit();
131 } elseif (!empty($_POST['cube_module_uninstallok'])) { //@todo use Ticket
132 require_once XOOPS_LEGACY_PATH . '/admin/class/ModuleUninstaller.class.php';
133 require_once XOOPS_LEGACY_PATH . '/admin/class/ModuleInstallUtils.class.php';
134 $module = basename($_POST['cube_module_uninstallok']);
135 if (in_array($module, $retArray['disabled'], true)) {
136 $controller->mRoot->mLanguageManager->loadModuleAdminMessageCatalog('legacy');
137
138 $handler =& xoops_gethandler('module');
139 $xoopsModule =& $handler->getByDirname($module);
140
141 $uninstaller =& Legacy_ModuleInstallUtils::createUninstaller($xoopsModule->get('dirname'));
142 $uninstaller->setForceMode(true);
143 $uninstaller->setCurrentXoopsModule($xoopsModule);
144 $uninstaller->executeUninstall();
145 }
146 $controller->executeRedirect(XOOPS_URL . '/', 1);
147 } else {
148 $handler =& xoops_getmodulehandler('non_installation_module', 'legacy');
149 $objects = $handler->getObjectsFor2ndInstaller();
150 $optionModules = [];
151 foreach ($objects as $module) {
152 $dirname = $module->getVar('dirname');
153 if (!in_array($dirname, $retArray['uninstalled'], true)) {
154 $optionModule['dirname'] = $dirname;
155 if (in_array($dirname, $retArray['recommended'], true)) {
156 $optionModule['checked'] = 'checked="checked"';
157 $optionModule['desc'] = _SYS_RECOMMENDED_MODULES;
158 $optionModules[' '.$dirname] = $optionModule ;
159 } else {
160 $optionModule['checked'] = '';
161 $optionModule['desc'] = _SYS_OPTION_MODULES;
162 $optionModules[$dirname] = $optionModule ;
163 }
164 }
165 }
166 ksort($optionModules) ;
167 $optionModules = array_values($optionModules) ;
168 require_once XOOPS_ROOT_PATH . '/class/template.php';
169 $xoopsTpl =new XoopsTpl();
170 $xoopsTpl->assign('uninstalled', $retArray['uninstalled']);
171 $xoopsTpl->assign('disabled', $retArray['disabled']);
172 $xoopsTpl->assign('option', $optionModules);
173 $xoopsTpl->assign(
174 [
175 'xoops_sitename' => htmlspecialchars($xoopsConfig['sitename']),
176 'xoops_themecss' => xoops_getcss(),
177 'xoops_imageurl' => XOOPS_THEME_URL . '/' . $xoopsConfig['theme_set'] . '/'
178 ]
179 );
181 $xoopsTpl->compile_check = true;
182 $xoopsTpl->display(XOOPS_ROOT_PATH . '/modules/legacy/templates/legacy_install_modules.html');
183 exit();
184 }
185 }
186
187 if (!$accessAllowFlag) {
188 require_once XOOPS_ROOT_PATH . '/class/template.php';
189 $xoopsTpl =new XoopsTpl();
190 $xoopsTpl->assign(
191 [
192 'xoops_sitename' => htmlspecialchars($xoopsConfig['sitename']),
193 'xoops_themecss' => xoops_getcss(),
194 'xoops_imageurl' => XOOPS_THEME_URL . '/' . $xoopsConfig['theme_set'] . '/',
195 'lang_login' => _LOGIN,
196 'lang_username' => _USERNAME,
197 'lang_password' => _PASSWORD,
198 'lang_siteclosemsg' => $xoopsConfig['closesite_text']
199 ]
200 );
201
202 $xoopsTpl->compile_check = true;
203
204 // @todo filebase template with absolute file path
205 $xoopsTpl->display(XOOPS_ROOT_PATH . '/modules/legacy/templates/legacy_site_closed.html');
206 exit();
207 }
208 }
209
217 public function callbackCheckLoginSuccess(&$xoopsUser)
218 {
219 //
220 // This check is not needed. :)
221 //
222 if (!is_object($xoopsUser)) {
223 return;
224 }
225 if (!in_array(XOOPS_GROUP_ADMIN, $xoopsUser->getGroups(), true)) {
226 $this->mController->executeRedirect(XOOPS_URL . '/', 1, _NOPERM);
227 }
228 }
229}
preBlockFilter()
[Abstract] Executes the logic, when the controller executes preBlockFilter().
callbackSetupUser(&$principal, &$controller, &$context)