multiversion-8.x-1.0-beta34/src/MultiversionServiceProvider.php
src/MultiversionServiceProvider.php
<?php namespace Drupal\multiversion; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\DependencyInjection\ServiceProviderBase; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Reference; /** * Defines a service profiler for the multiversion module. */ class MultiversionServiceProvider extends ServiceProviderBase { public function alter(ContainerBuilder $container) { $renderer_config = $container->getParameter('renderer.config'); $renderer_config['required_cache_contexts'][] = 'workspace'; $container->setParameter('renderer.config', $renderer_config); // Switch the menu tree storage to our own that respect Workspace cache // contexts. $definition = $container->getDefinition('menu.tree_storage'); $definition->setClass('Drupal\multiversion\MenuTreeStorage'); // Override the comment.statistics class with a new class. try { $definition = $container->getDefinition('comment.statistics'); $definition->setClass('Drupal\multiversion\CommentStatistics'); } catch (InvalidArgumentException $e) { // Do nothing, comment module is not installed. } // Override the redirect.repository class with a new class. try { $definition = $container->getDefinition('redirect.repository'); $definition->setClass('Drupal\multiversion\Redirect\RedirectRepository') ->addArgument(new Reference('workspace.manager')) ->addArgument(new Reference('state')); } catch (InvalidArgumentException $e) { // Do nothing, Redirect module is not installed. } // Override the access_check.node.revision class with a new class. try { $definition = $container->getDefinition('access_check.node.revision'); $definition->setClass('Drupal\multiversion\Access\NodeRevisionAccessCheck'); } catch (InvalidArgumentException $e) { // Do nothing, Node module is not installed. } } }