1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10:
11:
12: use Xoops\Core\Kernel\Handlers\XoopsGroupPermHandler;
13:
14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
24:
25: class PageGroupPermHandler extends XoopsGroupPermHandler
26: {
27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
38: public function checkRight($gperm_name, $gperm_itemid, $gperm_groupid, $gperm_modid = 1, $trueifadmin = true)
39: {
40: return parent::checkRight($gperm_name, $gperm_itemid, $gperm_groupid, $gperm_modid, $trueifadmin);
41: }
42:
43: public function updatePerms($content_id, $groups = array())
44: {
45: $module_id = Page::getInstance()->getModule()->getVar('mid');
46:
47: $groups_exists = parent::getGroupIds('page_view_item', $content_id, $module_id);
48: $groups_exists = array_values($groups_exists);
49: $groups_delete = array_diff(array_values($groups_exists), $groups);
50: $groups_add = array_diff($groups, array_values($groups_exists));
51:
52:
53: if (count($groups_delete) != 0) {
54: $criteria = $criteria = new CriteriaCompo();
55: $criteria->add(new Criteria('gperm_itemid', $content_id));
56: $criteria->add(new Criteria('gperm_modid', $module_id));
57: $criteria->add(new Criteria('gperm_name', 'page_view_item', '='));
58: $criteria->add(new Criteria('gperm_groupid', '(' . implode(', ', $groups_delete) . ')', 'IN'));
59: if (parent::deleteAll($criteria)) {
60: }
61: }
62:
63:
64: if (count($groups_add) != 0) {
65: foreach ($groups_add as $group_id) {
66: parent::addRight('page_view_item', $content_id, $group_id, $module_id);
67: }
68: }
69: }
70: }
71: