public function getAccountRoleComputed($role)
{
if (is_string($role)) {
$role = $this->getAccountRole($role);
} else {
if (!$role instanceof Role\AccountRoleObject) {
throw new \InvalidArgumentException('ID of account role or \\Scalr\\Acl\\Role\\AccountRoleObject is expected.');
}
}
$groups = self::getGroups();
if ($role instanceof Role\AccountRoleObject) {
$accountRole = array('id' => $role->getRoleId(), 'name' => $role->getName(), 'baseRoleId' => $role->getBaseRole()->getRoleId(), 'color' => $role->getColorHex(), 'automatic' => $role->isAutomatic(), 'resources' => null);
foreach ($role->getIteratorResources() as $resource) {
$accountRoleResource = array('id' => $resource->getResourceId(), 'granted' => $role->isAllowed($resource->getResourceId()) ? 1 : 0, 'name' => $resource->getName(), 'group' => $resource->getGroup(), 'groupOrder' => isset($groups[$resource->getGroup()]) ? $groups[$resource->getGroup()] : 0, 'permissions' => null);
if ($resource->getMode() !== null) {
$r = $role->getResource($resource->getResourceId());
$accountRoleResource['mode'] = $r ? $r->getMode() : null;
}
foreach ($resource->getPermissions() as $permissionId => $permissionDescription) {
$accountRoleResource['permissions'][$permissionId] = $role->isAllowed($resource->getResourceId(), $permissionId) ? 1 : 0;
}
$accountRole['resources'][] = $accountRoleResource;
}
}
return isset($accountRole) ? $accountRole : null;
}