-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadmin.php
122 lines (113 loc) · 5.2 KB
/
admin.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <http://www.xoops.org/> //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu) //
// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
// Project: The XOOPS Project //
// ------------------------------------------------------------------------- //
/**
* The beginning of the admin interface for ImpressCMS
*
* @copyright http://www.XOOPS.org/
* @copyright http://www.impresscms.org/ The ImpressCMS Project
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License (GPL)
* @package Administration
* @subpackage System
*/
define('ICMS_IN_ADMIN', 1);
include_once __DIR__ . '/include/common.php';
$fct = (isset($_GET['fct']))
? trim(filter_input(INPUT_GET, 'fct'))
: ((isset($_POST['fct']))
? trim(filter_input(INPUT_POST, 'fct'))
: '');
if (isset($fct) && $fct == 'users') {
icms_loadLanguageFile('core', 'user');
// hook for profile module
if (icms_get_module_status('profile')) {
$op = isset($op)?$op:'';
$uid = isset($uid)?$uid:0;
if ($op == 'modifyUser' && $uid != 0) {
header("Location:" . ICMS_MODULES_URL . "/profile/admin/user.php?op=edit&id=" . $uid);
} else {
header("Location:" . ICMS_MODULES_URL . "/profile/admin/user.php");
}
}
}
include ICMS_INCLUDE_PATH . '/cp_functions.php';
icms_loadLanguageFile('system', 'admin');
icms_loadLanguageFile('core', 'moduleabout');
// Check if function call does exist (security)
/** @todo we don't need to scan the directory on every page load. Set a var on install or update
* that can be checked instead
*/
$admin_dir = ICMS_MODULES_PATH . '/system/admin';
if (!file_exists($admin_dir . '/' . $fct)) {
if ((strlen($fct) > 5) && (substr($fct, -5) == 'admin')) {
$fct = substr($fct, 0, -5);
} else {
$fct .= 'admin';
}
if (!file_exists($admin_dir . '/' . $fct)) {
redirect_header(ICMS_URL . '/', 3, _INVALID_ADMIN_FUNCTION);
} else {
$_GET['fct'] = $_POST['fct'] = $_REQUEST['fct'] = $fct;
}
}
$admintest = 0;
if (is_object(icms::$user)) {
$icmsModule = icms::handler('icms_module')->getByDirname('system');
if (!icms::$user->isAdmin($icmsModule->mid)) {
redirect_header(ICMS_URL . '/', 3, _NOPERM);
}
$admintest = 1;
} else {redirect_header(ICMS_URL . '/', 3, _NOPERM); }
// include system category definitions
include_once ICMS_MODULES_PATH . '/system/constants.php';
$error = false;
if ($admintest != 0) {
if (isset($fct) && $fct != '') {
if (file_exists(ICMS_MODULES_PATH . '/system/admin/' . $fct . '/icms_version.php')) {
icms_loadLanguageFile('system', $fct, true);
include ICMS_MODULES_PATH . '/system/admin/' . $fct . '/icms_version.php';
$sysperm_handler = icms::handler('icms_member_groupperm');
$category = !empty($modversion['category'])?(int) $modversion['category']:0;
unset($modversion);
if ($category > 0) {
$groups = & icms::$user->getGroups();
if (in_array(ICMS_GROUP_ADMIN, $groups)
|| false !== $sysperm_handler->checkRight('system_admin', $category, $groups, $icmsModule->mid)
) {
if (file_exists(ICMS_MODULES_PATH . "/system/admin/" . $fct . ".php")) {
include_once ICMS_MODULES_PATH . "/system/admin/" . $fct . ".php";
}
} else {$error = true; }
} else {$error = true; }
} else {$error = true; }
} else {$error = true; }
}
if ($error) {
header("Location:" . ICMS_URL . "/admin.php");
}