1<?php
2/*
3 * You may not change or alter any portion of this comment or credits
4 * of supporting developers from this source code or any supporting source code
5 * which is considered copyrighted (c) material of the original comment or credit authors.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 */
11
12/**
13 * @copyright    XOOPS Project http://xoops.org/
14 * @license      GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
15 * @package
16 * @since
17 * @author       XOOPS Development Team, Kazumi Ono (AKA onokazu)
18 */
19
20// Include header
21include __DIR__ . '/header.php';
22
23if (isset($fct) && $fct === 'users') {
24    $xoopsOption['pagetype'] = 'user';
25}
26
27$error = false;
28if ($admintest != 0) {
29    if (isset($fct) && $fct !== '') {
30        $fct = preg_replace("/[^a-z0-9_\-]/i", '', $fct);
31        if (file_exists(XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/admin/' . $fct . '/xoops_version.php')) {
32            // Load language file
33            system_loadLanguage($fct, $xoopsModule->getVar('dirname', 'n'));
34            // Include Configuration file
35            require XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/admin/' . $fct . '/xoops_version.php';
36            // Get System permission handler
37            /* @var XoopsGroupPermHandler $sysperm_handler */
38            $sysperm_handler = xoops_getHandler('groupperm');
39
40            $category = !empty($modversion['category']) ? (int)$modversion['category'] : 0;
41            unset($modversion);
42
43            if ($category > 0) {
44                $group = $xoopsUser->getGroups();
45                if (in_array(XOOPS_GROUP_ADMIN, $group) || false !== $sysperm_handler->checkRight('system_admin', $category, $group, $xoopsModule->getVar('mid'))) {
46                    if (file_exists(XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/admin/' . $fct . '/main.php')) {
47                        include_once XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/admin/' . $fct . '/main.php';
48                    } else {
49                        $error = true;
50                    }
51                } else {
52                    $error = true;
53                }
54            } elseif ($fct === 'version') {
55                if (file_exists(XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/admin/version/main.php')) {
56                    include_once XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname', 'n') . '/admin/version/main.php';
57                } else {
58                    $error = true;
59                }
60            } else {
61                $error = true;
62            }
63        } else {
64            $error = true;
65        }
66    } else {
67        $error = true;
68    }
69}
70
71if (false !== $error) {
72    $op = system_CleanVars($_REQUEST, 'op', '', 'string');
73    if ($op === 'system_activate') {
74        $part           = system_CleanVars($_REQUEST, 'type', '', 'string');
75        /* @var XoopsConfigHandler $config_handler */
76        $config_handler = xoops_getHandler('config');
77
78        $criteria = new Criteria('conf_name', 'active_' . $part);
79        $configs  = $config_handler->getConfigs($criteria);
80        foreach ($configs as $conf) {
81            if ($conf->getVar('conf_name') === 'active_' . $part) {
82                $conf->setVar('conf_value', !$conf->getVar('conf_value'));
83                $config_handler->insertConfig($conf);
84            }
85        }
86        exit;
87    }
88    // Define main template
89    $GLOBALS['xoopsOption']['template_main'] = 'system_index.tpl';
90    xoops_cp_header();
91    // Define Stylesheet
92    $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
93    // Define scripts
94    $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js');
95    $xoTheme->addScript('modules/system/js/admin.js');
96    // Define Breadcrumb and tips
97    $xoBreadCrumb->addLink(_AM_SYSTEM_CONFIG);
98    $xoBreadCrumb->addTips(_AM_SYSTEM_TIPS_MAIN);
99    $xoBreadCrumb->render();
100    $groups = $xoopsUser->getGroups();
101    $all_ok = false;
102    if (!in_array(XOOPS_GROUP_ADMIN, $groups)) {
103        $sysperm_handler = xoops_getHandler('groupperm');
104        $ok_syscats      = $sysperm_handler->getItemIds('system_admin', $groups);
105    } else {
106        $all_ok = true;
107    }
108
109    xoops_load('xoopslists');
110
111    $admin_dir        = XOOPS_ROOT_PATH . '/modules/system/admin';
112    $dirlist          = XoopsLists::getDirListAsArray($admin_dir);
113    $inactive_section = array('blocksadmin', 'groups', 'modulesadmin', 'preferences', 'tplsets');
114    foreach ($dirlist as $directory) {
115        if (file_exists($admin_dir . '/' . $directory . '/xoops_version.php')) {
116            require $admin_dir . '/' . $directory . '/xoops_version.php';
117
118            if ($modversion['hasAdmin']) {
119                if (xoops_getModuleOption('active_' . $directory, 'system')) {
120                    $category = isset($modversion['category']) ? (int)$modversion['category'] : 0;
121                    if (false !== $all_ok || in_array($modversion['category'], $ok_syscats)) {
122                        $menu['file']   = $directory;
123                        $menu['title']  = trim($modversion['name']);
124                        $menu['desc']   = str_replace('<br>', ' ', $modversion['description']);
125                        $menu['icon']   = $modversion['image'];
126                        $menu['status'] = true;
127                    }
128                } else {
129                    $category = isset($modversion['category']) ? (int)$modversion['category'] : 0;
130                    if (false !== $all_ok || in_array($modversion['category'], $ok_syscats)) {
131                        $menu['file']   = $directory;
132                        $menu['title']  = trim($modversion['name']);
133                        $menu['desc']   = str_replace('<br>', ' ', $modversion['description']);
134                        $menu['icon']   = $modversion['image'];
135                        $menu['status'] = false;
136                    }
137                }
138                if (!in_array($directory, $inactive_section)) {
139                    $menu['used'] = true;
140                }
141                if (false !== $all_ok || in_array($modversion['category'], $ok_syscats)) {
142                    switch ($directory) {
143                        case 'avatars':
144                            /* @var  SystemAvatarHandler $avatar_handler */
145                            $avatar_handler = xoops_getHandler('avatar');
146                            $avatar         = $avatar_handler->getCount();
147                            $menu['infos']  = sprintf(_AM_SYSTEM_AVATAR_INFO, $avatar);
148                            break;
149                        case 'banners':
150                            /* @var  SystemBannerHandler $banner_handler */
151                            $banner_handler = xoops_getModuleHandler('banner', 'system');
152                            $banner         = $banner_handler->getCount();
153                            $menu['infos']  = sprintf(_AM_SYSTEM_BANNER_INFO, $banner);
154                            break;
155                        case 'comments':
156                            /* @var  XoopsCommentHandler $comment_handler */
157                            $comment_handler = xoops_getHandler('comment');
158                            $comment         = $comment_handler->getCount();
159                            $menu['infos']   = sprintf(_AM_SYSTEM_COMMENT_INFO, $comment);
160                            break;
161                        case 'groups':
162                            /* @var  XoopsMembershipHandler $groups_Handler */
163                            $groups_Handler = xoops_getModuleHandler('group', 'system');
164                            $groups         = $groups_Handler->getCount();
165                            $menu['infos']  = sprintf(_AM_SYSTEM_GROUP_INFO, $groups);
166                            break;
167                        case 'images':
168                            /* @var  XoopsImageHandler $imgcat_handler */
169                            $imgcat_handler = xoops_getHandler('image');
170                            $img            = $imgcat_handler->getCount();
171                            $menu['infos']  = sprintf(_AM_SYSTEM_IMG_INFO, $img);
172                            break;
173                        case 'smilies':
174                            /* @var  SystemsmiliesHandler $smilies_Handler */
175                            $smilies_Handler = xoops_getModuleHandler('smilies', 'system');
176                            $smilies         = $smilies_Handler->getCount();
177                            $menu['infos']   = sprintf(_AM_SYSTEM_SMILIES_INFO, $smilies);
178                            break;
179                        case 'userrank':
180                            /* @var  SystemUserrankHandler $userrank_Handler */
181                            $userrank_Handler = xoops_getModuleHandler('userrank', 'system');
182                            $userrank         = $userrank_Handler->getCount();
183                            $menu['infos']    = sprintf(_AM_SYSTEM_RANKS_INFO, $userrank);
184                            break;
185                        case 'users':
186                            /* @var  SystemUsersHandler $member_handler */
187                            $member_handler = xoops_getModuleHandler('users', 'system');
188                            $member         = $member_handler->getCount();
189                            $menu['infos']  = sprintf(_AM_SYSTEM_USERS_INFO, $member);
190                            break;
191                    }
192                }
193                $xoopsTpl->append_by_ref('menu', $menu);
194                unset($menu);
195            }
196            unset($modversion);
197        }
198    }
199    unset($dirlist);
200    xoops_cp_footer();
201}
202