diff --git a/Classes/Compatibility/Typo3CompatibilityBridge.php b/Classes/Compatibility/Typo3CompatibilityBridge.php new file mode 100644 index 00000000..5287ed6b --- /dev/null +++ b/Classes/Compatibility/Typo3CompatibilityBridge.php @@ -0,0 +1,33 @@ +getMajorVersion() > 11) { + return (new ConfigurationManager())->getSystemConfigurationFileLocation(); + } + + return (new ConfigurationManager())->getLocalConfigurationFileLocation(); + } +} diff --git a/Classes/Console/Command/Configuration/ConfigurationRemoveCommand.php b/Classes/Console/Command/Configuration/ConfigurationRemoveCommand.php index 283c001e..4b36e25b 100644 --- a/Classes/Console/Command/Configuration/ConfigurationRemoveCommand.php +++ b/Classes/Console/Command/Configuration/ConfigurationRemoveCommand.php @@ -43,7 +43,7 @@ protected function configure() Removes a system configuration option by path. For this command to succeed, the configuration option(s) must be in -LocalConfiguration.php and not be overridden elsewhere. +system configuration file and not be overridden elsewhere. Example: diff --git a/Classes/Console/Command/Configuration/ConfigurationShowCommand.php b/Classes/Console/Command/Configuration/ConfigurationShowCommand.php index 2c65c108..24307fec 100644 --- a/Classes/Console/Command/Configuration/ConfigurationShowCommand.php +++ b/Classes/Console/Command/Configuration/ConfigurationShowCommand.php @@ -29,7 +29,7 @@ protected function configure() $this->setHelp( <<<'EOH' Shows system configuration value by path. -If the currently active configuration differs from the value in LocalConfiguration.php +If the currently active configuration differs from the value in system configuration file the difference between these values is shown. Example: diff --git a/Classes/Console/Command/Configuration/ConfigurationShowLocalCommand.php b/Classes/Console/Command/Configuration/ConfigurationShowLocalCommand.php index 0a7dab8e..a7da65ba 100644 --- a/Classes/Console/Command/Configuration/ConfigurationShowLocalCommand.php +++ b/Classes/Console/Command/Configuration/ConfigurationShowLocalCommand.php @@ -48,7 +48,7 @@ protected function configure() $this->setHelp( <<<'EOH' Shows local configuration option value by path. -Shows the value which is stored in LocalConfiguration.php. +Shows the value which is stored in system configuration file. Note that this value could be overridden. Use typo3 configuration:show to see if this is the case. Example: diff --git a/Classes/Console/Command/Install/InstallSetupCommand.php b/Classes/Console/Command/Install/InstallSetupCommand.php index 29e835cc..41907e0b 100644 --- a/Classes/Console/Command/Install/InstallSetupCommand.php +++ b/Classes/Console/Command/Install/InstallSetupCommand.php @@ -57,13 +57,13 @@ protected function configure() 'force', 'f', InputOption::VALUE_NONE, - 'Force installation of TYPO3, even if `LocalConfiguration.php` file already exists.' + 'Force installation of TYPO3, even if system configuration file already exists.' ), new InputOption( 'skip-integrity-check', null, InputOption::VALUE_NONE, - 'Skip the checking for clean state before executing setup. This allows a pre-defined `LocalConfiguration.php` to be present. Handle with care. It might lead to unexpected or broken installation results.' + 'Skip the checking for clean state before executing setup. This allows a pre-defined system configuration file to be present. Handle with care. It might lead to unexpected or broken installation results.' ), new InputOption( 'skip-extension-setup', diff --git a/Classes/Console/Install/Action/PrepareInstallAction.php b/Classes/Console/Install/Action/PrepareInstallAction.php index 7bef4209..10c551fe 100644 --- a/Classes/Console/Install/Action/PrepareInstallAction.php +++ b/Classes/Console/Install/Action/PrepareInstallAction.php @@ -16,6 +16,7 @@ use Helhum\Typo3Console\Mvc\Cli\CommandDispatcher; use Helhum\Typo3Console\Mvc\Cli\ConsoleOutput; +use Helhum\Typo3Console\Typo3CompatibilityBridge; use TYPO3\CMS\Core\Core\Environment; class PrepareInstallAction implements InstallActionInterface @@ -54,7 +55,7 @@ public function execute(array $actionDefinition, array $options = []): bool } /** - * Handles the case when LocalConfiguration.php file already exists + * Handles the case when system configuration file already exists * * @param array $options * @throws InstallationFailedException @@ -69,15 +70,15 @@ private function ensureInstallationIsPossible(array $options) $isInteractive = $options['interactive'] ?? $this->output->getSymfonyConsoleInput()->isInteractive(); $forceInstall = $options['forceInstall'] ?? false; - $localConfFile = Environment::getLegacyConfigPath() . '/LocalConfiguration.php'; + $localConfFile = Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); if (!$forceInstall && file_exists($localConfFile)) { $this->output->outputLine(); $this->output->outputLine('TYPO3 seems to be already set up!'); $proceed = $isInteractive; if ($isInteractive) { $this->output->outputLine(); - $this->output->outputLine('If you continue, your typo3conf/LocalConfiguration.php'); - $this->output->outputLine('file will be deleted!'); + $this->output->outputLine('If you continue, your system configuration file'); + $this->output->outputLine('will be deleted!'); $this->output->outputLine(); $proceed = $this->output->askConfirmation('Do you really want to proceed? (no) ', false); } diff --git a/Classes/Console/Install/Upgrade/SilentConfigurationUpgrade.php b/Classes/Console/Install/Upgrade/SilentConfigurationUpgrade.php index 2b0e5306..db9d0e50 100644 --- a/Classes/Console/Install/Upgrade/SilentConfigurationUpgrade.php +++ b/Classes/Console/Install/Upgrade/SilentConfigurationUpgrade.php @@ -14,6 +14,7 @@ * */ +use Helhum\Typo3Console\Typo3CompatibilityBridge; use Symfony\Component\Console\Exception\RuntimeException; use TYPO3\CMS\Core\Configuration\ConfigurationManager; use TYPO3\CMS\Core\Configuration\ExtensionConfiguration; @@ -22,7 +23,7 @@ use TYPO3\CMS\Install\Service\SilentConfigurationUpgradeService; /** - * Used to migrate deprecated LocalConfiguration.php values to new values + * Used to migrate deprecated system configuration values to new values * It is a wrapper around the TYPO3 class to properly handle redirect exceptions */ class SilentConfigurationUpgrade @@ -45,7 +46,7 @@ public function __construct(ConfigurationManager $configurationManager = null) */ public function executeSilentConfigurationUpgradesIfNeeded() { - if (!file_exists($this->configurationManager->getLocalConfigurationFileLocation())) { + if (!file_exists(Typo3CompatibilityBridge::getSystemConfigurationFileLocation())) { return; } diff --git a/Classes/Console/Mvc/Cli/Symfony/Application.php b/Classes/Console/Mvc/Cli/Symfony/Application.php index 0206d6ff..b04305b8 100644 --- a/Classes/Console/Mvc/Cli/Symfony/Application.php +++ b/Classes/Console/Mvc/Cli/Symfony/Application.php @@ -148,7 +148,7 @@ public function renderThrowable(\Throwable $exception, OutputInterface $output): sprintf( 'Command "%s" cannot be run, because it needs a fully set up TYPO3 system.' . PHP_EOL - . 'Your system currently lacks an essential configuration file (LocalConfiguration.php).', + . 'Your system currently lacks a system configuration file.', $exception->getCommandName() ), 'Try setting up your system using the "install:setup" command.', diff --git a/Classes/Console/Service/Configuration/ConfigurationService.php b/Classes/Console/Service/Configuration/ConfigurationService.php index 855853d6..ade17ea1 100644 --- a/Classes/Console/Service/Configuration/ConfigurationService.php +++ b/Classes/Console/Service/Configuration/ConfigurationService.php @@ -19,15 +19,12 @@ use TYPO3\CMS\Core\Utility\ArrayUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; -/** - * Class ConfigurationService - */ class ConfigurationService implements SingletonInterface { const EXCEPTION_CODE_ARRAY_KEY_NOT_FOUND = 1341397869; /** - * @var \TYPO3\CMS\Core\Configuration\ConfigurationManager + * @var ConfigurationManager */ protected $configurationManager; @@ -155,7 +152,7 @@ public function removeLocal($path) } /** - * Sets a value in LocalConfiguration.php + * Sets a value in system configuration file * * But only if types are compatible and local config is active * @@ -176,7 +173,7 @@ public function setLocal($path, $value, $targetType = '') } /** - * Returns true if the value is stored in the LocalConfiguration.php file and + * Returns true if the value is stored in the system configuration file and * is NOT overridden later (e.g. in AdditionalConfiguration.php) * * @param string $path diff --git a/Classes/Console/Service/Configuration/ConsoleRenderer/ConsoleRenderer.php b/Classes/Console/Service/Configuration/ConsoleRenderer/ConsoleRenderer.php index bb2b21d1..864b77cd 100644 --- a/Classes/Console/Service/Configuration/ConsoleRenderer/ConsoleRenderer.php +++ b/Classes/Console/Service/Configuration/ConsoleRenderer/ConsoleRenderer.php @@ -38,8 +38,8 @@ public function renderDiff($localConfig, $activeConfig) { $diff = new Diff(new Paragraph(), new DiffConsoleRenderer()); - $result = '-- LocalConfiguration.php' . PHP_EOL; - $result .= '++ AdditionalConfiguration.php' . PHP_EOL; + $result = '-- system configuration' . PHP_EOL; + $result .= '++ overridden configuration' . PHP_EOL; $result .= $diff->render($this->getConfigurationAsString($localConfig), $this->getConfigurationAsString($activeConfig)); diff --git a/Documentation/CommandReference/ConfigurationRemove.rst b/Documentation/CommandReference/ConfigurationRemove.rst index 8aee6a3c..838281ae 100644 --- a/Documentation/CommandReference/ConfigurationRemove.rst +++ b/Documentation/CommandReference/ConfigurationRemove.rst @@ -16,7 +16,7 @@ configuration:remove Removes a system configuration option by path. For this command to succeed, the configuration option(s) must be in -LocalConfiguration.php and not be overridden elsewhere. +system configuration file and not be overridden elsewhere. **Example:** diff --git a/Documentation/CommandReference/ConfigurationShow.rst b/Documentation/CommandReference/ConfigurationShow.rst index 8fab0168..b22cfbf4 100644 --- a/Documentation/CommandReference/ConfigurationShow.rst +++ b/Documentation/CommandReference/ConfigurationShow.rst @@ -14,7 +14,7 @@ configuration:show **Show configuration value** Shows system configuration value by path. -If the currently active configuration differs from the value in LocalConfiguration.php +If the currently active configuration differs from the value in system configuration file the difference between these values is shown. **Example:** diff --git a/Documentation/CommandReference/ConfigurationShowlocal.rst b/Documentation/CommandReference/ConfigurationShowlocal.rst index 7dd831ad..2a20db2c 100644 --- a/Documentation/CommandReference/ConfigurationShowlocal.rst +++ b/Documentation/CommandReference/ConfigurationShowlocal.rst @@ -14,7 +14,7 @@ configuration:showlocal **Show local configuration value** Shows local configuration option value by path. -Shows the value which is stored in LocalConfiguration.php. +Shows the value which is stored in system configuration file. Note that this value could be overridden. Use `typo3 configuration:show ` to see if this is the case. **Example:** diff --git a/Documentation/CommandReference/InstallSetup.rst b/Documentation/CommandReference/InstallSetup.rst index 896d0846..8c830eb8 100644 --- a/Documentation/CommandReference/InstallSetup.rst +++ b/Documentation/CommandReference/InstallSetup.rst @@ -40,7 +40,7 @@ Options ======= `--force|-f` - Force installation of TYPO3, even if `LocalConfiguration.php` file already exists. + Force installation of TYPO3, even if system configuration file already exists. - Accept value: no - Is value required: no @@ -48,7 +48,7 @@ Options - Default: false `--skip-integrity-check` - Skip the checking for clean state before executing setup. This allows a pre-defined `LocalConfiguration.php` to be present. Handle with care. It might lead to unexpected or broken installation results. + Skip the checking for clean state before executing setup. This allows a pre-defined system configuration file to be present. Handle with care. It might lead to unexpected or broken installation results. - Accept value: no - Is value required: no diff --git a/Tests/Console/Functional/Command/ConfigurationCommandControllerTest.php b/Tests/Console/Functional/Command/ConfigurationCommandControllerTest.php index 41bf7082..5f313373 100644 --- a/Tests/Console/Functional/Command/ConfigurationCommandControllerTest.php +++ b/Tests/Console/Functional/Command/ConfigurationCommandControllerTest.php @@ -15,6 +15,7 @@ */ use Helhum\Typo3Console\Mvc\Cli\FailedSubProcessCommandException; +use Helhum\Typo3Console\Typo3CompatibilityBridge; class ConfigurationCommandControllerTest extends AbstractCommandTest { @@ -24,7 +25,7 @@ class ConfigurationCommandControllerTest extends AbstractCommandTest public function configurationCanBeShown() { $output = $this->executeConsoleCommand('configuration:show', ['BE/installToolPassword']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertStringContainsString($config['BE']['installToolPassword'], $output); } @@ -33,9 +34,9 @@ public function configurationCanBeShown() */ public function configurationShowsDiff() { - $output = $this->executeConsoleCommand('configuration:show', ['SC_OPTIONS/"ext/install"']); - $this->assertStringContainsString('update', $output); - $this->assertStringContainsString('++ AdditionalConfiguration.php', $output); + $output = $this->executeConsoleCommand('configuration:show', ['SC_OPTIONS/"t3lib/class.t3lib_tcemain.php"']); + $this->assertStringContainsString('processDatamapClass', $output); + $this->assertStringContainsString('++ overridden configuration', $output); } /** @@ -44,7 +45,7 @@ public function configurationShowsDiff() public function localConfigurationCanBeShown() { $output = $this->executeConsoleCommand('configuration:showlocal', ['BE/installToolPassword']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertStringContainsString($config['BE']['installToolPassword'], $output); } @@ -54,7 +55,7 @@ public function localConfigurationCanBeShown() public function localConfigurationCanBeShownAsJson() { $output = $this->executeConsoleCommand('configuration:showlocal', ['BE/installToolPassword', '--json']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame($config['BE']['installToolPassword'], \json_decode($output)); } @@ -64,7 +65,7 @@ public function localConfigurationCanBeShownAsJson() public function activeConfigurationCanBeShown() { $output = $this->executeConsoleCommand('configuration:showactive', ['BE/installToolPassword']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertStringContainsString($config['BE']['installToolPassword'], $output); } @@ -74,7 +75,7 @@ public function activeConfigurationCanBeShown() public function activeConfigurationCanBeShownAsJson() { $output = $this->executeConsoleCommand('configuration:showactive', ['BE/installToolPassword', '--json']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame($config['BE']['installToolPassword'], \json_decode($output)); } @@ -83,13 +84,13 @@ public function activeConfigurationCanBeShownAsJson() */ public function configurationCanBeSet() { - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $oldPassword = $config['BE']['installToolPassword']; $this->executeConsoleCommand('configuration:set', ['BE/installToolPassword', 'foobar']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame('foobar', $config['BE']['installToolPassword']); $this->executeConsoleCommand('configuration:set', ['BE/installToolPassword', $oldPassword]); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame($oldPassword, $config['BE']['installToolPassword']); } @@ -98,13 +99,13 @@ public function configurationCanBeSet() */ public function configurationCanBeRemovedAndSetAgainWithoutKeyPresent() { - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $oldPassword = $config['BE']['installToolPassword']; $this->executeConsoleCommand('configuration:remove', ['BE/installToolPassword', '--force']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertArrayNotHasKey('installToolPassword', $config['BE']); $this->executeConsoleCommand('configuration:set', ['BE/installToolPassword', $oldPassword]); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame($oldPassword, $config['BE']['installToolPassword']); } @@ -114,7 +115,7 @@ public function configurationCanBeRemovedAndSetAgainWithoutKeyPresent() public function numericalIndexedArraysCanBeSet() { $this->executeConsoleCommand('configuration:set', ['EXTCONF/lang/availableLanguages/0', 'fr_FR']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame('fr_FR', $config['EXTCONF']['lang']['availableLanguages'][0]); } @@ -124,7 +125,7 @@ public function numericalIndexedArraysCanBeSet() public function associativeArraysCanBeSet() { $this->executeConsoleCommand('configuration:set', ['EXTCONF/foo/bar', 'baz']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame('baz', $config['EXTCONF']['foo']['bar']); } @@ -134,7 +135,7 @@ public function associativeArraysCanBeSet() public function arraysCanBeSetAsJson() { $this->executeConsoleCommand('configuration:set', ['EXTCONF/foo/baz', '["baz"]', '--json']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertSame(['baz'], $config['EXTCONF']['foo']['baz']); } @@ -144,7 +145,7 @@ public function arraysCanBeSetAsJson() public function booleanCanBeSetAsJson() { $this->executeConsoleCommand('configuration:set', ['EXTCONF/foo/bool', 'true', '--json']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertTrue($config['EXTCONF']['foo']['bool']); } @@ -154,7 +155,7 @@ public function booleanCanBeSetAsJson() public function nullCanBeSetAsJson() { $this->executeConsoleCommand('configuration:set', ['EXTCONF/foo/null', 'null', '--json']); - $config = require getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'; + $config = require Typo3CompatibilityBridge::getSystemConfigurationFileLocation(); $this->assertNull($config['EXTCONF']['foo']['null']); } diff --git a/Tests/Console/Functional/Command/Install/InstallCommandControllerTest.php b/Tests/Console/Functional/Command/Install/InstallCommandControllerTest.php index e3488e15..bcdaa8e7 100644 --- a/Tests/Console/Functional/Command/Install/InstallCommandControllerTest.php +++ b/Tests/Console/Functional/Command/Install/InstallCommandControllerTest.php @@ -15,6 +15,7 @@ */ use Helhum\Typo3Console\Tests\Functional\Command\AbstractCommandTest; +use Helhum\Typo3Console\Typo3CompatibilityBridge; class InstallCommandControllerTest extends AbstractCommandTest { @@ -37,7 +38,7 @@ public function setupCommandWorksOnSqLiteWithoutErrors() $this->markTestSkipped('Cannot execute SQLite test, when SQLite module is disabled'); } @unlink(getenv('TYPO3_PATH_ROOT') . '/typo3conf/PackageStates.php'); - @unlink(getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'); + @unlink(Typo3CompatibilityBridge::getSystemConfigurationFileLocation()); $output = $this->executeConsoleCommand( 'install:setup', [ @@ -61,7 +62,7 @@ public function setupCommandDoesNotSetupExtensionsIfRequested() $this->executeMysqlQuery('DROP DATABASE IF EXISTS ' . getenv('TYPO3_INSTALL_DB_DBNAME'), false); } @unlink(getenv('TYPO3_PATH_ROOT') . '/typo3conf/PackageStates.php'); - @unlink(getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'); + @unlink(Typo3CompatibilityBridge::getSystemConfigurationFileLocation()); $output = $this->executeConsoleCommand( 'install:setup', [ @@ -82,7 +83,7 @@ public function setupCommandWorksWithoutErrors() $this->executeMysqlQuery('DROP DATABASE IF EXISTS ' . getenv('TYPO3_INSTALL_DB_DBNAME'), false); } @unlink(getenv('TYPO3_PATH_ROOT') . '/typo3conf/PackageStates.php'); - @unlink(getenv('TYPO3_PATH_ROOT') . '/typo3conf/LocalConfiguration.php'); + @unlink(Typo3CompatibilityBridge::getSystemConfigurationFileLocation()); $output = $this->executeConsoleCommand( 'install:setup', [