XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
SiteClose.class.php
1<?php
10
11if (!defined('XOOPS_ROOT_PATH')) {
12 exit();
13}
14
15/***
16 * The action filter for the site close procedure.
17 */
19{
20 public function preBlockFilter()
21 {
22 if (1 == $this->mRoot->mContext->getXoopsConfig('closesite')) {
23
24 $this->mController->mSetupUser->add('Legacy_SiteClose::callbackSetupUser', XCUBE_DELEGATE_PRIORITY_FINAL);
25 $this->mRoot->mDelegateManager->add('Site.CheckLogin.Success', [&$this, 'callbackCheckLoginSuccess']);
26 }
27 }
28
37 public static function callbackSetupUser(&$principal, &$controller, &$context)
38 {
39 $accessAllowFlag = false;
40 $xoopsConfig = $controller->mRoot->mContext->getXoopsConfig();
41
42 if (!empty($_POST['xoops_login'])) {
43 $controller->checkLogin();
44 return;
45 } elseif ('logout' == @$_GET['op']) { // GIJ
46 $controller->logout();
47 return;
48 } elseif (is_object($context->mXoopsUser)) {
49 foreach ($context->mXoopsUser->getGroups() as $group) {
50 if (in_array($group, $xoopsConfig['closesite_okgrp'], true) || XOOPS_GROUP_ADMIN == $group) {
51 $accessAllowFlag = true;
52 break;
53 }
54 }
55 }
56 /* XCL 2.3.x
57 * @gigamaster added theme_set, theme_url and theme_css (custom templates from theme)
58 * @gigamaster added logotype, use $configs for LegacyRender
59 *
60 * Render System - get config preferences e.g. logotype, footer
61 * for D3 modules who don't delegate XoopsTpl.New
62 */
63 $moduleHandler = xoops_gethandler('module');
64 $legacyRender =& $moduleHandler->getByDirname('legacyRender');
65 $configHandler = xoops_gethandler('config');
66 $configs =& $configHandler->getConfigsByCat(0, $legacyRender->get('mid'));
67
68 if (!$accessAllowFlag) {
69 require_once XOOPS_ROOT_PATH . '/class/template.php';
70 $xoopsTpl =new XoopsTpl();
71 $xoopsTpl->assign(
72 [
73 'xoops_sitename' => htmlspecialchars($xoopsConfig['sitename']),
74 'xoops_isuser' => is_object($context->mXoopsUser), //GIJ
75 'xoops_themecss' => xoops_getcss(),
76 'xoops_imageurl' => XOOPS_THEME_URL . '/' . $xoopsConfig['theme_set'] . '/',
77 'theme_css' => getcss(),
78 'theme_url' => XOOPS_THEME_URL . '/' . $xoopsConfig['theme_set'] . '/',
79 'lang_login' => _LOGIN,
80 'lang_username' => _USERNAME,
81 'lang_password' => _PASSWORD,
82 'lang_siteclosemsg' => $xoopsConfig['closesite_text'],
83 'logotype' => $configs['logotype'],
84 'favicon' => $configs['favicon'],
85 'footer' => $configs['footer']
86 ]
87 );
88
89 $xoopsTpl->compile_check = true;
90 $xclTplClose = XOOPS_ROOT_PATH . '/themes/' . $xoopsConfig['theme_set'] . '/templates/legacy/legacy_site_closed.html';
91 // Theme filebase template with absolute file path
92 if (file_exists($xclTplClose)) {
93 $xoopsTpl->display($xclTplClose);
94 }
95 else {
96 $xoopsTpl->display(XOOPS_ROOT_PATH . '/modules/legacy/templates/legacy_site_closed.html');
97 }
98
99 exit();
100 }
101 }
102
110 public function callbackCheckLoginSuccess(&$xoopsUser)
111 {
112 //
113 // This check is not needed. :)
114 //
115 if (!is_object($xoopsUser)) {
116 return;
117 }
118
119 // Site close
120 if ($this->mRoot->mContext->getXoopsConfig('closesite')) {
121 $accessAllowed = false;
122
123 foreach ($xoopsUser->getGroups() as $group) {
124 if (in_array($group, $this->mRoot->mContext->getXoopsConfig('closesite_okgrp'), true) || (XOOPS_GROUP_ADMIN === $group)) {
125 $accessAllowed = true;
126 break;
127 }
128 }
129
130 if (!$accessAllowed) {
131 $this->mController->executeRedirect(XOOPS_URL . '/', 1, _NOPERM);
132 }
133 }
134 }
135}
static callbackSetupUser(&$principal, &$controller, &$context)
preBlockFilter()
[Abstract] Executes the logic, when the controller executes preBlockFilter().