/** * This method returns an array indexed by record id, containing authorized actions * for given module and user. * * When using this method, make sure you specify the $args['model'] && $args['module'] ! * * @param unknown_type $args * @param DmUser $user */ public function getRecordsPermissionsByRecord($args, DmUser $user, $limit = 0) { $cacheKey = sprintf('recordsPermissionsByRecord_%s_%s', serialize($args), $user->get($user->getTable()->getIdentifier())); if (!isset($args['model'])) { throw new LogicException('You must specify the $args[\'model\'] key !'); } if (!isset($args['module'])) { throw new LogicException('You must specify the $args[\'module\'] key !'); } $records = array(); $permissions = $this->getRecordsPermissionsQuery($args, $user)->limit($limit)->execute(array(), Doctrine::HYDRATE_ARRAY); if (is_array($permissions) && !empty($permissions)) { foreach ($permissions as $permission) { if (!isset($records[$permission['secure_record']])) { $records[$permission['secure_record']] = array(); } $records[$permission['secure_record']][] = $permission['secure_action']; } } return $records; }