source: temp/test-xoops.ec-cube.net/html/modules/system/admin/groups/main.php @ 405

Revision 405, 12.6 KB checked in by root, 20 years ago (diff)
Line 
1<?php
2// $Id: main.php,v 1.5 2006/05/01 02:37:29 onokazu Exp $
3//  ------------------------------------------------------------------------ //
4//                XOOPS - PHP Content Management System                      //
5//                    Copyright (c) 2000 XOOPS.org                           //
6//                       <http://www.xoops.org/>                             //
7//  ------------------------------------------------------------------------ //
8//  This program is free software; you can redistribute it and/or modify     //
9//  it under the terms of the GNU General Public License as published by     //
10//  the Free Software Foundation; either version 2 of the License, or        //
11//  (at your option) any later version.                                      //
12//                                                                           //
13//  You may not change or alter any portion of this comment or credits       //
14//  of supporting developers from this source code or any supporting         //
15//  source code which is considered copyrighted (c) material of the          //
16//  original comment or credit authors.                                      //
17//                                                                           //
18//  This program is distributed in the hope that it will be useful,          //
19//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
20//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
21//  GNU General Public License for more details.                             //
22//                                                                           //
23//  You should have received a copy of the GNU General Public License        //
24//  along with this program; if not, write to the Free Software              //
25//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
26//  ------------------------------------------------------------------------ //
27// Author: Kazumi Ono (AKA onokazu)                                          //
28// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
29// Project: The XOOPS Project                                                //
30// ------------------------------------------------------------------------- //
31
32if ( !is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid()) ) {
33    exit("Access Denied");
34} else {
35    include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php';
36    include_once XOOPS_ROOT_PATH."/modules/system/admin/groups/groups.php";
37    $op = "display";
38
39    if ( isset($_GET['op']) ) {
40        if ($_GET['op'] == "modify" || $_GET['op'] == "del") {
41            $op = $_GET['op'];
42            $g_id = $_GET['g_id'];
43        }
44    } elseif (isset($_POST['op'])) {
45        $op = $_POST['op'];
46    }
47
48    // from finduser section
49    if ( !empty($_POST['memberslist_id']) && is_array($_POST['memberslist_id']) ) {
50        $op = "addUser";
51        $_POST['uids'] = $_POST['memberslist_id'];
52    }
53
54    switch ($op) {
55    case "modify":
56        include_once XOOPS_ROOT_PATH.'/class/pagenav.php';
57        modifyGroup($g_id);
58        break;
59    case "update":
60        if(!XoopsMultiTokenHandler::quickValidate('groups_update'))
61            system_groups_error("Ticket Error");
62
63        $g_id = !empty($_POST['g_id']) ? intval($_POST['g_id']) : 0;
64        if ($g_id <= 0) {
65            exit();
66        }
67        $system_catids = empty($_POST['system_catids']) ? array() : $_POST['system_catids'];
68        $admin_mids = empty($_POST['admin_mids']) ? array() : $_POST['admin_mids'];
69        $read_mids = empty($_POST['read_mids']) ? array() : $_POST['read_mids'];
70        $read_bids = empty($_POST['read_bids']) ? array() : $_POST['read_bids'];
71        $member_handler =& xoops_gethandler('member');
72        $group =& $member_handler->getGroup($g_id);
73        $group->setVar('name', $_POST['name']);
74        $group->setVar('description', $_POST['desc']);
75        // if this group is not one of the default groups
76        if (!in_array($group->getVar('groupid'), array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) {
77            if (count($system_catids) > 0) {
78                $group->setVar('group_type', 'Admin');
79            } else {
80                $group->setVar('group_type', '');
81            }
82        }
83        if (!$member_handler->insertGroup($group)) {
84            xoops_cp_header();
85            echo $group->getHtmlErrors();
86            xoops_cp_footer();
87        } else {
88            $groupid = $group->getVar('groupid');
89            $gperm_handler =& xoops_gethandler('groupperm');
90            $criteria = new CriteriaCompo(new Criteria('gperm_groupid', $groupid));
91            $criteria->add(new Criteria('gperm_modid', 1));
92            $criteria2 = new CriteriaCompo(new Criteria('gperm_name', 'system_admin'));
93            $criteria2->add(new Criteria('gperm_name', 'module_admin'), 'OR');
94            $criteria2->add(new Criteria('gperm_name', 'module_read'), 'OR');
95            $criteria2->add(new Criteria('gperm_name', 'block_read'), 'OR');
96            $criteria->add($criteria2);
97            $gperm_handler->deleteAll($criteria);
98            if (count($system_catids) > 0) {
99                array_push($admin_mids, 1);
100                foreach ($system_catids as $s_cid) {
101                    $sysperm =& $gperm_handler->create();
102                    $sysperm->setVar('gperm_groupid', $groupid);
103                    $sysperm->setVar('gperm_itemid', $s_cid);
104                    $sysperm->setVar('gperm_name', 'system_admin');
105                    $sysperm->setVar('gperm_modid', 1);
106                    $gperm_handler->insert($sysperm);
107                }
108            }
109            foreach ($admin_mids as $a_mid) {
110                $modperm =& $gperm_handler->create();
111                $modperm->setVar('gperm_groupid', $groupid);
112                $modperm->setVar('gperm_itemid', $a_mid);
113                $modperm->setVar('gperm_name', 'module_admin');
114                $modperm->setVar('gperm_modid', 1);
115                $gperm_handler->insert($modperm);
116            }
117            array_push($read_mids, 1);
118            foreach ($read_mids as $r_mid) {
119                $modperm =& $gperm_handler->create();
120                $modperm->setVar('gperm_groupid', $groupid);
121                $modperm->setVar('gperm_itemid', $r_mid);
122                $modperm->setVar('gperm_name', 'module_read');
123                $modperm->setVar('gperm_modid', 1);
124                $gperm_handler->insert($modperm);
125            }
126            foreach ($read_bids as $r_bid) {
127                $blockperm =& $gperm_handler->create();
128                $blockperm->setVar('gperm_groupid', $groupid);
129                $blockperm->setVar('gperm_itemid', $r_bid);
130                $blockperm->setVar('gperm_name', 'block_read');
131                $blockperm->setVar('gperm_modid', 1);
132                $gperm_handler->insert($blockperm);
133            }
134            redirect_header("admin.php?fct=groups&amp;op=adminMain",1,_AM_DBUPDATED);
135        }
136        break;
137    case "add":
138        if(!XoopsMultiTokenHandler::quickValidate('groups_add'))
139            system_groups_error("Ticket Error");
140
141        $name = !empty($_POST['name']) ? trim($_POST['name']) : '';
142        if ($name == '') {
143            xoops_cp_header();
144            echo _AM_UNEED2ENTER;
145            xoops_cp_footer();
146            exit();
147        }
148        $system_catids = empty($_POST['system_catids']) ? array() : $_POST['system_catids'];
149        $admin_mids = empty($_POST['admin_mids']) ? array() : $_POST['admin_mids'];
150        $read_mids = empty($_POST['read_mids']) ? array() : $_POST['read_mids'];
151        $read_bids = empty($_POST['read_bids']) ? array() : $_POST['read_bids'];
152        $member_handler =& xoops_gethandler('member');
153        $group =& $member_handler->createGroup();
154        $group->setVar("name", $name);
155        $group->setVar("description", $_POST['desc']);
156        if (count($system_catids) > 0) {
157            $group->setVar("group_type", 'Admin');
158        }
159        if (!$member_handler->insertGroup($group)) {
160            xoops_cp_header();
161            echo $group->getHtmlErrors();
162            xoops_cp_footer();
163        } else {
164            $groupid = $group->getVar('groupid');
165            $gperm_handler =& xoops_gethandler('groupperm');
166            if (count($system_catids) > 0) {
167                array_push($admin_mids, 1);
168                foreach ($system_catids as $s_cid) {
169                    $sysperm =& $gperm_handler->create();
170                    $sysperm->setVar('gperm_groupid', $groupid);
171                    $sysperm->setVar('gperm_itemid', $s_cid);
172                    $sysperm->setVar('gperm_name', 'system_admin');
173                    $sysperm->setVar('gperm_modid', 1);
174                    $gperm_handler->insert($sysperm);
175                }
176            }
177            foreach ($admin_mids as $a_mid) {
178                $modperm =& $gperm_handler->create();
179                $modperm->setVar('gperm_groupid', $groupid);
180                $modperm->setVar('gperm_itemid', $a_mid);
181                $modperm->setVar('gperm_name', 'module_admin');
182                $modperm->setVar('gperm_modid', 1);
183                $gperm_handler->insert($modperm);
184            }
185            array_push($read_mids, 1);
186            foreach ($read_mids as $r_mid) {
187                $modperm =& $gperm_handler->create();
188                $modperm->setVar('gperm_groupid', $groupid);
189                $modperm->setVar('gperm_itemid', $r_mid);
190                $modperm->setVar('gperm_name', 'module_read');
191                $modperm->setVar('gperm_modid', 1);
192                $gperm_handler->insert($modperm);
193            }
194            foreach ($read_bids as $r_bid) {
195                $blockperm =& $gperm_handler->create();
196                $blockperm->setVar('gperm_groupid', $groupid);
197                $blockperm->setVar('gperm_itemid', $r_bid);
198                $blockperm->setVar('gperm_name', 'block_read');
199                $blockperm->setVar('gperm_modid', 1);
200                $gperm_handler->insert($blockperm);
201            }
202            redirect_header("admin.php?fct=groups&amp;op=adminMain",1,_AM_DBUPDATED);
203        }
204        break;
205    case "del":
206        xoops_cp_header();
207        $member_handler =& xoops_gethandler('member');
208        $group =& $member_handler->getGroup($g_id);
209        xoops_token_confirm(array('fct' => 'groups', 'op' => 'delConf', 'g_id' => $g_id), 'admin.php', sprintf(_AM_AREUSUREDEL,$group->getVar('name')));
210        xoops_cp_footer();
211        break;
212    case "delConf":
213        if(!xoops_confirm_validate())
214            system_groups_error("Ticket Error");
215
216        $g_id = !empty($_POST['g_id']) ? intval($_POST['g_id']) : 0;
217        if ($g_id > 0 && !in_array($g_id, array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) {
218            $member_handler =& xoops_gethandler('member');
219            $group =& $member_handler->getGroup($g_id);
220            $member_handler->deleteGroup($group);
221            $gperm_handler =& xoops_gethandler('groupperm');
222            $gperm_handler->deleteByGroup($g_id);
223        }
224        redirect_header("admin.php?fct=groups&amp;op=adminMain",1,_AM_DBUPDATED);
225        break;
226    case "addUser":
227        if(!XoopsMultiTokenHandler::quickValidate('groups_User'))
228            system_groups_error("Ticket Error");
229
230        $member_handler =& xoops_gethandler('member');
231        $groupid = intval($_POST['groupid']);
232        if ($groupid > 0) {
233            $size = isset($_POST['uids']) ? count($_POST['uids']) : 0;
234            for ( $i = 0; $i < $size; $i++ ) {
235                $member_handler->addUserToGroup($_POST['groupid'], $_POST['uids'][$i]);
236            }
237        }
238        redirect_header("admin.php?fct=groups&amp;op=modify&amp;g_id=".$groupid, 0, _AM_DBUPDATED);
239        break;
240    case "delUser":
241        if(!XoopsMultiTokenHandler::quickValidate('groups_User'))
242            system_groups_error("Ticket Error");
243
244        $groupid = !empty($_POST['groupid']) ? intval($_POST['groupid']) : 0;
245        if ($groupid > 0) {
246            $member_handler =& xoops_gethandler('member');
247            $memstart = isset($_POST['memstart']) ? intval($_POST['memstart']) : 0;
248            if ($groupid == XOOPS_GROUP_ADMIN) {
249                if ($member_handler->getUserCountByGroup($groupid) > count($_POST['uids'])){
250                    $member_handler->removeUsersFromGroup($groupid, $_POST['uids']);
251                }
252            } else {
253                $member_handler->removeUsersFromGroup($groupid, $_POST['uids']);
254            }
255            redirect_header('admin.php?fct=groups&amp;op=modify&amp;g_id='.$groupid.'&amp;memstart='.$memstart,0,_AM_DBUPDATED);
256        }
257        break;
258    case "display":
259        default:
260        displayGroups();
261        break;
262    }
263}
264?>
Note: See TracBrowser for help on using the repository browser.