* @package MCMS\System\Service */ class ACLSvc extends ACLSvcBase { private static $TBL_INST = 'moduleinstances'; private static $TBL_ACL = 'moduleinstanceacls'; public static function addUserToAccessACL($siteId, $name, iUser $user) { $db = System::getInstance()->getDB(); $data = array(); $data['site_id'] = $siteId; $data['instance'] = $name; $data['account_id'] = $user->getId(); $data['group_id'] = NULL; $db->table(self::$TBL_ACL)->delete($data); $db->table(self::$TBL_ACL)->insert($data); } public static function removeUserFromAccessACL($siteId, $name, $user) { $db = System::getInstance()->getDB(); if ($user instanceof iUser) $user = $user->getId(); $data = array(); $data['site_id'] = $siteId; $data['instance'] = $name; $data['account_id'] = $user; $db->table(self::$TBL_ACL)->delete($data); } public static function addGroupToAccessACL($siteId, $name, iGroup $group) { $db = System::getInstance()->getDB(); $data = array(); $data['site_id'] = $siteId; $data['instance'] = $name; $data['account_id'] = NULL; $data['group_id'] = $group->getId(); $db->table(self::$TBL_ACL)->insert($data); } public static function removeGroupFromAccessACL($siteId, $name, $group) { $db = System::getInstance()->getDB(); if ($group instanceof iGroup) $group = $group->getId(); $data = array(); $data['site_id'] = $siteId; $data['instance'] = $name; $data['group_id'] = $group; $db->table(self::$TBL_ACL)->delete($data); } public static function hasUserAccess(iUser $usr, $siteId, $name) { $db = System::getInstance()->getDB(); $usrSearch = $db->select()->from(self::$TBL_ACL); $usrSearch->where(['account_id' => new Parameter(), 'group_id' => NULL, 'site_id' => $siteId, 'instance' => $name]); $row = $db->getObjectP($usrSearch, [$usr->getId()]); if ($row) return true; return false; } /** * Removes all ACL entries for an instance from the database * * @param integer $siteId * the site id * @param string $name * the name of the instance */ public static function clearInstanceACL($siteId, $name) { $db = System::getInstance()->getDB(); $search = array(); $search['site_id'] = $siteId; $search['instance'] = $name; $db->table(self::$TBL_ACL)->delete($search); } }