PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / symfony / translation / DependencyInjection / TranslatorPathsPass.php
independent-analytics / vendor / symfony / translation / DependencyInjection Last commit date
TranslationDumperPass.php 1 month ago TranslationExtractorPass.php 1 month ago TranslatorPass.php 1 month ago TranslatorPathsPass.php 1 month ago
TranslatorPathsPass.php
128 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace IAWPSCOPED\Symfony\Component\Translation\DependencyInjection;
12
13 use IAWPSCOPED\Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass;
14 use IAWPSCOPED\Symfony\Component\DependencyInjection\ContainerBuilder;
15 use IAWPSCOPED\Symfony\Component\DependencyInjection\Definition;
16 use IAWPSCOPED\Symfony\Component\DependencyInjection\Reference;
17 use IAWPSCOPED\Symfony\Component\DependencyInjection\ServiceLocator;
18 /**
19 * @author Yonel Ceruto <yonelceruto@gmail.com>
20 * @internal
21 */
22 class TranslatorPathsPass extends AbstractRecursivePass
23 {
24 private int $level = 0;
25 /**
26 * @var array<string, bool>
27 */
28 private array $paths = [];
29 /**
30 * @var array<int, Definition>
31 */
32 private array $definitions = [];
33 /**
34 * @var array<string, array<string, bool>>
35 */
36 private array $controllers = [];
37 public function process(ContainerBuilder $container)
38 {
39 if (!$container->hasDefinition('translator')) {
40 return;
41 }
42 foreach ($this->findControllerArguments($container) as $controller => $argument) {
43 $id = \substr($controller, 0, \strpos($controller, ':') ?: \strlen($controller));
44 if ($container->hasDefinition($id)) {
45 [$locatorRef] = $argument->getValues();
46 $this->controllers[(string) $locatorRef][$container->getDefinition($id)->getClass()] = \true;
47 }
48 }
49 try {
50 parent::process($container);
51 $paths = [];
52 foreach ($this->paths as $class => $_) {
53 if (($r = $container->getReflectionClass($class)) && !$r->isInterface()) {
54 $paths[] = $r->getFileName();
55 foreach ($r->getTraits() as $trait) {
56 $paths[] = $trait->getFileName();
57 }
58 }
59 }
60 if ($paths) {
61 if ($container->hasDefinition('console.command.translation_debug')) {
62 $definition = $container->getDefinition('console.command.translation_debug');
63 $definition->replaceArgument(6, \array_merge($definition->getArgument(6), $paths));
64 }
65 if ($container->hasDefinition('console.command.translation_extract')) {
66 $definition = $container->getDefinition('console.command.translation_extract');
67 $definition->replaceArgument(7, \array_merge($definition->getArgument(7), $paths));
68 }
69 }
70 } finally {
71 $this->level = 0;
72 $this->paths = [];
73 $this->definitions = [];
74 }
75 }
76 protected function processValue(mixed $value, bool $isRoot = \false) : mixed
77 {
78 if ($value instanceof Reference) {
79 if ('translator' === (string) $value) {
80 for ($i = $this->level - 1; $i >= 0; --$i) {
81 $class = $this->definitions[$i]->getClass();
82 if (ServiceLocator::class === $class) {
83 if (!isset($this->controllers[$this->currentId])) {
84 continue;
85 }
86 foreach ($this->controllers[$this->currentId] as $class => $_) {
87 $this->paths[$class] = \true;
88 }
89 } else {
90 $this->paths[$class] = \true;
91 }
92 break;
93 }
94 }
95 return $value;
96 }
97 if ($value instanceof Definition) {
98 $this->definitions[$this->level++] = $value;
99 $value = parent::processValue($value, $isRoot);
100 unset($this->definitions[--$this->level]);
101 return $value;
102 }
103 return parent::processValue($value, $isRoot);
104 }
105 private function findControllerArguments(ContainerBuilder $container) : array
106 {
107 if ($container->hasDefinition('argument_resolver.service')) {
108 $argument = $container->getDefinition('argument_resolver.service')->getArgument(0);
109 if ($argument instanceof Reference) {
110 $argument = $container->getDefinition($argument);
111 }
112 return $argument->getArgument(0);
113 }
114 if ($container->hasDefinition('debug.' . 'argument_resolver.service')) {
115 $argument = $container->getDefinition('debug.' . 'argument_resolver.service')->getArgument(0);
116 if ($argument instanceof Reference) {
117 $argument = $container->getDefinition($argument);
118 }
119 $argument = $argument->getArgument(0);
120 if ($argument instanceof Reference) {
121 $argument = $container->getDefinition($argument);
122 }
123 return $argument->getArgument(0);
124 }
125 return [];
126 }
127 }
128