Issue #3100496 by amateescu, Donnyboypony, alexpott, Berdir, daffie, PapaGrande: Workspaces should only alter non-deprecated path_alias services

merge-requests/2419/head
Alex Pott 2019-12-20 21:47:29 +00:00
parent 88bdfdda0c
commit 802719a568
No known key found for this signature in database
GPG Key ID: 31905460D4A69276
2 changed files with 11 additions and 3 deletions

View File

@ -136,6 +136,9 @@ class CoreServiceProvider implements ServiceProviderInterface, ServiceModifierIn
foreach ($services as $id => $class) {
if (!$container->hasDefinition($id)) {
$definition = $container->register($id, $class);
// Mark the fallback services as deprecated in order to allow other
// modules to provide additional checks before relying or altering them.
$definition->setDeprecated(TRUE, 'The "%service_id%" service is in fallback mode. See https://drupal.org/node/3092086');
switch ($id) {
case 'path_alias.subscriber':
$definition->addArgument(new Reference('path.alias_manager'));

View File

@ -22,9 +22,14 @@ class WorkspacesServiceProvider extends ServiceProviderBase {
$container->setParameter('renderer.config', $renderer_config);
// Replace the class of the 'path_alias.repository' service.
$container->getDefinition('path_alias.repository')
->setClass(WorkspacesAliasRepository::class)
->addMethodCall('setWorkspacesManager', [new Reference('workspaces.manager')]);
if ($container->hasDefinition('path_alias.repository')) {
$definition = $container->getDefinition('path_alias.repository');
if (!$definition->isDeprecated()) {
$definition
->setClass(WorkspacesAliasRepository::class)
->addMethodCall('setWorkspacesManager', [new Reference('workspaces.manager')]);
}
}
// Ensure that there's no active workspace while running database updates by
// removing the relevant tag from all workspace negotiator services.