‪TYPO3CMS  ‪main
MultiValuePropertiesExtractor.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 
22 
27 {
31  public function ‪__invoke(string $_, $value, array $matches)
32  {
33  [, $formElementType, $propertyCollectionName, $propertyCollectionIndex, $propertyCollectionEditorIndex] = $matches;
34 
35  if (
36  $value !== 'Inspector-PropertyGridEditor'
37  && $value !== 'Inspector-MultiSelectEditor'
38  && $value !== 'Inspector-CountrySelectEditor'
39  && $value !== 'Inspector-ValidationErrorMessageEditor'
40  ) {
41  return;
42  }
43 
44  $propertyPath = implode(
45  '.',
46  [
47  'formElementsDefinition',
48  $formElementType,
49  'formEditor',
50  'propertyCollections',
51  $propertyCollectionName,
52  $propertyCollectionIndex,
53  'editors',
54  $propertyCollectionEditorIndex,
55  'propertyPath',
56  ]
57  );
58  $propertyValue = ‪ArrayUtility::getValueByPath($this->extractorDto->getPrototypeConfiguration(), $propertyPath, '.');
59 
60  $result = $this->extractorDto->getResult();
61 
62  if (
63  $value === 'Inspector-PropertyGridEditor'
64  || $value === 'Inspector-MultiSelectEditor'
65  ) {
66  $identifierPath = implode(
67  '.',
68  [
69  'formElementsDefinition',
70  $formElementType,
71  'formEditor',
72  'propertyCollections',
73  $propertyCollectionName,
74  $propertyCollectionIndex,
75  'identifier',
76  ]
77  );
78  ‪$identifier = ‪ArrayUtility::getValueByPath($this->extractorDto->getPrototypeConfiguration(), $identifierPath, '.');
79 
80  $result['formElements'][$formElementType]['collections'][$propertyCollectionName][‪$identifier]['multiValueProperties'][] = $propertyValue;
81  if ($value === 'Inspector-PropertyGridEditor') {
82  $result['formElements'][$formElementType]['collections'][$propertyCollectionName][‪$identifier]['multiValueProperties'][] = 'defaultValue';
83  }
84  } else {
85  $result['formElements'][$formElementType]['multiValueProperties'][] = $propertyValue;
86  }
87 
88  $this->extractorDto->setResult($result);
89  }
90 }
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\PropertyCollectionElement\MultiValuePropertiesExtractor
Definition: MultiValuePropertiesExtractor.php:27
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\AbstractExtractor
Definition: AbstractExtractor.php:24
‪TYPO3\CMS\Core\Utility\ArrayUtility\getValueByPath
‪static getValueByPath(array $array, array|string $path, string $delimiter='/')
Definition: ArrayUtility.php:176
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\PropertyCollectionElement
Definition: IsCreatablePropertyCollectionElementExtractor.php:18
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:26
‪TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\PropertyCollectionElement\MultiValuePropertiesExtractor\__invoke
‪__invoke(string $_, $value, array $matches)
Definition: MultiValuePropertiesExtractor.php:31
‪TYPO3\CMS\Webhooks\Message\$identifier
‪identifier readonly string $identifier
Definition: FileAddedMessage.php:37