// // ------------------------------------------------------------------------ // // 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 // // ------------------------------------------------------------------------- // if ( !is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid()) ) { exit("Access Denied"); } else { include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php'; include_once XOOPS_ROOT_PATH."/modules/system/admin/groups/groups.php"; $op = "display"; if ( isset($_POST) ) { foreach ( $_POST as $k => $v ) { $$k = $v; } } if ( isset($_GET['op']) ) { if ($_GET['op'] == "modify" || $_GET['op'] == "del") { $op = $_GET['op']; $g_id = $_GET['g_id']; } } // from finduser section if ( !empty($memberslist_id) && is_array($memberslist_id) ) { $op = "addUser"; $uids =& $memberslist_id; } switch ($op) { case "modify": include_once XOOPS_ROOT_PATH.'/class/pagenav.php'; modifyGroup($g_id); break; case "update": if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('
', $GLOBALS['xoopsSecurity']->getErrors())); } $system_catids = empty($system_catids) ? array() : $system_catids; $admin_mids = empty($admin_mids) ? array() : $admin_mids; $read_mids = empty($read_mids) ? array() : $read_mids; $read_bids = empty($read_bids) ? array() : $read_bids; $member_handler =& xoops_gethandler('member'); $group =& $member_handler->getGroup($g_id); $group->setVar('name', $name); $group->setVar('description', $desc); // if this group is not one of the default groups if (!in_array($group->getVar('groupid'), array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) { if (count($system_catids) > 0) { $group->setVar('group_type', 'Admin'); } else { $group->setVar('group_type', ''); } } if (!$member_handler->insertGroup($group)) { xoops_cp_header(); echo $group->getHtmlErrors(); xoops_cp_footer(); } else { $groupid = $group->getVar('groupid'); $gperm_handler =& xoops_gethandler('groupperm'); $criteria = new CriteriaCompo(new Criteria('gperm_groupid', $groupid)); $criteria->add(new Criteria('gperm_modid', 1)); $criteria2 = new CriteriaCompo(new Criteria('gperm_name', 'system_admin')); $criteria2->add(new Criteria('gperm_name', 'module_admin'), 'OR'); $criteria2->add(new Criteria('gperm_name', 'module_read'), 'OR'); $criteria2->add(new Criteria('gperm_name', 'block_read'), 'OR'); $criteria->add($criteria2); $gperm_handler->deleteAll($criteria); if (count($system_catids) > 0) { array_push($admin_mids, 1); foreach ($system_catids as $s_cid) { $sysperm =& $gperm_handler->create(); $sysperm->setVar('gperm_groupid', $groupid); $sysperm->setVar('gperm_itemid', $s_cid); $sysperm->setVar('gperm_name', 'system_admin'); $sysperm->setVar('gperm_modid', 1); $gperm_handler->insert($sysperm); } } foreach ($admin_mids as $a_mid) { $modperm =& $gperm_handler->create(); $modperm->setVar('gperm_groupid', $groupid); $modperm->setVar('gperm_itemid', $a_mid); $modperm->setVar('gperm_name', 'module_admin'); $modperm->setVar('gperm_modid', 1); $gperm_handler->insert($modperm); } array_push($read_mids, 1); foreach ($read_mids as $r_mid) { $modperm =& $gperm_handler->create(); $modperm->setVar('gperm_groupid', $groupid); $modperm->setVar('gperm_itemid', $r_mid); $modperm->setVar('gperm_name', 'module_read'); $modperm->setVar('gperm_modid', 1); $gperm_handler->insert($modperm); } foreach ($read_bids as $r_bid) { $blockperm =& $gperm_handler->create(); $blockperm->setVar('gperm_groupid', $groupid); $blockperm->setVar('gperm_itemid', $r_bid); $blockperm->setVar('gperm_name', 'block_read'); $blockperm->setVar('gperm_modid', 1); $gperm_handler->insert($blockperm); } redirect_header("admin.php?fct=groups&op=adminMain",1,_AM_DBUPDATED); } break; case "add": if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('
', $GLOBALS['xoopsSecurity']->getErrors())); } if (!$name) { xoops_cp_header(); echo _AM_UNEED2ENTER; xoops_cp_footer(); exit(); } $system_catids = empty($system_catids) ? array() : $system_catids; $admin_mids = empty($admin_mids) ? array() : $admin_mids; $read_mids = empty($read_mids) ? array() : $read_mids; $read_bids = empty($read_bids) ? array() : $read_bids; $member_handler =& xoops_gethandler('member'); $group =& $member_handler->createGroup(); $group->setVar("name", $name); $group->setVar("description", $desc); if (count($system_catids) > 0) { $group->setVar("group_type", 'Admin'); } if (!$member_handler->insertGroup($group)) { xoops_cp_header(); echo $group->getHtmlErrors(); xoops_cp_footer(); } else { $groupid = $group->getVar('groupid'); $gperm_handler =& xoops_gethandler('groupperm'); if (count($system_catids) > 0) { array_push($admin_mids, 1); foreach ($system_catids as $s_cid) { $sysperm =& $gperm_handler->create(); $sysperm->setVar('gperm_groupid', $groupid); $sysperm->setVar('gperm_itemid', $s_cid); $sysperm->setVar('gperm_name', 'system_admin'); $sysperm->setVar('gperm_modid', 1); $gperm_handler->insert($sysperm); } } foreach ($admin_mids as $a_mid) { $modperm =& $gperm_handler->create(); $modperm->setVar('gperm_groupid', $groupid); $modperm->setVar('gperm_itemid', $a_mid); $modperm->setVar('gperm_name', 'module_admin'); $modperm->setVar('gperm_modid', 1); $gperm_handler->insert($modperm); } array_push($read_mids, 1); foreach ($read_mids as $r_mid) { $modperm =& $gperm_handler->create(); $modperm->setVar('gperm_groupid', $groupid); $modperm->setVar('gperm_itemid', $r_mid); $modperm->setVar('gperm_name', 'module_read'); $modperm->setVar('gperm_modid', 1); $gperm_handler->insert($modperm); } foreach ($read_bids as $r_bid) { $blockperm =& $gperm_handler->create(); $blockperm->setVar('gperm_groupid', $groupid); $blockperm->setVar('gperm_itemid', $r_bid); $blockperm->setVar('gperm_name', 'block_read'); $blockperm->setVar('gperm_modid', 1); $gperm_handler->insert($blockperm); } redirect_header("admin.php?fct=groups&op=adminMain",1,_AM_DBUPDATED); } break; case "del": xoops_cp_header(); xoops_confirm(array('fct' => 'groups', 'op' => 'delConf', 'g_id' => $g_id), 'admin.php', _AM_AREUSUREDEL); xoops_cp_footer(); break; case "delConf": if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('
', $GLOBALS['xoopsSecurity']->getErrors())); } if (intval($g_id) > 0 && !in_array($g_id, array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) { $member_handler =& xoops_gethandler('member'); $group =& $member_handler->getGroup($g_id); $member_handler->deleteGroup($group); $gperm_handler =& xoops_gethandler('groupperm'); $gperm_handler->deleteByGroup($g_id); } redirect_header("admin.php?fct=groups&op=adminMain",1,_AM_DBUPDATED); break; case "addUser": if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('
', $GLOBALS['xoopsSecurity']->getErrors())); } $member_handler =& xoops_gethandler('member'); $size = count($uids); for ( $i = 0; $i < $size; $i++ ) { $member_handler->addUserToGroup($groupid, $uids[$i]); } redirect_header("admin.php?fct=groups&op=modify&g_id=".$groupid."",0,_AM_DBUPDATED); break; case "delUser": if (!$GLOBALS['xoopsSecurity']->check()) { redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('
', $GLOBALS['xoopsSecurity']->getErrors())); } if (intval($groupid) > 0) { $member_handler =& xoops_gethandler('member'); $memstart = isset($memstart) ? intval($memstart) : 0; if ($groupid == XOOPS_GROUP_ADMIN) { if ($member_handler->getUserCountByGroup($groupid) > count($uids)){ $member_handler->removeUsersFromGroup($groupid, $uids); } } else { $member_handler->removeUsersFromGroup($groupid, $uids); } redirect_header('admin.php?fct=groups&op=modify&g_id='.$groupid.'&memstart='.$memstart,0,_AM_DBUPDATED); } break; case "display": default: displayGroups(); break; } } ?>