eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Security\PolicyProvider\PoliciesConfigBuilder::addConfig PHP Method

addConfig() public method

public addConfig ( array $config )
$config array
    public function addConfig(array $config)
    {
        $policyMap = [];
        $previousPolicyMap = [];
        // We receive limitations as values, but we want them as keys to be used by isset().
        foreach ($config as $module => $functionArray) {
            foreach ($functionArray as $function => $limitationCollection) {
                $policyMap[$module][$function] = array_fill_keys((array) $limitationCollection, true);
            }
        }
        if ($this->containerBuilder->hasParameter('ezpublish.api.role.policy_map')) {
            $previousPolicyMap = $this->containerBuilder->getParameter('ezpublish.api.role.policy_map');
        }
        $this->containerBuilder->setParameter('ezpublish.api.role.policy_map', array_merge_recursive($previousPolicyMap, $policyMap));
    }

Usage Example

 public function testAddConfig()
 {
     $containerBuilder = new ContainerBuilder();
     $configBuilder = new PoliciesConfigBuilder($containerBuilder);
     $config1 = ['foo' => ['bar' => null]];
     $config2 = ['some' => ['thing' => ['limitation']]];
     $expected = ['foo' => ['bar' => []], 'some' => ['thing' => ['limitation' => true]]];
     $configBuilder->addConfig($config1);
     $configBuilder->addConfig($config2);
     self::assertSame($expected, $containerBuilder->getParameter('ezpublish.api.role.policy_map'));
 }
PoliciesConfigBuilder