Skip to content

Commit

Permalink
[BUGFIX] Check for ProviderRegistry when registering configuration pr…
Browse files Browse the repository at this point in the history
…oviders

Ensure ext:lowlevel ProviderRegistry is available before
tagging a service as configuration.provider, preventing
"Invalid service" errors on building the container.

Resolves: #100844
Releases: main, 12.4
Change-Id: I8580c484722f75684e622ee0db91992d7f7dbd21
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/79128
Tested-by: core-ci <typo3@b13.com>
Tested-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
  • Loading branch information
o-ba committed Jun 2, 2023
1 parent 7f0740d commit fc7a560
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 26 deletions.
15 changes: 15 additions & 0 deletions typo3/sysext/form/Configuration/Services.php
Expand Up @@ -7,9 +7,24 @@
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use TYPO3\CMS\Core\DependencyInjection\PublicServicePass;
use TYPO3\CMS\Form\ConfigurationModuleProvider\FormYamlProvider;
use TYPO3\CMS\Form\Domain\Finishers\FinisherInterface;
use TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ProviderRegistry;

return static function (ContainerConfigurator $container, ContainerBuilder $containerBuilder) {
$containerBuilder->registerForAutoconfiguration(FinisherInterface::class)->addTag('form.finisher');
$containerBuilder->addCompilerPass(new PublicServicePass('form.finisher', true));

if ($containerBuilder->hasDefinition(ProviderRegistry::class)) {
$container->services()->defaults()->autowire()->autoconfigure()->public()
->set('lowlevel.configuration.module.provider.formyamlconfiguration')
->class(FormYamlProvider::class)
->tag(
'lowlevel.configuration.module.provider',
[
'identifier' => 'formYamlConfiguration',
'after' => 'eventListeners',
]
);
}
};
7 changes: 0 additions & 7 deletions typo3/sysext/form/Configuration/Services.yaml
Expand Up @@ -84,13 +84,6 @@ services:
identifier: 'form-framework/modify-data-structure'
method: 'modifyDataStructure'

lowlevel.configuration.module.provider.formyamlconfiguration:
class: 'TYPO3\CMS\Form\ConfigurationModuleProvider\FormYamlProvider'
tags:
- name: 'lowlevel.configuration.module.provider'
identifier: 'formYamlConfiguration'
after: 'eventListeners'

TYPO3\CMS\Form\SoftReference\FormPersistenceIdentifierSoftReferenceParser:
tags:
- name: softreference.parser
Expand Down
3 changes: 2 additions & 1 deletion typo3/sysext/form/composer.json
Expand Up @@ -25,7 +25,8 @@
},
"suggest": {
"typo3/cms-filelist": "Listing of files in the directory",
"typo3/cms-impexp": "Import and Export of records from TYPO3 in a custom serialized format (.T3D) for data exchange with other TYPO3 systems."
"typo3/cms-impexp": "Import and Export of records from TYPO3 in a custom serialized format (.T3D) for data exchange with other TYPO3 systems.",
"typo3/cms-lowlevel": "To display the YAML configuration in the configuration module"
},
"conflict": {
"typo3/cms": "*"
Expand Down
16 changes: 16 additions & 0 deletions typo3/sysext/reactions/Configuration/Services.php
Expand Up @@ -6,6 +6,8 @@

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ProviderRegistry;
use TYPO3\CMS\Reactions\ConfigurationModuleProvider\ReactionsProvider;
use TYPO3\CMS\Reactions\Reaction\ReactionInterface;

return static function (ContainerConfigurator $container, ContainerBuilder $containerBuilder) {
Expand All @@ -14,4 +16,18 @@
->setPublic(true)
->setLazy(true)
->addTag('reactions.reaction');

if ($containerBuilder->hasDefinition(ProviderRegistry::class)) {
$container->services()->defaults()->autowire()->autoconfigure()->public()
->set('lowlevel.configuration.module.provider.reactions')
->class(ReactionsProvider::class)
->tag(
'lowlevel.configuration.module.provider',
[
'identifier' => 'reactions',
'label' => 'LLL:EXT:reactions/Resources/Private/Language/locallang_db.xlf:reactions',
'after' => 'mfaproviders',
]
);
}
};
8 changes: 0 additions & 8 deletions typo3/sysext/reactions/Configuration/Services.yaml
Expand Up @@ -13,11 +13,3 @@ services:

TYPO3\CMS\Reactions\Form\ReactionItemsProcFunc:
public: true

lowlevel.configuration.module.provider.reactions:
class: 'TYPO3\CMS\Reactions\ConfigurationModuleProvider\ReactionsProvider'
tags:
- name: 'lowlevel.configuration.module.provider'
identifier: 'reactions'
label: 'LLL:EXT:reactions/Resources/Private/Language/locallang_db.xlf:reactions'
after: 'mfaproviders'
19 changes: 19 additions & 0 deletions typo3/sysext/webhooks/Configuration/Services.php
Expand Up @@ -4,10 +4,14 @@

namespace TYPO3\CMS\Webhooks;

use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
use Symfony\Component\DependencyInjection\ChildDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use TYPO3\CMS\Core\Attribute\WebhookMessage;
use TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ProviderRegistry;
use TYPO3\CMS\Webhooks\ConfigurationModuleProvider\WebhookTypesProvider;

return static function (ContainerConfigurator $container, ContainerBuilder $containerBuilder) {
$containerBuilder->registerAttributeForAutoconfiguration(
Expand All @@ -17,4 +21,19 @@ static function (ChildDefinition $definition, WebhookMessage $attribute): void {
}
);
$containerBuilder->addCompilerPass(new DependencyInjection\WebhookCompilerPass(WebhookMessage::TAG_NAME));

if ($containerBuilder->hasDefinition(ProviderRegistry::class)) {
$container->services()->defaults()->autowire()->autoconfigure()->public()
->set('lowlevel.configuration.module.provider.webhooks')
->class(WebhookTypesProvider::class)
->arg('$sendersLocator', new ServiceLocatorArgument(new TaggedIteratorArgument('messenger.sender', 'identifier')))
->tag(
'lowlevel.configuration.module.provider',
[
'identifier' => 'webhooks',
'label' => 'LLL:EXT:webhooks/Resources/Private/Language/locallang_db.xlf:webhooks',
'after' => 'reactions',
]
);
}
};
10 changes: 0 additions & 10 deletions typo3/sysext/webhooks/Configuration/Services.yaml
Expand Up @@ -28,13 +28,3 @@ services:

TYPO3\CMS\Webhooks\Tca\ItemsProcFunc\WebhookTypesItemsProcFunc:
public: true

lowlevel.configuration.module.provider.webhooks:
class: 'TYPO3\CMS\Webhooks\ConfigurationModuleProvider\WebhookTypesProvider'
arguments:
$sendersLocator: !tagged_locator { tag: 'messenger.sender', index_by: 'identifier' }
tags:
- name: 'lowlevel.configuration.module.provider'
identifier: 'webhooks'
label: 'LLL:EXT:webhooks/Resources/Private/Language/locallang_db.xlf:webhooks'
after: 'reactions'

0 comments on commit fc7a560

Please sign in to comment.