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;
}