[!!!][TASK] Remove deprecated code in EXT:core
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Configuration / SiteConfiguration.php
index 87987c1..30943d0 100644 (file)
@@ -73,9 +73,9 @@ class SiteConfiguration
         $sites = [];
         $siteConfiguration = $this->getAllSiteConfigurationFromFiles();
         foreach ($siteConfiguration as $identifier => $configuration) {
-            $rootPageId = (int)($configuration['site']['rootPageId'] ?? 0);
+            $rootPageId = (int)($configuration['rootPageId'] ?? 0);
             if ($rootPageId > 0) {
-                $sites[$identifier] = GeneralUtility::makeInstance(Site::class, $identifier, $rootPageId, $configuration['site']);
+                $sites[$identifier] = GeneralUtility::makeInstance(Site::class, $identifier, $rootPageId, $configuration);
             }
         }
         return $sites;
@@ -91,6 +91,8 @@ class SiteConfiguration
     {
         // Check if the data is already cached
         if ($siteConfiguration = $this->getCache()->get($this->cacheIdentifier)) {
+            // Due to the nature of PhpFrontend, the `<?php` and `#` wraps have to be removed
+            $siteConfiguration = preg_replace('/^<\?php\s*|\s*#$/', '', $siteConfiguration);
             $siteConfiguration = json_decode($siteConfiguration, true);
         }
 
@@ -116,6 +118,23 @@ class SiteConfiguration
     }
 
     /**
+     * Load plain configuration
+     * This method should only be used in case the original configuration as it exists in the file should be loaded,
+     * for example for writing / editing configuration.
+     *
+     * All read related actions should be performed on the site entity.
+     *
+     * @param string $siteIdentifier
+     * @return array
+     */
+    public function load(string $siteIdentifier): array
+    {
+        $fileName = $this->configPath . '/' . $siteIdentifier . '/' . $this->configFileName;
+        $loader = GeneralUtility::makeInstance(YamlFileLoader::class);
+        return $loader->load(GeneralUtility::fixWindowsFilePath($fileName), YamlFileLoader::PROCESS_IMPORTS);
+    }
+
+    /**
      * Add or update a site configuration
      *
      * @param string $siteIdentifier
@@ -131,6 +150,7 @@ class SiteConfiguration
         $yamlFileContents = Yaml::dump($configuration, 99, 2);
         GeneralUtility::writeFile($fileName, $yamlFileContents);
         $this->getCache()->remove($this->cacheIdentifier);
+        $this->getCache()->remove('pseudo-sites');
     }
 
     /**
@@ -168,6 +188,7 @@ class SiteConfiguration
         }
         @unlink($fileName);
         $this->getCache()->remove($this->cacheIdentifier);
+        $this->getCache()->remove('pseudo-sites');
     }
 
     /**