| 1 | <?php |
|---|
| 2 | |
|---|
| 3 | if( ! defined( 'XOOPS_ROOT_PATH' ) ) exit ; |
|---|
| 4 | |
|---|
| 5 | function myDeleteByModule($DB, $gperm_modid, $gperm_name = null, $gperm_itemid = null) |
|---|
| 6 | { |
|---|
| 7 | $criteria = new CriteriaCompo(new Criteria('gperm_modid', intval($gperm_modid))); |
|---|
| 8 | if (isset($gperm_name)) { |
|---|
| 9 | $criteria->add(new Criteria('gperm_name', $gperm_name)); |
|---|
| 10 | if (isset($gperm_itemid)) { |
|---|
| 11 | $criteria->add(new Criteria('gperm_itemid', intval($gperm_itemid))); |
|---|
| 12 | } |
|---|
| 13 | } |
|---|
| 14 | $sql = "DELETE FROM ".$DB->prefix('group_permission').' '.$criteria->renderWhere(); |
|---|
| 15 | if (!$result = $DB->query($sql)) { |
|---|
| 16 | return false; |
|---|
| 17 | } |
|---|
| 18 | return true; |
|---|
| 19 | } |
|---|
| 20 | |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | // include '../../../include/cp_header.php'; GIJ |
|---|
| 24 | $modid = isset($_POST['modid']) ? intval($_POST['modid']) : 1; |
|---|
| 25 | // we dont want system module permissions to be changed here ( 1 -> 0 GIJ) |
|---|
| 26 | if ($modid <= 0 || !is_object($xoopsUser) || !$xoopsUser->isAdmin($modid)) { |
|---|
| 27 | redirect_header(XOOPS_URL.'/user.php', 1, _NOPERM); |
|---|
| 28 | exit(); |
|---|
| 29 | } |
|---|
| 30 | $module_handler =& xoops_gethandler('module'); |
|---|
| 31 | $module =& $module_handler->get($modid); |
|---|
| 32 | if (!is_object($module) || !$module->getVar('isactive')) { |
|---|
| 33 | redirect_header(XOOPS_URL.'/admin.php', 1, _MODULENOEXIST); |
|---|
| 34 | exit(); |
|---|
| 35 | } |
|---|
| 36 | $member_handler =& xoops_gethandler('member'); |
|---|
| 37 | $group_list = $member_handler->getGroupList(); |
|---|
| 38 | if (is_array($_POST['perms']) && !empty($_POST['perms'])) { |
|---|
| 39 | $gperm_handler = xoops_gethandler('groupperm'); |
|---|
| 40 | foreach ($_POST['perms'] as $perm_name => $perm_data) { |
|---|
| 41 | foreach( $perm_data['itemname' ] as $item_id => $item_name ) { |
|---|
| 42 | // checking code |
|---|
| 43 | // echo "<pre>" ; |
|---|
| 44 | // var_dump( $_POST['perms'] ) ; |
|---|
| 45 | // exit ; |
|---|
| 46 | if (false != myDeleteByModule($gperm_handler->db,$modid,$perm_name,$item_id)) { |
|---|
| 47 | if( empty( $perm_data['groups'] ) ) continue ; |
|---|
| 48 | foreach ($perm_data['groups'] as $group_id => $item_ids) { |
|---|
| 49 | // foreach ($item_ids as $item_id => $selected) { |
|---|
| 50 | $selected = isset( $item_ids[ $item_id ] ) ? $item_ids[ $item_id ] : 0 ; |
|---|
| 51 | if ($selected == 1) { |
|---|
| 52 | // make sure that all parent ids are selected as well |
|---|
| 53 | if ($perm_data['parents'][$item_id] != '') { |
|---|
| 54 | $parent_ids = explode(':', $perm_data['parents'][$item_id]); |
|---|
| 55 | foreach ($parent_ids as $pid) { |
|---|
| 56 | if ($pid != 0 && !in_array($pid, array_keys($item_ids))) { |
|---|
| 57 | // one of the parent items were not selected, so skip this item |
|---|
| 58 | $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.')'; |
|---|
| 59 | continue 2; |
|---|
| 60 | } |
|---|
| 61 | } |
|---|
| 62 | } |
|---|
| 63 | $gperm =& $gperm_handler->create(); |
|---|
| 64 | $gperm->setVar('gperm_groupid', $group_id); |
|---|
| 65 | $gperm->setVar('gperm_name', $perm_name); |
|---|
| 66 | $gperm->setVar('gperm_modid', $modid); |
|---|
| 67 | $gperm->setVar('gperm_itemid', $item_id); |
|---|
| 68 | if (!$gperm_handler->insert($gperm)) { |
|---|
| 69 | $msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>'); |
|---|
| 70 | } else { |
|---|
| 71 | $msg[] = sprintf(_MD_AM_PERMADDOK, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>'); |
|---|
| 72 | } |
|---|
| 73 | unset($gperm); |
|---|
| 74 | } |
|---|
| 75 | } |
|---|
| 76 | } else { |
|---|
| 77 | $msg[] = sprintf(_MD_AM_PERMRESETNG, $module->getVar('name')); |
|---|
| 78 | } |
|---|
| 79 | } |
|---|
| 80 | } |
|---|
| 81 | } |
|---|
| 82 | /* |
|---|
| 83 | $backlink = XOOPS_URL.'/admin.php'; |
|---|
| 84 | if ($module->getVar('hasadmin')) { |
|---|
| 85 | $adminindex = $module->getInfo('adminindex'); |
|---|
| 86 | if ($adminindex) { |
|---|
| 87 | $backlink = XOOPS_URL.'/modules/'.$module->getVar('dirname').'/'.$adminindex; |
|---|
| 88 | } |
|---|
| 89 | } |
|---|
| 90 | |
|---|
| 91 | $msg[] = '<br /><br /><a href="'.$backlink.'">'._BACK.'</a>'; |
|---|
| 92 | xoops_cp_header(); |
|---|
| 93 | xoops_result($msg); |
|---|
| 94 | xoops_cp_footer(); GIJ */ |
|---|
| 95 | ?> |
|---|