getRawConfigurationForSiteWithRootPageId($rootPageId); $result['databaseRow']['uid'] = $rowData['rootPageId']; $result['databaseRow']['identifier'] = $result['customData']['siteIdentifier']; } elseif (in_array($tableName, ['site_errorhandling', 'site_language', 'site_route', 'site_base_variant'], true)) { $unprocessedRootPageId = $result['inlineTopMostParentUid'] ?? $result['inlineParentUid']; $processedRootPageId = $this->envPlaceholderProcessor->canProcess($unprocessedRootPageId) ? (int)$this->envPlaceholderProcessor->process($unprocessedRootPageId) : (int)$unprocessedRootPageId; try { $rowData = $this->getRawConfigurationForSiteWithRootPageId($processedRootPageId); $parentFieldName = $result['inlineParentFieldName']; if (!isset($rowData[$parentFieldName])) { throw new \RuntimeException('Field "' . $parentFieldName . '" not found', 1520886092); } $rowData = $rowData[$parentFieldName][$result['vanillaUid']]; $result['databaseRow']['uid'] = $result['vanillaUid']; } catch (SiteNotFoundException $e) { $rowData = []; } } else { throw new \RuntimeException('Other tables not implemented', 1520886234); } foreach ($rowData as $fieldName => $value) { // Flat values only - databaseRow has no "tree" if (!is_array($value)) { $result['databaseRow'][$fieldName] = $value; } } // All "records" are always on pid 0 $result['databaseRow']['pid'] = 0; return $result; } protected function getRawConfigurationForSiteWithRootPageId(int $rootPageId): array { $site = $this->siteFinder->getSiteByRootPageId($rootPageId); // load config as it is stored on disk (without replacements) $siteTca = $this->siteTcaConfiguration->getTca(); $configuration = GeneralUtility::makeInstance(SiteConfiguration::class)->load($site->getIdentifier()); foreach ($configuration as $fieldName => $fieldValue) { if (is_array($fieldValue) && ($siteTca['site']['columns'][$fieldName]['config']['type'] ?? '') === 'select' && ($siteTca['site']['columns'][$fieldName]['config']['renderType'] ?? '') === 'selectMultipleSideBySide') { $configuration[$fieldName] = implode(',', $fieldValue); } } return $configuration; } }