[!!!][TASK] Remove legacy pages_language_overlay functionality 96/59296/8
authorBenni Mack <benni@typo3.org>
Tue, 25 Dec 2018 19:09:24 +0000 (20:09 +0100)
committerGeorg Ringer <georg.ringer@gmail.com>
Fri, 4 Jan 2019 19:04:59 +0000 (20:04 +0100)
This patch removes any occurrences of "pages_language_overlay" in use
and enables the feature "unifiedPageTranslationHandling", which
removes any SQL CREATE/ALTER statements related to "pages_language_overlay".

TCA for table "pages_language_overlay" is kept for the time being to have
"MigratePagesLanguageOverlayUpdate" still working.

Resolves: #87293
Releases: master
Change-Id: I94514f30696dcbc2ad3ae8900a6a25b41d2a7bd9
Reviewed-on: https://review.typo3.org/59296
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
13 files changed:
typo3/sysext/core/Classes/Configuration/Features.php
typo3/sysext/core/Classes/Database/Schema/SchemaMigrator.php
typo3/sysext/core/Classes/Migrations/TcaMigration.php
typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml
typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
typo3/sysext/core/ext_tables.sql
typo3/sysext/frontend/Configuration/TCA/pages_language_overlay.php
typo3/sysext/frontend/Resources/Private/Language/locallang_tca.xlf
typo3/sysext/frontend/ext_tables.sql
typo3/sysext/impexp/Configuration/TCA/Overrides/pages_language_overlay.php [deleted file]
typo3/sysext/impexp/ext_tables.sql
typo3/sysext/install/Classes/Updates/MigratePagesLanguageOverlayUpdate.php
typo3/sysext/t3editor/Resources/Public/JavaScript/Mode/typoscript/typoscript.js

index 213602c..2933bfb 100644 (file)
@@ -64,6 +64,7 @@ class Features
     protected $alwaysActiveFeatures = [
         // Enabled in v10.0 at any time, feature switch will be completely ignored in TYPO3 v11.
         'simplifiedControllerActionDispatching',
+        'unifiedPageTranslationHandling'
     ];
 
     /**
index 178fb04..3a5b597 100644 (file)
@@ -19,7 +19,6 @@ use Doctrine\DBAL\DBALException;
 use Doctrine\DBAL\Schema\Schema;
 use Doctrine\DBAL\Schema\SchemaDiff;
 use Doctrine\DBAL\Schema\Table;
-use TYPO3\CMS\Core\Configuration\Features;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\Schema\Exception\StatementException;
 use TYPO3\CMS\Core\Database\Schema\Parser\Parser;
@@ -271,16 +270,14 @@ class SchemaMigrator
         // Flatten the array of arrays by one level
         $tables = array_merge(...$tables);
 
-        // @deprecated (?!) Drop any definition of pages_language_overlay in SQL
-        // will be removed in TYPO3 v10.0 once the feature is enabled by default
-        $disabledPagesLanguageOverlay = GeneralUtility::makeInstance(Features::class)->isFeatureEnabled('unifiedPageTranslationHandling');
-
         // Add default TCA fields
         $defaultTcaSchema = GeneralUtility::makeInstance(DefaultTcaSchema::class);
         $tables = $defaultTcaSchema->enrich($tables);
         // Ensure the default TCA fields are ordered
         foreach ($tables as $k => $table) {
-            if ($disabledPagesLanguageOverlay && $table->getName() === 'pages_language_overlay') {
+            // "pages_language_overlay" is hard-coded as never to be added anymore in TYPO3 v10. This safety-net
+            // is @deprecated and can be removed in TYPO3 v11.
+            if ($table->getName() === 'pages_language_overlay') {
                 unset($tables[$k]);
                 continue;
             }
index 534a71e..b5a8f57 100644 (file)
@@ -15,7 +15,6 @@ namespace TYPO3\CMS\Core\Migrations;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Core\Configuration\Features;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -2566,12 +2565,9 @@ class TcaMigration
     protected function migratePagesLanguageOverlayRemoval(array $tca)
     {
         if (isset($tca['pages_language_overlay'])) {
-            // If the feature is not enabled, a deprecation log entry is thrown
-            if (!GeneralUtility::makeInstance(Features::class)->isFeatureEnabled('unifiedPageTranslationHandling')) {
-                $this->messages[] = 'The TCA table \'pages_language_overlay\' is'
-                    . ' not used anymore and has been removed automatically in'
-                    . ' order to avoid negative side-effects.';
-            }
+            $this->messages[] = 'The TCA table \'pages_language_overlay\' is'
+                . ' not used anymore and has been removed automatically in'
+                . ' order to avoid negative side-effects.';
             unset($tca['pages_language_overlay']);
         }
         return $tca;
index e343626..feb72f6 100644 (file)
@@ -218,9 +218,6 @@ SYS:
               redirects.hitCount:
                 type: bool
                 description: 'If on, and if extension "redirects" is loaded, each performed redirect is counted and last hit time is logged to the database.'
-              unifiedPageTranslationHandling:
-                type: bool
-                description: 'If on, TCA configuration for pages_language_overlay is never loaded and the database table "pages_language_overlay" is not created by core. Enable this feature if no extensions fiddles with table pages_language_overlay to have a slightly quicker system with less deprecation log entries.'
               TypoScript.strictSyntax:
                 type: bool
                 description: 'If on, TypoScript is parsed in strict syntax modes. Enabling this feature means old condition syntax (which is deprecated) will trigger deprecation messages.'
index e480273..ca0d964 100644 (file)
@@ -985,7 +985,7 @@ The following feature is now always enabled:
 
 * Extbase's :php:`consistentTranslationOverlayHandling` - Translations in Extbase are now always consistent
 * :php:`simplifiedControllerActionDispatching` - Backend controller actions do not receive a prepared response object anymore
-
+* :php:`unifiedPageTranslationHandling` - Page Translations are not within `pages_language_overlay` anymore
 
 The following features have been removed:
 
@@ -999,6 +999,7 @@ The following features have been removed:
 The following database tables have been removed:
 
 * `sys_domain` - Use site configuration instead
+* `pages_language_overlay` - Migrate to `pages` with the upgrade wizard
 
 
 The following database fields have been removed:
index de02f5c..d3c7c55 100644 (file)
@@ -112,6 +112,7 @@ CREATE TABLE pages (
        backend_layout varchar(64) DEFAULT '' NOT NULL,
        backend_layout_next_level varchar(64) DEFAULT '' NOT NULL,
        tsconfig_includes text,
+       # legacy connection UID field to pages_language_overlay table, @deprecated and will be removed in TYPO3 v11
        legacy_overlay_uid int(11) unsigned DEFAULT '0' NOT NULL,
 
        KEY alias (alias),
index 038c4ef..613b835 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+// @deprecated Remove this file in TYPO3 v11 along with the migration wizard "MigratePagesLanguageOverlayUpdate"
 return [
     'ctrl' => [
         'label' => 'title',
index 913100b..7c69a0f 100644 (file)
                        <trans-unit id="sys_template.tabs.access">
                                <source>Access</source>
                        </trans-unit>
-                       <trans-unit id="pages_language_overlay">
-                               <source>Alternative Page Language</source>
-                       </trans-unit>
                        <trans-unit id="backend_layout">
                                <source>Backend Layout</source>
                        </trans-unit>
index 23cab4f..e139e21 100644 (file)
@@ -72,52 +72,6 @@ CREATE TABLE fe_users (
 );
 
 #
-# Table structure for table 'pages_language_overlay'
-# Kept with all management fields like uid and pid for b/w compat reasons.
-# Table will be removed in v10 with removal of unifiedPageTranslationHandling feature toggle
-#
-CREATE TABLE pages_language_overlay (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       doktype int(11) unsigned DEFAULT '0' NOT NULL,
-       t3ver_oid int(11) DEFAULT '0' NOT NULL,
-       t3ver_id int(11) DEFAULT '0' NOT NULL,
-       t3ver_wsid int(11) DEFAULT '0' NOT NULL,
-       t3ver_label varchar(255) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage int(11) DEFAULT '0' NOT NULL,
-       t3ver_count int(11) DEFAULT '0' NOT NULL,
-       t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
-       t3ver_move_id int(11) DEFAULT '0' NOT NULL,
-       t3_origuid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) unsigned DEFAULT '0' NOT NULL,
-       title varchar(255) DEFAULT '' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       starttime int(11) unsigned DEFAULT '0' NOT NULL,
-       endtime int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(3) unsigned DEFAULT '0' NOT NULL,
-       subtitle varchar(255) DEFAULT '' NOT NULL,
-       nav_title varchar(255) DEFAULT '' NOT NULL,
-       media int(11) unsigned DEFAULT '0' NOT NULL,
-       keywords text,
-       description text,
-       abstract text,
-       author varchar(255) DEFAULT '' NOT NULL,
-       author_email varchar(255) DEFAULT '' NOT NULL,
-       l18n_diffsource mediumblob,
-       url varchar(255) DEFAULT '' NOT NULL,
-       shortcut int(10) unsigned DEFAULT '0' NOT NULL,
-       shortcut_mode int(10) unsigned DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid),
-       KEY parent (pid,sys_language_uid)
-);
-
-#
 # Table structure for table 'sys_template'
 #
 CREATE TABLE sys_template (
diff --git a/typo3/sysext/impexp/Configuration/TCA/Overrides/pages_language_overlay.php b/typo3/sysext/impexp/Configuration/TCA/Overrides/pages_language_overlay.php
deleted file mode 100644 (file)
index 6533a85..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-$fields = [
-    'tx_impexp_origuid' => [
-        'config' => [
-            'type' => 'passthrough'
-        ]
-    ]
-];
-
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('pages_language_overlay', $fields);
index fc96fce..7a37f12 100644 (file)
@@ -27,13 +27,6 @@ CREATE TABLE pages (
 );
 
 #
-# Table structure for table 'pages_language_overlay'
-#
-CREATE TABLE pages_language_overlay (
-  tx_impexp_origuid int(11) DEFAULT '0' NOT NULL
-);
-
-#
 # Table structure for table 'sys_template'
 #
 CREATE TABLE sys_template (
index aa553be..cd293e1 100644 (file)
@@ -16,7 +16,6 @@ namespace TYPO3\CMS\Install\Updates;
  */
 
 use Symfony\Component\Console\Output\OutputInterface;
-use TYPO3\CMS\Core\Configuration\ConfigurationManager;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Install\Service\LoadTcaService;
@@ -119,7 +118,6 @@ class MigratePagesLanguageOverlayUpdate implements UpgradeWizardInterface, Chatt
         $this->mergePagesLanguageOverlayIntoPages();
         $this->updateInlineRelations();
         $this->updateSysHistoryRelations();
-        $this->enableFeatureFlag();
         return true;
     }
 
@@ -345,15 +343,4 @@ class MigratePagesLanguageOverlayUpdate implements UpgradeWizardInterface, Chatt
 
         return false;
     }
-
-    /**
-     * Once the update wizard is run through, the feature to not load any pages_language_overlay data can
-     * be activated.
-     *
-     * Basically writes 'SYS/features/unifiedPageTranslationHandling' to LocalConfiguration.php
-     */
-    protected function enableFeatureFlag()
-    {
-        GeneralUtility::makeInstance(ConfigurationManager::class)->enableFeature('unifiedPageTranslationHandling');
-    }
 }
index c7a5093..32338a6 100644 (file)
         'PAGE_TSCONFIG_STR': kw('PAGE_TSCONFIG_STR'),
         'pageFrameObj': kw('pageFrameObj'),
         'pages': B,
-        'pages_language_overlay': B,
         'pageTitleFirst': kw('pageTitleFirst'),
         'pageTree': A,
         'parameter': kw('parameter'),