‪TYPO3CMS  9.5
PropertyPathsExtractor.php
Go to the documentation of this file.
1 <?php
2 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 
20 
25 {
26 
32  public function ‪__invoke(string $_, $value, array $matches)
33  {
34  $formElementPropertyPaths = $this->‪getPropertyPaths($value, $matches);
35 
36  $result = $this->extractorDto->getResult();
37  $result = array_merge_recursive($result, ['formElements' => $formElementPropertyPaths]);
38  $this->extractorDto->setResult($result);
39  }
40 
46  protected function ‪getPropertyPaths(string $value, array $matches): array
47  {
48  [, $formElementType, $formEditorIndex] = $matches;
49 
50  $paths[$formElementType]['propertyPaths'] = [];
51  $templateNamePath = implode(
52  '.',
53  [
54  'formElementsDefinition',
55  $formElementType,
56  'formEditor',
57  'editors',
58  $formEditorIndex,
59  'templateName',
60  ]
61  );
62  $templateName = ‪ArrayUtility::getValueByPath(
63  $this->extractorDto->getPrototypeConfiguration(),
64  $templateNamePath,
65  '.'
66  );
67 
68  // Special processing of "Inspector-GridColumnViewPortConfigurationEditor" inspector editors.
69  // Expand the property path which contains a "{@viewPortIdentifier}" placeholder
70  // to X property paths which contain all available placeholder replacements.
71  if ($templateName === 'Inspector-GridColumnViewPortConfigurationEditor') {
72  $viewPortsPath = implode(
73  '.',
74  [
75  'formElementsDefinition',
76  $formElementType,
77  'formEditor',
78  'editors',
79  $formEditorIndex,
80  'configurationOptions',
81  'viewPorts',
82  ]
83  );
84  $viewPorts = ‪ArrayUtility::getValueByPath($this->extractorDto->getPrototypeConfiguration(), $viewPortsPath, '.');
85  foreach ($viewPorts as $viewPort) {
86  $viewPortIdentifier = $viewPort['viewPortIdentifier'];
87  $propertyPath = str_replace('{@viewPortIdentifier}', $viewPortIdentifier, $value);
88  $paths[$formElementType]['propertyPaths'][] = $propertyPath;
89  }
90  } else {
91  $paths[$formElementType]['propertyPaths'][] = $value;
92  }
93  return $paths;
94  }
95 }
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\AbstractExtractor
Definition: AbstractExtractor.php:22
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\FormElement\PropertyPathsExtractor\getPropertyPaths
‪array getPropertyPaths(string $value, array $matches)
Definition: PropertyPathsExtractor.php:46
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\FormElement\PropertyPathsExtractor\__invoke
‪__invoke(string $_, $value, array $matches)
Definition: PropertyPathsExtractor.php:32
‪TYPO3\CMS\Core\Utility\ArrayUtility\getValueByPath
‪static mixed getValueByPath(array $array, $path, $delimiter='/')
Definition: ArrayUtility.php:179
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\FormElement
Definition: IsCreatableFormElementExtractor.php:3
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:23
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\FormElement\PropertyPathsExtractor
Definition: PropertyPathsExtractor.php:25