[TASK] Categorize sys_file table by default 85/23485/7
authorSteffen Ritter <info@rs-websystems.de>
Fri, 30 Aug 2013 09:16:41 +0000 (11:16 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Fri, 11 Oct 2013 10:15:53 +0000 (12:15 +0200)
To be able to migrate from DAM, sys_files need to be
categorizable. The core is able to do so, but would
need to be configured manually. To ease migration
this is now activated by default.

If an upgrading installation already modified the
list of categorized tables in its localconf, the
step installer takes care of adding sys_file to
that list silently.

Resolves: #51554
Releases: 6.2
Change-Id: I5a12ddb2ab1da1e7a24b9bfe53af9b0ae33a04a1
Reviewed-on: https://review.typo3.org/23485
Reviewed-by: Frans Saris
Tested-by: Frans Saris
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/core/Configuration/DefaultConfiguration.php
typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php

index 7a79c8e..4a62938 100644 (file)
@@ -188,7 +188,7 @@ return array(
                                ),
                        ),
                ),
-               'defaultCategorizedTables' => 'pages,tt_content', // List of comma separated tables that are categorizable by default.
+               'defaultCategorizedTables' => 'pages,tt_content,sys_file', // List of comma separated tables that are categorizable by default.
                'displayErrors' => -1,          // <p>Integer (-1, 0, 1, 2). Configures whether PHP errors should be displayed.</p><dl><dt>0</dt><dd>Do not display any PHP error messages. Overrides the value of "exceptionalErrors" and sets it to 0 (= no errors are turned into exceptions), the configured "productionExceptionHandler" is used as exception handler</dd><dt>1</dt><dd>Display error messages with the registered errorhandler. The configured "debugExceptionHandler" is used as exception handler</dd><dt>2</dt><dd>Display errors only if client matches <a href="#SYS-devIPmask">[SYS][devIPmask]</a>. If devIPmask matches the users IP address  the configured "debugExceptionHandler" is used  for exceptions, if not "productionExceptionHandler" will be used</dd><dt>-1</dt><dd>Default setting. With this option, you can override the PHP setting "display_errors". If devIPmask matches the users IP address  the configured "debugExceptionHandler" is used  for exceptions, if not "productionExceptionHandler" will be used.</dd></dl>
                'productionExceptionHandler' => 'TYPO3\\CMS\\Core\\Error\\ProductionExceptionHandler',          // String: Classname to handle exceptions that might happen in the TYPO3-code. Leave empty to disable exception handling. Default: "TYPO3\\CMS\\Core\\Error\\ProductionExceptionHandler". This exception handler displays a nice error message when something went wrong. The error message is logged to the configured logs. Note: The configured "productionExceptionHandler" is used if displayErrors is set to "0" or to "-1" and devIPmask doesn't match the users IP.
                'debugExceptionHandler' => 'TYPO3\\CMS\\Core\\Error\\DebugExceptionHandler',            // String: Classname to handle exceptions that might happen in the TYPO3-code. Leave empty to disable exception handling. Default: "TYPO3\\CMS\\Core\\Error\\DebugExceptionHandler". This exception handler displays the complete stack trace of any encountered exception. The error message and the stack trace  is logged to the configured logs. Note: The configured "debugExceptionHandler" is used if displayErrors is set to "1" and if displayErrors is "-1"  or "2" and the devIPmask matches the users IP.
index 0ae27ca..2bcfe10 100644 (file)
@@ -123,6 +123,7 @@ class SilentConfigurationUpgradeService {
                $this->disableImageMagickAndGdlibIfImageProcessingIsDisabled();
                $this->disableImageMagickDetailSettingsIfImageMagickIsDisabled();
                $this->setImageMagickDetailSettings();
+               $this->addFileTableToDefaultCategorizedTablesIfAlreadyCustomized();
                $this->removeObsoleteLocalConfigurationSettings();
        }
 
@@ -404,6 +405,32 @@ class SilentConfigurationUpgradeService {
                }
        }
 
+       /**
+        * Make sure file table is categorized as of TYPO3 6.2. To enable DAM Migration
+        * sys_file table is included in DefaultConfiguration.
+        * If the setting already has been modified but does not contain sys_file: add it
+        *
+        * @return void
+        */
+       protected function addFileTableToDefaultCategorizedTablesIfAlreadyCustomized() {
+               /** @var \TYPO3\CMS\Core\Configuration\ConfigurationManager $configurationManager */
+               $configurationManager = $this->objectManager->get('TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager');
+
+               $default = $configurationManager->getDefaultConfigurationValueByPath('SYS/defaultCategorizedTables');
+               try {
+                       $actual = $configurationManager->getLocalConfigurationValueByPath('SYS/defaultCategorizedTables');
+               } catch(\RuntimeException $e) {
+                       $actual = '';
+               }
+
+               $tables =  GeneralUtility::trimExplode(',', $actual);
+               if ($actual !== '' && $actual !== $default && !in_array('sys_file', $tables)) {
+                       $tables[] = 'sys_file';
+                       $configurationManager->setLocalConfigurationValueByPath('SYS/defaultCategorizedTables', implode(',', $tables));
+                       $this->throwRedirectException();
+               }
+       }
+
        /**
         * Throw exception after configuration change to trigger a redirect.
         *