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