‪TYPO3CMS  ‪main
MigrateSiteSettingsConfigUpdate.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 
25 
32 #[UpgradeWizard('migrateSiteSettings')]
34 {
35  protected const ‪SETTINGS_FILENAME = 'settings.yaml';
36 
38  protected ?‪SiteWriter ‪$siteWriter = null;
39  protected array ‪$sitePathsToMigrate = [];
40 
41  public function ‪__construct()
42  {
43  $this->siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
44  $this->siteWriter = GeneralUtility::makeInstance(SiteWriter::class);
45  $this->sitePathsToMigrate = $this->‪getSitePathsToMigrate();
46  }
47 
48  public function ‪getTitle(): string
49  {
50  return 'Migrate site settings to separate file';
51  }
52 
53  public function ‪getDescription(): string
54  {
55  return
56  'If site settings exist in a config.yaml file, this wizard migrates them to a dedicated settings.yaml file. ' .
57  'Please note that you should remove them from your existing config manually.';
58  }
59 
60  public function ‪executeUpdate(): bool
61  {
62  try {
63  foreach ($this->sitePathsToMigrate as ‪$siteIdentifier => $settings) {
64  $this->siteWriter->writeSettings(‪$siteIdentifier, $settings);
65  }
67  return false;
68  }
69  return true;
70  }
71 
75  public function ‪updateNecessary(): bool
76  {
77  return $this->sitePathsToMigrate !== [];
78  }
79 
80  public function ‪getPrerequisites(): array
81  {
82  return [];
83  }
84 
88  protected function ‪getSitePathsToMigrate(): array
89  {
90  $settingsCollection = [];
91  foreach ($this->siteConfiguration->getAllSiteConfigurationPaths() as ‪$siteIdentifier => $configurationPath) {
92  // Ensure site identifier is a string, even if it only consists of digits
94  // settings.yaml already exists, skip
95  if (file_exists($configurationPath . '/' . self::SETTINGS_FILENAME)) {
96  continue;
97  }
98  // Check if the site has any settings
99  ‪$siteConfiguration = $this->siteConfiguration->‪load(‪$siteIdentifier);
100  if (!isset(‪$siteConfiguration['settings'])) {
101  continue;
102  }
103  $settingsCollection[‪$siteIdentifier] = ‪$siteConfiguration['settings'];
104  }
105  return $settingsCollection;
106  }
107 }
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate
Definition: MigrateSiteSettingsConfigUpdate.php:34
‪TYPO3\CMS\Core\Configuration\Exception\SiteConfigurationWriteException
Definition: SiteConfigurationWriteException.php:27
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\getTitle
‪getTitle()
Definition: MigrateSiteSettingsConfigUpdate.php:48
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\$siteConfiguration
‪SiteConfiguration $siteConfiguration
Definition: MigrateSiteSettingsConfigUpdate.php:37
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\SETTINGS_FILENAME
‪const SETTINGS_FILENAME
Definition: MigrateSiteSettingsConfigUpdate.php:35
‪TYPO3\CMS\Install\Attribute\UpgradeWizard
Definition: UpgradeWizard.php:25
‪TYPO3\CMS\Core\Configuration\SiteConfiguration
Definition: SiteConfiguration.php:47
‪TYPO3\CMS\Core\Configuration\SiteConfiguration\load
‪load(string $siteIdentifier)
Definition: SiteConfiguration.php:234
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\__construct
‪__construct()
Definition: MigrateSiteSettingsConfigUpdate.php:41
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\getSitePathsToMigrate
‪getSitePathsToMigrate()
Definition: MigrateSiteSettingsConfigUpdate.php:88
‪TYPO3\CMS\Install\Updates
Definition: LegacyClassesForIde.php:22
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\getPrerequisites
‪getPrerequisites()
Definition: MigrateSiteSettingsConfigUpdate.php:80
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\$sitePathsToMigrate
‪array $sitePathsToMigrate
Definition: MigrateSiteSettingsConfigUpdate.php:39
‪TYPO3\CMS\Core\Configuration\SiteWriter
Definition: SiteWriter.php:39
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\$siteWriter
‪SiteWriter $siteWriter
Definition: MigrateSiteSettingsConfigUpdate.php:38
‪TYPO3\CMS\Install\Updates\UpgradeWizardInterface
Definition: UpgradeWizardInterface.php:24
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\executeUpdate
‪executeUpdate()
Definition: MigrateSiteSettingsConfigUpdate.php:60
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\getDescription
‪getDescription()
Definition: MigrateSiteSettingsConfigUpdate.php:53
‪TYPO3\CMS\Install\Updates\MigrateSiteSettingsConfigUpdate\updateNecessary
‪updateNecessary()
Definition: MigrateSiteSettingsConfigUpdate.php:75
‪TYPO3\CMS\Webhooks\Message\$siteIdentifier
‪identifier readonly int readonly array readonly string readonly string $siteIdentifier
Definition: PageModificationMessage.php:38
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52