public static function extract($definition, array $data = null) { $parameters = array(); $errors = array(); $data = is_null($data) ? Controller::getPayload() : $data; if (!empty($definition['required'])) { $required = self::extractDefinition('required', $definition['required'], $data, $errors); $parameters = array_merge($parameters, $required); } if (!count($errors) && !empty($definition['optional'])) { $optional = self::extractDefinition('optional', $definition['optional'], $data, $errors); $parameters = array_merge($parameters, $optional); } if (!count($errors)) { return $parameters; } Backend::addError($errors); return false; }
public function post_permissions($component = false) { $parameters = array(); $query = new DeleteQuery('Permission'); $query->filter("`role` != 'nobody'")->filter("`role` != 'superadmin'"); if ($component) { $query->filter('`subject` = :component'); $parameters[':component'] = class_for_url($component); } $result = $query->execute($parameters); if ($result === false) { Backend::addError('Could not empty permissions table'); return false; } $permission = new PermissionObj(); $count = 0; foreach (Controller::getPayload() as $key => $roles) { if (strpos($key, '::') === false) { continue; } list($subject, $action) = explode('::', $key, 2); foreach ($roles as $role => $value) { $data = array('subject' => $subject, 'action' => $action, 'role' => $role); if ($permission->replace($data)) { $count++; } } } return $count; }