[FEATURE] Auto create management DB fields from TCA ctrl 21/57121/45
authorChristian Kuhn <lolli@schwarzbu.ch>
Mon, 4 Jun 2018 12:13:23 +0000 (14:13 +0200)
committerBenni Mack <benni@typo3.org>
Thu, 7 Jun 2018 14:41:55 +0000 (16:41 +0200)
Adds a class that auto creates TYPO3 "management" related database
columns and indexes based on TCA 'ctrl' information without having
them specified in ext_tables.sql. The feature .rst file outlines
field details.

Goals:
* Save extension developers time.
* Less copy+paste issues and different general fields definitions.
* Reduce number of boilerplate fields in ext_tables.sql.
* Bring schema of management fields under core control.

Non goals:
* No full substitution of ext_tables.sql by TCA: "Business"
  fields from 'columns' are NOT created automatically. This
  would require further thoughts and code disentangling.
* No new extension API.
* No "migration" approach or similar.

Notable patch details:
* The patch is a revamped version of issue #81234 that has been
  abandoned. As requested in the review of #81234, the code now
  hooks in after ext_tables.sql has been parsed into the doctrine
  schema.
* Field defintions of ext_tables.sql take precedence, auto fields
  are only added if ext_tables.sql does not define a column or index.
  This makes the patch fully backwards compatible.
* No deprecation for obsolete field definitions in ext_tables.sql
  is logged.
* Many core fields are aligned to a central definition and slightly
  change. For instance "uid" is now always an unsigned int.
* Reduce all core's ext_tables.sql files as well as the functional
  testing related ext_tables.sql files down to the business fields
* A relatively huge series of test adaptions: Especially the
  ext:impexp related functionals now create dumps with differently
  sorted fields - This is no problem during import.
* Field t3_origuid of sys_file_reference has never been registered
  in TCA as ['ctrl']['origUid'], is thus unused and removed as obsolete.
* The extension manager no longer applies possible destructive changes,
  it only adds missing columns and tables when loading / updating
  extensions. It however considers *all* ext_tables.sql files, not only
  the one the extension in question provides. See the important .rst
  file for details.

Change-Id: I640a7c7da3b63bac21a71102f253aa2d1bef4391
Resolves: #85160
Related: #81234
Releases: master
Reviewed-on: https://review.typo3.org/57121
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: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
59 files changed:
typo3/sysext/core/Classes/DataHandling/DatabaseSchemaService.php [deleted file]
typo3/sysext/core/Classes/Database/Schema/DefaultTcaSchema.php [new file with mode: 0644]
typo3/sysext/core/Classes/Database/Schema/SchemaMigrator.php
typo3/sysext/core/Documentation/Changelog/master/Feature-85160-AutoCreateManagementDBFieldsFromTCACtrl.rst [new file with mode: 0644]
typo3/sysext/core/Documentation/Changelog/master/Important-85160-NonDesctructiveDatabaseSchemaChangesInExtensionManager.rst [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultElements.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/changeContentSorting.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContent.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/createContentWFileReference.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/deleteContent.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/localizeContent.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContent.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNAddFileReference.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteAllFileReference.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteFileReference.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentWFileReference.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPage.csv
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv
typo3/sysext/core/Tests/Functional/Database/Schema/SchemaMigratorTest.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/ext_tables.sql
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/test_datahandler/ext_tables.sql
typo3/sysext/core/Tests/Unit/Database/Schema/DefaultTcaSchemaTest.php [new file with mode: 0644]
typo3/sysext/core/ext_localconf.php
typo3/sysext/core/ext_tables.sql
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_post.php
typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/ext_tables.sql
typo3/sysext/extbase/Tests/Functional/Persistence/TranslatedContentTest.php
typo3/sysext/extensionmanager/Classes/Controller/ActionController.php
typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php
typo3/sysext/extensionmanager/Tests/Unit/Utility/InstallUtilityTest.php
typo3/sysext/extensionmanager/ext_tables.sql
typo3/sysext/extensionmanager/ext_tables_static+adt.sql
typo3/sysext/frontend/Tests/Functional/Rendering/DataSet/LiveDefaultElements.csv
typo3/sysext/frontend/ext_tables.sql
typo3/sysext/impexp/Tests/Functional/Fixtures/Extensions/impexp_group_files/ext_tables.sql
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/impexp-group-file-and-file_reference-item-but-images-not-included.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/impexp-group-file-and-file_reference-item-in-ff.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/impexp-group-file-and-file_reference-item.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/irre-records.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/pages-and-ttcontent-with-corrupt-image.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/pages-and-ttcontent-with-image-but-not-included.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/pages-and-ttcontent-with-image.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/mysql/pages-and-ttcontent.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/impexp-group-file-and-file_reference-item-but-images-not-included.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/impexp-group-file-and-file_reference-item-in-ff.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/impexp-group-file-and-file_reference-item.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/irre-records.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/pages-and-ttcontent-with-corrupt-image.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/pages-and-ttcontent-with-image-but-not-included.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/pages-and-ttcontent-with-image.xml
typo3/sysext/impexp/Tests/Functional/Fixtures/XmlExports/postgresql/pages-and-ttcontent.xml
typo3/sysext/indexed_search/ext_tables.sql
typo3/sysext/redirects/ext_tables.sql
typo3/sysext/scheduler/ext_tables.sql
typo3/sysext/sys_action/ext_tables.sql
typo3/sysext/sys_note/ext_tables.sql
typo3/sysext/workspaces/ext_tables.sql

diff --git a/typo3/sysext/core/Classes/DataHandling/DatabaseSchemaService.php b/typo3/sysext/core/Classes/DataHandling/DatabaseSchemaService.php
deleted file mode 100644 (file)
index 7aea803..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-namespace TYPO3\CMS\Core\DataHandling;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * This service provides the sql schema database records.
- */
-class DatabaseSchemaService
-{
-    const TABLE_TEMPLATE = 'CREATE TABLE %s (' . LF . '%s' . LF . ');';
-    const FIELD_L10N_STATE_TEMPLATE = '  l10n_state text';
-
-    /**
-     * Add l10n_state field to tables that provide localization
-     *
-     * @param array $sqlString Current SQL statements to be executed
-     * @return array Modified arguments of SqlReader::tablesDefinitionIsBeingBuilt signal
-     */
-    public function getLocalizationRequiredDatabaseSchema(array $sqlString)
-    {
-        $additionalSqlString = $this->buildLocalizationRequiredDatabaseSchema();
-        if (!empty($additionalSqlString)) {
-            $sqlString[] = $additionalSqlString;
-        }
-        return ['sqlString' => $sqlString];
-    }
-
-    /**
-     * Add l10n_state field to tables that provide localization
-     *
-     * @param array $sqlString Current SQL statements to be executed
-     * @param string $extensionKey Extension key currently processed
-     * @return array Modified arguments of InstallUtility::tablesDefinitionIsBeingBuilt signal
-     */
-    public function getLocalizationRequiredDatabaseSchemaForExtension(array $sqlString, string $extensionKey)
-    {
-        $additionalSqlString = $this->buildLocalizationRequiredDatabaseSchema();
-        if (!empty($additionalSqlString)) {
-            $sqlString[] = $additionalSqlString;
-        }
-        return ['sqlString' => $sqlString, 'extensionKey' => $extensionKey];
-    }
-
-    /**
-     * Add l10n_state field to tables that provide localization
-     *
-     * @return string Localization fields database schema
-     */
-    protected function buildLocalizationRequiredDatabaseSchema()
-    {
-        $tableSchemas = [];
-
-        foreach ($GLOBALS['TCA'] as $tableName => $tableDefinition) {
-            if (
-                empty($tableDefinition['columns'])
-                || empty($tableDefinition['ctrl']['languageField'])
-                || empty($tableDefinition['ctrl']['transOrigPointerField'])
-            ) {
-                continue;
-            }
-
-            $fieldSchemas = [];
-            $fieldSchemas[] = static::FIELD_L10N_STATE_TEMPLATE;
-
-            $tableSchemas[] = sprintf(
-                static::TABLE_TEMPLATE,
-                $tableName,
-                implode(',' . LF, $fieldSchemas)
-            );
-        }
-
-        return implode(LF, $tableSchemas);
-    }
-}
diff --git a/typo3/sysext/core/Classes/Database/Schema/DefaultTcaSchema.php b/typo3/sysext/core/Classes/Database/Schema/DefaultTcaSchema.php
new file mode 100644 (file)
index 0000000..7be52fa
--- /dev/null
@@ -0,0 +1,612 @@
+<?php
+declare(strict_types = 1);
+
+namespace TYPO3\CMS\Core\Database\Schema;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use Doctrine\DBAL\Schema\Table;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * This class is called by the SchemaMigrator after all extension's ext_tables.sql
+ * files have been parsed and processed to the doctrine Table/Column/Index objects.
+ *
+ * Method enrich() goes through all $GLOBALS['TCA'] tables and adds fields like
+ * 'uid', 'sorting', 'deleted' and friends if the feature is enabled in TCA and the
+ * field has not been defined in ext_tables.sql files.
+ *
+ * This allows extension developers to leave out the TYPO3 DB management fields
+ * and reduce ext_tables.sql of extensions down to the business fields.
+ *
+ * @internal
+ */
+class DefaultTcaSchema
+{
+    /**
+     * Add fields to $tables array that has been created from ext_tables.sql files.
+     * This goes through all tables defined in TCA, looks for 'ctrl' features like
+     * "soft delete" ['ctrl']['delete'] and adds the field if it has not been
+     * defined in ext_tables.sql, yet.
+     *
+     * Note the incoming $tables array must be created from all ext_tables.sql files
+     * of all loaded extensions, and TCA must be up-to-date.
+     *
+     * @param Table[] $tables
+     * @return Table[]
+     */
+    public function enrich(array $tables): array
+    {
+        foreach ($GLOBALS['TCA'] as $tableName => $tableDefinition) {
+            $isTableDefined = $this->isTableDefined($tables, $tableName);
+            $tablePosition = null;
+            if ($isTableDefined) {
+                // If the table is given in existing $tables list, add all fields to the first
+                // position of that table - in case it is in there multiple times which happens
+                // if extensions add single fields to tables that have been defined in
+                // other ext_tables.sql, too.
+                $tablePosition = $this->getTableFirstPosition($tables, $tableName);
+            } else {
+                // Else create this table and add it to table list
+                $table = GeneralUtility::makeInstance(Table::class, $tableName);
+                $tables[] = $table;
+                $tableKeys = array_keys($tables);
+                $tablePosition = end($tableKeys);
+            }
+
+            // uid column and primary key if uid is not defined
+            if (!$this->isColumnDefinedForTable($tables, $tableName, 'uid')) {
+                $tables[$tablePosition]->addColumn(
+                    'uid',
+                    'integer',
+                    [
+                        'notnull' => true,
+                        'unsigned' => true,
+                        'autoincrement' => true,
+                    ]
+                );
+                $tables[$tablePosition]->setPrimaryKey(['uid']);
+            }
+
+            // pid column and prepare parent key if pid is not defined
+            $pidColumnAdded = false;
+            if (!$this->isColumnDefinedForTable($tables, $tableName, 'pid')) {
+                $options = [
+                    'default' => 0,
+                    'notnull' => true,
+                    'unsigned' => false,
+                ];
+                if (empty($tableDefinition['ctrl']['versioningWS'])) {
+                    // We need negative pid's (-1) if table is workspace aware
+                    $options['unsigned'] = true;
+                }
+                $tables[$tablePosition]->addColumn('pid', 'integer', $options);
+                $pidColumnAdded = true;
+            }
+
+            // tstamp column
+            if (!empty($tableDefinition['ctrl']['tstamp'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['tstamp'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['tstamp'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // crdate column
+            if (!empty($tableDefinition['ctrl']['crdate'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['crdate'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['crdate'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // cruser_id column
+            if (!empty($tableDefinition['ctrl']['cruser_id'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['cruser_id'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['cruser_id'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // deleted column - soft delete
+            if (!empty($tableDefinition['ctrl']['delete'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['delete'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['delete'],
+                    'smallint',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // disabled column
+            if (!empty($tableDefinition['ctrl']['enablecolumns']['disabled'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['disabled'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['enablecolumns']['disabled'],
+                    'smallint',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // starttime column
+            if (!empty($tableDefinition['ctrl']['enablecolumns']['starttime'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['starttime'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['enablecolumns']['starttime'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // endtime column
+            if (!empty($tableDefinition['ctrl']['enablecolumns']['endtime'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['endtime'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['enablecolumns']['endtime'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // fe_group column
+            if (!empty($tableDefinition['ctrl']['enablecolumns']['fe_group'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['fe_group'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['enablecolumns']['fe_group'],
+                    'string',
+                    [
+                        'default' => '0',
+                        'notnull' => true,
+                        'length' => 255,
+                    ]
+                );
+            }
+
+            // sorting column
+            if (!empty($tableDefinition['ctrl']['sortby'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['sortby'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['sortby'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => false,
+                    ]
+                );
+            }
+
+            // index on pid column and maybe others - only if pid has not been defined via ext_tables.sql before
+            if ($pidColumnAdded && !$this->isIndexDefinedForTable($tables, $tableName, 'parent')) {
+                $parentIndexFields = ['pid'];
+                if (!empty($tableDefinition['ctrl']['delete'])) {
+                    $parentIndexFields[] = (string)$tableDefinition['ctrl']['delete'];
+                }
+                if (!empty($tableDefinition['ctrl']['enablecolumns']['disabled'])) {
+                    $parentIndexFields[] = (string)$tableDefinition['ctrl']['enablecolumns']['disabled'];
+                }
+                $tables[$tablePosition]->addIndex($parentIndexFields, 'parent');
+            }
+
+            // description column
+            if (!empty($tableDefinition['ctrl']['descriptionColumn'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['descriptionColumn'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['descriptionColumn'],
+                    'text',
+                    [
+                        'notnull' => false,
+                        'length' => 65535,
+                    ]
+                );
+            }
+
+            // editlock column
+            if (!empty($tableDefinition['ctrl']['editlock'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['editlock'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['editlock'],
+                    'smallint',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // sys_language_uid column
+            if (!empty($tableDefinition['ctrl']['languageField'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['languageField'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    (string)$tableDefinition['ctrl']['languageField'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => false,
+                    ]
+                );
+            }
+
+            // l10n_parent column
+            if (!empty($tableDefinition['ctrl']['languageField'])
+                && !empty($tableDefinition['ctrl']['transOrigPointerField'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['transOrigPointerField'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    (string)$tableDefinition['ctrl']['transOrigPointerField'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // l10n_source column
+            if (!empty($tableDefinition['ctrl']['languageField'])
+                && !empty($tableDefinition['ctrl']['translationSource'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['translationSource'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    (string)$tableDefinition['ctrl']['translationSource'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // l10n_state column
+            if (!empty($tableDefinition['ctrl']['languageField'])
+                && !empty($tableDefinition['ctrl']['transOrigPointerField'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, 'l10n_state')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    'l10n_state',
+                    'text',
+                    [
+                        'notnull' => false,
+                        'length' => 65535,
+                    ]
+                );
+            }
+
+            // t3_origuid column
+            if (!empty($tableDefinition['ctrl']['origUid'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['origUid'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['origUid'],
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // l18n_diffsource column
+            if (!empty($tableDefinition['ctrl']['transOrigDiffSourceField'])
+                && !$this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['transOrigDiffSourceField'])
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    $tableDefinition['ctrl']['transOrigDiffSourceField'],
+                    'blob',
+                    [
+                        // mediumblob (16MB) on mysql
+                        'length' => 16777215,
+                        'notnull' => false,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_oid column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_oid')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_oid',
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_id column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_id')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_id',
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_label column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_label')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_label',
+                    'string',
+                    [
+                        'default' => '',
+                        'notnull' => true,
+                        'length' => 255,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_wsid column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_wsid')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_wsid',
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_state column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_state')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_state',
+                    'smallint',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => false,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_stage column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_stage')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_stage',
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_count column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_count')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_count',
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_tstamp column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_tstamp')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_tstamp',
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // workspaces t3ver_move_id column
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_move_id')
+            ) {
+                $tables[$tablePosition]->addColumn(
+                    't3ver_move_id',
+                    'integer',
+                    [
+                        'default' => 0,
+                        'notnull' => true,
+                        'unsigned' => true,
+                    ]
+                );
+            }
+
+            // workspaces index on t3ver_oid and t3ver_wsid fields
+            if (!empty($tableDefinition['ctrl']['versioningWS'])
+                && (bool)$tableDefinition['ctrl']['versioningWS'] === true
+                && !$this->isIndexDefinedForTable($tables, $tableName, 't3ver_oid')
+            ) {
+                $tables[$tablePosition]->addIndex(['t3ver_oid', 't3ver_wsid'], 't3ver_oid');
+            }
+        }
+
+        return $tables;
+    }
+
+    /**
+     * True if table with given table name is defined within incoming $tables array
+     *
+     * @param Table[] $tables
+     * @param string $tableName
+     * @return bool
+     */
+    protected function isTableDefined(array $tables, string $tableName): bool
+    {
+        foreach ($tables as $table) {
+            if ($table->getName() === $tableName) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * True if a column with a given name is defined within the incoming
+     * array of Table's.
+     *
+     * @param Table[] $tables
+     * @param string $tableName
+     * @param string $fieldName
+     * @return bool
+     */
+    protected function isColumnDefinedForTable(array $tables, string $tableName, string $fieldName): bool
+    {
+        foreach ($tables as $table) {
+            if ($table->getName() !== $tableName) {
+                continue;
+            }
+            $columns = $table->getColumns();
+            foreach ($columns as $column) {
+                if ($column->getName() === $fieldName) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * True if an index with a given name is defined within the incoming
+     * array of Table's.
+     *
+     * @param Table[] $tables
+     * @param string $tableName
+     * @param string $indexName
+     * @return bool
+     */
+    protected function isIndexDefinedForTable(array $tables, string $tableName, string $indexName): bool
+    {
+        foreach ($tables as $table) {
+            if ($table->getName() !== $tableName) {
+                continue;
+            }
+            $indexes = $table->getIndexes();
+            foreach ($indexes as $index) {
+                if ($index->getName() === $indexName) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * The incoming $tables array can contain Table objects for the same table
+     * multiple times. This can happen if an extension has the main CREATE TABLE
+     * statement in its ext_tables.sql and another extension adds or changes further
+     * fields in an own CREATE TABLE statement.
+     *
+     * @todo It would be better if the incoming $tables structure would be cleaned
+     * @todo to contain a table only once before this class is entered.
+     *
+     * @param Table[] $tables
+     * @param string $tableName
+     * @return int
+     * @throws \RuntimeException
+     */
+    protected function getTableFirstPosition(array $tables, string $tableName): int
+    {
+        foreach ($tables as $position => $table) {
+            if ($table->getName() === $tableName) {
+                return (int)$position;
+            }
+        }
+        throw new \RuntimeException('Table ' . $tableName . ' not found in schema list', 1527854474);
+    }
+}
index f505042..ebd3e2f 100644 (file)
@@ -271,7 +271,10 @@ class SchemaMigrator
         // Flatten the array of arrays by one level
         $tables = array_merge(...$tables);
 
-        // Drop any definition of pages_language_overlay in SQL
+        $defaultTcaSchema = GeneralUtility::makeInstance(DefaultTcaSchema::class);
+        $tables = $defaultTcaSchema->enrich($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
         if (GeneralUtility::makeInstance(Features::class)->isFeatureEnabled('unifiedPageTranslationHandling')) {
             foreach ($tables as $k => $table) {
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-85160-AutoCreateManagementDBFieldsFromTCACtrl.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-85160-AutoCreateManagementDBFieldsFromTCACtrl.rst
new file mode 100644 (file)
index 0000000..257cb30
--- /dev/null
@@ -0,0 +1,108 @@
+.. include:: ../../Includes.txt
+
+================================================================
+Feature: #85160 - Auto create management DB fields from TCA ctrl
+================================================================
+
+See :issue:`85160`
+
+Description
+===========
+
+The database schema analyzer automatically creates TYPO3 "management" related
+database columns by reading a tables :php:`TCA` and checking the :php:`ctrl`
+section for table capabilities.
+
+Note this affects only basic columns like :php:`uid`, :php:`deleted` and language
+handling related fields like :php:`sys_language_uid`, but **not** a tables main
+business fields like a "title" field for a news extension. Those still have to
+be defined by extension authors. No column definitions are created from the
+:php:`columns` section of a tables :php:`TCA`.
+
+However, :file:`ext_tables.sql` file can be stripped down to business fields.
+For example, if a :php:`TCA` definition of a table specifies
+:php:`$GLOBALS['TCA']['myTable']['ctrl']['sortby'] = 'sorting'`,
+the core will automatically add the column :php:`sorting` with an appropriate
+definition.
+
+Field definitions in :file:`ext_tables.sql` take precedence over automatically
+generated fields, so the core never overrides a manually specified column definition
+from an :file:`ext_tables.sql` file.
+
+These columns below are automatically added if not defined in :file:`ext_tables.sql`
+for database tables that provide a :php:`$GLOBALS['TCA']` definition:
+
+:php:`uid` and :php:`PRIMARY KEY`
+  If removing the uid field from ext_tables.sql, the :php:`PRIMARY KEY` **must** be removed, too.
+
+:php:`pid` and :php:`KEY parent`
+  Column pid is :php:`unsigned` if the table is not workspace aware, the default
+  index :php:`parent` includes :php:`pid` and :php:`hidden` as well as :php:`deleted`
+  if the latter two are specified in :php:`TCA` :php:`ctrl`. The parent index creation
+  is only applied if column :php:`pid` is auto generated, too.
+
+:php:`['ctrl']['tstamp'] = 'fieldName'`
+  Often set to :php:`tstamp` or :php:`updatedon`
+
+:php:`['ctrl']['crdate'] = 'fieldName'`
+  Often set to :php:`crdate` or :php:`createdon`
+
+:php:`['ctrl']['cruser_id'] = 'fieldName'`
+  Often set to :php:`cruser` or :php:`createdby`
+
+:php:`['ctrl']['delete'] = 'fieldName'`
+  Often set to :php:`deleted`
+
+:php:`['ctrl']['enablecolumns']['disabled'] = 'fieldName'`
+  Often set to :php:`hidden` or :php:`disabled`
+
+:php:`['ctrl']['enablecolumns']['starttime'] = 'fieldName'`
+  Often set to :php:`starttime`
+
+:php:`['ctrl']['enablecolumns']['endtime'] = 'fieldName'`
+  Often set to :php:`endtime`
+
+:php:`['ctrl']['enablecolumns']['fe_group'] = 'fieldName'`
+  Often set to :php:`fe_group`
+
+:php:`['ctrl']['sortby'] = 'fieldName'`
+  Often set to :php:`sorting`
+
+:php:`['ctrl']['descriptionColumn'] = 'fieldName'`
+  Often set to :php:`description`
+
+:php:`['ctrl']['editlock'] = 'fieldName'`
+  Often set to :php:`editlock`
+
+:php:`['ctrl']['languageField'] = 'fieldName'`
+  Often set to :php:`sys_language_uid`
+
+:php:`['ctrl']['transOrigPointerField'] = 'fieldName'`
+  Often set to :php:`l10n_parent`
+
+:php:`['ctrl']['translationSource'] = 'fieldName'`
+  Often set to :php:`l10n_source`
+
+:php:`l10n_state`
+  Column added if :php:`languageField` and :php:`transOrigPointerField` are set
+
+:php:`['ctrl']['origUid'] = 'fieldName'`
+  Often set to :php:`t3_origuid`
+
+:php:`['ctrl']['transOrigDiffSourceField'] = 'fieldName'`
+  Often set to :php:`l10n_diffsource`
+
+:php:`['ctrl']['versioningWS'] = true` - :php:`t3ver_*` columns
+  Columns that make a table workspace aware. All those fields are prefixed with
+  :php:`t3ver_`, for example :php:`t3ver_oid` and :php:`t3ver_id`. A default
+  index named :php:`t3ver_oid` to fields :php:`t3ver_oid` and :php:`t3ver_wsid` is
+  added, too.
+
+
+Impact
+======
+
+Extension developers can skip tons of "general" fields from extensions
+:file:`ext_tables.sql` files.
+
+.. index:: Database, TCA
\ No newline at end of file
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Important-85160-NonDesctructiveDatabaseSchemaChangesInExtensionManager.rst b/typo3/sysext/core/Documentation/Changelog/master/Important-85160-NonDesctructiveDatabaseSchemaChangesInExtensionManager.rst
new file mode 100644 (file)
index 0000000..b6c1549
--- /dev/null
@@ -0,0 +1,28 @@
+.. include:: ../../Includes.txt
+
+=================================================================================
+Important: #85160 - Non desctructive database schema changes in extension manager
+=================================================================================
+
+See :issue:`85160`
+
+Description
+===========
+
+When loading or updating an extension using the backend extension manager, only
+non destructive database schema changes are applied.
+
+If for example a new version of an extension brings a **new** column, index or table
+that does not exist locally yet, it will be **added**.
+
+If the extension however for example **changes** the length of an existing field
+or **removes** a column, index or table definition, these changes are
+**not automatically applied** when loading or updating the extension. Administrators use
+the database analyzer in Admin Tools -> Maintenance view to review and perform these
+potentially destructive changes manually.
+
+Additionally, missing fields or tables from other extensions are also added if an
+extension is loaded, even if the extension that is loaded does not touch the
+table in its :file:`ext_tables.sql` file.
+
+.. index:: Database, TCA, ext:extensionmanager
\ No newline at end of file
index fd45bb0..e84dee1 100644 (file)
@@ -1,28 +1,28 @@
-"sys_language",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","hidden","title","flag",,,,,,,,,,,,,,,,,,
-,1,0,0,"Dansk","dk",,,,,,,,,,,,,,,,,,
-,2,0,0,"Deutsch","de",,,,,,,,,,,,,,,,,,
-"sys_category",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","title","parent","items","l10n_diffsource","description",,,,,,
-,28,0,256,0,0,0,0,0,0,0,0,0,"Category A",0,0,,,,,,,,
-,29,0,512,0,0,0,0,0,0,0,0,0,"Category B",0,0,,,,,,,,
-,30,0,768,0,0,0,0,0,0,0,0,0,"Category C",0,0,,,,,,,,
-,31,0,1024,0,0,0,0,0,0,0,0,0,"Category A.A",28,0,,,,,,,,
-"sys_file",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","type","storage","identifier","extension","mime_type","name","sha1","size","creation_date","modification_date","missing","metadata","identifier_hash","folder_hash","last_indexed",,,,,,
-,1,0,2,1,"/_migrated/pics/kasper-skarhoj1_01.jpeg","jpeg","image/jpeg","kasper-skarhoj1_01.jpeg","b841902021bbe23bd71e4a5b5b97626da7734b90",39056,1375080761,1374139442,0,0,"2a4941658e4bd943048a234a5e1f305a1f736b10","f6e391567e01bdb14eac504413794a3bc1300abd",0,,,,,,
-,21,0,2,1,"/_migrated/pics/typo3_image5_01.jpg","jpg","image/jpeg","typo3_image5_01.jpg","ce136877a22606a6e44ce9b1f8ed3be70c74e6ee",126872,1375080761,1374139442,0,0,"9df04e41b37d2c29777ee64ced3f612b2422a02e","f6e391567e01bdb14eac504413794a3bc1300abd",0,,,,,,
-"sys_file_metadata",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","file","title","width","height","description","alternative","categories","l10n_diffsource",,,,,
-,1,0,0,0,0,0,0,0,0,0,1,"Image Kasper",401,600,,,0,,,,,,
-,21,0,0,0,0,0,0,0,0,0,21,"Image T3BOARD",1024,683,,,0,,,,,,
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link","l10n_diffsource",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,,
+"sys_language",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","hidden","title","flag",,,,,,,,,,,,,,,,,
+,1,0,0,"Dansk","dk",,,,,,,,,,,,,,,,,
+,2,0,0,"Deutsch","de",,,,,,,,,,,,,,,,,
+"sys_category",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","title","parent","items","l10n_diffsource","description",,,,,
+,28,0,256,0,0,0,0,0,0,0,0,0,"Category A",0,0,,,,,,,
+,29,0,512,0,0,0,0,0,0,0,0,0,"Category B",0,0,,,,,,,
+,30,0,768,0,0,0,0,0,0,0,0,0,"Category C",0,0,,,,,,,
+,31,0,1024,0,0,0,0,0,0,0,0,0,"Category A.A",28,0,,,,,,,
+"sys_file",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","type","storage","identifier","extension","mime_type","name","sha1","size","creation_date","modification_date","missing","metadata","identifier_hash","folder_hash","last_indexed",,,,,
+,1,0,2,1,"/_migrated/pics/kasper-skarhoj1_01.jpeg","jpeg","image/jpeg","kasper-skarhoj1_01.jpeg","b841902021bbe23bd71e4a5b5b97626da7734b90",39056,1375080761,1374139442,0,0,"2a4941658e4bd943048a234a5e1f305a1f736b10","f6e391567e01bdb14eac504413794a3bc1300abd",0,,,,,
+,21,0,2,1,"/_migrated/pics/typo3_image5_01.jpg","jpg","image/jpeg","typo3_image5_01.jpg","ce136877a22606a6e44ce9b1f8ed3be70c74e6ee",126872,1375080761,1374139442,0,0,"9df04e41b37d2c29777ee64ced3f612b2422a02e","f6e391567e01bdb14eac504413794a3bc1300abd",0,,,,,
+"sys_file_metadata",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","file","title","width","height","description","alternative","categories","l10n_diffsource",,,,
+,1,0,0,0,0,0,0,0,0,0,1,"Image Kasper",401,600,,,0,,,,,
+,21,0,0,0,0,0,0,0,0,0,21,"Image T3BOARD",1024,683,,,0,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link","l10n_diffsource",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
index db8256b..674a9d4 100644 (file)
@@ -14,10 +14,12 @@ namespace TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\Modify;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\AbstractActionTestCase;
+
 /**
  * Functional test for the DataHandler
  */
-class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\AbstractActionTestCase
+class ActionTest extends AbstractActionTestCase
 {
     /**
      * @var string
index a0e3cf0..a5cdbf0 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,768,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,768,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
index b53f626..5b6c28a 100644 (file)
@@ -1,13 +1,13 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-,130,89,0,0,0,0,0,0,0,0,0,21,332,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,131,89,0,0,0,0,0,0,0,0,0,1,332,"tt_content","image",2,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
-,332,89,128,0,0,0,331,0,0,0,0,0,"Regular Element #2 (copy 1)",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+,130,89,0,0,0,0,0,0,0,0,21,332,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,131,89,0,0,0,0,0,0,0,0,1,332,"tt_content","image",2,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
+,332,89,128,0,0,0,331,0,0,0,0,0,"Regular Element #2 (copy 1)",2,,,,,,,
index a5ffa59..96612c1 100644 (file)
@@ -1,13 +1,13 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-,130,89,0,1,0,0,0,0,0,0,0,21,332,"tt_content","image",1,"sys_file","[Translate to Dansk:] Taken at T3BOARD",,,,
-,131,89,0,1,0,0,0,0,0,0,0,1,332,"tt_content","image",2,"sys_file","[Translate to Dansk:] This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
-,332,89,768,0,1,0,331,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+,130,89,0,1,0,0,0,0,0,0,21,332,"tt_content","image",1,"sys_file","[Translate to Dansk:] Taken at T3BOARD",,,,
+,131,89,0,1,0,0,0,0,0,0,1,332,"tt_content","image",2,"sys_file","[Translate to Dansk:] This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
+,332,89,768,0,1,0,331,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",2,,,,,,,
index 1969fb6..331c00b 100644 (file)
@@ -1,12 +1,12 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-,130,89,0,0,0,0,0,0,0,0,0,1,332,"tt_content","image",1,"sys_file","Image #1",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
-,332,89,128,0,0,0,0,0,0,0,0,0,"Testing #1",1,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+,130,89,0,0,0,0,0,0,0,0,1,332,"tt_content","image",1,"sys_file","Image #1",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
+,332,89,128,0,0,0,0,0,0,0,0,0,"Testing #1",1,,,,,,,
index 80e91bf..0876e2d 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,1,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,1,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,1,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,1,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,1,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,1,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
index 826c508..9895b4c 100644 (file)
@@ -1,13 +1,13 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid",,"deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link"
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-,130,89,0,1,128,0,0,0,0,0,0,21,332,"tt_content","image",1,"sys_file","[Translate to Dansk:] Taken at T3BOARD",,,,
-,131,89,0,1,129,0,0,0,0,0,0,1,332,"tt_content","image",2,"sys_file","[Translate to Dansk:] This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
-,332,89,768,0,1,331,331,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid",,"deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link"
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+,130,89,0,1,128,0,0,0,0,0,21,332,"tt_content","image",1,"sys_file","[Translate to Dansk:] Taken at T3BOARD",,,,
+,131,89,0,1,129,0,0,0,0,0,1,332,"tt_content","image",2,"sys_file","[Translate to Dansk:] This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
+,332,89,768,0,1,331,331,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",2,,,,,,,
index 7c59a24..01d3d6d 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Testing #1",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Testing #1",2,,,,,,,
index 7559a71..15f5c6f 100644 (file)
@@ -1,11 +1,11 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-,130,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",3,"sys_file","Image #3",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",3,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+,130,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",3,"sys_file","Image #3",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",3,,,,,,,
index d5aadfa..113f93a 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,1,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,1,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",0,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,1,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,1,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",0,,,,,,,
index bbc641a..8981730 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,1,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",1,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",1,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,1,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",1,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",1,,,,,,,
index a20680a..19065ba 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,89,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,89,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","Image #1",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,89,512,0,0,0,0,0,0,0,0,0,"Testing #1",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,89,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,89,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","Image #1",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,"Testing #1",2,,,,,,,
index 3dde7f9..46c4fa2 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,89,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,89,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,90,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,90,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,90,256,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,89,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,89,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,90,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,90,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,90,256,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
index 704b732..551b8f1 100644 (file)
@@ -1,10 +1,10 @@
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
-,126,90,0,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
-,127,90,0,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
-,128,90,0,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
-,129,90,0,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,,
-,330,90,512,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,,
-,331,90,256,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","uid_local","uid_foreign","tablenames","fieldname","sorting_foreign","table_local","title","description","alternative","link",
+,126,90,0,0,0,0,0,0,0,0,1,330,"tt_content","image",2,"sys_file","T3BOARD",,,,
+,127,90,0,0,0,0,0,0,0,0,21,330,"tt_content","image",1,"sys_file","Kasper",,,,
+,128,90,0,0,0,0,0,0,0,0,21,331,"tt_content","image",1,"sys_file","Taken at T3BOARD",,,,
+,129,90,0,0,0,0,0,0,0,0,1,331,"tt_content","image",2,"sys_file","This is Kasper",,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header","image",,,,,,,
+,330,90,512,0,0,0,0,0,0,0,0,0,"Regular Element #1",2,,,,,,,
+,331,90,256,0,0,0,0,0,0,0,0,0,"Regular Element #2",2,,,,,,,
index 5f135bc..adb2c30 100644 (file)
@@ -24,11 +24,12 @@ use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\Schema\SchemaMigrator;
 use TYPO3\CMS\Core\Database\Schema\SqlReader;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
 
 /**
- * Test case for \TYPO3\CMS\Core\Database\Schema\SchemaMigratorTest
+ * Test case
  */
-class SchemaMigratorTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTestCase
+class SchemaMigratorTest extends FunctionalTestCase
 {
     /**
      * @var SqlReader
@@ -173,8 +174,6 @@ class SchemaMigratorTest extends \TYPO3\TestingFramework\Core\Functional\Functio
             $updateSuggestions[ConnectionPool::DEFAULT_CONNECTION_NAME]['add']
         );
 
-        $updateSuggestions = $this->subject->getUpdateSuggestions($statements);
-        $this->assertEmpty($updateSuggestions[ConnectionPool::DEFAULT_CONNECTION_NAME]['change']);
         $this->assertTrue($this->getTableDetails()->getColumn('aTestField')->getNotnull());
     }
 
@@ -191,8 +190,6 @@ class SchemaMigratorTest extends \TYPO3\TestingFramework\Core\Functional\Functio
             $updateSuggestions[ConnectionPool::DEFAULT_CONNECTION_NAME]['add']
         );
 
-        $updateSuggestions = $this->subject->getUpdateSuggestions($statements);
-        $this->assertEmpty($updateSuggestions[ConnectionPool::DEFAULT_CONNECTION_NAME]['change']);
         $this->assertFalse($this->getTableDetails()->getColumn('aTestField')->getNotnull());
         $this->assertNull($this->getTableDetails()->getColumn('aTestField')->getDefault());
     }
index 763c88e..334c567 100644 (file)
@@ -27,34 +27,8 @@ CREATE TABLE tt_content (
 # Table structure for table 'tx_irretutorial_1ncsv_hotel'
 #
 CREATE TABLE tx_irretutorial_1ncsv_hotel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       offers text NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       offers text NOT NULL
 );
 
 
@@ -63,34 +37,8 @@ CREATE TABLE tx_irretutorial_1ncsv_hotel (
 # Table structure for table 'tx_irretutorial_1ncsv_offer'
 #
 CREATE TABLE tx_irretutorial_1ncsv_offer (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       prices text NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       prices text NOT NULL
 );
 
 
@@ -99,34 +47,8 @@ CREATE TABLE tx_irretutorial_1ncsv_offer (
 # Table structure for table 'tx_irretutorial_1ncsv_price'
 #
 CREATE TABLE tx_irretutorial_1ncsv_price (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       price double(11,2) DEFAULT '0.00' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       price double(11,2) DEFAULT '0.00' NOT NULL
 );
 
 #######################################################################################################################
@@ -137,37 +59,11 @@ CREATE TABLE tx_irretutorial_1ncsv_price (
 # Table structure for table 'tx_irretutorial_1nff_hotel'
 #
 CREATE TABLE tx_irretutorial_1nff_hotel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        parentid int(11) DEFAULT '0' NOT NULL,
        parenttable tinytext NOT NULL,
        parentidentifier tinytext NOT NULL,
        title tinytext NOT NULL,
-       offers int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       offers int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -176,37 +72,11 @@ CREATE TABLE tx_irretutorial_1nff_hotel (
 # Table structure for table 'tx_irretutorial_1nff_offer'
 #
 CREATE TABLE tx_irretutorial_1nff_offer (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        parentid int(11) DEFAULT '0' NOT NULL,
        parenttable tinytext NOT NULL,
        parentidentifier tinytext NOT NULL,
        title tinytext NOT NULL,
-       prices int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       prices int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -215,37 +85,11 @@ CREATE TABLE tx_irretutorial_1nff_offer (
 # Table structure for table 'tx_irretutorial_1nff_price'
 #
 CREATE TABLE tx_irretutorial_1nff_price (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        parentid int(11) DEFAULT '0' NOT NULL,
        parenttable tinytext NOT NULL,
        parentidentifier tinytext NOT NULL,
        title tinytext NOT NULL,
-       price double(11,2) DEFAULT '0.00' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       price double(11,2) DEFAULT '0.00' NOT NULL
 );
 
 #######################################################################################################################
@@ -256,34 +100,8 @@ CREATE TABLE tx_irretutorial_1nff_price (
 # Table structure for table 'tx_irretutorial_mnasym_hotel'
 #
 CREATE TABLE tx_irretutorial_mnasym_hotel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       offers int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       offers int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -292,36 +110,11 @@ CREATE TABLE tx_irretutorial_mnasym_hotel (
 # Table structure for table 'tx_irretutorial_mnasym_hotel_offer_rel'
 #
 CREATE TABLE tx_irretutorial_mnasym_hotel_offer_rel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        hotelid int(11) DEFAULT '0' NOT NULL,
        offerid int(11) DEFAULT '0' NOT NULL,
        hotelsort int(10) DEFAULT '0' NOT NULL,
        offersort int(10) DEFAULT '0' NOT NULL,
-       prices int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       prices int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -330,34 +123,8 @@ CREATE TABLE tx_irretutorial_mnasym_hotel_offer_rel (
 # Table structure for table 'tx_irretutorial_mnasym_offer'
 #
 CREATE TABLE tx_irretutorial_mnasym_offer (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       hotels int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       hotels int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -366,35 +133,9 @@ CREATE TABLE tx_irretutorial_mnasym_offer (
 # Table structure for table 'tx_irretutorial_mnasym_price'
 #
 CREATE TABLE tx_irretutorial_mnasym_price (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        parentid int(11) DEFAULT '0' NOT NULL,
        title tinytext NOT NULL,
-       price double(11,2) DEFAULT '0.00' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       price double(11,2) DEFAULT '0.00' NOT NULL
 );
 
 #######################################################################################################################
@@ -405,34 +146,8 @@ CREATE TABLE tx_irretutorial_mnasym_price (
 # Table structure for table 'tx_irretutorial_mnmmasym_hotel'
 #
 CREATE TABLE tx_irretutorial_mnmmasym_hotel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       offers int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       offers int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -460,35 +175,9 @@ CREATE TABLE tx_irretutorial_mnmmasym_hotel_offer_rel (
 # Table structure for table 'tx_irretutorial_mnmmasym_offer'
 #
 CREATE TABLE tx_irretutorial_mnmmasym_offer (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
        hotels int(11) DEFAULT '0' NOT NULL,
-       prices int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       prices int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -516,35 +205,9 @@ CREATE TABLE tx_irretutorial_mnmmasym_offer_price_rel (
 # Table structure for table 'tx_irretutorial_mnmmasym_price'
 #
 CREATE TABLE tx_irretutorial_mnmmasym_price (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
        price double(11,2) DEFAULT '0.00' NOT NULL,
-       offers int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       offers int(11) DEFAULT '0' NOT NULL
 );
 
 #######################################################################################################################
@@ -555,34 +218,8 @@ CREATE TABLE tx_irretutorial_mnmmasym_price (
 # Table structure for table 'tx_irretutorial_mnsym_hotel'
 #
 CREATE TABLE tx_irretutorial_mnsym_hotel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       branches int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       branches int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -591,35 +228,10 @@ CREATE TABLE tx_irretutorial_mnsym_hotel (
 # Table structure for table 'tx_irretutorial_mnsym_hotel_rel'
 #
 CREATE TABLE tx_irretutorial_mnsym_hotel_rel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        hotelid int(11) DEFAULT '0' NOT NULL,
        branchid int(11) DEFAULT '0' NOT NULL,
        hotelsort int(10) DEFAULT '0' NOT NULL,
-       branchsort int(10) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       branchsort int(10) DEFAULT '0' NOT NULL
 );
 
 #######################################################################################################################
@@ -630,34 +242,8 @@ CREATE TABLE tx_irretutorial_mnsym_hotel_rel (
 # Table structure for table 'tx_irretutorial_mnattr_hotel'
 #
 CREATE TABLE tx_irretutorial_mnattr_hotel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       offers int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       offers int(11) DEFAULT '0' NOT NULL
 );
 
 
@@ -666,37 +252,12 @@ CREATE TABLE tx_irretutorial_mnattr_hotel (
 # Table structure for table 'tx_irretutorial_mnattr_hotel_offer_rel'
 #
 CREATE TABLE tx_irretutorial_mnattr_hotel_offer_rel (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        hotelid int(11) DEFAULT '0' NOT NULL,
        offerid int(11) DEFAULT '0' NOT NULL,
        hotelsort int(10) DEFAULT '0' NOT NULL,
        offersort int(10) DEFAULT '0' NOT NULL,
        quality tinyint(4) DEFAULT '0' NOT NULL,
-       allincl tinyint(4) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       allincl tinyint(4) DEFAULT '0' NOT NULL
 );
 
 
@@ -705,32 +266,6 @@ CREATE TABLE tx_irretutorial_mnattr_hotel_offer_rel (
 # Table structure for table 'tx_irretutorial_mnattr_offer'
 #
 CREATE TABLE tx_irretutorial_mnattr_offer (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
-       hotels int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       hotels int(11) DEFAULT '0' NOT NULL
 );
index 303d87c..4c1e704 100644 (file)
@@ -12,31 +12,5 @@ CREATE TABLE tt_content (
 # Table structure for table 'tx_testdatahandler_element'
 #
 CREATE TABLE tx_testdatahandler_element (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l10n_parent int(11) DEFAULT '0' NOT NULL,
-       l10n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
-       title tinytext NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       title tinytext NOT NULL
 );
diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/DefaultTcaSchemaTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/DefaultTcaSchemaTest.php
new file mode 100644 (file)
index 0000000..6459f65
--- /dev/null
@@ -0,0 +1,840 @@
+<?php
+declare(strict_types = 1);
+
+namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use Doctrine\DBAL\Schema\Column;
+use Doctrine\DBAL\Schema\Index;
+use Doctrine\DBAL\Schema\SchemaException;
+use Doctrine\DBAL\Schema\Table;
+use Doctrine\DBAL\Types\Type;
+use TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema;
+use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
+
+/**
+ * Test case
+ */
+class DefaultTcaSchemaTest extends UnitTestCase
+{
+    /**
+     * @test
+     */
+    public function enrichKeepsGivenTablesArrayWithEmptyTca()
+    {
+        $GLOBALS['TCA'] = [];
+        $this->assertEquals([], (new DefaultTcaSchema())->enrich([]));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichDoesNotAddColumnIfExists()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [];
+
+        $table = new Table('aTable');
+        $table->addColumn('uid', 'integer');
+        $table->addColumn('pid', 'integer');
+        $input[] = $table;
+
+        $table = new Table('aTable');
+        $table->addColumn('uid', 'integer');
+        $table->addColumn('pid', 'integer');
+        $expected[] = $table;
+
+        $this->assertEquals($expected, (new DefaultTcaSchema())->enrich($input));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichDoesNotAddColumnIfTableExistsMultipleTimesAndUidExists()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [];
+
+        $table = new Table('aTable');
+        $table->addColumn('foo', 'integer');
+        $input[] = $table;
+        $table = new Table('aTable');
+        $table->addColumn('uid', 'integer');
+        $table->addColumn('pid', 'integer');
+        $input[] = $table;
+
+        $table = new Table('aTable');
+        $table->addColumn('foo', 'integer');
+        $expected[] = $table;
+        $table = new Table('aTable');
+        $table->addColumn('uid', 'integer');
+        $table->addColumn('pid', 'integer');
+        $expected[] = $table;
+
+        $this->assertEquals($expected, (new DefaultTcaSchema())->enrich($input));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsFieldToFirstTableDefinitionOfThatName()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [];
+
+        $table = new Table('aTable');
+        $table->addColumn('foo', 'integer');
+        $input[] = $table;
+        $table = new Table('aTable');
+        $table->addColumn('bar', 'integer');
+        $input[] = $table;
+
+        $result = (new DefaultTcaSchema())->enrich($input);
+
+        $this->assertInstanceOf(Column::class, $result[0]->getColumn('uid'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsUidAndPrimaryKey()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedUidColumn = new Column(
+            'uid',
+            Type::getType('integer'),
+            [
+                'notnull' => true,
+                'unsigned' => true,
+                'autoincrement' => true,
+            ]
+        );
+        $expectedPrimaryKey = new Index('primary', ['uid'], true, true);
+        $this->assertEquals($expectedUidColumn, $result[0]->getColumn('uid'));
+        $this->assertEquals($expectedPrimaryKey, $result[0]->getPrimaryKey());
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsPid()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedPidColumn = new Column(
+            'pid',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedPidColumn, $result[0]->getColumn('pid'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsSignedPidWithEnabledWorkspace()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedPidColumn = new Column(
+            'pid',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => false,
+            ]
+        );
+        $this->assertEquals($expectedPidColumn, $result[0]->getColumn('pid'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsTstamp()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'tstamp' => 'updatedon',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'updatedon',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('updatedon'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsCrdate()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'crdate' => 'createdon',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'createdon',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('createdon'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsCruserid()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'cruser_id' => 'createdby',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'createdby',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('createdby'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsDeleted()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'delete' => 'deleted',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'deleted',
+            Type::getType('smallint'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('deleted'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsDisabled()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'enablecolumns' => [
+                'disabled' => 'disabled',
+            ]
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'disabled',
+            Type::getType('smallint'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('disabled'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsStarttime()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'enablecolumns' => [
+                'starttime' => 'starttime',
+            ]
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'starttime',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('starttime'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsEndtime()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'enablecolumns' => [
+                'endtime' => 'endtime',
+            ]
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'endtime',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('endtime'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsFegroup()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'enablecolumns' => [
+                'fe_group' => 'fe_group',
+            ]
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'fe_group',
+            Type::getType('string'),
+            [
+                'default' => '0',
+                'notnull' => true,
+                'length' => 255,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('fe_group'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsSorting()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'sortby' => 'sorting',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'sorting',
+            Type::getType('integer'),
+            [
+                'default' => '0',
+                'notnull' => true,
+                'unsigned' => false,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('sorting'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsParentKey()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedIndex = new Index('parent', ['pid']);
+        $this->assertEquals($expectedIndex, $result[0]->getIndex('parent'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsParentKeyWithDelete()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'delete' => 'deleted',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedIndex = new Index('parent', ['pid', 'deleted']);
+        $this->assertEquals($expectedIndex, $result[0]->getIndex('parent'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsParentKeyWithDisabled()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'enablecolumns' => [
+                'disabled' => 'disabled',
+            ],
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedIndex = new Index('parent', ['pid', 'disabled']);
+        $this->assertEquals($expectedIndex, $result[0]->getIndex('parent'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsParentKeyInCorrectOrder()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'delete' => 'deleted',
+            'enablecolumns' => [
+                'disabled' => 'disabled',
+            ],
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedIndex = new Index('parent', ['pid', 'deleted', 'disabled']);
+        $this->assertEquals($expectedIndex, $result[0]->getIndex('parent'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsSysLanguageUid()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'languageField' => 'sys_language_uid',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'sys_language_uid',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => false,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('sys_language_uid'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsL10nParent()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'languageField' => 'sys_language_uid',
+            'transOrigPointerField' => 'l10n_parent',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'l10n_parent',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('l10n_parent'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichDoesNotAddL10nParentIfLanguageFieldIsNotDefined()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'transOrigPointerField' => 'l10n_parent',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $this->expectException(SchemaException::class);
+        $result[0]->getColumn('l10n_parent');
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsDescription()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'descriptionColumn' => 'description',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'description',
+            Type::getType('text'),
+            [
+                'notnull' => false,
+                'length' => 65535,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('description'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsEditlock()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'editlock' => 'editlock'
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'editlock',
+            Type::getType('smallint'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('editlock'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsL10nSource()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'languageField' => 'sys_language_uid',
+            'translationSource' => 'l10n_source',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'l10n_source',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('l10n_source'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichDoesNotAddL10nSourceIfLanguageFieldIsNotDefined()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'translationSource' => 'l10n_source',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $this->expectException(SchemaException::class);
+        $result[0]->getColumn('l10n_source');
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsL10nState()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'languageField' => 'sys_language_uid',
+            'transOrigPointerField' => 'l10n_parent',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'l10n_state',
+            Type::getType('text'),
+            [
+                'notnull' => false,
+                'length' => 65535,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('l10n_state'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichDoesNotAddL10nStateIfLanguageFieldIsNotDefined()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'transOrigPointerField' => 'l10n_parent',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $this->expectException(SchemaException::class);
+        $result[0]->getColumn('l10n_state');
+    }
+
+    /**
+     * @test
+     */
+    public function enrichDoesNotAddL10nStateIfTransOrigPointerFieldIsNotDefined()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'languageField' => 'sys_language_uid',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $this->expectException(SchemaException::class);
+        $result[0]->getColumn('l10n_state');
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3origUid()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'origUid' => 't3_origuid',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3_origuid',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3_origuid'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsL10nDiffsource()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'transOrigDiffSourceField' => 'l18n_diffsource',
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            'l18n_diffsource',
+            Type::getType('blob'),
+            [
+                'length' => 16777215,
+                'notnull' => false,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('l18n_diffsource'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verOid()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_oid',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_oid'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verId()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_id',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_id'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verLabel()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_label',
+            Type::getType('string'),
+            [
+                'default' => '',
+                'notnull' => true,
+                'length' => 255,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_label'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verWsid()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_wsid',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_wsid'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verState()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_state',
+            Type::getType('smallint'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => false,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_state'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verStage()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_stage',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_stage'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verCount()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_count',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_count'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verTstamp()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_tstamp',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_tstamp'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verMoveId()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedColumn = new Column(
+            't3ver_move_id',
+            Type::getType('integer'),
+            [
+                'default' => 0,
+                'notnull' => true,
+                'unsigned' => true,
+            ]
+        );
+        $this->assertEquals($expectedColumn, $result[0]->getColumn('t3ver_move_id'));
+    }
+
+    /**
+     * @test
+     */
+    public function enrichAddsT3verOidIndex()
+    {
+        $GLOBALS['TCA']['aTable']['ctrl'] = [
+            'versioningWS' => true,
+        ];
+        $result = (new DefaultTcaSchema())->enrich([]);
+        $expectedIndex = new Index('t3ver_oid', ['t3ver_oid', 't3ver_wsid']);
+        $this->assertEquals($expectedIndex, $result[0]->getIndex('t3ver_oid'));
+    }
+}
index c0bcae5..70a86c3 100644 (file)
@@ -72,12 +72,6 @@ $signalSlotDispatcher->connect(
 $signalSlotDispatcher->connect(
     'TYPO3\\CMS\\Install\\Service\\SqlExpectedSchemaService',
     'tablesDefinitionIsBeingBuilt',
-    \TYPO3\CMS\Core\DataHandling\DatabaseSchemaService::class,
-    'getLocalizationRequiredDatabaseSchema'
-);
-$signalSlotDispatcher->connect(
-    'TYPO3\\CMS\\Install\\Service\\SqlExpectedSchemaService',
-    'tablesDefinitionIsBeingBuilt',
     \TYPO3\CMS\Core\Cache\DatabaseSchemaService::class,
     'addCachingFrameworkRequiredDatabaseSchemaForSqlExpectedSchemaService'
 );
@@ -87,12 +81,6 @@ $signalSlotDispatcher->connect(
     \TYPO3\CMS\Core\Category\CategoryRegistry::class,
     'addCategoryDatabaseSchemaToTablesDefinition'
 );
-$signalSlotDispatcher->connect(
-    \TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class,
-    'tablesDefinitionIsBeingBuilt',
-    \TYPO3\CMS\Core\DataHandling\DatabaseSchemaService::class,
-    'getLocalizationRequiredDatabaseSchemaForExtension'
-);
 
 unset($signalSlotDispatcher);
 
index 016dab2..95742f8 100644 (file)
@@ -2,9 +2,6 @@
 # Table structure for table 'be_groups'
 #
 CREATE TABLE be_groups (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned DEFAULT '0' NOT NULL,
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
        title varchar(50) DEFAULT '' NOT NULL,
        non_exclude_fields text,
        explicit_allowdeny text,
@@ -14,21 +11,14 @@ CREATE TABLE be_groups (
        pagetypes_select varchar(255) DEFAULT '' NOT NULL,
        tables_select text,
        tables_modify text,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
        groupMods text,
        file_mountpoints text,
        file_permissions text,
-       hidden tinyint(1) unsigned DEFAULT '0' NOT NULL,
-       description varchar(2000) DEFAULT '' NOT NULL,
        lockToDomain varchar(50) DEFAULT '' NOT NULL,
-       deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
        TSconfig text,
        subgroup text,
        workspace_perms tinyint(3) DEFAULT '1' NOT NULL,
-       category_perms text,
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       category_perms text
 );
 
 #
@@ -49,24 +39,15 @@ CREATE TABLE be_sessions (
 # Table structure for table 'be_users'
 #
 CREATE TABLE be_users (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned DEFAULT '0' NOT NULL,
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
        username varchar(50) DEFAULT '' NOT NULL,
-       description varchar(2000) DEFAULT '' NOT NULL,
        avatar int(11) unsigned NOT NULL default '0',
        password varchar(100) DEFAULT '' NOT NULL,
        admin tinyint(4) unsigned DEFAULT '0' NOT NULL,
        usergroup varchar(255) DEFAULT '' NOT NULL,
-       disable tinyint(1) unsigned DEFAULT '0' NOT NULL,
-       starttime int(11) unsigned DEFAULT '0' NOT NULL,
-       endtime int(11) unsigned DEFAULT '0' NOT NULL,
        lang varchar(6) DEFAULT '' NOT NULL,
        email varchar(255) DEFAULT '' NOT NULL,
        db_mountpoints text,
        options tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
        realName varchar(80) DEFAULT '' NOT NULL,
        userMods text,
        allowed_languages varchar(255) DEFAULT '' NOT NULL,
@@ -76,15 +57,12 @@ CREATE TABLE be_users (
        workspace_perms tinyint(3) DEFAULT '1' NOT NULL,
        lockToDomain varchar(50) DEFAULT '' NOT NULL,
        disableIPlock tinyint(1) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
        TSconfig text,
        lastlogin int(10) unsigned DEFAULT '0' NOT NULL,
        createdByAction int(11) DEFAULT '0' NOT NULL,
        usergroup_cached_list text,
        workspace_id int(11) DEFAULT '0' NOT NULL,
        category_perms text,
-       PRIMARY KEY (uid),
-       KEY parent (pid),
        KEY username (username)
 );
 
@@ -92,45 +70,19 @@ CREATE TABLE be_users (
 # Table structure for table 'pages'
 #
 CREATE TABLE pages (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) 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,
-       sorting int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
        perms_userid int(11) unsigned DEFAULT '0' NOT NULL,
        perms_groupid int(11) unsigned DEFAULT '0' NOT NULL,
        perms_user tinyint(4) unsigned DEFAULT '0' NOT NULL,
        perms_group tinyint(4) unsigned DEFAULT '0' NOT NULL,
        perms_everybody tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       editlock tinyint(4) 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,
-       l10n_parent int(11) DEFAULT '0' NOT NULL,
-       l10n_source int(11) DEFAULT '0' NOT NULL,
-       l10n_diffsource mediumblob,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
        title varchar(255) DEFAULT '' NOT NULL,
        doktype int(11) unsigned DEFAULT '0' NOT NULL,
        TSconfig text,
        is_siteroot tinyint(4) DEFAULT '0' NOT NULL,
        php_tree_stop tinyint(4) DEFAULT '0' NOT NULL,
        url varchar(255) DEFAULT '' NOT NULL,
-       starttime int(11) unsigned DEFAULT '0' NOT NULL,
-       endtime int(11) unsigned DEFAULT '0' NOT NULL,
        shortcut int(10) unsigned DEFAULT '0' NOT NULL,
        shortcut_mode int(10) unsigned DEFAULT '0' NOT NULL,
-       fe_group varchar(100) DEFAULT '0' NOT NULL,
        subtitle varchar(255) DEFAULT '' NOT NULL,
        layout int(11) unsigned DEFAULT '0' NOT NULL,
        target varchar(80) DEFAULT '' NOT NULL,
@@ -170,9 +122,6 @@ CREATE TABLE pages (
        twitter_description text,
        twitter_image int(11) unsigned DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid),
-       KEY parent (pid,deleted,sorting),
        KEY alias (alias),
        KEY determineSiteRoot (is_siteroot),
        KEY language_identifier (l10n_parent,sys_language_uid)
@@ -210,20 +159,8 @@ CREATE TABLE sys_be_shortcuts (
 # Table structure for table 'sys_news'
 #
 CREATE TABLE sys_news (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned 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,
-       deleted tinyint(3) unsigned DEFAULT '0' 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,
        title varchar(255) DEFAULT '' NOT NULL,
-       content mediumtext,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       content mediumtext
 );
 
 
@@ -231,19 +168,10 @@ CREATE TABLE sys_news (
 # Table structure for table 'sys_filemounts'
 #
 CREATE TABLE sys_filemounts (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned DEFAULT '0' NOT NULL,
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
        title varchar(255) DEFAULT '' NOT NULL,
-       description varchar(2000) DEFAULT '' NOT NULL,
        path varchar(255) DEFAULT '' NOT NULL,
        base int(11) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(3) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
-       sorting int(11) unsigned DEFAULT '0' NOT NULL,
-       read_only tinyint(1) unsigned DEFAULT '0' NOT NULL,
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       read_only tinyint(1) unsigned DEFAULT '0' NOT NULL
 );
 
 
@@ -251,15 +179,7 @@ CREATE TABLE sys_filemounts (
 # Table structure for table 'sys_file_storage'
 #
 CREATE TABLE sys_file_storage (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-
        name varchar(30) DEFAULT '' NOT NULL,
-       description text,
        driver tinytext,
        configuration text,
        is_default tinyint(4) DEFAULT '0' NOT NULL,
@@ -268,20 +188,13 @@ CREATE TABLE sys_file_storage (
        is_writable tinyint(4) DEFAULT '0' NOT NULL,
        is_online tinyint(4) DEFAULT '1' NOT NULL,
        auto_extract_metadata tinyint(4) DEFAULT '1' NOT NULL,
-       processingfolder tinytext,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid,deleted)
+       processingfolder tinytext
 );
 
 #
 # Table structure for table 'sys_file'
 #
 CREATE TABLE sys_file (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       # update timestamp of the database record, not the file!
-       tstamp int(11) DEFAULT '0' NOT NULL,
        last_indexed int(11) DEFAULT '0' NOT NULL,
 
        # management information
@@ -302,7 +215,6 @@ CREATE TABLE sys_file (
        creation_date int(11) DEFAULT '0' NOT NULL,
        modification_date int(11) DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
        KEY sel01 (storage,identifier_hash),
        KEY folder (storage,folder_hash),
        KEY tstamp (tstamp),
@@ -314,29 +226,6 @@ CREATE TABLE sys_file (
 # Table structure for table 'sys_file_metadata'
 #
 CREATE TABLE sys_file_metadata (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-
-       # Language fields
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l10n_parent int(11) DEFAULT '0' NOT NULL,
-       l10n_diffsource mediumblob,
-
-       # Versioning fields
-       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(30) 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,
-
        file int(11) DEFAULT '0' NOT NULL,
        title tinytext,
        width int(11) DEFAULT '0' NOT NULL,
@@ -344,9 +233,7 @@ CREATE TABLE sys_file_metadata (
        description text,
        alternative text,
 
-       PRIMARY KEY (uid),
        KEY file (file),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid),
        KEY fal_filelist (l10n_parent,sys_language_uid)
 );
 
@@ -384,31 +271,6 @@ CREATE TABLE sys_file_processedfile (
 # which is one usage of a file with overloaded metadata
 #
 CREATE TABLE sys_file_reference (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) DEFAULT '0' NOT NULL,
-
-       # Versioning fields
-       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(30) 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,
-
-       # Language fields
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l10n_parent int(11) DEFAULT '0' NOT NULL,
-       l10n_diffsource mediumblob,
-
        # Reference fields (basically same as MM table)
        uid_local int(11) DEFAULT '0' NOT NULL,
        uid_foreign int(11) DEFAULT '0' NOT NULL,
@@ -425,8 +287,6 @@ CREATE TABLE sys_file_reference (
        crop varchar(4000) DEFAULT '' NOT NULL,
        autoplay tinyint(4) DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
-       KEY parent (pid,deleted),
        KEY tablenames_fieldname (tablenames(32),fieldname(12)),
        KEY deleted (deleted),
        KEY uid_local (uid_local),
@@ -439,32 +299,7 @@ CREATE TABLE sys_file_reference (
 # Table structure for table 'sys_file_collection'
 #
 CREATE TABLE sys_file_collection (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) 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(30) 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,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l10n_parent int(11) DEFAULT '0' NOT NULL,
-       l10n_diffsource mediumtext,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) DEFAULT '0' NOT NULL,
-       starttime int(11) DEFAULT '0' NOT NULL,
-       endtime int(11) DEFAULT '0' NOT NULL,
-
-       # Actual fields
        title tinytext,
-       description text,
        type varchar(30) DEFAULT 'static' NOT NULL,
 
        # for type=static
@@ -476,50 +311,17 @@ CREATE TABLE sys_file_collection (
        recursive tinyint(4) DEFAULT '0' NOT NULL,
 
        # for type=category:
-       category int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid,deleted),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid)
+       category int(11) DEFAULT '0' NOT NULL
 );
 
 #
 # Table structure for table 'sys_collection'
 #
 CREATE TABLE sys_collection (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) 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(30) 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,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l10n_parent int(11) DEFAULT '0' NOT NULL,
-       l10n_diffsource mediumtext,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) DEFAULT '0' NOT NULL,
-       starttime int(11) DEFAULT '0' NOT NULL,
-       endtime int(11) DEFAULT '0' NOT NULL,
-       fe_group varchar(100) DEFAULT '0' NOT NULL,
-
        title tinytext,
-       description text,
        type varchar(32) DEFAULT 'static' NOT NULL,
        table_name tinytext,
-       items int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid,deleted),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid)
+       items int(11) DEFAULT '0' NOT NULL
 );
 
 #
@@ -541,20 +343,15 @@ CREATE TABLE sys_collection_entries (
 # Table structure for table 'sys_history'
 #
 CREATE TABLE sys_history (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned DEFAULT '0' NOT NULL,
        actiontype tinyint(3) DEFAULT '0' NOT NULL,
        usertype varchar(2) DEFAULT 'BE' NOT NULL,
        userid int(11) unsigned,
        originaluserid int(11) unsigned,
        recuid int(11) DEFAULT '0' NOT NULL,
        tablename varchar(255) DEFAULT '' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
        history_data mediumtext,
        workspace int(11) DEFAULT '0',
 
-       PRIMARY KEY (uid),
-       KEY parent (pid),
        KEY recordident_1 (tablename,recuid),
        KEY recordident_2 (tablename,tstamp)
 ) ENGINE=InnoDB;
@@ -603,8 +400,6 @@ CREATE TABLE sys_refindex (
 # Table structure for table 'sys_log'
 #
 CREATE TABLE sys_log (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned DEFAULT '0' NOT NULL,
        userid int(11) unsigned DEFAULT '0' NOT NULL,
        action tinyint(4) unsigned DEFAULT '0' NOT NULL,
        recuid int(11) unsigned DEFAULT '0' NOT NULL,
@@ -612,7 +407,6 @@ CREATE TABLE sys_log (
        recpid int(11) DEFAULT '0' NOT NULL,
        error tinyint(4) unsigned DEFAULT '0' NOT NULL,
        details text,
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
        type tinyint(3) unsigned DEFAULT '0' NOT NULL,
        details_nr tinyint(3) DEFAULT '0' NOT NULL,
        IP varchar(39) DEFAULT '' NOT NULL,
@@ -626,8 +420,6 @@ CREATE TABLE sys_log (
        level tinyint(1) unsigned DEFAULT '0' NOT NULL,
        message text,
        data text,
-       PRIMARY KEY (uid),
-       KEY parent (pid),
        KEY event (userid,event_pid),
        KEY recuidIdx (recuid),
        KEY user_auth (type,action,tstamp),
@@ -639,56 +431,20 @@ CREATE TABLE sys_log (
 # Table structure for table 'sys_language'
 #
 CREATE TABLE sys_language (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned DEFAULT '0' NOT NULL,
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
        title varchar(80) DEFAULT '' NOT NULL,
        flag varchar(20) DEFAULT '' NOT NULL,
        language_isocode varchar(2) DEFAULT '' NOT NULL,
-       static_lang_isocode int(11) unsigned DEFAULT '0' NOT NULL,
-       sorting int(11) unsigned DEFAULT '0' NOT NULL,
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       static_lang_isocode int(11) unsigned DEFAULT '0' NOT NULL
 );
 
 #
 # Table structure for table 'sys_category'
 #
 CREATE TABLE sys_category (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) DEFAULT '0' NOT NULL,
-       starttime int(11) unsigned DEFAULT '0' NOT NULL,
-       endtime 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(30) 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,
-       sorting int(11) unsigned DEFAULT '0' NOT NULL,
-
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l10n_parent int(11) DEFAULT '0' NOT NULL,
-       l10n_diffsource mediumblob,
-
        title tinytext NOT NULL,
-       description text,
        parent int(11) DEFAULT '0' NOT NULL,
        items int(11) DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid),
        KEY category_parent (parent),
        KEY category_list (pid,deleted,sys_language_uid)
 );
index 4f17b5e..106b552 100644 (file)
@@ -13,6 +13,7 @@ return [
         'transOrigPointerField' => 'l18n_parent',
         'transOrigDiffSourceField' => 'l18n_diffsource',
         'delete'   => 'deleted',
+        'sortby' => 'sorting',
         'enablecolumns'  => [
             'disabled' => 'hidden'
         ],
index 7794b40..7a11bbf 100644 (file)
@@ -2,50 +2,19 @@
 # Table structure for table 'tx_blogexample_domain_model_blog'
 #
 CREATE TABLE tx_blogexample_domain_model_blog (
-       uid int(11) unsigned DEFAULT '0' NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-
        title varchar(255) DEFAULT '' NOT NULL,
        subtitle varchar(255) DEFAULT '',
        description text NOT NULL,
        logo tinyblob NOT NULL,
        administrator int(11) DEFAULT '0' NOT NULL,
 
-       posts varchar(255) DEFAULT '' NOT NULL,
-
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       fe_group varchar(100) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid)
+       posts varchar(255) DEFAULT '' NOT NULL
 );
 
 #
 # Table structure for table 'tx_blogexample_domain_model_post'
 #
 CREATE TABLE tx_blogexample_domain_model_post (
-       uid int(11) unsigned DEFAULT '0' NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-
        blog int(11) DEFAULT '0' NOT NULL,
 
        title varchar(255) DEFAULT '' NOT NULL,
@@ -55,112 +24,38 @@ CREATE TABLE tx_blogexample_domain_model_post (
        content text NOT NULL,
        tags int(11) unsigned DEFAULT '0' NOT NULL,
        comments int(11) unsigned DEFAULT '0' NOT NULL,
-       related_posts int(11) unsigned DEFAULT '0' NOT NULL,
-
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       sorting tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid)
+       related_posts int(11) unsigned DEFAULT '0' NOT NULL
 );
 
 #
 # Table structure for table 'tx_blogexample_domain_model_comment'
 #
 CREATE TABLE tx_blogexample_domain_model_comment (
-       uid int(11) unsigned DEFAULT '0' NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-
        post int(11) DEFAULT '0' NOT NULL,
 
        date datetime,
        author varchar(255) DEFAULT '' NOT NULL,
        email varchar(255) DEFAULT '' NOT NULL,
-       content text NOT NULL,
-
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       content text NOT NULL
 );
 
 #
 # Table structure for table 'tx_blogexample_domain_model_person'
 #
 CREATE TABLE tx_blogexample_domain_model_person (
-       uid int(11) unsigned DEFAULT '0' NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-
        firstname varchar(255) DEFAULT '' NOT NULL,
        lastname varchar(255) DEFAULT '' NOT NULL,
        email varchar(255) DEFAULT '' NOT NULL,
        tags int(11) unsigned DEFAULT '0' NOT NULL,
-       tags_special int(11) unsigned DEFAULT '0' NOT NULL,
-
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid)
+       tags_special int(11) unsigned DEFAULT '0' NOT NULL
 );
 
 #
 # Table structure for table 'tx_blogexample_domain_model_tag'
 #
 CREATE TABLE tx_blogexample_domain_model_tag (
-       uid int(11) unsigned DEFAULT '0' NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-
        name varchar(255) DEFAULT '' NOT NULL,
-       posts int(11) unsigned DEFAULT '0' NOT NULL,
-
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       posts int(11) unsigned DEFAULT '0' NOT NULL
 );
 
 #
@@ -208,19 +103,7 @@ CREATE TABLE tx_blogexample_post_post_mm (
 # Table structure for table 'tx_blogexample_domain_model_dateexample'
 #
 CREATE TABLE tx_blogexample_domain_model_dateexample (
-       uid int(11) unsigned DEFAULT '0' NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-
        datetime_int int(11) DEFAULT '0' NOT NULL,
        datetime_text varchar(255) DEFAULT '' NOT NULL,
-       datetime_datetime datetime,
-
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       datetime_datetime datetime
 );
index 79714c7..a1eb9ef 100644 (file)
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Extbase\Tests\Functional\Persistence;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\Response;
 
@@ -25,7 +26,7 @@ use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\Response;
  *
  * This test documents current behaviour of extbase which is inconsistent with TypoScript rendering of tt_content.
  */
-class TranslatedContentTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase
+class TranslatedContentTest extends AbstractDataHandlerActionTestCase
 {
     const VALUE_PageId = 89;
     const TABLE_Content = 'tt_content';
index 5a8db9a..f9c48c1 100644 (file)
@@ -170,7 +170,7 @@ class ActionController extends AbstractController
         $registry = GeneralUtility::makeInstance(Registry::class);
         $registry->remove('extensionDataImport', $registryKey);
 
-        $this->installUtility->processDatabaseUpdates($extension);
+        $this->installUtility->importStaticSqlFile($extension['siteRelPath']);
 
         $this->redirect('index', 'List');
     }
index b176edc..1c665b2 100644 (file)
@@ -360,7 +360,7 @@ class InstallUtility implements \TYPO3\CMS\Core\SingletonInterface
         }
         if ($extTablesSqlContent !== '') {
             try {
-                $this->updateDbWithExtTablesSql($extTablesSqlContent);
+                $this->updateDbWithExtTablesSql();
             } catch (\TYPO3\CMS\Core\Database\Schema\Exception\StatementException $e) {
                 throw new ExtensionManagerException(
                     $e->getMessage(),
@@ -449,13 +449,18 @@ class InstallUtility implements \TYPO3\CMS\Core\SingletonInterface
      *
      * @param string $rawDefinitions The raw SQL statements from ext_tables.sql
      */
-    public function updateDbWithExtTablesSql($rawDefinitions)
+    public function updateDbWithExtTablesSql($rawDefinitions = null)
     {
         $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
-        $statements = $sqlReader->getCreateTableStatementArray($rawDefinitions);
+        if ($rawDefinitions !== null) {
+            $statements = $sqlReader->getCreateTableStatementArray($rawDefinitions);
+        } else {
+            // Read all ext_tables.sql files including new loaded extension
+            $statements = $sqlReader->getCreateTableStatementArray($sqlReader->getTablesDefinitionString());
+        }
         if (count($statements) !== 0) {
             $schemaMigrationService = GeneralUtility::makeInstance(SchemaMigrator::class);
-            $schemaMigrationService->install($statements);
+            $schemaMigrationService->install($statements, true);
         }
     }
 
@@ -601,7 +606,7 @@ class InstallUtility implements \TYPO3\CMS\Core\SingletonInterface
      *
      * @param string $extensionSiteRelPath
      */
-    protected function importStaticSqlFile($extensionSiteRelPath)
+    public function importStaticSqlFile($extensionSiteRelPath)
     {
         $extTablesStaticSqlRelFile = $extensionSiteRelPath . 'ext_tables_static+adt.sql';
         if (!$this->registry->get('extensionDataImport', $extTablesStaticSqlRelFile)) {
index 0aa6278..2419052 100644 (file)
@@ -223,12 +223,12 @@ class InstallUtilityTest extends UnitTestCase
     /**
      * @test
      */
-    public function processDatabaseUpdatesCallsUpdateDbWithExtTablesSql()
+    public function processDatabaseUpdatesCallsUpdateDb()
     {
         $extKey = $this->createFakeExtension();
         $extPath = PATH_site . 'typo3temp/var/tests/' . $extKey . '/';
         $extTablesFile = $extPath . 'ext_tables.sql';
-        $fileContent = 'DUMMY TEXT TO COMPARE';
+        $fileContent = 'DUMMY TEXT';
         file_put_contents($extTablesFile, $fileContent);
         $installMock = $this->getAccessibleMock(
             InstallUtility::class,
@@ -240,7 +240,7 @@ class InstallUtilityTest extends UnitTestCase
         $dependencyUtility = $this->getMockBuilder(DependencyUtility::class)->getMock();
         $installMock->_set('dependencyUtility', $dependencyUtility);
 
-        $installMock->expects($this->once())->method('updateDbWithExtTablesSql')->with($this->stringStartsWith($fileContent));
+        $installMock->expects($this->once())->method('updateDbWithExtTablesSql');
         $installMock->processDatabaseUpdates($this->fakedExtensions[$extKey]);
     }
 
index 7890ae7..295145e 100644 (file)
@@ -2,23 +2,18 @@
 # Table structure for table 'tx_extensionmanager_domain_model_repository'
 #
 CREATE TABLE tx_extensionmanager_domain_model_repository (
-  uid int(11) unsigned NOT NULL auto_increment,
-  pid int(11) unsigned DEFAULT '0' NOT NULL,
   title varchar(150) NOT NULL default '',
   description mediumtext,
   wsdl_url varchar(100) NOT NULL default '',
   mirror_list_url varchar(100) NOT NULL default '',
   last_update int(11) unsigned DEFAULT '0' NOT NULL,
-  extension_count int(11) DEFAULT '0' NOT NULL,
-  PRIMARY KEY (uid)
+  extension_count int(11) DEFAULT '0' NOT NULL
 );
 
 #
 # Table structure for table 'tx_extensionmanager_domain_model_extension'
 #
 CREATE TABLE tx_extensionmanager_domain_model_extension (
-  uid int(11) NOT NULL auto_increment,
-  pid int(11) unsigned DEFAULT '0' NOT NULL,
   extension_key varchar(60) NOT NULL default '',
   repository int(11) unsigned NOT NULL default '1',
   version varchar(15) NOT NULL default '',
@@ -40,7 +35,7 @@ CREATE TABLE tx_extensionmanager_domain_model_extension (
   integer_version int(11) NOT NULL default '0',
   current_version int(3) NOT NULL default '0',
   lastreviewedversion int(3) NOT NULL default '0',
-  PRIMARY KEY (uid),
+
   KEY index_extrepo (extension_key,repository),
   KEY index_versionrepo (integer_version,repository,extension_key),
   KEY index_currentversions (current_version,review_state),
index 38187c1..beec4a3 100644 (file)
@@ -11,7 +11,8 @@ CREATE TABLE tx_extensionmanager_domain_model_repository (
   mirror_list_url varchar(100) NOT NULL default '',
   last_update int(11) unsigned DEFAULT '0' NOT NULL,
   extension_count int(11) DEFAULT '0' NOT NULL,
-  PRIMARY KEY (uid)
+  PRIMARY KEY (uid),
+  KEY parent (pid)
 );
 
 INSERT INTO tx_extensionmanager_domain_model_repository (title, description, wsdl_url, mirror_list_url, last_update) VALUES ('TYPO3.org Main Repository', 'Main repository on typo3.org. This repository has some mirrors configured which are available with the mirror url.', 'https://typo3.org/wsdl/tx_ter_wsdl.php', 'https://repositories.typo3.org/mirrors.xml.gz', '1346191200');
index 13c98dc..13e5e8c 100644 (file)
@@ -1,41 +1,41 @@
-"sys_language",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","hidden","title","flag",,,,,,,,,,,,,,,,,,
-,1,0,0,"Dansk","dk",,,,,,,,,,,,,,,,,,
-,2,0,0,"Deutsch","de",,,,,,,,,,,,,,,,,,
-,3,0,0,"Polski","pl",,,,,,,,,,,,,,,,,,
-"tt_content",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","header","image","sorting","deleted","hidden","sys_language_uid","l18n_parent","l10n_source","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id",,,,,,,
-,297,89,"Regular Element #1",1,256,0,0,0,0,0,0,0,0,0,0,0,,,,,,,
-,298,89,"Regular Element #2",1,512,0,0,0,0,0,0,0,0,0,0,0,,,,,,,
-,299,89,"Regular Element #3",0,768,0,0,0,0,0,0,0,0,0,0,0,,,,,,,
-,300,89,"[Translate to Dansk:] Regular Element #3",2,1024,0,0,1,299,299,299,0,0,0,0,0,,,,,,,
-,301,89,"[Translate to Dansk:] Regular Element #1",0,384,0,0,1,297,297,297,0,0,0,0,0,,,,,,,
-,302,89,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",1,448,0,0,2,297,301,301,0,0,0,0,0,,,,,,,
-,303,89,"[DK] Without default language",1,1250,0,0,1,0,0,0,0,0,0,0,0,,,,,,,
-,304,89,"[DE] Without default language",0,1250,0,0,2,0,0,0,0,0,0,0,0,,,,,,,
-,305,89,"[Translate to Polski:] Regular Element #1",0,512,0,0,3,297,297,297,0,0,0,0,0,,,,,,,
-,306,89,"[PL] Without default language",0,1024,0,0,3,0,0,0,0,0,0,0,0,,,,,,,
-,307,89,"Hidden Element #4",0,128,0,1,0,0,0,0,0,0,0,0,0,,,,,,,
-,308,89,"[DK] UnHidden Element #4",0,128,0,0,1,307,307,307,0,0,0,0,0,,,,,,,
-,309,89,"[PL] Hidden Regular Element #2",0,512,0,1,3,298,298,298,0,0,0,0,0,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,
-"sys_file",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","type","storage","identifier","extension","mime_type","name","sha1","size","creation_date","modification_date","missing","metadata","identifier_hash","folder_hash","last_indexed",,,,,,
-,1,0,2,1,"/user_upload/kasper-skarhoj1.jpg","jpg","image/jpeg","kasper-skarhoj1.jpg","05d8c6dda534a0b9e7023c3031e60e4b49c3da40",39037,1375080761,1374139442,0,0,"a58963e60a4fcc31d1a869184a2d5d929dd27c8a","19669f1e02c2f16705ec7587044c66443be70725",0,,,,,,
-,21,0,2,1,"/user_upload/team-t3board10.jpg","jpg","image/jpeg","team-t3board10.jpg","ae6951147687ed1f94f60973fca7ef46e2ba2372",166843,1375080761,1374139442,0,0,"16ba2a587da8ef10dfccbe8b9841bde85afbd2d4","19669f1e02c2f16705ec7587044c66443be70725",0,,,,,,
-,20,0,2,1,"/user_upload/typo3-logo.png","png","image/png","typo3-logo.png","cdac36562aaa65d23831b25c48cd14863b5be2ad",1392,1449871035,1449871035,0,0,"ef4e3ead8d320c927228e158d950ade4a105081d","19669f1e02c2f16705ec7587044c66443be70725",0,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,
-"sys_file_metadata",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","file","title","width","height","description","alternative","categories","l10n_diffsource",,,,,
-,1,0,0,0,0,0,0,0,0,0,1,"Image Kasper",401,600,,,0,,,,,,
-,21,0,0,0,0,0,0,0,0,0,21,"Image T3BOARD",1024,683,,,0,,,,,,
-"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,,
-,"uid","pid","title","uid_local","uid_foreign","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","deleted","tablenames","fieldname","sorting_foreign","table_local","description","alternative","link","l10n_diffsource",
-,126,89,"T3BOARD",1,297,0,0,0,0,0,0,0,0,0,"tt_content","image",2,"sys_file",,,,,
-,127,89,"Kasper",21,298,0,0,0,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
-,128,89,"[Kasper] Image translated to Dansk",21,300,1,127,127,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
-,129,89,"[T3BOARD] Image added in Dansk (without parent)",1,300,1,0,0,0,0,0,0,0,0,"tt_content","image",2,"sys_file",,,,,
-,130,89,"[T3BOARD] Image added to DK element without default language",1,303,1,0,0,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
-,131,89,"[T3BOARD] image translated to DE from DK",1,302,2,0,0,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
+"sys_language",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","hidden","title","flag",,,,,,,,,,,,,,,,,
+,1,0,0,"Dansk","dk",,,,,,,,,,,,,,,,,
+,2,0,0,"Deutsch","de",,,,,,,,,,,,,,,,,
+,3,0,0,"Polski","pl",,,,,,,,,,,,,,,,,
+"tt_content",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","header","image","sorting","deleted","hidden","sys_language_uid","l18n_parent","l10n_source","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id",,,,,,
+,297,89,"Regular Element #1",1,256,0,0,0,0,0,0,0,0,0,0,0,,,,,,
+,298,89,"Regular Element #2",1,512,0,0,0,0,0,0,0,0,0,0,0,,,,,,
+,299,89,"Regular Element #3",0,768,0,0,0,0,0,0,0,0,0,0,0,,,,,,
+,300,89,"[Translate to Dansk:] Regular Element #3",2,1024,0,0,1,299,299,299,0,0,0,0,0,,,,,,
+,301,89,"[Translate to Dansk:] Regular Element #1",0,384,0,0,1,297,297,297,0,0,0,0,0,,,,,,
+,302,89,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",1,448,0,0,2,297,301,301,0,0,0,0,0,,,,,,
+,303,89,"[DK] Without default language",1,1250,0,0,1,0,0,0,0,0,0,0,0,,,,,,
+,304,89,"[DE] Without default language",0,1250,0,0,2,0,0,0,0,0,0,0,0,,,,,,
+,305,89,"[Translate to Polski:] Regular Element #1",0,512,0,0,3,297,297,297,0,0,0,0,0,,,,,,
+,306,89,"[PL] Without default language",0,1024,0,0,3,0,0,0,0,0,0,0,0,,,,,,
+,307,89,"Hidden Element #4",0,128,0,1,0,0,0,0,0,0,0,0,0,,,,,,
+,308,89,"[DK] UnHidden Element #4",0,128,0,0,1,307,307,307,0,0,0,0,0,,,,,,
+,309,89,"[PL] Hidden Regular Element #2",0,512,0,1,3,298,298,298,0,0,0,0,0,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,
+"sys_file",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","type","storage","identifier","extension","mime_type","name","sha1","size","creation_date","modification_date","missing","metadata","identifier_hash","folder_hash","last_indexed",,,,,
+,1,0,2,1,"/user_upload/kasper-skarhoj1.jpg","jpg","image/jpeg","kasper-skarhoj1.jpg","05d8c6dda534a0b9e7023c3031e60e4b49c3da40",39037,1375080761,1374139442,0,0,"a58963e60a4fcc31d1a869184a2d5d929dd27c8a","19669f1e02c2f16705ec7587044c66443be70725",0,,,,,
+,21,0,2,1,"/user_upload/team-t3board10.jpg","jpg","image/jpeg","team-t3board10.jpg","ae6951147687ed1f94f60973fca7ef46e2ba2372",166843,1375080761,1374139442,0,0,"16ba2a587da8ef10dfccbe8b9841bde85afbd2d4","19669f1e02c2f16705ec7587044c66443be70725",0,,,,,
+,20,0,2,1,"/user_upload/typo3-logo.png","png","image/png","typo3-logo.png","cdac36562aaa65d23831b25c48cd14863b5be2ad",1392,1449871035,1449871035,0,0,"ef4e3ead8d320c927228e158d950ade4a105081d","19669f1e02c2f16705ec7587044c66443be70725",0,,,,,
+,,,,,,,,,,,,,,,,,,,,,,
+"sys_file_metadata",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","file","title","width","height","description","alternative","categories","l10n_diffsource",,,,
+,1,0,0,0,0,0,0,0,0,0,1,"Image Kasper",401,600,,,0,,,,,
+,21,0,0,0,0,0,0,0,0,0,21,"Image T3BOARD",1024,683,,,0,,,,,
+"sys_file_reference",,,,,,,,,,,,,,,,,,,,,,
+,"uid","pid","title","uid_local","uid_foreign","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","deleted","tablenames","fieldname","sorting_foreign","table_local","description","alternative","link","l10n_diffsource",
+,126,89,"T3BOARD",1,297,0,0,0,0,0,0,0,0,"tt_content","image",2,"sys_file",,,,,
+,127,89,"Kasper",21,298,0,0,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
+,128,89,"[Kasper] Image translated to Dansk",21,300,1,127,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
+,129,89,"[T3BOARD] Image added in Dansk (without parent)",1,300,1,0,0,0,0,0,0,0,"tt_content","image",2,"sys_file",,,,,
+,130,89,"[T3BOARD] Image added to DK element without default language",1,303,1,0,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
+,131,89,"[T3BOARD] image translated to DE from DK",1,302,2,0,0,0,0,0,0,0,"tt_content","image",1,"sys_file",,,,,
index 0663b77..317be4c 100644 (file)
@@ -15,21 +15,10 @@ CREATE TABLE cache_treelist (
 # Table structure for table 'fe_groups'
 #
 CREATE TABLE fe_groups (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned 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,
        title varchar(50) DEFAULT '' NOT NULL,
-       hidden tinyint(3) unsigned DEFAULT '0' NOT NULL,
        lockToDomain varchar(50) DEFAULT '' NOT NULL,
-       deleted tinyint(3) unsigned DEFAULT '0' NOT NULL,
-       description text,
        subgroup tinytext,
-       TSconfig text,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid)
+       TSconfig text
 );
 
 
@@ -53,15 +42,9 @@ CREATE TABLE fe_sessions (
 # Table structure for table 'fe_users'
 #
 CREATE TABLE fe_users (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned DEFAULT '0' NOT NULL,
-       tstamp int(11) unsigned DEFAULT '0' NOT NULL,
        username varchar(255) DEFAULT '' NOT NULL,
        password varchar(100) DEFAULT '' NOT NULL,
        usergroup tinytext,
-       disable tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       starttime int(11) unsigned DEFAULT '0' NOT NULL,
-       endtime int(11) unsigned DEFAULT '0' NOT NULL,
        name varchar(160) DEFAULT '' NOT NULL,
        first_name varchar(50) DEFAULT '' NOT NULL,
        middle_name varchar(50) DEFAULT '' NOT NULL,
@@ -70,11 +53,7 @@ CREATE TABLE fe_users (
        telephone varchar(30) DEFAULT '' NOT NULL,
        fax varchar(30) DEFAULT '' NOT NULL,
        email varchar(255) DEFAULT '' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
        lockToDomain varchar(50) DEFAULT '' NOT NULL,
-       deleted tinyint(3) unsigned DEFAULT '0' NOT NULL,
-       description text,
        uc blob,
        title varchar(40) DEFAULT '' NOT NULL,
        zip varchar(10) DEFAULT '' NOT NULL,
@@ -87,7 +66,6 @@ CREATE TABLE fe_users (
        lastlogin int(10) unsigned DEFAULT '0' NOT NULL,
        is_online int(10) unsigned DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
        KEY parent (pid,username),
        KEY username (username),
        KEY is_online (is_online)
@@ -95,6 +73,8 @@ 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,
@@ -141,16 +121,8 @@ CREATE TABLE pages_language_overlay (
 # Table structure for table 'sys_domain'
 #
 CREATE TABLE sys_domain (
-       uid int(11) unsigned NOT NULL auto_increment,
-       pid int(11) unsigned 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,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
        domainName varchar(255) DEFAULT '' NOT NULL,
-       sorting int(10) unsigned DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
        KEY getSysDomain (hidden),
        KEY getDomainStartPage (pid,hidden,domainName)
 );
@@ -159,42 +131,18 @@ CREATE TABLE sys_domain (
 # Table structure for table 'sys_template'
 #
 CREATE TABLE sys_template (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) 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,
-       sorting int(11) unsigned DEFAULT '0' NOT NULL,
-       crdate int(11) unsigned DEFAULT '0' NOT NULL,
-       cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
        title varchar(255) DEFAULT '' NOT NULL,
        sitetitle 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,
        root tinyint(4) unsigned DEFAULT '0' NOT NULL,
        clear tinyint(4) unsigned DEFAULT '0' NOT NULL,
        include_static_file text,
        constants text,
        config text,
        nextLevel varchar(5) DEFAULT '' NOT NULL,
-       description text,
        basedOn tinytext,
-       deleted tinyint(3) unsigned DEFAULT '0' NOT NULL,
        includeStaticAfterBasedOn tinyint(4) unsigned DEFAULT '0' NOT NULL,
        static_file_mode tinyint(4) unsigned DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid),
-       KEY parent (pid,deleted,hidden,sorting),
        KEY roottemplate (deleted,hidden,root)
 );
 
@@ -202,24 +150,6 @@ CREATE TABLE sys_template (
 # Table structure for table 'tt_content'
 #
 CREATE TABLE tt_content (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) 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,
-       editlock tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       sorting int(11) unsigned DEFAULT '0' NOT NULL,
        CType varchar(255) DEFAULT '' NOT NULL,
        header varchar(255) DEFAULT '' NOT NULL,
        header_position varchar(6) DEFAULT '' NOT NULL,
@@ -237,7 +167,6 @@ CREATE TABLE tt_content (
        media int(11) unsigned DEFAULT '0' NOT NULL,
        layout int(11) unsigned DEFAULT '0' NOT NULL,
        frame_class varchar(60) DEFAULT 'default' NOT NULL,
-       deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
        cols int(11) unsigned DEFAULT '0' NOT NULL,
        spaceBefore smallint(5) unsigned DEFAULT '0' NOT NULL,
        spaceAfter smallint(5) unsigned DEFAULT '0' NOT NULL,
@@ -245,11 +174,8 @@ CREATE TABLE tt_content (
        space_after_class varchar(60) DEFAULT '' NOT NULL,
        records text,
        pages text,
-       starttime int(11) unsigned DEFAULT '0' NOT NULL,
-       endtime int(11) unsigned DEFAULT '0' NOT NULL,
        colPos int(11) unsigned DEFAULT '0' NOT NULL,
        subheader varchar(255) DEFAULT '' NOT NULL,
-       fe_group varchar(100) DEFAULT '0' NOT NULL,
        header_link varchar(1024) DEFAULT '' NOT NULL,
        image_zoom tinyint(3) unsigned DEFAULT '0' NOT NULL,
        header_layout varchar(30) DEFAULT '0' NOT NULL,
@@ -264,14 +190,10 @@ CREATE TABLE tt_content (
        date int(10) unsigned DEFAULT '0' NOT NULL,
        recursive tinyint(3) unsigned DEFAULT '0' NOT NULL,
        imageheight mediumint(8) unsigned DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
        pi_flexform mediumtext,
        accessibility_title varchar(30) DEFAULT '' NOT NULL,
        accessibility_bypass tinyint(3) unsigned DEFAULT '0' NOT NULL,
        accessibility_bypass_text varchar(30) DEFAULT '' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       l10n_source int(11) DEFAULT '0' NOT NULL,
        selected_categories text,
        category_field varchar(64) DEFAULT '' NOT NULL,
        table_class varchar(60) DEFAULT '' NOT NULL,
@@ -281,9 +203,8 @@ CREATE TABLE tt_content (
        table_header_position tinyint(3) unsigned DEFAULT '0' NOT NULL,
        table_tfoot tinyint(1) unsigned DEFAULT '0' NOT NULL,
 
-       PRIMARY KEY (uid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid),
        KEY parent (pid,sorting),
+       KEY t3ver_oid (t3ver_oid,t3ver_wsid),
        KEY language (l18n_parent,sys_language_uid)
 );
 
@@ -291,30 +212,7 @@ CREATE TABLE tt_content (
 # Table structure for table 'backend_layout'
 #
 CREATE TABLE backend_layout (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) 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,
-       hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       sorting int(11) unsigned DEFAULT '0' NOT NULL,
        title varchar(255) DEFAULT '' NOT NULL,
-       description text,
        config text NOT NULL,
-       icon text,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid)
+       icon text
 );
index 20acf33..e799431 100644 (file)
@@ -2,40 +2,10 @@
 # Table structure for table 'tx_impexpgroupfiles_item'
 #
 CREATE TABLE tx_impexpgroupfiles_item (
-       uid int(11) NOT NULL auto_increment,
-       pid int(11) DEFAULT '0' NOT NULL,
-       tstamp int(11) DEFAULT '0' NOT NULL,
-       crdate int(11) DEFAULT '0' NOT NULL,
-       cruser_id int(11) DEFAULT '0' NOT NULL,
-       sys_language_uid int(11) DEFAULT '0' NOT NULL,
-       l18n_parent int(11) DEFAULT '0' NOT NULL,
-       l18n_diffsource mediumblob,
-       sorting int(10) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
-       hidden tinyint(4) DEFAULT '0' NOT NULL,
-       starttime int(11) unsigned DEFAULT '0' NOT NULL,
-       endtime 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(30) DEFAULT '' NOT NULL,
-       t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
-       t3ver_stage tinyint(4) 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,
-
        title tinytext NOT NULL,
        images text NOT NULL,
        image_references text NOT NULL,
-       flexform text NOT NULL,
-
-       PRIMARY KEY (uid),
-       KEY parent (pid),
-       KEY t3ver_oid (t3ver_oid,t3ver_wsid)
+       flexform text NOT NULL
 );
 
 
index 47d5ba1..7d9fb94 100644 (file)
                <tablerow index="pages:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
                                <field index="perms_everybody" type="integer">15</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Root</field>
                                <field index="doktype" type="integer">1</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_impexpgroupfiles_item:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Test item</field>
                                <field index="images">typo3_image4.jpg</field>
                                <field index="image_references">fileadmin/user_upload/typo3_image5.jpg</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="images" type="array">
                <tablerow index="sys_file:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="storage" type="integer">1</field>
                                <field index="type">2</field>
                                <field index="metadata" type="integer">0</field>
                                <field index="size" type="integer">7425</field>
                                <field index="creation_date" type="integer">1393432184</field>
                                <field index="modification_date" type="integer">1393432183</field>
+                               <field index="pid" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="storage" type="array">
                <tablerow index="sys_file_storage:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="name">fileadmin/ (auto-created)</field>
-                               <field index="description" type="NULL"></field>
                                <field index="driver">Local</field>
                                <field index="configuration">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot; ?&gt;
 &lt;T3FlexForms&gt;
                                <field index="is_public" type="integer">1</field>
                                <field index="is_writable" type="integer">1</field>
                                <field index="is_online" type="integer">1</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="description" type="NULL"></field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="configuration" type="array">
index 1351610..bd8be77 100644 (file)
                <tablerow index="pages:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
                                <field index="perms_everybody" type="integer">15</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Dummy 1-2</field>
                                <field index="doktype" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_impexpgroupfiles_item:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">2</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Test item 2</field>
                                <field index="images"></field>
                                <field index="image_references"></field>
                &lt;/sheet&gt;
        &lt;/data&gt;
 &lt;/T3FlexForms&gt;</field>
+                               <field index="pid" type="integer">2</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="flexform" type="array">
                <tablerow index="sys_file:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="storage" type="integer">1</field>
                                <field index="type">2</field>
                                <field index="metadata" type="integer">0</field>
                                <field index="size" type="integer">7425</field>
                                <field index="creation_date" type="integer">1393432184</field>
                                <field index="modification_date" type="integer">1393432183</field>
+                               <field index="pid" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="storage" type="array">
                <tablerow index="sys_file:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="storage" type="integer">1</field>
                                <field index="type">2</field>
                                <field index="metadata" type="integer">0</field>
                                <field index="size" type="integer">5565</field>
                                <field index="creation_date" type="integer">1393346082</field>
                                <field index="modification_date" type="integer">1392907534</field>
+                               <field index="pid" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="storage" type="array">
                <tablerow index="sys_file_storage:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="name">fileadmin/ (auto-created)</field>
-                               <field index="description" type="NULL"></field>
                                <field index="driver">Local</field>
                                <field index="configuration">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot; ?&gt;
 &lt;T3FlexForms&gt;
                                <field index="is_public" type="integer">1</field>
                                <field index="is_writable" type="integer">1</field>
                                <field index="is_online" type="integer">1</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="description" type="NULL"></field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="configuration" type="array">
index 89a7d3a..0049abd 100644 (file)
                <tablerow index="pages:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
                                <field index="perms_everybody" type="integer">15</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Root</field>
                                <field index="doktype" type="integer">1</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_impexpgroupfiles_item:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Test item</field>
                                <field index="images">typo3_image4.jpg</field>
                                <field index="image_references">fileadmin/user_upload/typo3_image5.jpg</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="images" type="array">
                <tablerow index="sys_file:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="storage" type="integer">1</field>
                                <field index="type">2</field>
                                <field index="metadata" type="integer">0</field>
                                <field index="size" type="integer">7425</field>
                                <field index="creation_date" type="integer">1393432184</field>
                                <field index="modification_date" type="integer">1393432183</field>
+                               <field index="pid" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="storage" type="array">
                <tablerow index="sys_file_storage:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="name">fileadmin/ (auto-created)</field>
-                               <field index="description" type="NULL"></field>
                                <field index="driver">Local</field>
                                <field index="configuration">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot; ?&gt;
 &lt;T3FlexForms&gt;
                                <field index="is_public" type="integer">1</field>
                                <field index="is_writable" type="integer">1</field>
                                <field index="is_online" type="integer">1</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="description" type="NULL"></field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="configuration" type="array">
index e2c96ae..48708e4 100644 (file)
                <tablerow index="pages:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
                                <field index="perms_everybody" type="integer">15</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">IRRE</field>
                                <field index="doktype" type="integer">1</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tt_content:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="t3ver_oid" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="CType">text</field>
                                <field index="header">Test content</field>
+                               <field index="pid" type="integer">1</field>
                                <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="t3ver_oid" type="integer">0</field>
                                <field index="tx_irretutorial_1nff_hotels" type="integer">2</field>
                                <field index="tx_irretutorial_1ncsv_hotels">1,2</field>
                        </fieldlist>
                <tablerow index="tx_irretutorial_1ncsv_hotel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Hotel 2 (csv)</field>
+                               <field index="offers">3</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">128</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 2 (csv)</field>
-                               <field index="offers">3</field>
+                               <field index="sorting" type="integer">128</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_1ncsv_hotel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Hotel 1 (csv)</field>
+                               <field index="offers">1,2</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 1 (csv)</field>
-                               <field index="offers">1,2</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_1ncsv_offer:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
+                               <field index="title">Offer 2.2 (csv)</field>
+                               <field index="prices">3</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">64</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 2.2 (csv)</field>
-                               <field index="prices">3</field>
+                               <field index="sorting" type="integer">64</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_1ncsv_offer:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Offer 1.2 (csv)</field>
+                               <field index="prices">2</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">128</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 1.2 (csv)</field>
-                               <field index="prices">2</field>
+                               <field index="sorting" type="integer">128</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_1ncsv_offer:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Offer 1.1 (csv)</field>
+                               <field index="prices">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 1.1 (csv)</field>
-                               <field index="prices">1</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_1ncsv_price:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
+                               <field index="title">Price 2.2.1 (csv)</field>
+                               <field index="price" type="double">112</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">64</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Price 2.2.1 (csv)</field>
-                               <field index="price" type="double">112</field>
+                               <field index="sorting" type="integer">64</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_1ncsv_price:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Price 1.2.1 (csv)</field>
+                               <field index="price" type="double">90</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">128</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Price 1.2.1 (csv)</field>
-                               <field index="price" type="double">90</field>
+                               <field index="sorting" type="integer">128</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_1ncsv_price:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Price 1.1.1 (csv)</field>
+                               <field index="price" type="double">567</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Price 1.1.1 (csv)</field>
-                               <field index="price" type="double">567</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_1nff_hotel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">1</field>
                                <field index="parenttable">tt_content</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Hotel 1 (nff)</field>
                                <field index="offers" type="integer">2</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_1nff_hotel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">2</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">1</field>
                                <field index="parenttable">tt_content</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Hotel 2 (nff)</field>
                                <field index="offers" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">2</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_1nff_offer:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">1</field>
                                <field index="parenttable">tx_irretutorial_1nff_hotel</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Offer 1.1 (nff)</field>
                                <field index="prices" type="integer">2</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_1nff_offer:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">2</field>
                                <field index="parenttable">tx_irretutorial_1nff_hotel</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Offer 2.1 (nff)</field>
                                <field index="prices" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_1nff_offer:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">2</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">1</field>
                                <field index="parenttable">tx_irretutorial_1nff_hotel</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Offer 1.2 (nff)</field>
                                <field index="prices" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">2</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_1nff_price:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">1</field>
                                <field index="parenttable">tx_irretutorial_1nff_offer</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Price 1.1.1 (nff)</field>
                                <field index="price" type="double">4</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_1nff_price:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">2</field>
                                <field index="parenttable">tx_irretutorial_1nff_offer</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Price 1.2.1 (nff)</field>
                                <field index="price" type="double">678</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_1nff_price:4" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">4</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">3</field>
                                <field index="parenttable">tx_irretutorial_1nff_offer</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Price 2.1.1 (nff)</field>
                                <field index="price" type="double">5467567</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_1nff_price:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">2</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="parentid" type="integer">1</field>
                                <field index="parenttable">tx_irretutorial_1nff_offer</field>
                                <field index="parentidentifier"></field>
                                <field index="title">Price 1.1.2 (nff)</field>
                                <field index="price" type="double">869</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sorting" type="integer">2</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_mnasym_hotel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Hotel 1 (m:n ASym)</field>
+                               <field index="offers" type="integer">2</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 1 (m:n ASym)</field>
-                               <field index="offers" type="integer">2</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_mnasym_hotel_offer_rel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="hotelid" type="integer">1</field>
                                <field index="offerid" type="integer">2</field>
                                <field index="hotelsort" type="integer">2</field>
                                <field index="offersort" type="integer">1</field>
                                <field index="prices" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotelid" type="array">
                <tablerow index="tx_irretutorial_mnasym_hotel_offer_rel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="hotelid" type="integer">1</field>
                                <field index="offerid" type="integer">1</field>
                                <field index="hotelsort" type="integer">1</field>
                                <field index="offersort" type="integer">1</field>
                                <field index="prices" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotelid" type="array">
                <tablerow index="tx_irretutorial_mnasym_offer:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Offer 2 (m:n ASym)</field>
+                               <field index="hotels" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">128</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 2 (m:n ASym)</field>
-                               <field index="hotels" type="integer">1</field>
+                               <field index="sorting" type="integer">128</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotels" type="array">
                <tablerow index="tx_irretutorial_mnasym_offer:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Offer 1 (m:n ASym)</field>
+                               <field index="hotels" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 1 (m:n ASym)</field>
-                               <field index="hotels" type="integer">1</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotels" type="array">
                <tablerow index="tx_irretutorial_mnasym_price:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="parentid" type="integer">1</field>
+                               <field index="title">Price 1 1:2 (m:n ASym)</field>
+                               <field index="price" type="double">678</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="parentid" type="integer">1</field>
-                               <field index="title">Price 1 1:2 (m:n ASym)</field>
-                               <field index="price" type="double">678</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_mnasym_price:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="parentid" type="integer">2</field>
+                               <field index="title">Price 2 1:1 (m:n ASym)</field>
+                               <field index="price" type="double">45</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">1</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="parentid" type="integer">2</field>
-                               <field index="title">Price 2 1:1 (m:n ASym)</field>
-                               <field index="price" type="double">45</field>
+                               <field index="sorting" type="integer">1</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_mnattr_hotel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Hotel 1 (m:n Attr)</field>
+                               <field index="offers" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 1 (m:n Attr)</field>
-                               <field index="offers" type="integer">1</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_mnattr_hotel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Hotel 2 (m:n Attr)</field>
+                               <field index="offers" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">512</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 2 (m:n Attr)</field>
-                               <field index="offers" type="integer">1</field>
+                               <field index="sorting" type="integer">512</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_mnattr_hotel_offer_rel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="hotelid" type="integer">1</field>
                                <field index="offerid" type="integer">1</field>
                                <field index="hotelsort" type="integer">1</field>
                                <field index="offersort" type="integer">0</field>
                                <field index="quality" type="integer">2</field>
                                <field index="allincl" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotelid" type="array">
                <tablerow index="tx_irretutorial_mnattr_hotel_offer_rel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="hotelid" type="integer">2</field>
                                <field index="offerid" type="integer">2</field>
                                <field index="hotelsort" type="integer">1</field>
                                <field index="offersort" type="integer">0</field>
                                <field index="quality" type="integer">4</field>
                                <field index="allincl" type="integer">0</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotelid" type="array">
                <tablerow index="tx_irretutorial_mnattr_offer:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Offer 1 (m:n Attr)</field>
+                               <field index="hotels" type="integer">0</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 1 (m:n Attr)</field>
-                               <field index="hotels" type="integer">0</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotels" type="array">
                <tablerow index="tx_irretutorial_mnattr_offer:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Offer 2 (m:n Attr)</field>
+                               <field index="hotels" type="integer">0</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">512</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 2 (m:n Attr)</field>
-                               <field index="hotels" type="integer">0</field>
+                               <field index="sorting" type="integer">512</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotels" type="array">
                <tablerow index="tx_irretutorial_mnmmasym_hotel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Hotel 1 (m:n (MM) ASym)</field>
+                               <field index="offers" type="integer">2</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 1 (m:n (MM) ASym)</field>
-                               <field index="offers" type="integer">2</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_mnmmasym_hotel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Hotel 2 (m:n (MM) ASym)</field>
+                               <field index="offers" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">512</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 2 (m:n (MM) ASym)</field>
-                               <field index="offers" type="integer">1</field>
+                               <field index="sorting" type="integer">512</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="offers" type="array">
                <tablerow index="tx_irretutorial_mnmmasym_offer:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
+                               <field index="title">Offer 2.1 (m:n (MM) ASym)</field>
+                               <field index="hotels" type="integer">0</field>
+                               <field index="prices" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">64</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 2.1 (m:n (MM) ASym)</field>
-                               <field index="hotels" type="integer">0</field>
-                               <field index="prices" type="integer">1</field>
+                               <field index="sorting" type="integer">64</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_mnmmasym_offer:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Offer 1.2 (m:n (MM) ASym)</field>
+                               <field index="hotels" type="integer">0</field>
+                               <field index="prices" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">128</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 1.2 (m:n (MM) ASym)</field>
-                               <field index="hotels" type="integer">0</field>
-                               <field index="prices" type="integer">1</field>
+                               <field index="sorting" type="integer">128</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_mnmmasym_offer:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Offer 1.1 (m:n (MM) ASym)</field>
+                               <field index="hotels" type="integer">0</field>
+                               <field index="prices" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Offer 1.1 (m:n (MM) ASym)</field>
-                               <field index="hotels" type="integer">0</field>
-                               <field index="prices" type="integer">1</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="prices" type="array">
                <tablerow index="tx_irretutorial_mnmmasym_price:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
+                               <field index="title">Price (m:n (MM) ASym)</field>
+                               <field index="price" type="double">223</field>
+                               <field index="offers" type="integer">0</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">64</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Price (m:n (MM) ASym)</field>
-                               <field index="price" type="double">223</field>
-                               <field index="offers" type="integer">0</field>
+                               <field index="sorting" type="integer">64</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_mnmmasym_price:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Price 1.2.2 (m:n (MM) ASym)</field>
+                               <field index="price" type="double">567</field>
+                               <field index="offers" type="integer">0</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">128</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Price 1.2.2 (m:n (MM) ASym)</field>
-                               <field index="price" type="double">567</field>
-                               <field index="offers" type="integer">0</field>
+                               <field index="sorting" type="integer">128</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_mnmmasym_price:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Price 1.1.1 (m:n (MM) ASym)</field>
+                               <field index="price" type="double">567</field>
+                               <field index="offers" type="integer">0</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Price 1.1.1 (m:n (MM) ASym)</field>
-                               <field index="price" type="double">567</field>
-                               <field index="offers" type="integer">0</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tx_irretutorial_mnsym_hotel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
+                               <field index="title">Hotel Branch 1.1 (mm sym)</field>
+                               <field index="branches" type="integer">1</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">128</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel Branch 1.1 (mm sym)</field>
-                               <field index="branches" type="integer">1</field>
+                               <field index="sorting" type="integer">128</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="branches" type="array">
                <tablerow index="tx_irretutorial_mnsym_hotel:3" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">3</field>
+                               <field index="title">Hotel branch 1.2 (mm sym)</field>
+                               <field index="branches" type="integer">0</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">192</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel branch 1.2 (mm sym)</field>
-                               <field index="branches" type="integer">0</field>
+                               <field index="sorting" type="integer">192</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="branches" type="array">
                <tablerow index="tx_irretutorial_mnsym_hotel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
+                               <field index="title">Hotel 1 (mm sym)</field>
+                               <field index="branches" type="integer">2</field>
                                <field index="pid" type="integer">1</field>
                                <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="sorting" type="integer">256</field>
                                <field index="deleted" type="integer">0</field>
                                <field index="hidden" type="integer">0</field>
-                               <field index="title">Hotel 1 (mm sym)</field>
-                               <field index="branches" type="integer">2</field>
+                               <field index="sorting" type="integer">256</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="branches" type="array">
                <tablerow index="tx_irretutorial_mnsym_hotel_rel:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="hotelid" type="integer">1</field>
                                <field index="branchid" type="integer">2</field>
                                <field index="hotelsort" type="integer">1</field>
                                <field index="branchsort" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotelid" type="array">
                <tablerow index="tx_irretutorial_mnsym_hotel_rel:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="cruser_id" type="integer">1</field>
-                               <field index="sys_language_uid" type="integer">0</field>
-                               <field index="l18n_parent" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="hotelid" type="integer">1</field>
                                <field index="branchid" type="integer">3</field>
                                <field index="hotelsort" type="integer">2</field>
                                <field index="branchsort" type="integer">0</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="cruser_id" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="sys_language_uid" type="integer">0</field>
+                               <field index="l18n_parent" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="hotelid" type="array">
index ec961ba..9a89700 100644 (file)
                                        <title>typo3_image2.jpg</title>
                                        <relationLevel>2</relationLevel>
                                        <relations index="rels" type="array">
+                                               <element index="sys_file:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file</table>
+                                               </element>
                                                <element index="sys_language:1" type="array">
                                                        <id>1</id>
                                                        <table>sys_language</table>
                                                        <id>1</id>
                                                        <table>sys_file_metadata</table>
                                                </element>
-                                               <element index="sys_file:1" type="array">
-                                                       <id>1</id>
-                                                       <table>sys_file</table>
-                                               </element>
                                        </relations>
                                        <softrefs type="array"></softrefs>
                                </rec>
                <tablerow index="pages:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
-                               <field index="deleted" type="integer">0</field>
                                <field index="perms_everybody" type="integer">15</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Root</field>
                                <field index="doktype" type="integer">1</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="pages:2" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">2</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
                                <field index="perms_everybody" type="integer">15</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Dummy 1-2</field>
                                <field index="doktype" type="integer">1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="tt_content:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
-                               <field index="t3ver_oid" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="CType">textpic</field>
                                <field index="header">Test content</field>
                                <field index="image" type="integer">1</field>
-                               <field index="deleted" type="integer">0</field>
                                <field index="header_link">file:1</field>
+                               <field index="pid" type="integer">1</field>
+                               <field index="deleted" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
+                               <field index="t3ver_oid" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="image" type="array">
                <tablerow index="sys_language:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
-                               <field index="hidden" type="integer">0</field>
                                <field index="title">Deutsch</field>
                                <field index="flag">de</field>
+                               <field index="pid" type="integer">0</field>
+                               <field index="hidden" type="integer">0</field>
                        </fieldlist>
                        <related index="rels" type="array"></related>
                </tablerow>
                <tablerow index="sys_file_reference:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">1</field>
                                <field index="uid_local" type="integer">1</field>
                                <field index="uid_foreign" type="integer">1</field>
                                <field index="tablenames">tt_content</field>
                                <field index="description" type="NULL"></field>
                                <field index="alternative" type="NULL"></field>
                                <field index="link"></field>
+                               <field index="pid" type="integer">1</field>
                        </fieldlist>
                        <related index="rels" type="array">
                                <field index="uid_local" type="array">
                <tablerow index="sys_file:1" type="array">
                        <fieldlist index="data" type="array">
                                <field index="uid" type="integer">1</field>
-                               <field index="pid" type="integer">0</field>
                                <field index="storage" type="integer">1</field>
                                <field index="type">2</field>
                                <field index="metadata" type="integer">0</field>
@@