source: temp/test-xoops.ec-cube.net/html/modules/tinyd0/admin/mygroupperm.php @ 405

Revision 405, 3.5 KB checked in by root, 20 years ago (diff)
Line 
1<?php
2
3if( ! defined( 'XOOPS_ROOT_PATH' ) ) exit ;
4
5function 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)
26if ($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);
32if (!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();
38if (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';
84if ($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>';
92xoops_cp_header();
93xoops_result($msg);
94xoops_cp_footer();  GIJ */
95?>
Note: See TracBrowser for help on using the repository browser.