1<?php 2 3declare(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 18namespace TYPO3\CMS\Extensionmanager\DependencyInjection; 19 20use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; 21use Symfony\Component\DependencyInjection\ContainerBuilder; 22use TYPO3\CMS\Extensionmanager\Remote\RemoteRegistry; 23 24/** 25 * @internal 26 */ 27final class ExtensionRemotePass implements CompilerPassInterface 28{ 29 private $tagName; 30 31 public function __construct(string $tagName) 32 { 33 $this->tagName = $tagName; 34 } 35 36 public function process(ContainerBuilder $container): void 37 { 38 $remoteRegistryDefinition = $container->findDefinition(RemoteRegistry::class); 39 40 foreach ($container->findTaggedServiceIds($this->tagName) as $id => $tags) { 41 $definition = $container->findDefinition($id); 42 $configuration = []; 43 44 foreach ($tags as $attributes) { 45 $configuration['default'] = (bool)($attributes['default'] ?? false); 46 $configuration['enabled'] = (bool)($attributes['enabled'] ?? true); 47 } 48 49 $remoteRegistryDefinition->addMethodCall('registerRemote', [$definition, $configuration]); 50 } 51 } 52} 53