[TASK] EM: maintenance tab suggest download of CF tables
authorFrancois Suter <francois@typo3.org>
Fri, 9 Sep 2011 15:49:36 +0000 (17:49 +0200)
committerXavier Perseguers <xavier@typo3.org>
Sat, 10 Sep 2011 18:15:55 +0000 (20:15 +0200)
When looking at an extension's details, the developer information tab
lists all caching framework (CF) tables and the maintenance tab
proposes all CF tables for download. It doesn't make sense, even
for cache tables that are related to the current extension
(because they are created automatically and there's no reason
to dump a cache table's data).
The solution is to add a new flag to avoid listing CF tables
in some circumstances.

Change-Id: I3a8d43bc0d94d9bca99ae72a808e8e07057e9852
Resolves: #29592
Releases: 4.6
Reviewed-on: http://review.typo3.org/4886
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
Reviewed-by: Philipp Gampe
Tested-by: Philipp Gampe
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
typo3/sysext/em/classes/connection/class.tx_em_connection_extdirectserver.php
typo3/sysext/em/classes/extensions/class.tx_em_extensions_details.php
typo3/sysext/em/classes/install/class.tx_em_install.php

index 00ff9f4..463f05d 100644 (file)
@@ -705,7 +705,7 @@ class tx_em_Connection_ExtDirectServer {
                        $backUpData = $terConnection->makeUploadDataFromarray($uploadArray);
                        $filename = 'T3X_' . $extKey . '-' . str_replace('.', '_', $list[$extKey]['EM_CONF']['version']) . '-z-' . date('YmdHi') . '.t3x';
 
-                       $techInfo = $install->makeDetailedExtensionAnalysis($extKey, $list[$extKey]);
+                       $techInfo = $install->makeDetailedExtensionAnalysis($extKey, $list[$extKey], FALSE, FALSE);
                        $lines = array();
 
                        // Backup
index 11da101..8e9c4ec 100644 (file)
@@ -51,7 +51,7 @@ class tx_em_Extensions_Details {
        /**
         * Class for install extensions
         *
-        * @var em_install
+        * @var tx_em_Install
         */
        public $install;
 
@@ -579,8 +579,8 @@ $EM_CONF[$_EXTKEY] = ' . tx_em_Tools::arrayToCode($EM_CONF, 0) . ';
                        );
 
 
-                       // Installation status:
-                       $techInfo = $this->install->makeDetailedExtensionAnalysis($extKey, $extInfo, 1);
+                               // Installation status
+                       $techInfo = $this->install->makeDetailedExtensionAnalysis($extKey, $extInfo, TRUE, FALSE);
                        $lines[] = array('<tr><td colspan="2">&nbsp;</td></tr>');
                        $lines[] = array('<tr class="t3-row-header"><td colspan="2"><strong>' . $GLOBALS['LANG']->getLL('extInfoArray_inst_status') . '</strong></td></tr>');
 
index db1686e..7d97e23 100644 (file)
@@ -810,13 +810,13 @@ class tx_em_Install {
         * Prints form for changes if any. If none, returns blank. If an update is ordered, empty is returned as well.
         * DBAL compliant (based on Install Tool code)
         *
-        * @param       string          Extension key
-        * @param       array           Extension information array
-        * @param       boolean         If TRUE, returns array with info.
-        * @return      mixed           If $infoOnly, returns array with information. Otherwise performs update.
+        * @param string $extKey Extension key
+        * @param array $extInfo Extension information array
+        * @param boolean $infoOnly If TRUE, returns array with info
+        * @param boolean $showCachingTables If FALSE, don't take the caching tables into account
+        * @return mixed If $infoOnly, returns array with information. Otherwise performs update.
         */
-       function checkDBupdates($extKey, $extInfo, $infoOnly = 0) {
-
+       function checkDBupdates($extKey, $extInfo, $infoOnly = FALSE, $showCachingTables = TRUE) {
 
                $dbStatus = array();
                $content = '';
@@ -826,7 +826,12 @@ class tx_em_Install {
                if (is_array($extInfo['files']) && in_array('ext_tables.sql', $extInfo['files'])) {
                        $path = tx_em_Tools::getExtPath($extKey, $extInfo['type']);
                        $fileContent = t3lib_div::getUrl($path . 'ext_tables.sql');
-                       $fileContent .= t3lib_cache::getDatabaseTableDefinitions();
+                               // Take caching tables into account only if necessary
+                               // (this is not always the case, because this method is also called, for example,
+                               // to list all tables for which to dump data for in the extension maintenance operations)
+                       if ($showCachingTables) {
+                               $fileContent .= t3lib_cache::getDatabaseTableDefinitions();
+                       }
 
                        $FDfile = $this->installerSql->getFieldDefinitions_fileContent($fileContent);
                        if (count($FDfile)) {
@@ -1024,14 +1029,15 @@ class tx_em_Install {
        /**
         * Perform a detailed, technical analysis of the available extension on server!
         * Includes all kinds of verifications
-        * Takes some time to process, therfore use with care, in particular in listings.
+        * Takes some time to process, therefore use with care, in particular in listings.
         *
-        * @param       string          Extension key
-        * @param       array           Extension information
-        * @param       boolean         If set, checks for validity of classes etc.
-        * @return      array           Information in an array.
+        * @param string $extKey Extension key
+        * @param array $extInfo Extension information
+        * @param boolean $validity If set, checks for validity of classes etc.
+        * @param boolean $showCachingTables If FALSE, don't take the caching tables into account
+        * @return array Information in an array
         */
-       function makeDetailedExtensionAnalysis($extKey, $extInfo, $validity = 0) {
+       function makeDetailedExtensionAnalysis($extKey, $extInfo, $validity = FALSE, $showCachingTables = TRUE) {
 
                // Get absolute path of the extension
                $absPath = tx_em_Tools::getExtPath($extKey, $extInfo['type']);
@@ -1041,8 +1047,8 @@ class tx_em_Install {
                $table_class_prefix = substr($extKey, 0, 5) == 'user_' ? 'user_' : 'tx_' . str_replace('_', '', $extKey) . '_';
                $module_prefix = substr($extKey, 0, 5) == 'user_' ? 'u' : 'tx' . str_replace('_', '', $extKey);
 
-               // Database status:
-               $dbInfo = $this->checkDBupdates($extKey, $extInfo, 1);
+                       // Database status:
+               $dbInfo = $this->checkDBupdates($extKey, $extInfo, TRUE, $showCachingTables);
 
                // Database structure required:
                if (is_array($dbInfo['structure']['tables_fields'])) {