40 $configurationArray = $this->getConfigurationArrayFromExtensionKey($extensionKey);
41 return $this->convertHierarchicArrayToObject($configurationArray);
50 protected function getConfigurationArrayFromExtensionKey($extensionKey) {
52 $configurationUtility = $this->objectManager->get(
'TYPO3\\CMS\\Extensionmanager\\Utility\\ConfigurationUtility');
53 $defaultConfiguration = $configurationUtility->getDefaultConfigurationFromExtConfTemplateAsValuedArray($extensionKey);
55 $resultArray = array();
56 if (count($defaultConfiguration) > 0) {
59 $hierarchicConfiguration = array();
60 foreach ($configuration as $configurationOption) {
63 $hierarchicConfiguration = $originalConfiguration;
67 $hierarchicConfiguration = array_reverse($hierarchicConfiguration);
70 foreach ($hierarchicConfiguration as &$catConfigurationArray) {
71 foreach ($catConfigurationArray as &$subcatConfigurationArray) {
72 uasort($subcatConfigurationArray,
function ($a, $b) {
73 return strnatcmp($a[
'subcat'], $b[
'subcat']);
76 unset($subcatConfigurationArray);
78 unset($tempConfiguration);
81 $resultArray = $hierarchicConfiguration;
95 $hierarchicConfiguration = array();
101 if ($this->
translate($configurationOption[
'label'], $extensionKey)) {
102 $configurationOption[
'label'] = $this->
translate($configurationOption[
'label'], $extensionKey);
105 $configurationOption[
'subcat_name'] = $configurationOption[
'subcat_name'] ?:
'__default';
106 $hierarchicConfiguration[$configurationOption[
'cat']][$configurationOption[
'subcat_name']][$configurationOption[
'name']] = $configurationOption;
107 return $hierarchicConfiguration;
118 preg_match(
'/options\[(.*)\]/is', $configurationOption[
'type'], $typeMatches);
120 foreach ($optionItems as $optionItem) {
122 if (count($optionPair) === 2) {
123 $configurationOption[
'generic'][$optionPair[0]] = $optionPair[1];
125 $configurationOption[
'generic'][$optionPair[0]] = $optionPair[0];
128 $configurationOption[
'type'] =
'options';
129 return $configurationOption;
140 preg_match(
'/user\\[(.*)\\]/is', $configurationOption[
'type'], $matches);
141 $configurationOption[
'generic'] = $matches[1];
142 $configurationOption[
'type'] =
'user';
143 return $configurationOption;
154 $metaInformation = $configuration[
'__meta__'] ?: array();
155 unset($configuration[
'__meta__']);
156 return $metaInformation;
168 $currentExtensionConfig = unserialize(
169 $this->objectManager->get(
'TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager')
170 ->getConfigurationValueByPath(
'EXT/extConf/' . $extensionKey)
172 if (!is_array($currentExtensionConfig)) {
173 $currentExtensionConfig = array();
175 }
catch (\RuntimeException $e) {
176 $currentExtensionConfig = array();
179 $valuedCurrentExtensionConfig = array();
180 foreach ($flatExtensionConfig as $key => $value) {
181 $valuedCurrentExtensionConfig[$key][
'value'] = $value;
184 return $defaultConfiguration;
194 protected function convertHierarchicArrayToObject(array $configuration) {
195 $configurationObjectStorage = new \SplObjectStorage();
196 foreach ($configuration as $category => $subcategory) {
198 $configurationCategoryObject = $this->objectManager->get(
'TYPO3\\CMS\\Extensionmanager\\Domain\\Model\\ConfigurationCategory');
199 $configurationCategoryObject->setName($category);
200 if ($subcategory[
'highlightText']) {
201 $configurationCategoryObject->setHighlightText($subcategory[
'highlightText']);
202 unset($subcategory[
'highlightText']);
204 foreach ($subcategory as $subcatName => $configurationItems) {
206 $configurationSubcategoryObject = $this->objectManager->get(
'TYPO3\\CMS\\Extensionmanager\\Domain\\Model\\ConfigurationSubcategory');
207 $configurationSubcategoryObject->setName($subcatName);
208 foreach ($configurationItems as $configurationItem) {
213 if (array_key_exists(
'subcat_label', $configurationItem)) {
214 $configurationSubcategoryObject->setLabel($configurationItem[
'subcat_label']);
218 $configurationObject = $this->objectManager->get(
'TYPO3\\CMS\\Extensionmanager\\Domain\\Model\\ConfigurationItem');
219 if (isset($configurationItem[
'generic'])) {
220 $configurationObject->setGeneric($configurationItem[
'generic']);
222 if (isset($configurationItem[
'cat'])) {
223 $configurationObject->setCategory($configurationItem[
'cat']);
225 if (isset($configurationItem[
'subcat_name'])) {
226 $configurationObject->setSubCategory($configurationItem[
'subcat_name']);
228 if (isset($configurationItem[
'labels']) && isset($configurationItem[
'labels'][0])) {
229 $configurationObject->setLabelHeadline($configurationItem[
'labels'][0]);
231 if (isset($configurationItem[
'labels']) && isset($configurationItem[
'labels'][1])) {
232 $configurationObject->setLabelText($configurationItem[
'labels'][1]);
234 if (isset($configurationItem[
'type'])) {
235 $configurationObject->setType($configurationItem[
'type']);
237 if (isset($configurationItem[
'name'])) {
238 $configurationObject->setName($configurationItem[
'name']);
240 if (isset($configurationItem[
'value'])) {
241 $configurationObject->setValue($configurationItem[
'value']);
243 if (isset($configurationItem[
'highlight'])) {
244 $configurationObject->setHighlight($configurationItem[
'highlight']);
246 $configurationSubcategoryObject->addItem($configurationObject);
248 $configurationCategoryObject->addSubcategory($configurationSubcategoryObject);
250 $configurationObjectStorage->attach($configurationCategoryObject);
252 return $configurationObjectStorage;
findByExtensionKey($extensionKey)
static mergeRecursiveWithOverrule(array &$original, array $overrule, $addKeys=TRUE, $includeEmptyValues=TRUE, $enableUnsetFeature=TRUE)
extractInformationForConfigFieldsOfTypeUser(array $configurationOption)
translate($key, $extensionName)
extractInformationForConfigFieldsOfTypeOptions(array $configurationOption)
static isFirstPartOfStr($str, $partStr)
mergeWithExistingConfiguration(array $defaultConfiguration, $extensionKey)
static flatten(array $array, $prefix='')
static trimExplode($delim, $string, $removeEmptyValues=FALSE, $limit=0)
buildConfigurationArray($configurationOption, $extensionKey)
addMetaInformation(&$configuration)
static translate($key, $extensionName, $arguments=NULL)