‪TYPO3CMS  ‪main
ConfigurationModuleProviderPass.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
21 use Symfony\Component\DependencyInjection\ContainerBuilder;
25 
31 final class ‪ConfigurationModuleProviderPass implements CompilerPassInterface
32 {
33  protected string ‪$tagName;
34 
35  public function ‪__construct(string ‪$tagName)
36  {
37  $this->tagName = ‪$tagName;
38  }
39 
40  public function ‪process(ContainerBuilder $container): void
41  {
42  $configurationModuleProviderRegistryDefinition = $container->findDefinition(ProviderRegistry::class);
43  $providerList = [];
44 
45  foreach ($container->findTaggedServiceIds($this->tagName) as $id => $tags) {
46  $definition = $container->findDefinition($id);
47  if (!$definition->isAutoconfigured() || $definition->isAbstract()) {
48  continue;
49  }
50 
51  foreach ($tags as $attributes) {
52  if (!isset($attributes['identifier']) || (bool)($attributes['disabled'] ?? false)) {
53  continue;
54  }
55  $providerList[$attributes['identifier']] = [
56  'definition' => $definition,
57  'attributes' => $attributes,
58  'before' => ‪GeneralUtility::trimExplode(',', $attributes['before'] ?? '', true),
59  'after' => ‪GeneralUtility::trimExplode(',', $attributes['after'] ?? '', true),
60  ];
61  }
62  }
63 
64  if ($container->has(DependencyOrderingService::class)) {
65  $providerList = $container->get(DependencyOrderingService::class)->orderByDependencies($providerList);
66  }
67 
68  foreach ($providerList as $provider) {
69  $configurationModuleProviderRegistryDefinition->addMethodCall(
70  'registerProvider',
71  [$provider['definition'], $provider['attributes']]
72  );
73  }
74  }
75 }
‪TYPO3\CMS\Lowlevel\DependencyInjection
Definition: ConfigurationModuleProviderPass.php:18
‪TYPO3\CMS\Lowlevel\DependencyInjection\ConfigurationModuleProviderPass
Definition: ConfigurationModuleProviderPass.php:32
‪TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ProviderRegistry
Definition: ProviderRegistry.php:24
‪TYPO3\CMS\Core\Service\DependencyOrderingService
Definition: DependencyOrderingService.php:32
‪TYPO3\CMS\Lowlevel\DependencyInjection\ConfigurationModuleProviderPass\__construct
‪__construct(string $tagName)
Definition: ConfigurationModuleProviderPass.php:35
‪TYPO3\CMS\Lowlevel\DependencyInjection\ConfigurationModuleProviderPass\$tagName
‪string $tagName
Definition: ConfigurationModuleProviderPass.php:33
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Lowlevel\DependencyInjection\ConfigurationModuleProviderPass\process
‪process(ContainerBuilder $container)
Definition: ConfigurationModuleProviderPass.php:40
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode(string $delim, string $string, bool $removeEmptyValues=false, int $limit=0)
Definition: GeneralUtility.php:822