setPublic() public method

{@inheritDoc}
public setPublic ( $boolean )
Esempio n. 1
0
 /**
  * Sets up handlers and registers middleware for each tagged client.
  *
  * @param ContainerBuilder $container
  * @param array            $middlewareBag
  */
 private function registerMiddleware(ContainerBuilder $container, array $middlewareBag)
 {
     $clients = $container->findTaggedServiceIds(self::CLIENT_TAG);
     foreach ($clients as $clientId => $tags) {
         if (count($tags) > 1) {
             throw new \LogicException('Clients should use a single \'csa_guzzle.client\' tag');
         }
         $clientMiddleware = $middlewareBag;
         if (isset($tags[0]['middleware'])) {
             $whitelist = explode(' ', $tags[0]['middleware']);
             $clientMiddleware = array_filter($clientMiddleware, function ($value) use($whitelist) {
                 return in_array($value['alias'], $whitelist, true);
             });
         }
         $handlerStack = new DefinitionDecorator('csa_guzzle.handler_stack');
         $handlerStack->setPublic(false);
         foreach ($clientMiddleware as $middleware) {
             $handlerStack->addMethodCall('push', [new Reference($middleware['id']), $middleware['alias']]);
         }
         $clientHandlerStackId = sprintf('csa_guzzle.handler_stack.%s', $clientId);
         $container->setDefinition($clientHandlerStackId, $handlerStack);
         $clientDefinition = $container->findDefinition($clientId);
         $arguments = $clientDefinition->getArguments();
         $options = [];
         if (!empty($arguments)) {
             $options = array_shift($arguments);
         }
         $options['handler'] = new Reference($clientHandlerStackId);
         array_unshift($arguments, $options);
         $clientDefinition->setArguments($arguments);
     }
 }
 public function process(ContainerBuilder $container)
 {
     if (!($container->hasDefinition('fragment.listener') && $container->hasDefinition('ezpublish.decorated_fragment_renderer'))) {
         return null;
     }
     $fragmentListenerDef = $container->findDefinition('fragment.listener');
     $fragmentListenerDef->setFactoryService('ezpublish.fragment_listener.factory')->setFactoryMethod('buildFragmentListener')->addArgument('%fragment.listener.class%');
     // Looping over all fragment renderers to decorate them
     // This is to make sure they are siteaccess aware (siteaccess is serialized in rendered path).
     foreach ($container->findTaggedServiceIds('kernel.fragment_renderer') as $id => $attributes) {
         $renamedId = "{$id}.inner";
         $definition = $container->getDefinition($id);
         $public = $definition->isPublic();
         $tags = $definition->getTags();
         $definition->setPublic(false);
         $container->setDefinition($renamedId, $definition);
         $decoratedDef = new DefinitionDecorator('ezpublish.decorated_fragment_renderer');
         $decoratedDef->setArguments(array(new Reference($renamedId)));
         $decoratedDef->setPublic($public);
         $decoratedDef->setTags($tags);
         // Special treatment for inline fragment renderer, to fit ESI renderer constructor type hinting (forced to InlineFragmentRenderer)
         if ($id === 'fragment.renderer.inline') {
             $decoratedDef->setClass($container->getParameter('ezpublish.decorated_fragment_renderer.inline.class'));
         }
         $container->setDefinition($id, $decoratedDef);
     }
 }
 /**
  * Returns a definition for an asset package.
  *
  * @param ContainerBuilder $container   Container
  * @param array            $httpUrls    SSL assets_base_urls
  * @param array            $sslUrls     assets_base_urls
  * @param string           $rootDir     Directory where to look for reved assets
  * @param string           $summaryFile Grunt filerev summary file
  * @param string           $cacheDir    Kernel cache dir
  * @param bool             $debug       Debug mode?
  * @param string           $name        Package name
  *
  * @return DefinitionDecorator
  */
 private function createPackageDefinition(ContainerBuilder $container, array $httpUrls, array $sslUrls, $rootDir, $summaryFile, $cacheDir, $debug, $name = null)
 {
     if (!$httpUrls) {
         $package = new DefinitionDecorator('grunt.filerev.templating.asset.path_package');
         $package->setPublic(false)->setScope('request')->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
         return $package;
     }
     if ($httpUrls == $sslUrls) {
         $package = new DefinitionDecorator('grunt.filerev.templating.asset.url_package');
         $package->setPublic(false)->replaceArgument(0, $sslUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
         return $package;
     }
     $prefix = $name ? 'templating.asset.package.' . $name : 'templating.asset.default_package';
     $httpPackage = new DefinitionDecorator('grunt.filerev.templating.asset.url_package');
     $httpPackage->replaceArgument(0, $httpUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
     $container->setDefinition($prefix . '.http', $httpPackage);
     if ($sslUrls) {
         $sslPackage = new DefinitionDecorator('grunt.filerev.templating.asset.url_package');
         $sslPackage->replaceArgument(0, $sslUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
     } else {
         $sslPackage = new DefinitionDecorator('grunt.filerev.templating.asset.path_package');
         $sslPackage->setScope('request')->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
     }
     $container->setDefinition($prefix . '.ssl', $sslPackage);
     $package = new DefinitionDecorator('templating.asset.request_aware_package');
     $package->setPublic(false)->setScope('request')->replaceArgument(1, $prefix . '.http')->replaceArgument(2, $prefix . '.ssl');
     return $package;
 }
 private function createConverter($name, array $config, ContainerBuilder $container)
 {
     $environment = new DefinitionDecorator($config['environment']);
     $environment->setPublic(false);
     $environment->setClass($container->getDefinition($config['environment'])->getClass());
     $environment->addMethodCall('mergeConfig', [$config['config']]);
     $environment->addTag('webuni_commonmark.environment.extensions', $config['extensions']);
     // $environment->addTag('webuni_commonmark.environment', ['parent' => $config['environment'], 'extensions' => [$config['extensions']]);
     $environmentName = 'webuni_commonmark.' . $name . '_environment' . $config['environment'];
     $container->setDefinition($environmentName, $environment);
     $parser = new DefinitionDecorator($config['parser']);
     $parser->setPublic(false);
     $parser->setClass($container->getDefinition($config['parser'])->getClass());
     $parser->replaceArgument(0, new Reference($environmentName));
     $renderer = new DefinitionDecorator($config['renderer']);
     $renderer->setPublic(false);
     $renderer->setClass($container->getDefinition($config['renderer'])->getClass());
     $renderer->replaceArgument(0, new Reference($environmentName));
     $converter = new DefinitionDecorator($config['converter']);
     $converter->setPublic(true);
     $converter->setClass($container->getDefinition($config['converter'])->getClass());
     $converter->replaceArgument(0, $parser);
     $converter->replaceArgument(1, $renderer);
     $converterName = 'webuni_commonmark.' . $name . '_converter';
     $container->setDefinition($converterName, $converter);
     return $converterName;
 }
 /**
  * {@inheritdoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.yml');
     foreach ($config['connections'] as $name => $values) {
         $def = new Definition();
         $def->setClass($container->getParameter('agentsib_sphinx.connection.class'));
         $params = array('host' => $values['host'], 'port' => $values['port']);
         if ($values['socket']) {
             $params['socket'] = $values['socket'];
         }
         $def->setArguments(array($name, $values['driver'], $params));
         $def->addMethodCall('addLogger', array(new Reference('agentsib_sphinx.logger')));
         $container->setDefinition(sprintf('agentsib_sphinx.%s.connection', $name), $def);
         $helperDef = new DefinitionDecorator('agentsib_sphinx.factory.helper');
         $helperDef->setFactoryClass($container->getParameter('agentsib_sphinx.helper.class'));
         $helperDef->setFactoryMethod('create');
         $helperDef->addArgument(new Reference(sprintf('agentsib_sphinx.%s.connection', $name)));
         $helperDef->setPublic(true);
         $container->setDefinition(sprintf('agentsib_sphinx.%s.helper', $name), $helperDef);
         if ($name == $config['default_connection']) {
             $container->setAlias('agentsib_sphinx.connection', sprintf('agentsib_sphinx.%s.connection', $name));
             $container->setAlias('agentsib_sphinx.helper', sprintf('agentsib_sphinx.%s.helper', $name));
         }
     }
 }
 /**
  * {@inheritDoc}
  */
 public function process(ContainerBuilder $container)
 {
     foreach ($container->findTaggedServiceIds('payum.storage_extension') as $id => $tagAttributes) {
         foreach ($tagAttributes as $attributes) {
             $paymentIds = array();
             if (isset($attributes['all']) && $attributes['all']) {
                 $paymentIds = array_merge($paymentIds, $this->findAllPaymentIds($container));
             }
             if (isset($attributes['factory']) && $attributes['factory']) {
                 $paymentIds = array_merge($paymentIds, $this->findPaymentIdsByFactory($container, $attributes['factory']));
             }
             if (isset($attributes['context']) && $attributes['context']) {
                 $paymentIds = array_merge($paymentIds, $this->findPaymentIdsByContext($container, $attributes['context']));
             }
             $paymentIds = array_filter(array_unique($paymentIds));
             foreach ($paymentIds as $paymentId) {
                 $storageExtension = new DefinitionDecorator('payum.extension.storage.prototype');
                 $storageExtension->replaceArgument(0, new Reference($id));
                 $storageExtension->setPublic(false);
                 if (false !== strpos($id, '.storage.')) {
                     $storageExtensionId = str_replace('.storage.', '.extension.storage.', $id);
                 } else {
                     throw new LogicException(sprintf('In order to add storage to extension the storage %id has to contains ".storage." inside.', $id));
                 }
                 $container->setDefinition($storageExtensionId, $storageExtension);
                 $payment = $container->getDefinition($paymentId);
                 $payment->addMethodCall('addExtension', array(new Reference($storageExtensionId), isset($attributes['prepend']) && $attributes['prepend']));
             }
         }
     }
 }
 /**
  * {@inheritDoc}
  */
 protected function createStorage(ContainerBuilder $container, $modelClass, array $config)
 {
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config/storage'));
     $loader->load('propel1.xml');
     $storage = new DefinitionDecorator('payum.storage.propel1');
     $storage->setPublic(true);
     $storage->replaceArgument(0, $modelClass);
     return $storage;
 }
 /**
  * {@inheritDoc}
  */
 protected function createStorage(ContainerBuilder $container, $modelClass, array $config)
 {
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../../../Resources/config/storage'));
     $loader->load('doctrine.' . $config['driver'] . '.xml');
     $storage = new DefinitionDecorator(sprintf('payum.storage.doctrine.%s', $config['driver']));
     $storage->setPublic(true);
     $storage->replaceArgument(1, $modelClass);
     return $storage;
 }
 /**
  * {@inheritDoc}
  */
 protected function addApis(Definition $paymentDefinition, ContainerBuilder $container, $contextName, array $config)
 {
     $apiDefinition = new DefinitionDecorator('payum.be2bill.api.prototype');
     $apiDefinition->replaceArgument(1, array('identifier' => $config['identifier'], 'password' => $config['password'], 'sandbox' => $config['sandbox']));
     $apiDefinition->setPublic(true);
     $apiId = 'payum.context.' . $contextName . '.api';
     $container->setDefinition($apiId, $apiDefinition);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($apiId)));
 }
 /**
  * {@inheritDoc}
  */
 protected function addApis(Definition $paymentDefinition, ContainerBuilder $container, $contextName, array $config)
 {
     $apiDefinition = new DefinitionDecorator('payum.limonetik.api.prototype');
     $apiDefinition->replaceArgument(0, array('merchantId' => $config['merchant_id'], 'key' => $config['key'], 'sandbox' => $config['sandbox']));
     $apiDefinition->setPublic(true);
     $apiId = 'payum.context.' . $contextName . '.api';
     $container->setDefinition($apiId, $apiDefinition);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($apiId)));
 }
 /**
  * {@inheritDoc}
  */
 protected function addApis(Definition $paymentDefinition, ContainerBuilder $container, $contextName, array $config)
 {
     $apiDefinition = new DefinitionDecorator('payum.paypal.express_checkout_nvp.api.prototype');
     $apiDefinition->replaceArgument(0, array('username' => $config['username'], 'password' => $config['password'], 'signature' => $config['signature'], 'sandbox' => $config['sandbox']));
     $apiDefinition->setPublic(true);
     $apiId = 'payum.context.' . $contextName . '.api';
     $container->setDefinition($apiId, $apiDefinition);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($apiId)));
 }
 /**
  * {@inheritDoc}
  */
 protected function addApis(Definition $paymentDefinition, ContainerBuilder $container, $contextName, array $config)
 {
     $publishableKey = new DefinitionDecorator('payum.stripe.keys.prototype');
     $publishableKey->replaceArgument(0, $config['publishable_key']);
     $publishableKey->replaceArgument(1, $config['secret_key']);
     $publishableKey->setPublic(true);
     $publishableKeyId = 'payum.context.' . $contextName . '.keys';
     $container->setDefinition($publishableKeyId, $publishableKey);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($publishableKeyId)));
 }
 /**
  * Converts class hierarchy metadata to definition instances.
  *
  * @param ClassHierarchyMetadata $metadata
  * @return array an array of Definition instances
  */
 public function convert(ClassHierarchyMetadata $metadata)
 {
     static $count = 0;
     $definitions = array();
     $previous = null;
     foreach ($metadata->classMetadata as $classMetadata) {
         if (null === $previous && null === $classMetadata->parent) {
             $definition = new Definition();
         } else {
             $definition = new DefinitionDecorator($classMetadata->parent ?: $previous->id);
         }
         $definition->setClass($classMetadata->name);
         if (null !== $classMetadata->scope) {
             $definition->setScope($classMetadata->scope);
         }
         if (null !== $classMetadata->public) {
             $definition->setPublic($classMetadata->public);
         }
         if (null !== $classMetadata->abstract) {
             $definition->setAbstract($classMetadata->abstract);
         }
         if (null !== $classMetadata->lazy) {
             $definition->setLazy($classMetadata->lazy);
         }
         if (null !== $classMetadata->arguments) {
             $definition->setArguments($classMetadata->arguments);
         }
         $definition->setMethodCalls($classMetadata->methodCalls);
         $definition->setTags($classMetadata->tags);
         $definition->setProperties($classMetadata->properties);
         if (null !== $classMetadata->decorates) {
             if (!method_exists($definition, 'setDecoratedService')) {
                 throw new InvalidAnnotationException(sprintf("decorations require symfony >=2.8 on class %s", $classMetadata->name));
             }
             $definition->setDecoratedService($classMetadata->decorates, $classMetadata->decoration_inner_name);
         }
         if (null !== $classMetadata->deprecated && method_exists($definition, 'setDeprecated')) {
             $definition->setDeprecated(true, $classMetadata->deprecated);
         }
         if (null === $classMetadata->id) {
             $classMetadata->id = '_jms_di_extra.unnamed.service_' . $count++;
         }
         if (0 !== count($classMetadata->initMethods)) {
             foreach ($classMetadata->initMethods as $initMethod) {
                 $definition->addMethodCall($initMethod);
             }
         } elseif (null !== $classMetadata->initMethod) {
             @trigger_error('ClassMetadata::$initMethod is deprecated since version 1.7 and will be removed in 2.0. Use ClassMetadata::$initMethods instead.', E_USER_DEPRECATED);
             $definition->addMethodCall($classMetadata->initMethod);
         }
         $definitions[$classMetadata->id] = $definition;
         $previous = $classMetadata;
     }
     return $definitions;
 }
 /**
  * Returns a definition for an asset package.
  */
 private function createPackageDefinition($basePath, array $baseUrls, Reference $version)
 {
     if ($basePath && $baseUrls) {
         throw new \LogicException('An asset package cannot have base URLs and base paths.');
     }
     if (!$baseUrls) {
         $package = new DefinitionDecorator('assets.path_package');
         return $package->setPublic(false)->replaceArgument(0, $basePath)->replaceArgument(1, $version);
     }
     $package = new DefinitionDecorator('assets.url_package');
     return $package->setPublic(false)->replaceArgument(0, $baseUrls)->replaceArgument(1, $version);
 }
 /**
  * {@inheritDoc}
  */
 protected function addApis(Definition $paymentDefinition, ContainerBuilder $container, $contextName, array $config)
 {
     $options = array('merchant_id' => $config['merchant_id'], 'merchant_password' => $config['merchant_password'], 'receiver_email' => $config['receiver_email'], 'sandbox' => $config['sandbox']);
     if (isset($config['sandbox_url'])) {
         $options['sandbox_url'] = $config['sandbox_url'];
     }
     $apiDefinition = new DefinitionDecorator('eki.payum.nganluong.api.prototype');
     $apiDefinition->replaceArgument(0, $options);
     $apiDefinition->setPublic(true);
     $apiId = 'payum.context.' . $contextName . '.api';
     $container->setDefinition($apiId, $apiDefinition);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($apiId)));
 }
 /** {@inheritdoc} */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('error-handler-services.xml');
     $container->setParameter('error_handler.stage', $config['stage']);
     $container->setParameter('error_handler.root_dir', $config['root_dir']);
     $shutdownSeverity = strtoupper($config['shutdown_severity']);
     $container->setParameter('error_handler.shutdown_severity', $shutdownSeverity);
     $baseErrorHandler = $container->getDefinition('base_error_handler');
     $baseErrorHandler->replaceArgument(0, Severity::$SEVERITIES[$shutdownSeverity]);
     $errorHandler = $container->getDefinition('error_handler');
     foreach ($config['categories'] as $categoryName => $categoryConfiguration) {
         if (empty($categoryConfiguration['handlers'])) {
             continue;
         }
         foreach ($categoryConfiguration['handlers'] as $handlerName => $handlerConfiguration) {
             $handlerClass = $container->getParameter(sprintf('error_handler.handler_%s.class', $handlerName));
             $handlerId = sprintf('error_handler.handler.%s.%s', $categoryName, $handlerName);
             $handlerDefinition = new DefinitionDecorator('error_handler.abstract.handler');
             $handlerDefinition->setClass($handlerClass);
             $handlerDefinition->setPublic(false);
             $handlerDefinition->setLazy(true);
             switch ($handlerName) {
                 case 'bugsnag':
                     $handlerDefinition->addArgument($handlerConfiguration['apiKey']);
                     if (isset($handlerConfiguration['endpoint'])) {
                         $handlerDefinition->addMethodCall('setEndpoint', array($handlerConfiguration['endpoint']));
                     }
                     if (isset($handlerConfiguration['useSSL'])) {
                         $handlerDefinition->addMethodCall('setUseSSL', array($handlerConfiguration['useSSL']));
                     }
                     break;
                 case 'raven':
                     $handlerDefinition->addArgument($handlerConfiguration['endpoint']);
                     break;
             }
             $container->setDefinition($handlerId, $handlerDefinition);
             $errorHandler->addMethodCall('addHandler', array(new Reference($handlerId), array($categoryName)));
         }
     }
 }
Esempio n. 17
0
 /**
  * Converts class hierarchy metadata to definition instances.
  *
  * @param ClassHierarchyMetadata $metadata
  * @return array an array of Definition instances
  */
 public function convert(ClassHierarchyMetadata $metadata)
 {
     static $count = 0;
     $definitions = array();
     $previous = null;
     foreach ($metadata->classMetadata as $classMetadata) {
         if (null === $previous && null === $classMetadata->parent) {
             $definition = new Definition();
         } else {
             $definition = new DefinitionDecorator($classMetadata->parent ?: $previous->id);
         }
         $definition->setClass($classMetadata->name);
         if (null !== $classMetadata->scope) {
             $definition->setScope($classMetadata->scope);
         }
         if (null !== $classMetadata->public) {
             $definition->setPublic($classMetadata->public);
         }
         if (null !== $classMetadata->abstract) {
             $definition->setAbstract($classMetadata->abstract);
         }
         if (null !== $classMetadata->arguments) {
             $definition->setArguments($classMetadata->arguments);
         }
         $definition->setMethodCalls($classMetadata->methodCalls);
         $definition->setTags($classMetadata->tags);
         $definition->setProperties($classMetadata->properties);
         if (null === $classMetadata->id) {
             $classMetadata->id = '_jms_di_extra.unnamed.service_' . $count++;
         }
         if ($classMetadata->initMethod) {
             if (!method_exists($definition, 'setInitMethod')) {
                 throw new \RuntimeException(sprintf('@AfterSetup is not available on your Symfony version.'));
             }
             $definition->setInitMethod($classMetadata->initMethod);
         }
         $definitions[$classMetadata->id] = $definition;
         $previous = $classMetadata;
     }
     return $definitions;
 }
 /**
  * {@inheritDoc}
  */
 protected function addApis(Definition $paymentDefinition, ContainerBuilder $container, $contextName, array $config)
 {
     $orderApiDefinition = new DefinitionDecorator('payum.payex.api.order.prototype');
     $orderApiDefinition->replaceArgument(1, array('encryptionKey' => $config['encryption_key'], 'accountNumber' => $config['account_number'], 'sandbox' => $config['sandbox']));
     $orderApiDefinition->setPublic(true);
     $orderApiId = 'payum.context.' . $contextName . '.api.order';
     $container->setDefinition($orderApiId, $orderApiDefinition);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($orderApiId)));
     $agreementApiDefinition = new DefinitionDecorator('payum.payex.api.agreement.prototype');
     $agreementApiDefinition->replaceArgument(1, array('encryptionKey' => $config['encryption_key'], 'accountNumber' => $config['account_number'], 'sandbox' => $config['sandbox']));
     $agreementApiDefinition->setPublic(true);
     $agreementApiId = 'payum.context.' . $contextName . '.api.agreement';
     $container->setDefinition($agreementApiId, $agreementApiDefinition);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($agreementApiId)));
     $recurringApiDefinition = new DefinitionDecorator('payum.payex.api.recurring.prototype');
     $recurringApiDefinition->replaceArgument(1, array('encryptionKey' => $config['encryption_key'], 'accountNumber' => $config['account_number'], 'sandbox' => $config['sandbox']));
     $recurringApiDefinition->setPublic(true);
     $recurringApiId = 'payum.context.' . $contextName . '.api.recurring';
     $container->setDefinition($recurringApiId, $recurringApiDefinition);
     $paymentDefinition->addMethodCall('addApi', array(new Reference($recurringApiId)));
 }
Esempio n. 19
0
 /**
  * Returns a definition for an asset package.
  */
 private function createPackageDefinition(ContainerBuilder $container, array $httpUrls, array $sslUrls, $version, $format, $name = null)
 {
     if (!$httpUrls) {
         $package = new DefinitionDecorator('templating.asset.path_package');
         $package->setPublic(false)->setScope('request')->replaceArgument(1, $version)->replaceArgument(2, $format);
         return $package;
     }
     if ($httpUrls == $sslUrls) {
         $package = new DefinitionDecorator('templating.asset.url_package');
         $package->setPublic(false)->replaceArgument(0, $sslUrls)->replaceArgument(1, $version)->replaceArgument(2, $format);
         return $package;
     }
     $prefix = $name ? 'templating.asset.package.' . $name : 'templating.asset.default_package';
     $httpPackage = new DefinitionDecorator('templating.asset.url_package');
     $httpPackage->replaceArgument(0, $httpUrls)->replaceArgument(1, $version)->replaceArgument(2, $format);
     $container->setDefinition($prefix . '.http', $httpPackage);
     if ($sslUrls) {
         $sslPackage = new DefinitionDecorator('templating.asset.url_package');
         $sslPackage->replaceArgument(0, $sslUrls)->replaceArgument(1, $version)->replaceArgument(2, $format);
     } else {
         $sslPackage = new DefinitionDecorator('templating.asset.path_package');
         $sslPackage->setScope('request')->replaceArgument(1, $version)->replaceArgument(2, $format);
     }
     $container->setDefinition($prefix . '.ssl', $sslPackage);
     $package = new DefinitionDecorator('templating.asset.request_aware_package');
     $package->setPublic(false)->setScope('request')->replaceArgument(1, $prefix . '.http')->replaceArgument(2, $prefix . '.ssl');
     return $package;
 }
Esempio n. 20
0
 private function registerCacheConfiguration(array $config, ContainerBuilder $container)
 {
     $version = substr(str_replace('/', '-', base64_encode(md5(uniqid(mt_rand(), true), true))), 0, -2);
     $container->getDefinition('cache.adapter.apcu')->replaceArgument(2, $version);
     $container->getDefinition('cache.adapter.system')->replaceArgument(2, $version);
     $container->getDefinition('cache.adapter.filesystem')->replaceArgument(2, $config['directory']);
     foreach (array('doctrine', 'psr6', 'redis') as $name) {
         if (isset($config[$name = 'default_' . $name . '_provider'])) {
             $container->setAlias('cache.' . $name, Compiler\CachePoolPass::getServiceProvider($container, $config[$name]));
         }
     }
     foreach (array('app', 'system') as $name) {
         $config['pools']['cache.' . $name] = array('adapter' => $config[$name], 'public' => true);
     }
     foreach ($config['pools'] as $name => $pool) {
         $definition = new DefinitionDecorator($pool['adapter']);
         $definition->setPublic($pool['public']);
         unset($pool['adapter'], $pool['public']);
         $definition->addTag('cache.pool', $pool);
         $container->setDefinition($name, $definition);
     }
     if (method_exists(PropertyAccessor::class, 'createCache')) {
         $propertyAccessDefinition = $container->register('cache.property_access', AdapterInterface::class);
         $propertyAccessDefinition->setPublic(false);
         $propertyAccessDefinition->setFactory(array(PropertyAccessor::class, 'createCache'));
         $propertyAccessDefinition->setArguments(array(null, null, $version, new Reference('logger', ContainerInterface::IGNORE_ON_INVALID_REFERENCE)));
         $propertyAccessDefinition->addTag('cache.pool', array('clearer' => 'cache.default_clearer'));
         $propertyAccessDefinition->addTag('monolog.logger', array('channel' => 'cache'));
     }
     $this->addClassesToCompile(array('Symfony\\Component\\Cache\\Adapter\\ApcuAdapter', 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter', 'Symfony\\Component\\Cache\\CacheItem'));
 }
Esempio n. 21
0
 /**
  * Loads the services based on your application configuration.
  *
  * @param array            $configs
  * @param ContainerBuilder $container
  *
  * @throws \InvalidArgumentException
  * @throws \LogicException
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $config = $this->processConfiguration(new Configuration(), $configs);
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('view.xml');
     $loader->load('routing.xml');
     $loader->load('util.xml');
     $loader->load('request.xml');
     if (!empty($config['disable_csrf_role'])) {
         $loader->load('forms.xml');
         $container->setParameter('fos_rest.disable_csrf_role', $config['disable_csrf_role']);
     }
     $container->setParameter('fos_rest.cache_dir', $config['cache_dir']);
     $formats = array();
     foreach ($config['view']['formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = false;
         }
     }
     foreach ($config['view']['templating_formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = true;
         }
     }
     // The validator service alias is only set if validation is enabled for the request body converter
     $validator = $config['service']['validator'];
     unset($config['service']['validator']);
     if (null === $config['service']['serializer']) {
         $bundles = $container->getParameter('kernel.bundles');
         if (isset($bundles['JMSSerializerBundle'])) {
             $config['service']['serializer'] = 'jms_serializer.serializer';
         } else {
             throw new \InvalidArgumentException('JMSSerializerBundle is not available and no other serializer is configured. You must either enable the JMSSerializerBundle or configure a custom serializer.');
         }
     }
     foreach ($config['service'] as $key => $service) {
         $container->setAlias($this->getAlias() . '.' . $key, $service);
     }
     if (!empty($config['serializer']['version'])) {
         $container->setParameter($this->getAlias() . '.serializer.exclusion_strategy.version', $config['serializer']['version']);
     }
     if (!empty($config['serializer']['groups'])) {
         $container->setParameter($this->getAlias() . '.serializer.exclusion_strategy.groups', $config['serializer']['groups']);
     }
     $container->setParameter($this->getAlias() . '.serializer.serialize_null', $config['serializer']['serialize_null']);
     $container->setParameter($this->getAlias() . '.formats', $formats);
     $container->setParameter($this->getAlias() . '.default_engine', $config['view']['default_engine']);
     foreach ($config['view']['force_redirects'] as $format => $code) {
         if (true === $code) {
             $config['view']['force_redirects'][$format] = Codes::HTTP_FOUND;
         }
     }
     $container->setParameter($this->getAlias() . '.force_redirects', $config['view']['force_redirects']);
     if (!is_numeric($config['view']['failed_validation'])) {
         $config['view']['failed_validation'] = constant('\\FOS\\RestBundle\\Util\\Codes::' . $config['view']['failed_validation']);
     }
     $container->setParameter($this->getAlias() . '.failed_validation', $config['view']['failed_validation']);
     if (!is_numeric($config['view']['empty_content'])) {
         $config['view']['empty_content'] = constant('\\FOS\\RestBundle\\Util\\Codes::' . $config['view']['empty_content']);
     }
     $container->setParameter($this->getAlias() . '.empty_content', $config['view']['empty_content']);
     $container->setParameter($this->getAlias() . '.serialize_null', $config['view']['serialize_null']);
     if (!empty($config['view']['view_response_listener'])) {
         $loader->load('view_response_listener.xml');
         $container->setParameter($this->getAlias() . '.view_response_listener.force_view', 'force' === $config['view']['view_response_listener']);
     }
     $container->setParameter($this->getAlias() . '.routing.loader.default_format', $config['routing_loader']['default_format']);
     $container->setParameter($this->getAlias() . '.routing.loader.include_format', $config['routing_loader']['include_format']);
     foreach ($config['exception']['codes'] as $exception => $code) {
         if (!is_numeric($code)) {
             $config['exception']['codes'][$exception] = constant("\\FOS\\RestBundle\\Util\\Codes::{$code}");
         }
         $this->testExceptionExists($exception);
     }
     foreach ($config['exception']['messages'] as $exception => $message) {
         $this->testExceptionExists($exception);
     }
     $container->setParameter($this->getAlias() . '.exception.codes', $config['exception']['codes']);
     $container->setParameter($this->getAlias() . '.exception.messages', $config['exception']['messages']);
     if (!empty($config['body_listener'])) {
         $loader->load('body_listener.xml');
         $container->setParameter($this->getAlias() . '.throw_exception_on_unsupported_content_type', $config['body_listener']['throw_exception_on_unsupported_content_type']);
         $container->setParameter($this->getAlias() . '.decoders', $config['body_listener']['decoders']);
         $arrayNormalizer = $config['body_listener']['array_normalizer'];
         if (null !== $arrayNormalizer) {
             $container->getDefinition($this->getAlias() . '.body_listener')->addMethodCall('setArrayNormalizer', array(new Reference($arrayNormalizer)));
         }
     }
     if (!empty($config['format_listener']['rules'])) {
         $loader->load('format_listener.xml');
         $container->setParameter($this->getAlias() . '.format_listener.rules', $config['format_listener']['rules']);
         if (!empty($config['format_listener']['media_type']['version_regex'])) {
             $container->setParameter($this->getAlias() . '.format_listener.media_type.version_regex', $config['format_listener']['media_type']['version_regex']);
         } else {
             $container->removeDefinition('fos_rest.version_listener');
         }
     }
     if (!empty($config['view']['exception_wrapper_handler'])) {
         $container->setParameter($this->getAlias() . '.view.exception_wrapper_handler', $config['view']['exception_wrapper_handler']);
     }
     if (!empty($config['view']['jsonp_handler'])) {
         $handler = new DefinitionDecorator($config['service']['view_handler']);
         $handler->setPublic(true);
         $jsonpHandler = new Reference($this->getAlias() . '.view_handler.jsonp');
         $handler->addMethodCall('registerHandler', array('jsonp', array($jsonpHandler, 'createResponse')));
         $container->setDefinition($this->getAlias() . '.view_handler', $handler);
         $container->setParameter($this->getAlias() . '.view_handler.jsonp.callback_param', $config['view']['jsonp_handler']['callback_param']);
         if ('/(^[a-z0-9_]+$)|(^YUI\\.Env\\.JSONP\\._[0-9]+$)/i' !== $config['view']['jsonp_handler']['callback_filter']) {
             throw new \LogicException('As of 1.2.0, the "callback_filter" parameter is deprecated, and is not used anymore. For more information, read: https://github.com/FriendsOfSymfony/FOSRestBundle/pull/642.');
         }
         if (empty($config['view']['mime_types']['jsonp'])) {
             $config['view']['mime_types']['jsonp'] = $config['view']['jsonp_handler']['mime_type'];
         }
     }
     if (!empty($config['view']['mime_types'])) {
         $loader->load('mime_type_listener.xml');
         $container->setParameter($this->getAlias() . '.mime_types', $config['view']['mime_types']);
     } else {
         $container->setParameter($this->getAlias() . '.mime_types', array());
     }
     if (!empty($config['param_fetcher_listener'])) {
         $loader->load('param_fetcher_listener.xml');
         if ('force' === $config['param_fetcher_listener']) {
             $container->setParameter($this->getAlias() . '.param_fetcher_listener.set_params_as_attributes', true);
         }
     }
     if (!empty($config['allowed_methods_listener'])) {
         $loader->load('allowed_methods_listener.xml');
     }
     if (!empty($config['access_denied_listener'])) {
         $loader->load('access_denied_listener.xml');
         $container->setParameter($this->getAlias() . '.access_denied_listener.formats', $config['access_denied_listener']);
         $container->setParameter($this->getAlias() . '.access_denied_listener.unauthorized_challenge', $config['unauthorized_challenge']);
     }
     if (!empty($config['body_converter'])) {
         if (!empty($config['body_converter']['enabled'])) {
             $parameter = new \ReflectionParameter(array('Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterInterface', 'supports'), 'configuration');
             if ('Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ParamConverter' == $parameter->getClass()->getName()) {
                 $container->setParameter('fos_rest.converter.request_body.class', 'FOS\\RestBundle\\Request\\RequestBodyParamConverter');
             } else {
                 $container->setParameter('fos_rest.converter.request_body.class', 'FOS\\RestBundle\\Request\\RequestBodyParamConverter20');
             }
             $loader->load('request_body_param_converter.xml');
         }
         if (!empty($config['body_converter']['validate'])) {
             $container->setAlias($this->getAlias() . '.validator', $validator);
         }
         if (!empty($config['body_converter']['validation_errors_argument'])) {
             $container->setParameter('fos_rest.converter.request_body.validation_errors_argument', $config['body_converter']['validation_errors_argument']);
         }
     }
 }
 private function createListDefinition($model, $options, ContainerBuilder $container)
 {
     $states = array('column' => $options['default_sort']['column'], 'order' => $options['default_sort']['order'], 'page' => 1, 'criteria' => array());
     $listState = new DefinitionDecorator('lyra_admin.user_state');
     $listState->replaceArgument(1, $states)->replaceArgument(2, $model)->setPublic(false);
     $container->setDefinition(sprintf('lyra_admin.%s.user_state', $model), $listState);
     $queryBuilder = new DefinitionDecorator('lyra_admin.query_builder');
     $queryBuilder->setArguments(array(new Reference(sprintf('lyra_admin.%s.model_manager', $model))))->setPublic(false);
     $container->setDefinition(sprintf('lyra_admin.%s.query_builder', $model), $queryBuilder);
     $pager = new DefinitionDecorator('lyra_admin.pager');
     $pager->addMethodCall('setMaxRows', array($options['max_page_rows']))->setPublic(false);
     $container->setDefinition(sprintf('lyra_admin.%s.pager', $model), $pager);
     $manager = new DefinitionDecorator('lyra_admin.security_manager');
     $manager->addMethodCall('setModelName', array($model))->setPublic(false);
     $container->setDefinition(sprintf('lyra_admin.%s.security_manager', $model), $manager);
     $columns = new DefinitionDecorator('lyra_admin.column_collection');
     $columns->setPublic(false);
     $container->setDefinition(sprintf('lyra_admin.%s.grid_columns', $model), $columns);
     $types = array('list_actions', 'object_actions', 'batch_actions', 'other_actions');
     foreach ($types as $type) {
         $this->createCollectionDefinition($model, $type, $options[$type], $container);
     }
     $container->setDefinition(sprintf('lyra_admin.%s.grid', $model), new DefinitionDecorator('lyra_admin.grid.abstract'))->replaceArgument(0, new Reference(sprintf('lyra_admin.%s.pager', $model)))->replaceArgument(1, new Reference(sprintf('lyra_admin.%s.query_builder', $model)))->replaceArgument(2, new Reference(sprintf('lyra_admin.%s.security_manager', $model)))->addMethodCall('setModelName', array($model))->addMethodCall('setState', array(new Reference(sprintf('lyra_admin.%s.user_state', $model))))->addMethodCall('setTitle', array($options['title']))->addMethodCall('setTemplate', array($options['template']))->addMethodCall('setTransDomain', array($options['trans_domain']))->addMethodCall('setDefaultSort', array($options['default_sort']))->addMethodCall('setColumns', array(new Reference(sprintf('lyra_admin.%s.grid_columns', $model))))->addMethodCall('setActions', array(new Reference(sprintf('lyra_admin.%s.other_actions.collection', $model))))->addMethodCall('setListActions', array(new Reference(sprintf('lyra_admin.%s.list_actions.collection', $model))))->addMethodCall('setObjectActions', array(new Reference(sprintf('lyra_admin.%s.object_actions.collection', $model))))->addMethodCall('setBatchActions', array(new Reference(sprintf('lyra_admin.%s.batch_actions.collection', $model))));
 }
Esempio n. 23
0
 private function loadView(array $config, XmlFileLoader $loader, ContainerBuilder $container)
 {
     if (!empty($config['view']['exception_wrapper_handler'])) {
         $container->setAlias('fos_rest.view.exception_wrapper_handler', $config['view']['exception_wrapper_handler']);
     }
     if (!empty($config['view']['jsonp_handler'])) {
         $handler = new DefinitionDecorator($config['service']['view_handler']);
         $handler->setPublic(true);
         $jsonpHandler = new Reference('fos_rest.view_handler.jsonp');
         $handler->addMethodCall('registerHandler', array('jsonp', array($jsonpHandler, 'createResponse')));
         $container->setDefinition('fos_rest.view_handler', $handler);
         $container->setParameter('fos_rest.view_handler.jsonp.callback_param', $config['view']['jsonp_handler']['callback_param']);
         if (empty($config['view']['mime_types']['jsonp'])) {
             $config['view']['mime_types']['jsonp'] = $config['view']['jsonp_handler']['mime_type'];
         }
     }
     if ($config['view']['mime_types']['enabled']) {
         $loader->load('mime_type_listener.xml');
         if (!empty($config['mime_type_listener']['service'])) {
             $service = $container->getDefinition('fos_rest.mime_type_listener');
             $service->clearTag('kernel.event_listener');
         }
         $container->setParameter('fos_rest.mime_types', $config['view']['mime_types']);
     } else {
         $container->setParameter('fos_rest.mime_types', array());
     }
     if ($config['view']['view_response_listener']['enabled']) {
         $loader->load('view_response_listener.xml');
         if (!empty($config['view_response_listener']['service'])) {
             $service = $container->getDefinition('fos_rest.view_response_listener');
             $service->clearTag('kernel.event_listener');
         }
         $container->setParameter('fos_rest.view_response_listener.force_view', $config['view']['view_response_listener']['force']);
     }
     $formats = array();
     foreach ($config['view']['formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = false;
         }
     }
     foreach ($config['view']['templating_formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = true;
         }
     }
     $container->setParameter('fos_rest.formats', $formats);
     foreach ($config['view']['force_redirects'] as $format => $code) {
         if (true === $code) {
             $config['view']['force_redirects'][$format] = Codes::HTTP_FOUND;
         }
     }
     $container->setParameter('fos_rest.force_redirects', $config['view']['force_redirects']);
     if (!is_numeric($config['view']['failed_validation'])) {
         $config['view']['failed_validation'] = constant('\\FOS\\RestBundle\\Util\\Codes::' . $config['view']['failed_validation']);
     }
     $container->setParameter('fos_rest.failed_validation', $config['view']['failed_validation']);
     if (!is_numeric($config['view']['empty_content'])) {
         $config['view']['empty_content'] = constant('\\FOS\\RestBundle\\Util\\Codes::' . $config['view']['empty_content']);
     }
     $container->setParameter('fos_rest.empty_content', $config['view']['empty_content']);
     $container->setParameter('fos_rest.serialize_null', $config['view']['serialize_null']);
     $container->setParameter('fos_rest.default_engine', $config['view']['default_engine']);
 }
Esempio n. 24
0
 private function registerCacheConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
 {
     foreach ($config['pools'] as $name => $poolConfig) {
         $poolDefinition = new DefinitionDecorator($poolConfig['adapter']);
         $poolDefinition->setPublic($poolConfig['public']);
         unset($poolConfig['adapter'], $poolConfig['public']);
         $poolDefinition->addTag('cache.pool', $poolConfig);
         $container->setDefinition('cache.pool.' . $name, $poolDefinition);
     }
     $this->addClassesToCompile(array('Psr\\Cache\\CacheItemInterface', 'Psr\\Cache\\CacheItemPoolInterface', 'Symfony\\Component\\Cache\\Adapter\\AdapterInterface', 'Symfony\\Component\\Cache\\Adapter\\AbstractAdapter', 'Symfony\\Component\\Cache\\CacheItem'));
 }
Esempio n. 25
0
 private function loadView(array $config, XmlFileLoader $loader, ContainerBuilder $container)
 {
     if (!empty($config['view']['exception_wrapper_handler'])) {
         $container->setAlias('fos_rest.view.exception_wrapper_handler', $config['view']['exception_wrapper_handler']);
     }
     if (!empty($config['view']['jsonp_handler'])) {
         $handler = new DefinitionDecorator($config['service']['view_handler']);
         $handler->setPublic(true);
         $jsonpHandler = new Reference('fos_rest.view_handler.jsonp');
         $handler->addMethodCall('registerHandler', ['jsonp', [$jsonpHandler, 'createResponse']]);
         $container->setDefinition('fos_rest.view_handler', $handler);
         $container->getDefinition('fos_rest.view_handler.jsonp')->replaceArgument(0, $config['view']['jsonp_handler']['callback_param']);
         if (empty($config['view']['mime_types']['jsonp'])) {
             $config['view']['mime_types']['jsonp'] = $config['view']['jsonp_handler']['mime_type'];
         }
     }
     if ($config['view']['mime_types']['enabled']) {
         $loader->load('mime_type_listener.xml');
         if (!empty($config['mime_type_listener']['service'])) {
             $service = $container->getDefinition('fos_rest.mime_type_listener');
             $service->clearTag('kernel.event_listener');
         }
         $container->getDefinition('fos_rest.mime_type_listener')->replaceArgument(0, $config['view']['mime_types']);
     }
     if ($config['view']['view_response_listener']['enabled']) {
         $loader->load('view_response_listener.xml');
         $service = $container->getDefinition('fos_rest.view_response_listener');
         if (!empty($config['view_response_listener']['service'])) {
             $service->clearTag('kernel.event_listener');
         }
         $service->replaceArgument(1, $config['view']['view_response_listener']['force']);
     }
     $formats = [];
     foreach ($config['view']['formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = false;
         }
     }
     foreach ($config['view']['templating_formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = true;
         }
     }
     $container->getDefinition('fos_rest.routing.loader.yaml_collection')->replaceArgument(3, $formats);
     $container->getDefinition('fos_rest.routing.loader.xml_collection')->replaceArgument(3, $formats);
     $container->getDefinition('fos_rest.routing.loader.reader.action')->replaceArgument(4, $formats);
     foreach ($config['view']['force_redirects'] as $format => $code) {
         if (true === $code) {
             $config['view']['force_redirects'][$format] = Response::HTTP_FOUND;
         }
     }
     if (!is_numeric($config['view']['failed_validation'])) {
         $config['view']['failed_validation'] = constant('\\Symfony\\Component\\HttpFoundation\\Response::' . $config['view']['failed_validation']);
     }
     $defaultViewHandler = $container->getDefinition('fos_rest.view_handler.default');
     $defaultViewHandler->replaceArgument(5, $formats);
     $defaultViewHandler->replaceArgument(6, $config['view']['failed_validation']);
     if (!is_numeric($config['view']['empty_content'])) {
         $config['view']['empty_content'] = constant('\\Symfony\\Component\\HttpFoundation\\Response::' . $config['view']['empty_content']);
     }
     $defaultViewHandler->replaceArgument(7, $config['view']['empty_content']);
     $defaultViewHandler->replaceArgument(8, $config['view']['serialize_null']);
     $defaultViewHandler->replaceArgument(9, $config['view']['force_redirects']);
     $defaultViewHandler->replaceArgument(10, $config['view']['default_engine']);
 }
Esempio n. 26
0
 /**
  * Register handler instance
  *
  * @param string           $handlerKey
  * @param array            $handlerInfo
  * @param ContainerBuilder $container
  *
  * @return string The handler service id
  */
 private function registerHandler($handlerKey, array $handlerInfo, ContainerBuilder $container)
 {
     $handlerId = 'api.handler.' . $handlerKey;
     $errorsId = $handlerId . '.error';
     $chainActionLoaderId = $handlerId . '.action_loader.chain';
     $actionLoaderId = $handlerId . '.action_loader';
     $actionManagerId = $handlerId . '.action_manager';
     $handlerDefinition = new DefinitionDecorator('api.handler_abstract');
     $handlerDefinition->setPublic(true);
     // Create action loader and manager
     $chainActionLoaderDefinition = new DefinitionDecorator('api.action_loader_abstract');
     $container->setDefinition($chainActionLoaderId, $chainActionLoaderDefinition);
     if ($handlerInfo['cache']) {
         $cachedActionLoaderDefinition = new DefinitionDecorator('api.action_loader_cached_abstract');
         $cachedActionLoaderDefinition->replaceArgument(0, new Reference($chainActionLoaderId));
         $cachedActionLoaderDefinition->replaceArgument(1, new Reference($handlerInfo['cache']));
         $cachedActionLoaderDefinition->replaceArgument(2, $handlerId . ':actions');
         $container->setDefinition($actionLoaderId, $cachedActionLoaderDefinition);
     } else {
         $actionLoaderId = $chainActionLoaderId;
     }
     $actionManagerDefinition = new DefinitionDecorator('api.action_manager_abstract');
     $actionManagerDefinition->replaceArgument(0, new Reference($actionLoaderId));
     $container->setDefinition($actionManagerId, $actionManagerDefinition);
     $callableActionLoaderId = $handlerId . '.action_loader.callable';
     $callableActionLoaderDefinition = new DefinitionDecorator('api.action_loader_callable_abstract');
     $container->setDefinition($callableActionLoaderId, $callableActionLoaderDefinition);
     $chainActionLoaderDefinition->addMethodCall('addLoader', [new Reference($callableActionLoaderId)]);
     // Add actions loaders to chain action loader
     if ($handlerInfo['enable_service_annotated_loader']) {
         $serviceAnnotatedActionLoaderId = $handlerId . '.action_loader.service_annotated';
         $serviceAnnotatedActionLoaderDefinition = new DefinitionDecorator('api.action_loader_service_annotated_abstract');
         $container->setDefinition($serviceAnnotatedActionLoaderId, $serviceAnnotatedActionLoaderDefinition);
         $chainActionLoaderDefinition->addMethodCall('addLoader', [new Reference($serviceAnnotatedActionLoaderId)]);
     }
     if ($handlerInfo['callable_loader_factory']) {
         if (strpos($handlerInfo['callable_loader_factory'], '::') !== false) {
             list($serviceId, $method) = explode('::', $handlerInfo['callable_loader_factory'], 2);
         } else {
             $serviceId = $handlerInfo['callable_loader_factory'];
             $method = 'configure';
         }
         $callableActionLoaderDefinition->setConfigurator([new Reference($serviceId), $method]);
     }
     // Create error system
     $errorDefinition = new DefinitionDecorator('api.error_abstract');
     $container->setDefinition($errorsId, $errorDefinition);
     // Create extractor
     $actionExtractorId = $handlerId . '.action_extractor';
     $extractorId = $handlerId . '.extractor';
     $actionExtractorDefinition = new DefinitionDecorator('api.handler.action_extractor_abstract');
     if ($handlerInfo['parameter_extractor']) {
         $actionExtractorDefinition->replaceArgument(1, new Reference($handlerInfo['parameter_extractor']));
     } else {
         $actionExtractorDefinition->replaceArgument(1, null);
     }
     if ($handlerInfo['response_extractor']) {
         $actionExtractorDefinition->replaceArgument(2, new Reference($handlerInfo['response_extractor']));
     } else {
         $actionExtractorDefinition->replaceArgument(2, null);
     }
     $extractorDefinition = new DefinitionDecorator('api.handler.extractor_abstract');
     $extractorDefinition->replaceArgument(0, new Reference($actionExtractorId));
     $container->setDefinition($actionExtractorId, $actionExtractorDefinition);
     if ($handlerInfo['cache']) {
         // Use cache system for extractor (Replace services for use cached)
         $extractorId .= '_delegate';
         $extractorDefinition->setPublic(false);
         $container->setDefinition($extractorId, $extractorDefinition);
         $cachedExtractorId = $handlerId . '.extractor';
         $cachedExtractorDefinition = new DefinitionDecorator('api.handler.cached_extractor_abstract');
         $cachedExtractorDefinition->replaceArgument(0, new Reference($extractorId));
         $cachedExtractorDefinition->replaceArgument(1, new Reference($handlerInfo['cache']));
         $cachedExtractorDefinition->replaceArgument(2, $handlerKey);
         $cachedExtractorDefinition->addTag('api.handler.extractor', ['handler' => $handlerKey]);
         $container->setDefinition($cachedExtractorId, $cachedExtractorDefinition);
     } else {
         $container->setDefinition($extractorId, $extractorDefinition);
         $extractorDefinition->addTag('api.handler.extractor', ['handler' => $handlerKey]);
     }
     // Create event dispatcher
     $eventDispatcherId = $handlerId . '.event_dispatcher';
     $primaryEventDispatcherId = $handlerId . '.event_dispatcher_primary';
     $eventDispatcherDefinition = new DefinitionDecorator('api.event_dispatcher_chain_abstract');
     $primaryEventDispatcher = new Definition('Symfony\\Component\\EventDispatcher\\EventDispatcher');
     $primaryEventDispatcher->setPublic(false);
     $eventDispatcherDefinition->addMethodCall('addEventDispatcher', [new Reference('event_dispatcher')]);
     $eventDispatcherDefinition->addMethodCall('addEventDispatcher', [new Reference($primaryEventDispatcherId), true]);
     $container->setDefinition($primaryEventDispatcherId, $primaryEventDispatcher);
     $container->setDefinition($eventDispatcherId, $eventDispatcherDefinition);
     // Inject handler to container
     $container->setDefinition($handlerId, $handlerDefinition);
     // Replace handler arguments
     $handlerDefinition->replaceArgument(0, new Reference($actionManagerId));
     $handlerDefinition->replaceArgument(2, new Reference($handlerInfo['parameter_resolver']));
     $handlerDefinition->replaceArgument(3, new Reference($eventDispatcherId));
     $handlerDefinition->replaceArgument(4, new Reference($errorsId));
     // Add common tags
     $handlerDefinition->addTag('monolog.logger', ['channel' => $this->getLoggerChannelForHandler($handlerKey)]);
     $handlerDefinition->addTag('api.handler', ['key' => $handlerKey, 'service_loader' => !empty($serviceAnnotatedActionLoaderId) ? $serviceAnnotatedActionLoaderId : null, 'event_dispatcher' => $eventDispatcherId, 'errors' => $errorsId]);
     $subscribers = $handlerInfo['subscribers'];
     // Register common systems for handlers
     if ($subscribers['response_transformable']) {
         $this->registerTransformableSubscriber($handlerKey, $container);
     }
     if ($subscribers['object_security_authorization']) {
         $this->registerObjectSecurityAuthorizationSubscriber($handlerKey, $container);
     }
     if ($subscribers['enabled_checker']) {
         $this->registerEnabledCheckerSubscriber($handlerKey, $container);
     }
     if ($subscribers['logger']) {
         $this->registerLoggerSubscriber($handlerKey, $container);
     }
     // Register common methods
     $methods = $handlerInfo['methods'];
     $methods = array_filter($methods, function ($value) {
         return $value;
     });
     if (count($methods)) {
         $commonServiceActionLoaderId = 'api.handler.' . $handlerId . '.extra_method_service_loader';
         $commonServiceActionLoaderDefinition = new DefinitionDecorator('api.action_loader.service_method');
         $container->setDefinition($commonServiceActionLoaderId, $commonServiceActionLoaderDefinition);
         $chainActionLoaderDefinition->addMethodCall('addLoader', [new Reference($commonServiceActionLoaderId)]);
         if ($methods['error_list']) {
             $errorListServiceId = 'api.handler.' . $handlerId . '.extra_service_method.error_list';
             $errorListMethodDefinition = new Definition('FivePercent\\Component\\Api\\Api\\ErrorList');
             $errorListMethodDefinition->setArguments([new Reference('api.handler_registry'), $handlerKey]);
             $container->setDefinition($errorListServiceId, $errorListMethodDefinition);
             $commonServiceActionLoaderDefinition->addMethodCall('addServiceMethod', [is_string($methods['error_list']) ? $methods['error_list'] : 'error.list', $errorListServiceId, 'getErrors']);
         }
     }
     return $handlerId;
 }
 /**
  * Loads doctrine listeners to handle indexing of new or updated objects.
  *
  * @param array $typeConfig
  * @param ContainerBuilder $container
  * @param string $objectPersisterId
  * @param string $indexName
  * @param string $typeName
  * @return string
  */
 private function loadTypeListener(array $typeConfig, ContainerBuilder $container, $objectPersisterId, $indexName, $typeName)
 {
     if (isset($typeConfig['listener']['service'])) {
         return $typeConfig['listener']['service'];
     }
     /* Note: listener services may conflict with "prototype.driver", if the
      * index and type names were "prototype" and a driver, respectively.
      */
     $abstractListenerId = sprintf('fos_elastica.listener.prototype.%s', $typeConfig['driver']);
     $listenerId = sprintf('fos_elastica.listener.%s.%s', $indexName, $typeName);
     $listenerDef = new DefinitionDecorator($abstractListenerId);
     $listenerDef->replaceArgument(0, new Reference($objectPersisterId));
     $listenerDef->replaceArgument(1, $this->getDoctrineEvents($typeConfig));
     $listenerConfig = array('identifier' => $typeConfig['identifier'], 'indexName' => $indexName, 'typeName' => $typeName);
     if ($typeConfig['listener']['logger']) {
         $listenerDef->replaceArgument(4, new Reference($typeConfig['listener']['logger']));
     }
     switch ($typeConfig['driver']) {
         case 'orm':
             $listenerDef->addTag('doctrine.event_subscriber');
             break;
         case 'mongodb':
             $listenerDef->addTag('doctrine_mongodb.odm.event_subscriber');
             break;
     }
     if ($typeConfig['listener']['async']) {
         $listenerDef->setPublic(true);
         $listenerDef->addTag('kernel.event_listener', array('event' => 'kernel.terminate', 'method' => 'onKernelTerminate'));
         $listenerDef->addTag('kernel.event_listener', array('event' => 'console.terminate', 'method' => 'onConsoleTerminate'));
         $listenerConfig['async'] = true;
         $listenerConfig['defer'] = true;
     }
     $listenerDef->replaceArgument(3, $listenerConfig);
     $container->setDefinition($listenerId, $listenerDef);
     return $listenerId;
 }
Esempio n. 28
0
    /**
     * @param array $config
     * @param ContainerBuilder $container
     */
    protected function loadStorages(array $config, ContainerBuilder $container)
    {
        foreach ($config as $modelClass => $storageConfig) {
            $storageFactoryName = $this->findSelectedStorageFactoryNameInStorageConfig($storageConfig);
            $storageId = $this->storageFactories[$storageFactoryName]->create(
                $container,
                $modelClass,
                $storageConfig[$storageFactoryName]
            );

            $container->getDefinition($storageId)->addTag('payum.storage', array('model_class' => $modelClass));

            if (false !== strpos($storageId, '.storage.')) {
                $storageExtensionId = str_replace('.storage.', '.extension.storage.', $storageId);
            } else {
                throw new LogicException(sprintf('In order to add storage to extension the storage %id has to contains ".storage." inside.', $storageId));
            }

            $storageExtension = new DefinitionDecorator('payum.extension.storage.prototype');
            $storageExtension->replaceArgument(0, new Reference($storageId));
            $storageExtension->setPublic(true);
            $container->setDefinition($storageExtensionId, $storageExtension);

            if ($storageConfig['extension']['all']) {
                $storageExtension->addTag('payum.extension', array('all' => true));
            } else {
                foreach ($storageConfig['extension']['payments'] as $paymentName) {
                    $storageExtension->addTag('payum.extension', array('payment' => $paymentName));
                }

                foreach ($storageConfig['extension']['factories'] as $factory) {
                    $storageExtension->addTag('payum.extension', array('factory' => $factory));
                }
            }
        }
    }
 /**
  * Register the symmetric cryptors in container
  *
  * @param string           $name                cryptor name
  * @param array            $cryptorConfig       cryptor config
  * @param Definition       $registryDefinition  registry service definition
  * @param ContainerBuilder $container           container
  */
 protected function registerAesCryptor($name, $cryptorConfig, Definition $registryDefinition, ContainerBuilder $container)
 {
     $keyReaderDefinition = new DefinitionDecorator('gtt.crypt.aes.key_reader');
     $keyReaderDefinition->replaceArgument(0, $cryptorConfig['key_path']);
     $keyReaderDefinition->setPublic(false);
     $keyReaderDefinitionId = "gtt.crypt.aes.key_reader.{$name}";
     $container->setDefinition($keyReaderDefinitionId, $keyReaderDefinition);
     $keyReaderReference = new Reference($keyReaderDefinitionId);
     $aesEncryptorDefinition = new DefinitionDecorator('gtt.crypt.aes.encryptor');
     $aesEncryptorDefinition->replaceArgument(0, $keyReaderReference);
     $aesEncryptorDefinition->replaceArgument(1, $cryptorConfig['binary_output']);
     $aesDecryptorDefinition = new DefinitionDecorator('gtt.crypt.aes.decryptor');
     $aesDecryptorDefinition->replaceArgument(0, $keyReaderReference);
     $aesDecryptorDefinition->replaceArgument(1, $cryptorConfig['binary_output']);
     $this->setCryptorsPair($name, $container, $registryDefinition, $aesEncryptorDefinition, $aesDecryptorDefinition);
 }
Esempio n. 30
0
 private function loadView(array $config, XmlFileLoader $loader, ContainerBuilder $container)
 {
     if (!empty($config['view']['exception_wrapper_handler'])) {
         $container->setParameter('fos_rest.view.exception_wrapper_handler', $config['view']['exception_wrapper_handler']);
     }
     if (!empty($config['view']['jsonp_handler'])) {
         $handler = new DefinitionDecorator($config['service']['view_handler']);
         $handler->setPublic(true);
         $jsonpHandler = new Reference('fos_rest.view_handler.jsonp');
         $handler->addMethodCall('registerHandler', array('jsonp', array($jsonpHandler, 'createResponse')));
         $container->setDefinition('fos_rest.view_handler', $handler);
         $container->setParameter('fos_rest.view_handler.jsonp.callback_param', $config['view']['jsonp_handler']['callback_param']);
         if ('/(^[a-z0-9_]+$)|(^YUI\\.Env\\.JSONP\\._[0-9]+$)/i' !== $config['view']['jsonp_handler']['callback_filter']) {
             throw new \LogicException('As of 1.2.0, the "callback_filter" parameter is deprecated, and is not used anymore. For more information, read: https://github.com/FriendsOfSymfony/FOSRestBundle/pull/642.');
         }
         if (empty($config['view']['mime_types']['jsonp'])) {
             $config['view']['mime_types']['jsonp'] = $config['view']['jsonp_handler']['mime_type'];
         }
     }
     if ($config['view']['mime_types']['enabled']) {
         $loader->load('mime_type_listener.xml');
         if (!empty($config['mime_type_listener']['service'])) {
             $service = $container->getDefinition('fos_rest.mime_type_listener');
             $service->clearTag('kernel.event_listener');
         }
         $container->setParameter('fos_rest.mime_types', $config['view']['mime_types']);
     } else {
         $container->setParameter('fos_rest.mime_types', array());
     }
     if ($config['view']['view_response_listener']['enabled']) {
         $loader->load('view_response_listener.xml');
         if (!empty($config['view_response_listener']['service'])) {
             $service = $container->getDefinition('fos_rest.view_response_listener');
             $service->clearTag('kernel.event_listener');
         }
         $container->setParameter('fos_rest.view_response_listener.force_view', $config['view']['view_response_listener']['force']);
     }
     $formats = array();
     foreach ($config['view']['formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = false;
         }
     }
     foreach ($config['view']['templating_formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = true;
         }
     }
     $container->setParameter('fos_rest.formats', $formats);
     foreach ($config['view']['force_redirects'] as $format => $code) {
         if (true === $code) {
             $config['view']['force_redirects'][$format] = Codes::HTTP_FOUND;
         }
     }
     $container->setParameter('fos_rest.force_redirects', $config['view']['force_redirects']);
     if (!is_numeric($config['view']['failed_validation'])) {
         $config['view']['failed_validation'] = constant('\\FOS\\RestBundle\\Util\\Codes::' . $config['view']['failed_validation']);
     }
     $container->setParameter('fos_rest.failed_validation', $config['view']['failed_validation']);
     if (!is_numeric($config['view']['empty_content'])) {
         $config['view']['empty_content'] = constant('\\FOS\\RestBundle\\Util\\Codes::' . $config['view']['empty_content']);
     }
     $container->setParameter('fos_rest.empty_content', $config['view']['empty_content']);
     $container->setParameter('fos_rest.serialize_null', $config['view']['serialize_null']);
     $container->setParameter('fos_rest.default_engine', $config['view']['default_engine']);
 }