Scalr\Acl\Acl::getMissingRecords PHP Method

getMissingRecords() public method

Gets missing records for predefined global ACL roles: Full Access and Everything forbidden.
public getMissingRecords ( ) : string
return string Returns sql script output that adds missing records
    public function getMissingRecords()
    {
        $output = array();
        foreach (array(array(self::ROLE_ID_FULL_ACCESS, true), array(self::ROLE_ID_EVERYTHING_FORBIDDEN, false)) as $v) {
            $roleId = $v[0];
            $allowed = $v[1];
            $role = $this->getRole($roleId);
            $roleResources = $role->getResources();
            foreach (Resource\Definition::getAll() as $resourceId => $resourceDefinition) {
                // Absence of the record is considered as forbidden
                if (!$allowed && !isset($roleResources[$resourceId])) {
                    continue;
                }
                if (!isset($roleResources[$resourceId])) {
                    $output .= sprintf("INSERT `acl_role_resources` " . "SET `role_id` = %d, `resource_id` = 0x%x, `granted` = %d;\n", $roleId, $resourceId, (int) $allowed);
                    $roleResources[$resourceId] = new Role\RoleResourceObject($roleId, $resourceId, $allowed);
                }
                $resource = $roleResources[$resourceId];
                if ($resource->isGranted() != $allowed) {
                    $output .= sprintf("UPDATE `acl_role_resources` " . "SET `granted` = %d; WHERE `role_id` = %d AND `resource_id` = 0x%x;\n", (int) $allowed, $roleId, $resourceId);
                }
                $permissions = $resource->getPermissions();
                foreach ($resourceDefinition->getPermissions() as $permissionId => $description) {
                    // Absence of the record is considered as forbidden
                    if (!$allowed && !isset($permissions[$permissionId])) {
                        continue;
                    }
                    if (!isset($permissions[$permissionId])) {
                        $output .= sprintf("INSERT `acl_role_resource_permissions` " . "SET `role_id` = %d, `resource_id` = 0x%x, `perm_id` = '%s', `granted` = %d;\n", $roleId, $resourceId, $permissionId, (int) $allowed);
                        $permissions[$permissionId] = new Role\RoleResourcePermissionObject($roleId, $resourceId, $permissionId, $allowed);
                    }
                    $permission = $permissions[$permissionId];
                    if ($permission->isGranted() != $allowed) {
                        $output .= sprintf("UPDATE `acl_role_resource_permissions` SET `granted` = %d; " . "WHERE `role_id` = %d AND `resource_id` = 0x%x AND `perm_id` = '%s';\n", (int) $allowed, $roleId, $resourceId, $permissionId);
                    }
                }
                unset($permissions);
            }
            unset($role);
            unset($roleResources);
        }
        return $output;
    }