[TASK] Remove outdated upgrade wizards 76/26776/7
authorSteffen Ritter <info@rs-websystems.de>
Mon, 13 Jan 2014 09:25:16 +0000 (10:25 +0100)
committerWouter Wolters <typo3@wouterwolters.nl>
Mon, 24 Feb 2014 21:25:32 +0000 (22:25 +0100)
The core ships upgrade wizards for all versions since TYPO3 CMS 4.2.
Users upgrading to TYPO3 CMS 6.2 LTS should have at least TYPO3 4.5 LTS
or later. Therefore all Upgrade-Wizards which already have been executed
to upgrade to TYPO3 CMS 4.5 LTS and below can be safely removed for the
current LTS.

This change removed all these wizards relating to changes in 4.2, 4.3 and
4.5.

Resolves: #54930
Releases: 6.2
Change-Id: Ia691e3ca7dd347c6748a8e9d753278b2247f75b9
Reviewed-on: https://review.typo3.org/26776
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
15 files changed:
INSTALL.md
typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php
typo3/sysext/install/Classes/Updates/AddFlexFormsToAclUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/CharsetDefaultsUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/CompressionLevelUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/CscSplitUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/FlagsFromSpriteUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/ImagecolsUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/ImagelinkUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/InstallSysExtsUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/MergeAdvancedUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/MigrateWorkspacesUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/NotInMenuUpdate.php [deleted file]
typo3/sysext/install/Classes/Updates/T3skinUpdate.php [deleted file]
typo3/sysext/install/ext_localconf.php

index eb4287d..248ea6b 100644 (file)
@@ -121,6 +121,14 @@ functionality:
 Installation
 ------------
 
+### Important note for upgrades from TYPO3 CMS versions **below 4.5 LTS**
+
+It is not possible to upgrade any version below 4.5 LTS to 6.2 LTS directly,
+since some upgrade wizards are not available anymore on 6.2 LTS.
+
+It is highly recommended to upgrade to 4.5 LTS first and continue with
+a second upgrade to 6.2 LTS.
+
 ### If SSH and symlinks are possible
 
 If you have SSH access to your webserver and are able to create symlinks,
index 1c34c57..26aab64 100644 (file)
@@ -117,6 +117,13 @@ class SilentConfigurationUpgradeService {
                'SYS/T3instID',
                // #52857
                'SYS/forceReturnPath',
+           // #54930
+           'INSTALL/wizardDone/tx_coreupdates_compressionlevel',
+           'INSTALL/wizardDone/TYPO3\\CMS\\Install\\Updates\\CompressionLevelUpdate',
+           'INSTALL/wizardDone/tx_coreupdates_installsysexts',
+           'INSTALL/wizardDone/TYPO3\\CMS\\Install\\Updates\\InstallSysExtsUpdate',
+           'INSTALL/wizardDone/tx_coreupdates_migrateworkspaces',
+           'INSTALL/wizardDone/TYPO3\\CMS\\Install\\Updates\\MigrateWorkspacesUpdate',
        );
 
        /**
diff --git a/typo3/sysext/install/Classes/Updates/AddFlexFormsToAclUpdate.php b/typo3/sysext/install/Classes/Updates/AddFlexFormsToAclUpdate.php
deleted file mode 100644 (file)
index d61392b..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2010-2013 Kai Vogel (kai.vogel(at)speedprogs.de)
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update for group access lists, adds all excludeable FlexForm fields.
- * Used by the update wizard in the install tool.
- *
- * @author Kai Vogel <kai.vogel(at)speedprogs.de>
- */
-class AddFlexFormsToAclUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Add Excludable FlexForm Fields to Group Access Lists';
-
-       /**
-        * Checks if FlexForm fields are missing in group access lists.
-        *
-        * @param string &$description The description for the update
-        * @return boolean Whether an update is required (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $description = '
-                       <br />TYPO3 4.5 introduced the possibility to exclude FlexForm fields like normal fields in group access control lists (ACL).
-                       All excludeable fields will be hidden for non-admins if you do not add them to the ACL of each user group manually or with
-                       this update wizard.
-               ';
-               // Check access lists
-               if (!$this->getGroupAddFields()) {
-                       return FALSE;
-               }
-               return TRUE;
-       }
-
-       /**
-        * Get user confirmation
-        *
-        * @param string $inputPrefix The input prefix, all names of form fields have to start with this
-        * @return string HTML output
-        */
-       public function getUserInput($inputPrefix) {
-               $description = '
-                       <br />You are about to update group access control lists to include excludable FlexForm fields. Each backend group will be checked
-                       and only those that already have entries in the access control lists will be updated.
-               ';
-               return $description;
-       }
-
-       /**
-        * Performs the action of the UpdateManager
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether update was successful or not
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               // Get additional FlexForm fields for group access lists
-               $addFields = $this->getGroupAddFields();
-               if (empty($addFields)) {
-                       $customMessages = 'No missing FlexForm fields found!';
-                       return FALSE;
-               }
-               return $this->updateGroupAccessLists($addFields, $dbQueries, $customMessages);
-       }
-
-       /**
-        * Get all FlexForm fields which must be added to group access lists
-        *
-        * @return array Additional FlexForm fields for ACL
-        */
-       protected function getGroupAddFields() {
-               $addFields = array();
-               $contentTable = !empty($GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable']) ? $GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable'] : 'tt_content';
-               // Initialize TCA if not loaded yet
-               if (empty($GLOBALS['TCA'])) {
-                       $this->pObj->includeTCA();
-               }
-               // Get all access lists from groups which are allowed to select or modify the content-table
-               $search = $GLOBALS['TYPO3_DB']->escapeStrForLike($contentTable, 'be_groups');
-               $where = 'deleted = 0 AND non_exclude_fields IS NOT NULL AND non_exclude_fields != ""';
-               $where .= ' AND (tables_select LIKE "%' . $search . '%" OR tables_modify LIKE "%' . $search . '%")';
-               $accessLists = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid, non_exclude_fields', 'be_groups', $where);
-               if (empty($accessLists)) {
-                       return array();
-               }
-               // Get all excludeable FlexForm fields from content-table
-               $flexExcludeFields = array();
-               $flexFormArray = \TYPO3\CMS\Backend\Utility\BackendUtility::getRegisteredFlexForms($contentTable);
-               if (!empty($flexFormArray) && is_array($flexFormArray)) {
-                       foreach ($flexFormArray as $tableField => $flexForms) {
-                               // Get all sheets
-                               foreach ($flexForms as $flexFormIdentifier => $flexFormConfig) {
-                                       // Get all excludeable fields in sheet
-                                       foreach ($flexFormConfig['ds']['sheets'] as $sheetName => $sheet) {
-                                               if (empty($sheet['ROOT']['el']) || !is_array($sheet['ROOT']['el'])) {
-                                                       continue;
-                                               }
-                                               foreach ($sheet['ROOT']['el'] as $fieldName => $field) {
-                                                       if (empty($field['TCEforms']['exclude'])) {
-                                                               continue;
-                                                       }
-                                                       $flexExcludeFields[] = $contentTable . ':' . $tableField . ';' . $flexFormIdentifier . ';' . $sheetName . ';' . $fieldName;
-                                               }
-                                       }
-                               }
-                       }
-               }
-               if (empty($flexExcludeFields)) {
-                       return array();
-               }
-               // Get FlexForm fields from access lists
-               foreach ($accessLists as $accessList) {
-                       $nonExcludeFields = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $accessList['non_exclude_fields']);
-                       if (empty($nonExcludeFields)) {
-                               continue;
-                       }
-                       // Add FlexForm fields only if the field was not already selected by a user
-                       $nonExcludeFields = array_diff($flexExcludeFields, $nonExcludeFields);
-                       if (!empty($nonExcludeFields) && $nonExcludeFields == $flexExcludeFields) {
-                               $addFields[$accessList['uid']] = $nonExcludeFields;
-                       }
-               }
-               return $addFields;
-       }
-
-       /**
-        * Update Backend user groups, add FlexForm fields to access list
-        *
-        * @param array $addFields All missing FlexForm fields by groups
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether update was successful or not
-        */
-       protected function updateGroupAccessLists(array $addFields, array &$dbQueries, &$customMessages) {
-               foreach ($addFields as $groupUID => $flexExcludeFields) {
-                       // First get current fields
-                       $result = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('non_exclude_fields', 'be_groups', 'uid=' . (int)$groupUID);
-                       if (!isset($result['non_exclude_fields'])) {
-                               continue;
-                       }
-                       $nonExcludeFields = $result['non_exclude_fields'];
-                       // Now add new ones
-                       $flexExcludeFields = implode(',', $flexExcludeFields);
-                       $nonExcludeFields = trim($nonExcludeFields . ',' . $flexExcludeFields, ', ');
-                       // Finally override with new fields
-                       $GLOBALS['TYPO3_DB']->exec_UPDATEquery('be_groups', 'uid=' . (int)$groupUID, array('non_exclude_fields' => $nonExcludeFields));
-                       // Get last executed query
-                       $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
-                       // Check for errors
-                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                               return FALSE;
-                       }
-               }
-               return TRUE;
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/CharsetDefaultsUpdate.php b/typo3/sysext/install/Classes/Updates/CharsetDefaultsUpdate.php
deleted file mode 100644 (file)
index abd7c2f..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2010-2013 Michael Stucki <michael@typo3.org>, Benjamin Mack <benni@typo3.org>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Displays warnings and information about the database character set
- */
-class CharsetDefaultsUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Database Character Set';
-
-       /**
-        * Checks if the configuration is relying on old default values or not.
-        * If needed, this updater will fix the configuration appropriately.
-        *
-        * @param string &$description The description for the update
-        * @param string &$showUpdate 0=don't show update; 1=show update and next button; 2=only show description
-        * @return boolean Whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description, &$showUpdate = FALSE) {
-               if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['setDBinit'] === '-1') {
-                       $description = 'The configuration variables $TYPO3_CONF_VARS[\'SYS\'][\'setDBinit\']
-                               is relying on empty default values.<br />
-                               However, the default has changed in TYPO3 4.5.<br /><br />
-                               Please click "Next" to write the former default settings to your localconf.php,
-                               so that your setup will continue to work like before.';
-                       $showUpdate = 1;
-               }
-       }
-
-       /**
-        * Write the current configuration to localconf.php
-        * This is needed for any sites that were relying on the former default
-        * values which are going to change in TYPO3 4.5.
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether the updated was made or not
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               // Update "setDBinit" setting
-               $result1 = FALSE;
-               if (\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager')->getLocalConfigurationValueByPath('SYS/setDBinit') === '-1') {
-                       $result1 = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager')->setLocalConfigurationValueByPath('SYS/setDBinit', '');
-               }
-               if ($result1) {
-                       $customMessages[] = 'The configuration was successfully updated.';
-                       return TRUE;
-               } else {
-                       return FALSE;
-               }
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/CompressionLevelUpdate.php b/typo3/sysext/install/Classes/Updates/CompressionLevelUpdate.php
deleted file mode 100644 (file)
index 7664e31..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2010-2013  Steffen Ritter (info@rs-websystems.de)
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-/**
- * Contains the update class checking against configured compressionlevel. Used by the update wizard in the install tool.
- *
- * @author Steffen Ritter <info@rs-websystems.de>
- */
-class CompressionLevelUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Check Compression Level';
-
-       /**
-        * Checks if there there is an compression level configured which may break the BE.
-        *
-        * @param string &$description The description for the update
-        * @return boolean Whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $description = '<p><strong>TYPO3_CONF_VARS[BE][compressionLevel] is enabled.</strong><br />
-               In TYPO3 4.4, compressionLevel was expanded to include automatic gzip compression of JavaScript and CSS stylesheet files.
-               <strong>To prevent the TYPO3 backend from being unusable, you must include the relevant lines from _.htaccess.</strong></p>';
-               if (!$this->isWizardDone() && (int)$GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] > 0) {
-                       return TRUE;
-               }
-               return FALSE;
-       }
-
-       /**
-        * second step: get user info
-        *
-        * @param string Input prefix, all names of form fields have to start with this. Append custom name in [ ... ]
-        * @return string HTML output
-        */
-       public function getUserInput($inputPrefix) {
-               $content = '<p><strong>This configuration cannot be fixed automatically and requires a manual update.</strong> Please include the following lines from _.htaccess on top of your .htacess file.
-                                       <br /><br />
-                                       <pre>
-&lt;FilesMatch "\\.js\\.gzip$"&gt;
- AddType "text/javascript" .gzip
-&lt;/FilesMatch&gt;
-&lt;FilesMatch "\\.css\\.gzip$"&gt;
-  AddType "text/css" .gzip
-&lt;/FilesMatch&gt;
-AddEncoding gzip .gzip
-                                       </pre></p>';
-               return $content;
-       }
-
-       /**
-        * performs the action of the UpdateManager
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether everything went smoothly or not
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $customMessages = 'Cannot automatically fix this problem! Please check manually.';
-               $this->markWizardAsDone();
-               return FALSE;
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/CscSplitUpdate.php b/typo3/sysext/install/Classes/Updates/CscSplitUpdate.php
deleted file mode 100644 (file)
index 6e0378b..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 1999-2013 Susanne Moog <typo3@susanne-moog.de>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class for the split of css styled content templates. Used by the update wizard in the install tool.
- *
- * @author Susanne Moog <typo3@susanne-moog.de>
- */
-class CscSplitUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Split TypoScript Templates from CSS Styled Content';
-
-       /**
-        * Function which checks if update is needed. Called in the beginning of an update process.
-        *
-        * @param string &$description Pointer to description for the update
-        * @return boolean TRUE if update is needs to be performed, FALSE otherwise.
-        */
-       public function checkForUpdate(&$description) {
-               $templates = $this->getTemplatesWithCsc($dbQueries, $customMessages);
-               $templates = $this->findUpdateableTemplatesWithCsc($templates);
-               if (count($templates)) {
-                       $description = '<p>Run this wizard if you use CSS styled content in your templates, as the inclusion of the static templates changed. </p>' . '<p>You are currently using CSS styled content in <strong>' . count($templates) . '&nbsp;templates</strong>  (including deleted and hidden),' . ' so if you did not run this wizard before, <strong>do it now</strong>.</p>' . '<p>The wizard will automatically choose the right template according to your compatibility version. So if you want to ' . 'change the rendering back to an older version, you will have to use the changeCompatibilityVersion wizard above ' . 'first, and then return back to this one.</p>';
-                       return TRUE;
-               }
-               return FALSE;
-       }
-
-       /**
-        * Performs the update itself
-        *
-        * @param array &$dbQueries Pointer where to insert all DB queries made, so they can be shown to the user if wanted
-        * @param string &$customMessages Pointer to output custom messages
-        * @return boolean TRUE if update succeeded, FALSE otherwise
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $templates = $this->getTemplatesWithCsc($dbQueries, $customMessages);
-               $templates = $this->findUpdateableTemplatesWithCsc($templates);
-               $this->updateCscTemplates($templates, $dbQueries, $customMessages);
-               if ($customMessages) {
-                       return FALSE;
-               } else {
-                       return TRUE;
-               }
-       }
-
-       /**
-        * Gets the templates that include the static css styled content template
-        *
-        * @param array &$dbQueries Pointer where to insert all DB queries made, so they can be shown to the user if wanted
-        * @param string &$customMessages Pointer to output custom messages
-        * @return array uid and inclusion string for the templates, that include csc
-        */
-       protected function getTemplatesWithCsc(&$dbQueries, &$customMessages) {
-               $fields = 'uid, include_static_file';
-               $table = 'sys_template';
-               $where = 'include_static_file LIKE "%EXT:css_styled_content/static/%"';
-               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, $where);
-               $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
-               if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                       $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-               }
-               $templates = array();
-               while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
-                       $templates[] = $row;
-               }
-               return $templates;
-       }
-
-       /**
-        * Take a list of templates and filter them if they need an update or not
-        *
-        * @param array $allTemplates uid and inclusion string for the templates, that include csc
-        * @return array uid and inclusion string for the templates, that include csc and need an update
-        */
-       protected function findUpdateableTemplatesWithCsc($allTemplates) {
-               $compatVersion = \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger($GLOBALS['TYPO3_CONF_VARS']['SYS']['compat_version']);
-               $currentVersion = \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger(TYPO3_branch);
-               $templatesCount = count($allTemplates);
-               $updateableTemplates = array();
-               for ($i = 0; $i < $templatesCount; $i++) {
-                       $templateNeedsUpdate = FALSE;
-                       $includedTemplates = explode(',', $allTemplates[$i]['include_static_file']);
-                       $includedTemplatesCount = count($includedTemplates);
-                       // loop through every entry in the "include static file"
-                       for ($j = 0; $j < $includedTemplatesCount; $j++) {
-                               if (strpos($includedTemplates[$j], 'css_styled_content') !== FALSE) {
-                                       if ($compatVersion <= \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger('3.8')) {
-                                               if ($includedTemplates[$j] != 'EXT:css_styled_content/static/v3.8/') {
-                                                       $includedTemplates[$j] = 'EXT:css_styled_content/static/v3.8/';
-                                                       $templateNeedsUpdate = TRUE;
-                                               }
-                                       } elseif ($compatVersion <= \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger('4.1')) {
-                                               if ($includedTemplates[$j] != 'EXT:css_styled_content/static/v3.9/') {
-                                                       $includedTemplates[$j] = 'EXT:css_styled_content/static/v3.9/';
-                                                       $templateNeedsUpdate = TRUE;
-                                               }
-                                       } elseif ($compatVersion <= \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger('4.2')) {
-                                               if ($includedTemplates[$j] != 'EXT:css_styled_content/static/v4.2/') {
-                                                       $includedTemplates[$j] = 'EXT:css_styled_content/static/v4.2/';
-                                                       $templateNeedsUpdate = TRUE;
-                                               }
-                                       } elseif ($compatVersion <= \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger('4.3')) {
-                                               if ($includedTemplates[$j] != 'EXT:css_styled_content/static/v4.3/') {
-                                                       $includedTemplates[$j] = 'EXT:css_styled_content/static/v4.3/';
-                                                       $templateNeedsUpdate = TRUE;
-                                               }
-                                       } elseif ($compatVersion <= \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger('4.4')) {
-                                               if ($includedTemplates[$j] != 'EXT:css_styled_content/static/v4.4/') {
-                                                       $includedTemplates[$j] = 'EXT:css_styled_content/static/v4.4/';
-                                                       $templateNeedsUpdate = TRUE;
-                                               }
-                                       } elseif ($compatVersion <= \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger('4.5')) {
-                                               if ($includedTemplates[$j] != 'EXT:css_styled_content/static/v4.5/') {
-                                                       $includedTemplates[$j] = 'EXT:css_styled_content/static/v4.5/';
-                                                       $templateNeedsUpdate = TRUE;
-                                               }
-                                       } elseif ($compatVersion === $currentVersion || $compatVersion > '4.6') {
-                                               if ($includedTemplates[$j] != 'EXT:css_styled_content/static/') {
-                                                       $includedTemplates[$j] = 'EXT:css_styled_content/static/';
-                                                       $templateNeedsUpdate = TRUE;
-                                               }
-                                       }
-                               }
-                       }
-                       $allTemplates[$i]['include_static_file'] = implode(',', $includedTemplates);
-                       if ($templateNeedsUpdate) {
-                               $updateableTemplates[] = $allTemplates[$i];
-                       }
-               }
-               return $updateableTemplates;
-       }
-
-       /**
-        * updates the template records to include the new css styled content templates, according to the current compat version
-        *
-        * @param array $templates Template records to update, fetched by getTemplates() and filtered by
-        * @param array &$dbQueries Pointer where to insert all DB queries made, so they can be shown to the user if wanted
-        * @param string &$customMessages Pointer to output custom messages
-        */
-       protected function updateCscTemplates($templates, &$dbQueries, &$customMessages) {
-               foreach ($templates as $template) {
-                       $table = 'sys_template';
-                       $where = 'uid =' . $template['uid'];
-                       $field_values = array(
-                               'include_static_file' => $template['include_static_file']
-                       );
-                       $GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, $where, $field_values);
-                       $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
-                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                       }
-               }
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/FlagsFromSpriteUpdate.php b/typo3/sysext/install/Classes/Updates/FlagsFromSpriteUpdate.php
deleted file mode 100644 (file)
index bf35038..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2010-2013 Ernesto Baschny <ernst@cron-it.de>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class for transitioning from ".gif" flags to sprites
- *
- * @author Ernesto Baschny <ernst@cron-it.de>
- */
-class FlagsFromSpriteUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Update Graphics, Using Sprites for sys_language Records';
-
-       /**
-        * Checks if an update is needed
-        *
-        * @param string &$description The description for the update
-        * @return boolean Whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $result = FALSE;
-               $description = 'Removes the ".gif" suffix from entries in sys_language, because flags now come from a sprite provided by t3skin and not individual .gif files.';
-               if ($this->versionNumber >= 4005000) {
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', 'sys_language', 'flag LIKE \'%.gif\'', '', '', '1');
-                       if ($GLOBALS['TYPO3_DB']->sql_num_rows($res)) {
-                               $result = TRUE;
-                       }
-                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
-               }
-               return $result;
-       }
-
-       /**
-        * Performs the database update. Changes the flags from ".gif" to flag without suffix
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether it worked (TRUE) or not (FALSE)
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $result = FALSE;
-               if ($this->versionNumber >= 4005000) {
-                       $sql = 'UPDATE sys_language SET flag=REPLACE(flag, \'.gif\', \'\') WHERE flag LIKE \'%.gif\'';
-                       $res = $GLOBALS['TYPO3_DB']->sql_query($sql);
-                       $dbQueries[] = $sql;
-                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                       } else {
-                               $result = TRUE;
-                       }
-                       $sql = 'UPDATE sys_language SET flag=\'multiple\' WHERE flag=\'multi-language\'';
-                       $res = $GLOBALS['TYPO3_DB']->sql_query($sql);
-                       $dbQueries[] = $sql;
-                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                       } else {
-                               $result = TRUE;
-                       }
-               }
-               return $result;
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/ImagecolsUpdate.php b/typo3/sysext/install/Classes/Updates/ImagecolsUpdate.php
deleted file mode 100644 (file)
index 364fae9..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2008-2013 Steffen Kamper <info@sk-typo3.de>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class for merging advanced and normal pagetype.
- *
- * @author Steffen Kamper <info@sk-typo3.de>
- */
-class ImagecolsUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Update Existing Text with Image Content Elements';
-
-       /**
-        * Checks if an update is needed
-        *
-        * @param string &$description The description for the update
-        * @return boolean Whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $result = FALSE;
-               $description = 'Sets tt_content.imagecols = 1 to all entries having "0". This is needed to have a valid value for imagecols.';
-               if ($this->versionNumber >= 4003000) {
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', 'tt_content', 'CTYPE IN (\'textpic\', \'image\') AND imagecols=0', '', '', '1');
-                       if ($GLOBALS['TYPO3_DB']->sql_num_rows($res)) {
-                               $result = TRUE;
-                       }
-                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
-               }
-               return $result;
-       }
-
-       /**
-        * Performs the database update. Changes the doktype from 2 (advanced) to 1 (standard)
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether it worked (TRUE) or not (FALSE)
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $result = FALSE;
-               if ($this->versionNumber >= 4003000) {
-                       $updateArray = array(
-                               'imagecols' => 1
-                       );
-                       $res = $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_content', 'CTYPE IN (\'textpic\', \'image\') AND imagecols=0', $updateArray);
-                       $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
-                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                       } else {
-                               $result = TRUE;
-                       }
-               }
-               return $result;
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/ImagelinkUpdate.php b/typo3/sysext/install/Classes/Updates/ImagelinkUpdate.php
deleted file mode 100644 (file)
index 0f22c2e..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2011-2013 Christian Kuhn <lolli@schwarzbu.ch>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class to split existing image_link field by comma and
- * switch to newlines.
- *
- * @author Christian Kuhn <lolli@schwarzbu.ch>
- */
-class ImagelinkUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Update Existing image links';
-
-       /**
-        * Checks if an update is needed
-        *
-        * @param string &$description The description for the update
-        * @return boolean TRUE if an update is needed, FALSE otherwise
-        */
-       public function checkForUpdate(&$description) {
-               $description = 'Since TYPO3 4.5 links to images of "Image" and "Text with image" content elements are separated by newline and not by comma anymore. This update converts existing comma separated links to the new form.';
-               $result = FALSE;
-               if ($this->versionNumber >= 4005000) {
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                               'uid',
-                               'tt_content',
-                               'image_link<>\'\' AND image_link LIKE \'%,%\' AND image_link NOT LIKE \'%\\n%\'',
-                               '',
-                               '',
-                               '1'
-                       );
-                       if ($GLOBALS['TYPO3_DB']->sql_num_rows($res)) {
-                               $result = TRUE;
-                       }
-                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
-               }
-               return $result;
-       }
-
-       /**
-        * Performs the database update.
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean TRUE on success, FALSE on error
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $result = TRUE;
-               if ($this->versionNumber >= 4005000) {
-                       $affectedRows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
-                               'uid, image_link',
-                               'tt_content',
-                               'image_link<>\'\' AND image_link LIKE \'%,%\' AND image_link NOT LIKE \'%\\n%\''
-                       );
-                       foreach ($affectedRows as $row) {
-                               $newImageLink = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $row['image_link']);
-                               $newImageLink = implode(LF, $newImageLink);
-                               $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_content', 'uid=' . $row['uid'], array('image_link' => $newImageLink));
-                               $dbQueries[] = str_replace(LF, ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
-                               if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                                       $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                                       $result = $result & FALSE;
-                               }
-                       }
-               }
-               return $result;
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/InstallSysExtsUpdate.php b/typo3/sysext/install/Classes/Updates/InstallSysExtsUpdate.php
deleted file mode 100644 (file)
index e2e20e0..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2008-2013 Benjamin Mack <benni@typo3.org>
- *  (c) 2008-2013 Steffen Kamper <info@sk-typo3.de>
- *  (c) 2012-2013 Kai Vogel <kai.vogel@speedprogs.de>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class for adding new system extensions.
- *
- * @author Benjamin Mack <benni@typo3.org>
- * @author Steffen Kamper <info@sk-typo3.de>
- * @author Kai Vogel <kai.vogel@speedprogs.de>
- */
-class InstallSysExtsUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Install System Extensions';
-
-       /**
-        * @var array
-        */
-       protected $systemExtensions = array(
-               'info',
-               'perm',
-               'func',
-               'filelist',
-               'about',
-               'cshmanual',
-               'feedit',
-               'opendocs',
-               'recycler',
-               't3editor',
-               'reports',
-               'scheduler',
-               'simulatestatic',
-               'documentation',
-               'rsaauth',
-       );
-
-       /**
-        * @var array
-        */
-       protected $extensionDetails = array(
-               'simulatestatic' => array(
-                       'title' => 'Simulate Static URLs',
-                       'description' => 'Adds the possibility to have Speaking URLs in the TYPO3 Frontend pages.',
-                       'versionString' => '2.0.0',
-               ),
-       );
-
-       /**
-        * @var string
-        */
-       protected $extEmConfPath = 'typo3/sysext/@extensionKey/ext_emconf.php';
-
-       /**
-        * @var string
-        */
-       protected $repositoryUrl = 'http://typo3.org/fileadmin/ter/@filename';
-
-       /**
-        * @var string
-        */
-       protected $informationUrl = 'http://typo3.org/index.php?type=95832&tx_terfe2_pi1%5Baction%5D=show&tx_terfe2_pi1%5Bformat%5D=json&tx_terfe2_pi1%5BextensionKey%5D=@extensionKey';
-
-       /**
-        * @var boolean
-        */
-       protected $updateSuccessful = TRUE;
-
-       /**
-        * Checks if an update is needed
-        *
-        * @param string &$description The description for the update
-        * @return boolean whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $description = '
-                       <br />
-                       Uninstalled system extensions have been found.
-                       It is now possible to install them automatically by this upgrade wizard.
-               ';
-
-               if ($this->isWizardDone()) {
-                       return FALSE;
-               }
-
-               foreach ($this->systemExtensions as $extensionKey) {
-                       if (!\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($extensionKey)) {
-                               return TRUE;
-                       }
-               }
-
-               return FALSE;
-       }
-
-       /**
-        * Second step: Get user input for installing system extensions
-        *
-        * @param string $inputPrefix input prefix, all names of form fields have to start with this. Append custom name in [ ... ]
-        * @return string HTML output
-        */
-       public function getUserInput($inputPrefix) {
-               $list = '
-                       <p>
-                               Install the following system extensions:
-                       </p>
-                       <fieldset>
-                               <ol class="t3-install-form-label-after">%s</ol>
-                       </fieldset>';
-               $item = '
-                       <li class="labelAfter">
-                               <input type="checkbox" id="%1$s" name="%2$s[sysext][%1$s]" value="1" />
-                               <label for="%1$s"><strong>%3$s [%1$s]</strong><br />%4$s</label>
-                       </li>';
-               $items = array();
-
-               foreach ($this->systemExtensions as $extensionKey) {
-                       if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($extensionKey)) {
-                               continue;
-                       }
-                       $extension = $this->getExtensionDetails($extensionKey);
-                       $items[] = sprintf(
-                               $item,
-                               $extensionKey,
-                               $inputPrefix,
-                               htmlspecialchars($extension['title']),
-                               htmlspecialchars($extension['description'])
-                       );
-               }
-
-               return sprintf($list, implode('', $items));
-       }
-
-       /**
-        * Adds the outsourced extensions to the extList in TYPO3_CONF_VARS
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean whether it worked (TRUE) or not (FALSE)
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               // Get extension keys that were submitted by the user to be installed and that are valid for this update wizard
-               if (is_array($this->userInput['sysext'])) {
-                       $extArray = array_intersect(
-                               $this->systemExtensions,
-                               array_keys($this->userInput['sysext'])
-                       );
-                       $this->installExtensions($extArray, $customMessages);
-               }
-
-               // Show this wizard again only if new extension keys have been found
-               $this->markWizardAsDone();
-
-               return $this->updateSuccessful;
-       }
-
-       /**
-        * This method can be called to install extensions following all proper processes
-        * (e.g. installing in extList, respecting priority, etc.)
-        *
-        * @param array $extensionKeys List of keys of extensions to install
-        * @param mixed $customMessages
-        * @return void
-        */
-       protected function installExtensions($extensionKeys, &$customMessages) {
-               /** @var $extensionListUtility \TYPO3\CMS\Extensionmanager\Utility\ListUtility */
-               $extensionListUtility = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
-                       'TYPO3\\CMS\\Extensionmanager\\Utility\\ListUtility'
-               );
-
-               /** @var $extensionFileHandlingUtility \TYPO3\CMS\Extensionmanager\Utility\FileHandlingUtility */
-               $extensionFileHandlingUtility = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
-                       'TYPO3\\CMS\\Extensionmanager\\Utility\\FileHandlingUtility'
-               );
-               /** @var $objectManager \TYPO3\CMS\Extbase\Object\ObjectManager */
-               $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
-
-               /** @var $extensionInstallUtility \TYPO3\CMS\Extensionmanager\Utility\InstallUtility */
-               $extensionInstallUtility = $objectManager->get('TYPO3\\CMS\\Extensionmanager\\Utility\\InstallUtility');
-
-               /** @var $extensionTerUtility \TYPO3\CMS\Extensionmanager\Utility\Connection\TerUtility */
-               $extensionTerUtility = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
-                       'TYPO3\\CMS\\Extensionmanager\\Utility\\Connection\\TerUtility'
-               );
-               $availableExtensions = $extensionListUtility->getAvailableExtensions();
-               $availableAndInstalledExtensions = $extensionListUtility->getAvailableAndInstalledExtensions($availableExtensions);
-               foreach ($extensionKeys as $extensionKey) {
-                       if (!is_array($availableAndInstalledExtensions[$extensionKey])) {
-                               $extensionDetails = $this->getExtensionDetails($extensionKey);
-                               if (empty($extensionDetails)) {
-                                       $this->updateSuccessful = FALSE;
-                                       $customMessages .= 'No version information for extension ' . $extensionKey . '. Cannot install it.';
-                                       continue;
-                               }
-                               $t3xContent = $this->fetchExtension($extensionKey, $extensionDetails['versionString']);
-                               if (empty($t3xContent)) {
-                                       $this->updateSuccessful = FALSE;
-                                       $customMessages .= 'The extension ' . $extensionKey . ' could not be downloaded.';
-                                       continue;
-                               }
-                               $t3xExtracted = $extensionTerUtility->decodeExchangeData($t3xContent);
-                               if (empty($t3xExtracted) || !is_array($t3xExtracted) || empty($t3xExtracted['extKey'])) {
-                                       $this->updateSuccessful = FALSE;
-                                       $customMessages .= 'The extension ' . $extensionKey . ' could not be extracted.';
-                                       continue;
-                               }
-                               $extensionFileHandlingUtility->unpackExtensionFromExtensionDataArray($t3xExtracted);
-                       }
-                       $extensionInstallUtility->install($extensionKey);
-               }
-       }
-
-       /**
-        * Returns the details of a local or external extension
-        *
-        * @param string $extensionKey Key of the extension to check
-        * @return array Extension details
-        */
-       protected function getExtensionDetails($extensionKey) {
-               // Local extension
-               $extEmConf = PATH_site . str_replace('@extensionKey', $extensionKey, $this->extEmConfPath);
-               if (file_exists($extEmConf)) {
-                       $EM_CONF = FALSE;
-                       require_once($extEmConf);
-                       return reset($EM_CONF);
-               }
-
-               if (array_key_exists($extensionKey, $this->extensionDetails)) {
-                       return $this->extensionDetails[$extensionKey];
-               }
-
-               return array();
-       }
-
-       /**
-        * Fetch extension from repository
-        *
-        * @param string $extensionKey The extension key to fetch
-        * @param string $version The version to fetch
-        * @return string T3X file content
-        */
-       protected function fetchExtension($extensionKey, $version) {
-               if (empty($extensionKey) || empty($version)) {
-                       return '';
-               }
-
-               $filename = $extensionKey[0] . '/' . $extensionKey[1] . '/' . $extensionKey . '_' . $version . '.t3x';
-               $url = str_replace('@filename', $filename, $this->repositoryUrl);
-               return $this->fetchUrl($url);
-       }
-
-       /**
-        * Open an URL and return the response
-        *
-        * This wrapper method is required to try several download methods if
-        * the configuration is not valid or initially written by the installer.
-        *
-        * @param string $url The URL to file
-        * @throws \Exception
-        * @return string File content
-        */
-       protected function fetchUrl($url) {
-               if (empty($url)) {
-                       return NULL;
-               }
-
-               $fileContent = \TYPO3\CMS\Core\Utility\GeneralUtility::getUrl($url, 0, array(TYPO3_user_agent));
-
-               // No content, force cURL if disabled in configuration but found in system
-               if ($fileContent === FALSE && function_exists('curl_init') && empty($GLOBALS['TYPO3_CONF_VARS']['SYS']['curlUse'])) {
-                       $GLOBALS['TYPO3_CONF_VARS']['SYS']['curlUse'] = TRUE;
-                       $fileContent = \TYPO3\CMS\Core\Utility\GeneralUtility::getUrl($url, 0, array(TYPO3_user_agent));
-                       $GLOBALS['TYPO3_CONF_VARS']['SYS']['curlUse'] = FALSE;
-               }
-
-               // Still no content, try file_get_contents if allow_url_fopen is enabled
-               if ($fileContent === FALSE && function_exists('file_get_contents') && ini_get('allow_url_fopen')) {
-                       $fileContent = file_get_contents($url);
-               }
-
-               // Can not fetch url, throw an exception
-               if ($fileContent === FALSE) {
-                       throw new \Exception(
-                               'Can not fetch URL "' . $url . '". Possible reasons are network problems or misconfiguration.',
-                               1344685036
-                       );
-               }
-
-               return $fileContent;
-       }
-
-       /**
-        * Marks the wizard as being "seen" so that it not shown again until
-        * no new extension keys have been found.
-        *
-        * Writes the info in LocalConfiguration.php
-        *
-        * @return void
-        */
-       protected function markWizardAsDone() {
-               \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager')->setLocalConfigurationValueByPath(
-                       'INSTALL/wizardDone/' . get_class($this),
-                       json_encode($this->systemExtensions)
-               );
-       }
-
-       /**
-        * Checks if all extensions have been "seen" before
-        *
-        * @return boolean TRUE if wizard has been done before, FALSE otherwise
-        */
-       protected function isWizardDone() {
-               $wizardClassName = get_class($this);
-               if (!empty($GLOBALS['TYPO3_CONF_VARS']['INSTALL']['wizardDone'][$wizardClassName])) {
-                       $seenExtensions = json_decode($GLOBALS['TYPO3_CONF_VARS']['INSTALL']['wizardDone'][$wizardClassName], TRUE);
-                       return count(array_diff($this->systemExtensions, $seenExtensions)) === 0;
-               }
-               return FALSE;
-       }
-}
diff --git a/typo3/sysext/install/Classes/Updates/MergeAdvancedUpdate.php b/typo3/sysext/install/Classes/Updates/MergeAdvancedUpdate.php
deleted file mode 100644 (file)
index 7b837cd..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2008-2013 Steffen Kamper <info@sk-typo3.de>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class for merging advanced and normal pagetype.
- *
- * @author Steffen Kamper <info@sk-typo3.de>
- */
-class MergeAdvancedUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Update Pages with Pagetype "Advanced"';
-
-       /**
-        * Checks if an update is needed
-        *
-        * @param string &$description The description for the update
-        * @return boolean whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $result = FALSE;
-               $description = 'Merges the "Advanced" pagetype (doktype 2) to "Standard" (doktype 1) because "Standard" now has the same features, and "Advanced" is not needed anymore.';
-               if ($this->versionNumber >= 4002000) {
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', 'pages', 'doktype=2', '', '', '1');
-                       if ($GLOBALS['TYPO3_DB']->sql_num_rows($res)) {
-                               $result = TRUE;
-                       }
-                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
-               }
-               return $result;
-       }
-
-       /**
-        * Performs the database update. Changes the doktype from 2 (advanced) to 1 (standard)
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether it worked (TRUE) or not (FALSE)
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $result = FALSE;
-               if ($this->versionNumber >= 4002000) {
-                       $updateArray = array(
-                               'doktype' => 1
-                       );
-                       $res = $GLOBALS['TYPO3_DB']->exec_UPDATEquery('pages', 'doktype=2', $updateArray);
-                       $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
-                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                       } else {
-                               $result = TRUE;
-                       }
-               }
-               return $result;
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/MigrateWorkspacesUpdate.php b/typo3/sysext/install/Classes/Updates/MigrateWorkspacesUpdate.php
deleted file mode 100644 (file)
index 37bde50..0000000
+++ /dev/null
@@ -1,419 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2010-2013 Tolleiv Nietsch <info@tolleiv.de>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Migrates workspaces from TYPO3 versions below 4.5.
- *
- * @author Tolleiv Nietsch <info@tolleiv.de>
- */
-class MigrateWorkspacesUpdate extends InstallSysExtsUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Versioning and Workspaces';
-
-       /**
-        * @var array
-        */
-       public $sqlQueries;
-
-       /**
-        * Checks if an update is needed
-        *
-        * @param string &$description The description for the update, which will be updated with a description of the script's purpose
-        * @return boolean Whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               if ($this->isWizardDone()) {
-                       return FALSE;
-               }
-               $result = FALSE;
-               $description = 'Migrates the old hardcoded draft workspace to be a real workspace record,
-               updates workspace owner fields to support either users or groups and
-               migrates the old-style workspaces with fixed workflow to a custom-stage workflow. If required
-               the extbase, fluid, version and workspaces extensions are installed.';
-               $reason = '';
-               // TYPO3 version 4.5 and above
-               if ($this->versionNumber >= 4005000) {
-                       // If neither version nor workspaces is installed, we're not doing a migration
-                       // Present the user with the choice of activating versioning and workspaces
-                       if (
-                               !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('version')
-                               && !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('workspaces')
-                       ) {
-                               $result = TRUE;
-                               // Override the default description
-                               $description = 'Activates the usage of workspaces in your installation. Workspaces let you edit elements
-                                       without the changes being visible on the live web site right away. Modified elements can then go
-                                       through a validation process and eventually be published.<br /><br />';
-                               $description .= 'This wizard will install system extensions "version" and "workspaces" (and may
-                                       install "fluid" and "extbase" too, as they are used by the "workspaces" extension).';
-                       } else {
-                               \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->loadExtensionTables(FALSE);
-                               if (
-                                       !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('version')
-                                       || !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('workspaces')
-                               ) {
-                                       $result = TRUE;
-                                       $reason .= ' Both extensions "version" and "workspaces" need to be
-                                               present to use the entire versioning and workflow featureset of TYPO3.';
-                               }
-                               $tables = array_keys($GLOBALS['TYPO3_DB']->admin_get_tables());
-                               // sys_workspace table might not exists if version extension was never installed
-                               if (!in_array('sys_workspace', $tables) || !in_array('sys_workspace_stage', $tables)) {
-                                       $result = TRUE;
-                                       $reason .= ' The database tables for the workspace functionality are missing.';
-                               } elseif ($this->isOldStyleAdminFieldUsed() || $this->isOldStyleWorkspace()) {
-                                       $wsCount = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', 'sys_workspace', '');
-                                       $result |= $wsCount > 0;
-                                       $reason .= ' The existing workspaces will be checked for compatibility with the new features.';
-                               }
-                               $draftWorkspaceTestResult = $this->isDraftWorkspaceUsed();
-                               if ($draftWorkspaceTestResult) {
-                                       $reason .= ' The old style draft workspace is used.
-                                               Related records will be moved into a full featured workspace.';
-                                       $result = TRUE;
-                               }
-                               $description .= '<br /><strong>Why do you need this wizard?</strong><br />' . $reason;
-                       }
-               }
-               return $result;
-       }
-
-       /**
-        * This method requests input from the user about the upgrade process, if needed
-        *
-        * @param string $inputPrefix
-        * @return string
-        */
-       public function getUserInput($inputPrefix) {
-               $content = '';
-               if (
-                       !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('version')
-                       && !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('workspaces')
-               ) {
-                       // We need feedback only if versioning is not activated at all
-                       // In such a case we want to leave the user with the choice of not activating the stuff at all
-                       $content = '
-                               <fieldset>
-                                       <ol>
-                       ';
-                       $content .= '
-                               <li class="labelAfter">
-                                       <input type="checkbox" id="versioning" name="' . $inputPrefix . '[versioning]" value="1" checked="checked" />
-                                       <label for="versioning">Activate workspaces?</label>
-                               </li>
-                       ';
-                       $content .= '
-                                       </ol>
-                               </fieldset>
-                       ';
-               } else {
-                       // No feedback needed, just include the update flag as a hidden field
-                       $content = '<input type="hidden" id="versioning" name="' . $inputPrefix . '[versioning]" value="1" />';
-               }
-               return $content;
-       }
-
-       /**
-        * Performs the database update. Changes existing workspaces to use the new custom workspaces
-        *
-        * @param array &$databaseQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether it worked (TRUE) or not (FALSE)
-        */
-       public function performUpdate(array &$databaseQueries, &$customMessages) {
-               $result = TRUE;
-               // TYPO3 version below 4.5
-               if ($this->versionNumber < 4005000) {
-                       return FALSE;
-               }
-               // Wizard skipped by the user
-               if (empty($this->pObj->INSTALL['update']['migrateWorkspaces']['versioning'])) {
-                       $this->markWizardAsDone();
-                       return TRUE;
-               }
-               \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->loadExtensionTables(FALSE);
-               // install version and workspace extension (especially when updating from very old TYPO3 versions
-               $this->installExtensions(array('extbase', 'fluid', 'version', 'workspaces'));
-               // migrate all workspaces to support groups and be_users
-               if ($this->isOldStyleAdminFieldUsed()) {
-                       $this->migrateAdminFieldToNewStyle();
-               }
-               // create a new dedicated "Draft" workspace and move all records to that new workspace
-               if ($this->isDraftWorkspaceUsed()) {
-                       $draftWorkspaceId = $this->createWorkspace();
-                       if (is_integer($draftWorkspaceId)) {
-                               $this->migrateDraftWorkspaceRecordsToWorkspace($draftWorkspaceId);
-                       }
-               }
-               $workspaces = $this->getWorkspacesWithoutStages();
-               $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-               $label = 'Review';
-               foreach ($workspaces as $workspace) {
-                       // Find all workspaces and add "review" stage record
-                       // Add review users and groups to the new IRRE record
-                       $reviewStageId = $this->createReviewStageForWorkspace($workspace['uid'], $label, $workspace['reviewers']);
-                       // Update all "review" state records in the database to point to the new state
-                       $this->migrateOldRecordsToStage($workspace['uid'], 1, $reviewStageId);
-                       // Update all "ready to publish" records in the database to point to the new ready to publish state
-                       $this->migrateOldRecordsToStage($workspace['uid'], 10, -99);
-               }
-               if (is_array($this->sqlQueries) && is_array($databaseQueries)) {
-                       $databaseQueries = array_merge($databaseQueries, $this->sqlQueries);
-               }
-               return $result;
-       }
-
-       /**
-        * Check if any table contains draft-workspace records
-        *
-        * @return boolean
-        */
-       protected function isDraftWorkspaceUsed() {
-               $foundDraftRecords = FALSE;
-               $tables = array_keys($GLOBALS['TCA']);
-               foreach ($tables as $table) {
-                       if (is_array($GLOBALS['TCA'][$table])) {
-                               $versioningVer = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($GLOBALS['TCA'][$table]['ctrl']['versioningWS'], 0, 2, 0);
-                               if ($versioningVer > 0) {
-                                       if ($this->hasElementsOnWorkspace($table, -1)) {
-                                               $foundDraftRecords = TRUE;
-                                               break;
-                                       }
-                               }
-                       }
-               }
-               return $foundDraftRecords;
-       }
-
-       /**
-        * Find workspaces which have no sys_workspace_state(s) but have records using states
-        *
-        * @return boolean
-        */
-       protected function isOldStyleWorkspace() {
-               $foundOldStyleStages = FALSE;
-               $workspaces = $this->getWorkspacesWithoutStages();
-               $workspacesWithReviewers = 0;
-               $workspaceUids = array();
-               foreach ($workspaces as $workspace) {
-                       $workspaceUids[] = $workspace['uid'];
-                       if ($workspace['reviewers']) {
-                               $workspacesWithReviewers++;
-                       }
-               }
-               if (!$workspacesWithReviewers && !empty($workspaceUids)) {
-                       $tables = array_keys($GLOBALS['TCA']);
-                       foreach ($tables as $table) {
-                               $versioningVer = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($GLOBALS['TCA'][$table]['ctrl']['versioningWS'], 0, 2, 0);
-                               if ($versioningVer > 0) {
-                                       $count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', $table, 't3ver_wsid IN (' . implode(',', $workspaceUids) . ') AND t3ver_stage IN (-1,1,10) AND pid = -1');
-                                       if ($count > 0) {
-                                               $foundOldStyleStages = TRUE;
-                                               break;
-                                       }
-                               }
-                       }
-               }
-               return $foundOldStyleStages || $workspacesWithReviewers;
-       }
-
-       /**
-        * Create a new stage for the given workspace
-        *
-        * @param integer Workspace ID
-        * @param string The label of the new stage
-        * @param string The users or groups which are authorized for that stage
-        * @return integer The id of the new stage
-        */
-       protected function createReviewStageForWorkspace($workspaceId, $stageLabel, $stageMembers) {
-               $data = array(
-                       'parentid' => $workspaceId,
-                       'parenttable' => 'sys_workspace',
-                       'title' => $stageLabel,
-                       'responsible_persons' => $stageMembers
-               );
-               $GLOBALS['TYPO3_DB']->exec_INSERTquery('sys_workspace_stage', $data);
-               $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-               return $GLOBALS['TYPO3_DB']->sql_insert_id();
-       }
-
-       /**
-        * Updates the stages of placeholder records within the given workspace from $oldId to $newId
-        *
-        * @param integer Workspace ID
-        * @param integer Old stage od
-        * @param integer New stage od
-        * @return void
-        */
-       protected function migrateOldRecordsToStage($workspaceId, $oldStageId, $newStageId) {
-               $tables = array_keys($GLOBALS['TCA']);
-               $where = 't3ver_wsid = ' . (int)$workspaceId . ' AND t3ver_stage = ' . (int)$oldStageId . ' AND pid = -1';
-               $values = array(
-                       't3ver_stage' => (int)$newStageId
-               );
-               foreach ($tables as $table) {
-                       $versioningVer = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($GLOBALS['TCA'][$table]['ctrl']['versioningWS'], 0, 2, 0);
-                       if ($versioningVer > 0) {
-                               $GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, $where, $values);
-                               $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-                       }
-               }
-       }
-
-       /**
-        * Check if there's any workspace which doesn't support the new admin-field format yet
-        *
-        * @return boolean
-        */
-       protected function isOldStyleAdminFieldUsed() {
-               $where = 'adminusers != "" AND adminusers NOT LIKE "%be_users%" AND adminusers NOT LIKE "%be_groups%" AND deleted=0';
-               $count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', 'sys_workspace', $where);
-               $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-               return $count > 0;
-       }
-
-       /**
-        * Create a real workspace named "Draft"
-        *
-        * @return integer
-        */
-       protected function createWorkspace() {
-               // @todo who are the reviewers and owners for this workspace?
-               // In previous versions this was defined in be_groups/be_users with the setting "Edit in Draft"
-               $data = array(
-                       'title' => 'Draft'
-               );
-               $GLOBALS['TYPO3_DB']->exec_INSERTquery('sys_workspace', $data);
-               $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-               return $GLOBALS['TYPO3_DB']->sql_insert_id();
-       }
-
-       /**
-        * Migrates all elements from the old draft workspace to the new one.
-        *
-        * @param integer $wsId
-        * @return void
-        */
-       protected function migrateDraftWorkspaceRecordsToWorkspace($wsId) {
-               $tables = array_keys($GLOBALS['TCA']);
-               $where = 't3ver_wsid=-1';
-               $values = array(
-                       't3ver_wsid' => (int)$wsId
-               );
-               foreach ($tables as $table) {
-                       $versioningVer = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($GLOBALS['TCA'][$table]['ctrl']['versioningWS'], 0, 2, 0);
-                       if ($versioningVer > 0 && $this->hasElementsOnWorkspace($table, -1)) {
-                               $GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, $where, $values);
-                               $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-                       }
-               }
-       }
-
-       /**
-        * Migrate all workspace admin users fields to support groups as well,
-        * this means that the old comma separated list of uids (referring to be_users)
-        * is updated to be a list of uids with the tablename as prefix
-        *
-        * @return void
-        */
-       protected function migrateAdminFieldToNewStyle() {
-               $where = 'adminusers != "" AND adminusers NOT LIKE "%be_users%" AND adminusers NOT LIKE "%be_groups%" AND deleted=0';
-               $workspaces = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid, adminusers', 'sys_workspace', $where);
-               $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-               foreach ($workspaces as $workspace) {
-                       $updateArray = array(
-                               'adminusers' => 'be_users_' . implode(',be_users_', \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $workspace['adminusers'], TRUE))
-                       );
-                       $GLOBALS['TYPO3_DB']->exec_UPDATEquery('sys_workspace', 'uid = ' . $workspace['uid'], $updateArray);
-                       $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-               }
-       }
-
-       /**
-        * Determines whether a table has elements in a particular workspace.
-        *
-        * @param string $table Name of the table
-        * @param integer $workspaceId Id of the workspace
-        * @return boolean
-        */
-       protected function hasElementsOnWorkspace($table, $workspaceId) {
-               $count = 0;
-               if ($this->checkIfTableExists($table)) {
-                       $count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', $table, 't3ver_wsid=' . (int)$workspaceId);
-                       $this->sqlQueries[] = $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
-               }
-
-               return $count > 0;
-       }
-
-       /**
-        * Returns all sys_workspace records which are not referenced by any sys_workspace_stages record
-        *
-        * @return array
-        */
-       protected function getWorkspacesWithoutStages() {
-               $stages = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('parentid', 'sys_workspace_stage', 'parenttable=\'sys_workspace\'');
-               $wsWhitelist = array();
-               foreach ($stages as $stage) {
-                       $wsWhitelist[] = $stage['parentid'];
-               }
-               $where = 'deleted=0';
-               $where .= !empty($wsWhitelist) ? ' AND uid NOT IN (' . implode(',', $wsWhitelist) . ')' : '';
-               return $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', 'sys_workspace', $where);
-       }
-
-       /**
-        * Marks some wizard as being "seen" so that it not shown again.
-        *
-        * Writes the info in LocalConfiguration.php
-        *
-        * @param mixed $confValue The configuration is set to this value
-        * @return void
-        */
-       protected function markWizardAsDone($confValue = 1) {
-               \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager')->setLocalConfigurationValueByPath('INSTALL/wizardDone/' . get_class($this), $confValue);
-       }
-
-       /**
-        * Checks if this wizard has been "done" before
-        *
-        * @return boolean TRUE if wizard has been done before, FALSE otherwise
-        */
-       protected function isWizardDone() {
-               $wizardClassName = get_class($this);
-               $done = FALSE;
-               if (isset($GLOBALS['TYPO3_CONF_VARS']['INSTALL']['wizardDone'][$wizardClassName]) && $GLOBALS['TYPO3_CONF_VARS']['INSTALL']['wizardDone'][$wizardClassName]) {
-                       $done = TRUE;
-               }
-               return $done;
-       }
-}
diff --git a/typo3/sysext/install/Classes/Updates/NotInMenuUpdate.php b/typo3/sysext/install/Classes/Updates/NotInMenuUpdate.php
deleted file mode 100644 (file)
index 6f4ccc4..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 1999-2013 Sebastian Kurfürst <sebastian@garbage-group.de>
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class for not in menu pages.
- * Used by the update wizard in the install tool.
- *
- * @author Sebastian Kurfürst <sebastian@garbage-group.de>
- * @author Steffen Kamper <info@sk-typo3.de>
- */
-class NotInMenuUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Update Pages with Doktype "Not in menu"';
-
-       /**
-        * Checks if an update is needed
-        *
-        * @param string &$description The description for the update
-        * @return boolean Whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $result = FALSE;
-               $description = 'Removes the deprecated pages doktype "Not in menu". It sets the successing flag "Not in menu" for the corresponding pages instead.';
-               if ($this->versionNumber >= 4002000) {
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', 'pages', 'doktype=5', '', '', '1');
-                       if ($GLOBALS['TYPO3_DB']->sql_num_rows($res)) {
-                               $result = TRUE;
-                       }
-                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
-               }
-               return $result;
-       }
-
-       /**
-        * Performs the database update. Changes the doktype from 5 ("not in menu") to 1 (standard) and sets the "nav_hide" flag to 1
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether it worked (TRUE) or not (FALSE)
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $result = FALSE;
-               if ($this->versionNumber >= 4002000) {
-                       $updateArray = array(
-                               'doktype' => 1,
-                               'nav_hide' => 1
-                       );
-                       $res = $GLOBALS['TYPO3_DB']->exec_UPDATEquery('pages', 'doktype=5', $updateArray);
-                       $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
-                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
-                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
-                       } else {
-                               $result = TRUE;
-                       }
-               }
-               return $result;
-       }
-
-}
diff --git a/typo3/sysext/install/Classes/Updates/T3skinUpdate.php b/typo3/sysext/install/Classes/Updates/T3skinUpdate.php
deleted file mode 100644 (file)
index 141051b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\Updates;
-
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2010-2013  Steffen Ritter (info@rs-websystems.de)
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the text file GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
- *
- *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-/**
- * Contains the update class for not installed t3skin. Used by the update wizard in the install tool.
- *
- * @author Steffen Ritter <info@rs-websystems.de>
- */
-class T3skinUpdate extends AbstractUpdate {
-
-       /**
-        * @var string
-        */
-       protected $title = 'Install the TYPO3 Skin "t3skin"';
-
-       /**
-        * Checks if t3skin is not installed.
-        *
-        * @param string &$description The description for the update
-        * @return boolean Whether an update is needed (TRUE) or not (FALSE)
-        */
-       public function checkForUpdate(&$description) {
-               $result = FALSE;
-               $description = '<strong>The backend skin "t3skin" is not loaded.</strong>
-               Without "t3skin" the backend may be unusable. Install extension "t3skin".';
-               if (!\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('t3skin')) {
-                       $result = TRUE;
-               }
-               return $result;
-       }
-
-       /**
-        * second step: get user info
-        *
-        * @param string Input prefix, all names of form fields have to start with this. Append custom name in [ ... ]
-        * @return string HTML output
-        */
-       public function getUserInput($inputPrefix) {
-               $content = '<strong>Install the system extension</strong><br />You are about to install the extension "t3skin".';
-               return $content;
-       }
-
-       /**
-        * performs the action of the UpdateManager
-        *
-        * @param array &$dbQueries Queries done in this update
-        * @param mixed &$customMessages Custom messages
-        * @return boolean Whether everything went smoothly or not
-        */
-       public function performUpdate(array &$dbQueries, &$customMessages) {
-               $result = FALSE;
-               if ($this->versionNumber >= 4004000 && !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('t3skin')) {
-                       // check whether the table can be truncated or if sysext with tca has to be installed
-                       if ($this->checkForUpdate($customMessages)) {
-                               try {
-                                       \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::loadExtension('t3skin');
-                                       $customMessages = 'The system extension "t3skin" was successfully loaded.';
-                                       $result = TRUE;
-                               } catch (\RuntimeException $e) {
-                                       $result = FALSE;
-                               }
-                       }
-               }
-               return $result;
-       }
-
-}
index c003ed8..686443d 100644 (file)
@@ -5,35 +5,9 @@ if (!defined('TYPO3_MODE')) {
 
 // TYPO3 6.0 - Create page and TypoScript root template (automatically executed in 123-mode)
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['rootTemplate'] = 'TYPO3\\CMS\\Install\\Updates\\RootTemplateUpdate';
-// TYPO3 4.5 - Check the database to be utf-8 compliant
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['charsetDefaults'] = 'TYPO3\\CMS\\Install\\Updates\\CharsetDefaultsUpdate';
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['changeCompatibilityVersion'] = 'TYPO3\\CMS\\Install\\Updates\\CompatVersionUpdate';
-// manage split includes of css_styled_contents since TYPO3 4.3
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['splitCscToMultipleTemplates'] = 'TYPO3\\CMS\\Install\\Updates\\CscSplitUpdate';
-// remove pagetype "not in menu" since TYPO3 4.2
-// as there is an option in every pagetype
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['removeNotInMenuDoktypeConversion'] = 'TYPO3\\CMS\\Install\\Updates\\NotInMenuUpdate';
-// remove pagetype "advanced" since TYPO3 4.2
-// this is merged with doctype "standard" with tab view to edit
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['mergeAdvancedDoktypeConversion'] = 'TYPO3\\CMS\\Install\\Updates\\MergeAdvancedUpdate';
 // TYPO3 6.0 - Add new tables for ExtensionManager
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['extensionManagerTables'] = 'TYPO3\\CMS\\Install\\Updates\\ExtensionManagerTables';
-// add new / outsourced system extensions since TYPO3 4.3
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['installSystemExtensions'] = 'TYPO3\\CMS\\Install\\Updates\\InstallSysExtsUpdate';
-// change tt_content.imagecols=0 to 1 for proper display in TCEforms since TYPO3 4.3
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['changeImagecolsValue'] = 'TYPO3\\CMS\\Install\\Updates\\ImagecolsUpdate';
-// warn for t3skin installed in Version 4.4
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['checkForT3SkinInstalled'] = 'TYPO3\\CMS\\Install\\Updates\\T3skinUpdate';
-// Version 4.4: warn for set CompressionLevel and warn user to update his .htaccess
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['checkForCompressionLevel'] = 'TYPO3\\CMS\\Install\\Updates\\CompressionLevelUpdate';
-// Version 4.5: migrate workspaces to use custom stages and install the required extensions
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['migrateWorkspaces'] = 'TYPO3\\CMS\\Install\\Updates\\MigrateWorkspacesUpdate';
-// Version 4.5: Removes the ".gif" suffix from entries in sys_language
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['flagsFromSprites'] = 'TYPO3\\CMS\\Install\\Updates\\FlagsFromSpriteUpdate';
-// Version 4.5: Adds excludeable FlexForm fields to Backend group access lists (ACL)
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['addFlexformsToAcl'] = 'TYPO3\\CMS\\Install\\Updates\\AddFlexFormsToAclUpdate';
-// Version 4.5: Split tt_content image_link to newline by comma
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['imagelink'] = 'TYPO3\\CMS\\Install\\Updates\\ImagelinkUpdate';
 // Split backend user and backend groups file permissions to single ones.
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['file_permissions'] = 'TYPO3\\CMS\\Install\\Updates\\FilePermissionUpdate';
 // Version 6.0: Migrate files content elements to use File Abstraction Layer