public function updatePerms($content_id, $groups = array()) { $module_id = Page::getInstance()->getModule()->getVar('mid'); $groups_exists = parent::getGroupIds('page_view_item', $content_id, $module_id); $groups_exists = array_values($groups_exists); $groups_delete = array_diff(array_values($groups_exists), $groups); $groups_add = array_diff($groups, array_values($groups_exists)); // delete if (count($groups_delete) != 0) { $criteria = $criteria = new CriteriaCompo(); $criteria->add(new Criteria('gperm_itemid', $content_id)); $criteria->add(new Criteria('gperm_modid', $module_id)); $criteria->add(new Criteria('gperm_name', 'page_view_item', '=')); $criteria->add(new Criteria('gperm_groupid', '(' . implode(', ', $groups_delete) . ')', 'IN')); if (parent::deleteAll($criteria)) { } } // Add if (count($groups_add) != 0) { foreach ($groups_add as $group_id) { parent::addRight('page_view_item', $content_id, $group_id, $module_id); } } }
function deleteRight($perm, $itemid, $groupid, $mid = null) { mod_clearCacheFile("permission", "newbb"); if (empty($mid)) { if (is_object($GLOBALS["xoopsModule"]) && $GLOBALS["xoopsModule"]->getVar("dirname") == "newbb") { $mid = $GLOBALS["xoopsModule"]->getVar("mid"); } else { $module_handler =& xoops_gethandler("module"); $mod =& $module_handler->getByDirname("newbb"); $mid = $mod->getVar("mid"); unset($mod); } } if (is_callable(array(&$this->XoopsGroupPermHandler, "deleteRight"))) { return parent::deleteRight($perm, $itemid, $groupid, $mid); } else { $criteria = new CriteriaCompo(new Criteria("gperm_name", $perm)); $criteria->add(new Criteria("gperm_groupid", $groupid)); $criteria->add(new Criteria("gperm_itemid", $itemid)); $criteria->add(new Criteria("gperm_modid", $mid)); $perms_obj = $this->getObjects($criteria); if (!empty($perms_obj)) { foreach ($perms_obj as $perm_obj) { $this->delete($perm_obj); } } unset($criteria, $perms_obj); } return true; }
/** * Check permission * * @param string $gperm_name * @param int $gperm_itemid * @param array|int $gperm_groupid * @param int $gperm_modid * @param bool $trueifadmin * * @return bool */ public function checkRight($gperm_name, $gperm_itemid, $gperm_groupid, $gperm_modid = 1, $trueifadmin = true) { $trueifadmin = false; return parent::checkRight($gperm_name, $gperm_itemid, $gperm_groupid, $gperm_modid, $trueifadmin); }