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 / groupperm.php next >
Encoding:
PHP Script  |  2006-05-27  |  2.8 KB  |  71 lines

  1. <?php
  2. // $Id: groupperm.php 506 2006-05-26 23:10:37Z skalpa $
  3.  
  4. include '../../../include/cp_header.php';
  5. $modid = isset($_POST['modid']) ? intval($_POST['modid']) : 0;
  6.  
  7. // we dont want system module permissions to be changed here
  8. if ($modid <= 1 || !is_object($xoopsUser) || !$xoopsUser->isAdmin($modid)) {
  9.     redirect_header(XOOPS_URL.'/index.php', 1, _NOPERM);
  10.     exit();
  11. }
  12. $module_handler =& xoops_gethandler('module');
  13. $module =& $module_handler->get($modid);
  14. if (!is_object($module) || !$module->getVar('isactive')) {
  15.     redirect_header(XOOPS_URL.'/admin.php', 1, _MODULENOEXIST);
  16.     exit();
  17. }
  18.  
  19. $msg = array();
  20.  
  21. $member_handler =& xoops_gethandler('member');
  22. $group_list =& $member_handler->getGroupList();
  23. if (is_array($_POST['perms']) && !empty($_POST['perms'])) {
  24.     $gperm_handler = xoops_gethandler('groupperm');
  25.     foreach ($_POST['perms'] as $perm_name => $perm_data) {
  26.         if (false != $gperm_handler->deleteByModule($modid, $perm_name)) {
  27.             foreach ($perm_data['groups'] as $group_id => $item_ids) {
  28.                 foreach ($item_ids as $item_id => $selected) {
  29.                     if ($selected == 1) {
  30.                         // make sure that all parent ids are selected as well
  31.                         if ($perm_data['parents'][$item_id] != '') {
  32.                             $parent_ids = explode(':', $perm_data['parents'][$item_id]);
  33.                             foreach ($parent_ids as $pid) {
  34.                                 if ($pid != 0 && !in_array($pid, array_keys($item_ids))) {
  35.                                     // one of the parent items were not selected, so skip this item
  36.                                     $msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>').' ('._MD_AM_PERMADDNGP.')';
  37.                                     continue 2;
  38.                                 }
  39.                             }
  40.                         }
  41.                         $gperm =& $gperm_handler->create();
  42.                         $gperm->setVar('gperm_groupid', $group_id);
  43.                         $gperm->setVar('gperm_name', $perm_name);
  44.                         $gperm->setVar('gperm_modid', $modid);
  45.                         $gperm->setVar('gperm_itemid', $item_id);
  46.                         if (!$gperm_handler->insert($gperm)) {
  47.                             $msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>');
  48.                         } else {
  49.                             $msg[] = sprintf(_MD_AM_PERMADDOK, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>');
  50.                         }
  51.                         unset($gperm);
  52.                     }
  53.                 }
  54.             }
  55.         } else {
  56.             $msg[] = sprintf(_MD_AM_PERMRESETNG, $module->getVar('name').'('.$perm_name.')');
  57.         }
  58.     }
  59. }
  60.  
  61. $backlink = xoops_getenv("HTTP_REFERER");
  62. if ($module->getVar('hasadmin')) {
  63.     $adminindex = isset($_POST['redirect_url']) ? $_POST['redirect_url'] : $module->getInfo('adminindex');
  64.     if ($adminindex) {
  65.         $backlink = XOOPS_URL.'/modules/'.$module->getVar('dirname').'/'.$adminindex;
  66.     }
  67. }
  68. $backlink = ($backlink)?$backlink:XOOPS_URL.'/admin.php';
  69.  
  70. redirect_header($backlink, 2, implode("<br />", $msg));
  71. ?>