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_SiteClose extends XCube_ActionFilter
17: {
18: function preBlockFilter()
19: {
20: if ($this->mRoot->mContext->getXoopsConfig('closesite') == 1) {
21: $this->mController->mSetupUser->add("Legacy_SiteClose::callbackSetupUser", XCUBE_DELEGATE_PRIORITY_FINAL);
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: $accessAllowFlag = false;
35: $xoopsConfig = $controller->mRoot->mContext->getXoopsConfig();
36:
37: if (!empty($_POST['xoops_login'])) {
38: $controller->checkLogin();
39: return;
40: } else if (@$_GET['op']=='logout') {
41: $controller->logout();
42: return;
43: } elseif (is_object($context->mXoopsUser)) {
44: foreach ($context->mXoopsUser->getGroups() as $group) {
45: if (in_array($group, $xoopsConfig['closesite_okgrp']) || XOOPS_GROUP_ADMIN == $group) {
46: $accessAllowFlag = true;
47: break;
48: }
49: }
50: }
51:
52: if (!$accessAllowFlag) {
53: require_once XOOPS_ROOT_PATH . '/class/template.php';
54: $xoopsTpl =new XoopsTpl();
55: $xoopsTpl->assign(array('xoops_sitename' => htmlspecialchars($xoopsConfig['sitename']),
56: 'xoops_isuser' => is_object( $context->mXoopsUser ),
57: 'xoops_themecss' => xoops_getcss(),
58: 'xoops_imageurl' => XOOPS_THEME_URL . '/' . $xoopsConfig['theme_set'] . '/',
59: 'lang_login' => _LOGIN,
60: 'lang_username' => _USERNAME,
61: 'lang_password' => _PASSWORD,
62: 'lang_siteclosemsg' => $xoopsConfig['closesite_text']
63: ));
64:
65: $xoopsTpl->compile_check = true;
66:
67:
68: $xoopsTpl->display(XOOPS_ROOT_PATH . '/modules/legacy/templates/legacy_site_closed.html');
69: exit();
70: }
71: }
72:
73: 74: 75: 76: 77: 78: 79:
80: function callbackCheckLoginSuccess(&$xoopsUser)
81: {
82:
83:
84:
85: if (!is_object($xoopsUser)) {
86: return;
87: }
88:
89:
90: if ($this->mRoot->mContext->getXoopsConfig('closesite')) {
91: $accessAllowed = false;
92:
93: foreach ($xoopsUser->getGroups() as $group) {
94: if (in_array($group, $this->mRoot->mContext->getXoopsConfig('closesite_okgrp')) || ($group == XOOPS_GROUP_ADMIN)) {
95: $accessAllowed = true;
96: break;
97: }
98: }
99:
100: if (!$accessAllowed) {
101: $this->mController->executeRedirect(XOOPS_URL . '/', 1, _NOPERM);
102: }
103: }
104: }
105: }
106:
107: ?>
108: