| 1 | <?php |
|---|
| 2 | // $Id: groupperm.php,v 1.2 2005/03/18 12:52:38 onokazu Exp $ |
|---|
| 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 | $member_handler =& xoops_gethandler('member'); |
|---|
| 19 | $group_list =& $member_handler->getGroupList(); |
|---|
| 20 | if (is_array($_POST['perms']) && !empty($_POST['perms'])) { |
|---|
| 21 | $gperm_handler = xoops_gethandler('groupperm'); |
|---|
| 22 | foreach ($_POST['perms'] as $perm_name => $perm_data) { |
|---|
| 23 | if (false != $gperm_handler->deleteByModule($modid, $perm_name)) { |
|---|
| 24 | foreach ($perm_data['groups'] as $group_id => $item_ids) { |
|---|
| 25 | foreach ($item_ids as $item_id => $selected) { |
|---|
| 26 | if ($selected == 1) { |
|---|
| 27 | // make sure that all parent ids are selected as well |
|---|
| 28 | if ($perm_data['parents'][$item_id] != '') { |
|---|
| 29 | $parent_ids = explode(':', $perm_data['parents'][$item_id]); |
|---|
| 30 | foreach ($parent_ids as $pid) { |
|---|
| 31 | if ($pid != 0 && !in_array($pid, array_keys($item_ids))) { |
|---|
| 32 | // one of the parent items were not selected, so skip this item |
|---|
| 33 | $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.')'; |
|---|
| 34 | continue 2; |
|---|
| 35 | } |
|---|
| 36 | } |
|---|
| 37 | } |
|---|
| 38 | $gperm =& $gperm_handler->create(); |
|---|
| 39 | $gperm->setVar('gperm_groupid', $group_id); |
|---|
| 40 | $gperm->setVar('gperm_name', $perm_name); |
|---|
| 41 | $gperm->setVar('gperm_modid', $modid); |
|---|
| 42 | $gperm->setVar('gperm_itemid', $item_id); |
|---|
| 43 | if (!$gperm_handler->insert($gperm)) { |
|---|
| 44 | $msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>'); |
|---|
| 45 | } else { |
|---|
| 46 | $msg[] = sprintf(_MD_AM_PERMADDOK, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>'); |
|---|
| 47 | } |
|---|
| 48 | unset($gperm); |
|---|
| 49 | } |
|---|
| 50 | } |
|---|
| 51 | } |
|---|
| 52 | } else { |
|---|
| 53 | + $msg[] = sprintf(_MD_AM_PERMRESETNG, $module->getVar('name').'('.$perm_name.')'); |
|---|
| 54 | } |
|---|
| 55 | } |
|---|
| 56 | } |
|---|
| 57 | |
|---|
| 58 | $backlink = XOOPS_URL.'/admin.php'; |
|---|
| 59 | if ($module->getVar('hasadmin')) { |
|---|
| 60 | $adminindex = isset($_POST['redirect_url']) ? $_POST['redirect_url'] : $module->getInfo('adminindex'); |
|---|
| 61 | if ($adminindex) { |
|---|
| 62 | $backlink = XOOPS_URL.'/modules/'.$module->getVar('dirname').'/'.$adminindex; |
|---|
| 63 | } |
|---|
| 64 | } |
|---|
| 65 | |
|---|
| 66 | $msg[] = '<br /><br /><a href="'.$backlink.'">'._BACK.'</a>'; |
|---|
| 67 | xoops_cp_header(); |
|---|
| 68 | xoops_result($msg); |
|---|
| 69 | xoops_cp_footer(); |
|---|
| 70 | ?> |
|---|