Neos\Flow\Core\Migrations\Version20121115110100::up PHP Method

up() public method

public up ( ) : void
return void
    public function up()
    {
        $policyExaminationResult = array();
        $this->processConfiguration(\Neos\Flow\Configuration\ConfigurationManager::CONFIGURATION_TYPE_POLICY, function ($configuration) use(&$policyExaminationResult) {
            if (!isset($configuration['roles'])) {
                return;
            }
            $localRoles = array();
            foreach ($configuration['roles'] as $roleIdentifier => $roleConfiguration) {
                $localRoles[] = $roleIdentifier;
            }
            foreach ($configuration['roles'] as $roleIdentifier => $roleConfiguration) {
                if (!is_array($roleConfiguration) || $roleConfiguration === array()) {
                    continue;
                }
                foreach ($roleConfiguration as $parentRoleIdentifier) {
                    if (!is_string($parentRoleIdentifier)) {
                        continue;
                    }
                    if (strpos($parentRoleIdentifier, ':') === false && !in_array($parentRoleIdentifier, $localRoles, true)) {
                        $policyExaminationResult[] = '"' . $parentRoleIdentifier . '" is used as parent role for "' . $roleIdentifier . '"';
                    }
                }
            }
            if (!isset($configuration['acls']) || !is_array($configuration['acls'])) {
                return;
            }
            foreach ($configuration['acls'] as $roleIdentifier => $acl) {
                if (strpos($roleIdentifier, ':') === false && !in_array($roleIdentifier, $localRoles, true)) {
                    $policyExaminationResult[] = '"' . $roleIdentifier . '" is used in ACL definition';
                }
            }
        });
        if ($policyExaminationResult !== array()) {
            $this->showWarning('The Policy.yaml file(s) for this package use roles that are not defined locally. You must prefix them with the source package key.' . PHP_EOL . PHP_EOL . implode('* ' . PHP_EOL, $policyExaminationResult));
        }
    }
Version20121115110100