home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / CMS / xoops-2.0.18.1.exe / xoops-2.0.18.1 / htdocs / modules / system / admin / groups / main.php < prev    next >
Encoding:
PHP Script  |  2005-11-03  |  12.4 KB  |  254 lines

  1. <?php
  2. // $Id: main.php 2 2005-11-02 18:23:29Z skalpa $
  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.  
  32. if ( !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.     if ( isset($_POST) ) {
  39.         foreach ( $_POST as $k => $v ) {
  40.             $$k = $v;
  41.         }
  42.     }
  43.     if ( isset($_GET['op']) ) {
  44.         if ($_GET['op'] == "modify" || $_GET['op'] == "del") {
  45.             $op = $_GET['op'];
  46.             $g_id = $_GET['g_id'];
  47.         }
  48.     }
  49.  
  50.     // from finduser section
  51.     if ( !empty($memberslist_id) && is_array($memberslist_id) ) {
  52.         $op = "addUser";
  53.         $uids =& $memberslist_id;
  54.     }
  55.  
  56.     switch ($op) {
  57.     case "modify":
  58.         include_once XOOPS_ROOT_PATH.'/class/pagenav.php';
  59.         modifyGroup($g_id);
  60.         break;
  61.     case "update":
  62.         if (!$GLOBALS['xoopsSecurity']->check()) {
  63.             redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  64.         }
  65.         $system_catids = empty($system_catids) ? array() : $system_catids;
  66.         $admin_mids = empty($admin_mids) ? array() : $admin_mids;
  67.         $read_mids = empty($read_mids) ? array() : $read_mids;
  68.         $read_bids = empty($read_bids) ? array() : $read_bids;
  69.         $member_handler =& xoops_gethandler('member');
  70.         $group =& $member_handler->getGroup($g_id);
  71.         $group->setVar('name', $name);
  72.         $group->setVar('description', $desc);
  73.         // if this group is not one of the default groups
  74.         if (!in_array($group->getVar('groupid'), array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) {
  75.             if (count($system_catids) > 0) {
  76.                 $group->setVar('group_type', 'Admin');
  77.             } else {
  78.                 $group->setVar('group_type', '');
  79.             }
  80.         }
  81.         if (!$member_handler->insertGroup($group)) {
  82.             xoops_cp_header();
  83.             echo $group->getHtmlErrors();
  84.             xoops_cp_footer();
  85.         } else {
  86.             $groupid = $group->getVar('groupid');
  87.             $gperm_handler =& xoops_gethandler('groupperm');
  88.             $criteria = new CriteriaCompo(new Criteria('gperm_groupid', $groupid));
  89.             $criteria->add(new Criteria('gperm_modid', 1));
  90.             $criteria2 = new CriteriaCompo(new Criteria('gperm_name', 'system_admin'));
  91.             $criteria2->add(new Criteria('gperm_name', 'module_admin'), 'OR');
  92.             $criteria2->add(new Criteria('gperm_name', 'module_read'), 'OR');
  93.             $criteria2->add(new Criteria('gperm_name', 'block_read'), 'OR');
  94.             $criteria->add($criteria2);
  95.             $gperm_handler->deleteAll($criteria);
  96.             if (count($system_catids) > 0) {
  97.                 array_push($admin_mids, 1);
  98.                 foreach ($system_catids as $s_cid) {
  99.                     $sysperm =& $gperm_handler->create();
  100.                     $sysperm->setVar('gperm_groupid', $groupid);
  101.                     $sysperm->setVar('gperm_itemid', $s_cid);
  102.                     $sysperm->setVar('gperm_name', 'system_admin');
  103.                     $sysperm->setVar('gperm_modid', 1);
  104.                     $gperm_handler->insert($sysperm);
  105.                 }
  106.             }
  107.             foreach ($admin_mids as $a_mid) {
  108.                 $modperm =& $gperm_handler->create();
  109.                 $modperm->setVar('gperm_groupid', $groupid);
  110.                 $modperm->setVar('gperm_itemid', $a_mid);
  111.                 $modperm->setVar('gperm_name', 'module_admin');
  112.                 $modperm->setVar('gperm_modid', 1);
  113.                 $gperm_handler->insert($modperm);
  114.             }
  115.             array_push($read_mids, 1);
  116.             foreach ($read_mids as $r_mid) {
  117.                 $modperm =& $gperm_handler->create();
  118.                 $modperm->setVar('gperm_groupid', $groupid);
  119.                 $modperm->setVar('gperm_itemid', $r_mid);
  120.                 $modperm->setVar('gperm_name', 'module_read');
  121.                 $modperm->setVar('gperm_modid', 1);
  122.                 $gperm_handler->insert($modperm);
  123.             }
  124.             foreach ($read_bids as $r_bid) {
  125.                 $blockperm =& $gperm_handler->create();
  126.                 $blockperm->setVar('gperm_groupid', $groupid);
  127.                 $blockperm->setVar('gperm_itemid', $r_bid);
  128.                 $blockperm->setVar('gperm_name', 'block_read');
  129.                 $blockperm->setVar('gperm_modid', 1);
  130.                 $gperm_handler->insert($blockperm);
  131.             }
  132.             redirect_header("admin.php?fct=groups&op=adminMain",1,_AM_DBUPDATED);
  133.         }
  134.         break;
  135.     case "add":
  136.         if (!$GLOBALS['xoopsSecurity']->check()) {
  137.             redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  138.         }
  139.         if (!$name) {
  140.             xoops_cp_header();
  141.             echo _AM_UNEED2ENTER;
  142.             xoops_cp_footer();
  143.             exit();
  144.         }
  145.         $system_catids = empty($system_catids) ? array() : $system_catids;
  146.         $admin_mids = empty($admin_mids) ? array() : $admin_mids;
  147.         $read_mids = empty($read_mids) ? array() : $read_mids;
  148.         $read_bids = empty($read_bids) ? array() : $read_bids;
  149.         $member_handler =& xoops_gethandler('member');
  150.         $group =& $member_handler->createGroup();
  151.         $group->setVar("name", $name);
  152.         $group->setVar("description", $desc);
  153.         if (count($system_catids) > 0) {
  154.             $group->setVar("group_type", 'Admin');
  155.         }
  156.         if (!$member_handler->insertGroup($group)) {
  157.             xoops_cp_header();
  158.             echo $group->getHtmlErrors();
  159.             xoops_cp_footer();
  160.         } else {
  161.             $groupid = $group->getVar('groupid');
  162.             $gperm_handler =& xoops_gethandler('groupperm');
  163.             if (count($system_catids) > 0) {
  164.                 array_push($admin_mids, 1);
  165.                 foreach ($system_catids as $s_cid) {
  166.                     $sysperm =& $gperm_handler->create();
  167.                     $sysperm->setVar('gperm_groupid', $groupid);
  168.                     $sysperm->setVar('gperm_itemid', $s_cid);
  169.                     $sysperm->setVar('gperm_name', 'system_admin');
  170.                     $sysperm->setVar('gperm_modid', 1);
  171.                     $gperm_handler->insert($sysperm);
  172.                 }
  173.             }
  174.             foreach ($admin_mids as $a_mid) {
  175.                 $modperm =& $gperm_handler->create();
  176.                 $modperm->setVar('gperm_groupid', $groupid);
  177.                 $modperm->setVar('gperm_itemid', $a_mid);
  178.                 $modperm->setVar('gperm_name', 'module_admin');
  179.                 $modperm->setVar('gperm_modid', 1);
  180.                 $gperm_handler->insert($modperm);
  181.             }
  182.             array_push($read_mids, 1);
  183.             foreach ($read_mids as $r_mid) {
  184.                 $modperm =& $gperm_handler->create();
  185.                 $modperm->setVar('gperm_groupid', $groupid);
  186.                 $modperm->setVar('gperm_itemid', $r_mid);
  187.                 $modperm->setVar('gperm_name', 'module_read');
  188.                 $modperm->setVar('gperm_modid', 1);
  189.                 $gperm_handler->insert($modperm);
  190.             }
  191.             foreach ($read_bids as $r_bid) {
  192.                 $blockperm =& $gperm_handler->create();
  193.                 $blockperm->setVar('gperm_groupid', $groupid);
  194.                 $blockperm->setVar('gperm_itemid', $r_bid);
  195.                 $blockperm->setVar('gperm_name', 'block_read');
  196.                 $blockperm->setVar('gperm_modid', 1);
  197.                 $gperm_handler->insert($blockperm);
  198.             }
  199.             redirect_header("admin.php?fct=groups&op=adminMain",1,_AM_DBUPDATED);
  200.         }
  201.         break;
  202.     case "del":
  203.         xoops_cp_header();
  204.         xoops_confirm(array('fct' => 'groups', 'op' => 'delConf', 'g_id' => $g_id), 'admin.php', _AM_AREUSUREDEL);
  205.         xoops_cp_footer();
  206.         break;
  207.     case "delConf":
  208.         if (!$GLOBALS['xoopsSecurity']->check()) {
  209.             redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  210.         }
  211.         if (intval($g_id) > 0 && !in_array($g_id, array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) {
  212.             $member_handler =& xoops_gethandler('member');
  213.             $group =& $member_handler->getGroup($g_id);
  214.             $member_handler->deleteGroup($group);
  215.             $gperm_handler =& xoops_gethandler('groupperm');
  216.             $gperm_handler->deleteByGroup($g_id);
  217.         }
  218.         redirect_header("admin.php?fct=groups&op=adminMain",1,_AM_DBUPDATED);
  219.         break;
  220.     case "addUser":
  221.         if (!$GLOBALS['xoopsSecurity']->check()) {
  222.             redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  223.         }
  224.         $member_handler =& xoops_gethandler('member');
  225.         $size = count($uids);
  226.         for ( $i = 0; $i < $size; $i++ ) {
  227.             $member_handler->addUserToGroup($groupid, $uids[$i]);
  228.         }
  229.         redirect_header("admin.php?fct=groups&op=modify&g_id=".$groupid."",0,_AM_DBUPDATED);
  230.         break;
  231.     case "delUser":
  232.         if (!$GLOBALS['xoopsSecurity']->check()) {
  233.             redirect_header("admin.php?fct=groups&op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  234.         }
  235.         if (intval($groupid) > 0) {
  236.             $member_handler =& xoops_gethandler('member');
  237.             $memstart = isset($memstart) ? intval($memstart) : 0;
  238.             if ($groupid == XOOPS_GROUP_ADMIN) {
  239.                 if ($member_handler->getUserCountByGroup($groupid) > count($uids)){
  240.                     $member_handler->removeUsersFromGroup($groupid, $uids);
  241.                 }
  242.             } else {
  243.                 $member_handler->removeUsersFromGroup($groupid, $uids);
  244.             }
  245.             redirect_header('admin.php?fct=groups&op=modify&g_id='.$groupid.'&memstart='.$memstart,0,_AM_DBUPDATED);
  246.         }
  247.         break;
  248.     case "display":
  249.         default:
  250.         displayGroups();
  251.         break;
  252.     }
  253. }
  254. ?>