[TASK] Removed deprecated code from lowlevel and utility functions 39/45439/4
authorMichael Oehlhof <typo3@oehlhof.de>
Fri, 25 Dec 2015 11:38:51 +0000 (12:38 +0100)
committerGeorg Ringer <georg.ringer@gmail.com>
Mon, 28 Dec 2015 18:30:17 +0000 (19:30 +0100)
Resolves: #72431
Releases: master
Change-Id: Ie5e1d930b5e882cb78b83be1d72775389cd8ef68
Reviewed-on: https://review.typo3.org/45439
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/core/Classes/Core/Bootstrap.php
typo3/sysext/core/Classes/Tree/TableConfiguration/DatabaseTreeDataProvider.php
typo3/sysext/core/Classes/Utility/StringUtility.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-72431-RemovedDeprecatedCodeFromLowlevelAndUtilityFunctions.rst [new file with mode: 0644]
typo3/sysext/core/Tests/Unit/Utility/StringUtilityTest.php
typo3/sysext/lowlevel/Classes/View/ConfigurationView.php
typo3/sysext/lowlevel/Classes/View/DatabaseIntegrityView.php

index 88624b2..ff0dc88 100644 (file)
@@ -517,11 +517,6 @@ class Bootstrap
         define('TYPO3_db_username', $GLOBALS['TYPO3_CONF_VARS']['DB']['username']);
         define('TYPO3_db_password', $GLOBALS['TYPO3_CONF_VARS']['DB']['password']);
         define('TYPO3_db_host', $GLOBALS['TYPO3_CONF_VARS']['DB']['host']);
-        // Constant TYPO3_extTableDef_script is deprecated since TYPO3 CMS 7 and will be dropped with TYPO3 CMS 8
-        define('TYPO3_extTableDef_script',
-            isset($GLOBALS['TYPO3_CONF_VARS']['DB']['extTablesDefinitionScript'])
-            ? $GLOBALS['TYPO3_CONF_VARS']['DB']['extTablesDefinitionScript']
-            : 'extTables.php');
         return $this;
     }
 
@@ -966,43 +961,11 @@ class Bootstrap
     {
         ExtensionManagementUtility::loadBaseTca($allowCaching);
         ExtensionManagementUtility::loadExtTables($allowCaching);
-        $this->executeExtTablesAdditionalFile();
         $this->runExtTablesPostProcessingHooks();
         return $this;
     }
 
     /**
-     * Execute TYPO3_extTableDef_script if defined and exists
-     *
-     * Note: For backwards compatibility some global variables are
-     * explicitly set as global to be used without $GLOBALS[] in
-     * the extension table script. It is discouraged to access variables like
-     * $TBE_MODULES directly, but we can not prohibit
-     * this without heavily breaking backwards compatibility.
-     *
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     * @return void
-     */
-    protected function executeExtTablesAdditionalFile()
-    {
-        // It is discouraged to use those global variables directly, but we
-        // can not prohibit this without breaking backwards compatibility
-        global $T3_SERVICES, $T3_VAR, $TYPO3_CONF_VARS;
-        global $TBE_MODULES, $TBE_MODULES_EXT, $TCA;
-        global $PAGES_TYPES, $TBE_STYLES;
-        global $_EXTKEY;
-        // Load additional ext tables script if the file exists
-        $extTablesFile = PATH_typo3conf . TYPO3_extTableDef_script;
-        if (file_exists($extTablesFile) && is_file($extTablesFile)) {
-            GeneralUtility::deprecationLog(
-                'Using typo3conf/' . TYPO3_extTableDef_script . ' is deprecated and will be removed with TYPO3 CMS 8. Please move your TCA overrides'
-                . ' to Configuration/TCA/Overrides of your project specific extension, or slot the signal "tcaIsBeingBuilt" for further processing.'
-            );
-            include $extTablesFile;
-        }
-    }
-
-    /**
      * Check for registered ext tables hooks and run them
      *
      * @throws \UnexpectedValueException
index 3be0ba6..eb642bb 100644 (file)
@@ -471,37 +471,6 @@ class DatabaseTreeDataProvider extends AbstractTableConfigurationTreeDataProvide
             self::SIGNAL_PostProcessTreeData,
             array($this, $this->treeData)
         );
-        $this->emitDeprecatedPostProcessTreeDataSignal();
-    }
-
-    /**
-     * A wrong signal name was introduced with https://review.typo3.org/#/c/34855/
-     * This function handles the old signal name and logs a deprecation warning.
-     *
-     * @return void
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     */
-    protected function emitDeprecatedPostProcessTreeDataSignal()
-    {
-        $deprecatedSlots = $this->getSignalSlotDispatcher()->getSlots(
-            'TYPO3\\CMS\\Core\\Tree\\TableConfiguration\\TableConfiguration\\DatabaseTreeDataProvider',
-            self::SIGNAL_PostProcessTreeData
-        );
-        if (!empty($deprecatedSlots)) {
-            foreach ($deprecatedSlots as $slotInformation) {
-                $slotClassNameOrObject = $slotInformation['object'] ? get_class($slotInformation['object']) : $slotInformation['class'];
-                GeneralUtility::deprecationLog(
-                    'Signal "TYPO3\\CMS\\Core\\Tree\\TableConfiguration\\TableConfiguration\\DatabaseTreeDataProvider" ' .
-                    'is deprecated but used by "' . $slotClassNameOrObject . '". ' .
-                    'Please update signal name to "' . __CLASS__ . '".'
-                );
-            }
-            $this->getSignalSlotDispatcher()->dispatch(
-                'TYPO3\\CMS\\Core\\Tree\\TableConfiguration\\TableConfiguration\\DatabaseTreeDataProvider',
-                self::SIGNAL_PostProcessTreeData,
-                array($this, $this->treeData)
-            );
-        }
     }
 
     /**
index e4ee845..a4800df 100644 (file)
@@ -20,38 +20,6 @@ namespace TYPO3\CMS\Core\Utility;
 class StringUtility
 {
     /**
-     * Returns TRUE if $haystack ends with $needle.
-     * The input string is not trimmed before and search
-     * is done case sensitive.
-     *
-     * @param string $haystack Full string to check
-     * @param string $needle Reference string which must be found as the "last part" of the full string
-     * @throws \InvalidArgumentException
-     * @return bool TRUE if $needle was found to be equal to the last part of $str
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8, use endsWith() instead
-     */
-    public static function isLastPartOfString($haystack, $needle)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Sanitize $haystack and $needle
-        if (is_object($haystack) || (string)$haystack != $haystack || strlen($haystack) < 1) {
-            throw new \InvalidArgumentException(
-                '$haystack can not be interpreted as string or has no length',
-                1347135544
-            );
-        }
-        if (is_object($needle) || (string)$needle != $needle || strlen($needle) < 1) {
-            throw new \InvalidArgumentException(
-                '$needle can not be interpreted as string or has no length',
-                1347135545
-            );
-        }
-        $stringLength = strlen($haystack);
-        $needleLength = strlen($needle);
-        return strrpos((string)$haystack, (string)$needle, 0) === $stringLength - $needleLength;
-    }
-
-    /**
      * Returns TRUE if $haystack begins with $needle.
      * The input string is not trimmed before and search is done case sensitive.
      *
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-72431-RemovedDeprecatedCodeFromLowlevelAndUtilityFunctions.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-72431-RemovedDeprecatedCodeFromLowlevelAndUtilityFunctions.rst
new file mode 100644 (file)
index 0000000..cfd8c1b
--- /dev/null
@@ -0,0 +1,37 @@
+=============================================================================
+Breaking: #72431 - Remove deprecated code from lowlevel and utility functions
+=============================================================================
+
+Description
+===========
+
+The following deprecated methods have been removed:
+
+* ``ConfigurationView->printContent()``
+* ``DatabaseIntegrityView->printContent()``
+* ``StringUtility::isLastPartOfString()``
+* ``Bootstrap->executeExtTablesAdditionalFile()``
+* ``DatabaseTreeDataProvider->emitDeprecatedPostProcessTreeDataSignal()``
+
+
+Impact
+======
+
+Using the methods above directly in any third party extension will result in a fatal error.
+
+
+Affected Installations
+======================
+
+Instances which use calls to the methods above.
+Instances which use TYPO3_extTableDef_script for TCA overrides.
+Instances which use the signal TYPO3\\CMS\\Core\\Tree\\TableConfiguration\\TableConfiguration\\DatabaseTreeDataProvider
+
+
+Migration
+=========
+
+* ``StringUtility::isLastPartOfString()`` use endsWith() instead
+* ``Bootstrap->executeExtTablesAdditionalFile()`` (TYPO3_extTableDef_script) Move your TCA overrides to Configuration/TCA/Overrides of your project specific extension, or slot the signal "tcaIsBeingBuilt" for further processing.
+* ``DatabaseTreeDataProvider->emitDeprecatedPostProcessTreeDataSignal()`` Update the signal name to TYPO3\\CMS\\Core\\Tree\\TableConfiguration\\DatabaseTreeDataProvider.
+
index 96306a5..fc0b16f 100644 (file)
@@ -21,89 +21,6 @@ use TYPO3\CMS\Core\Utility\StringUtility;
  */
 class StringUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
 {
-    /**
-     * Data provider for isLastPartOfStrReturnsTrueForMatchingLastParts
-     *
-     * @return array
-     */
-    public function isLastPartOfStringReturnsTrueForMatchingFirstPartDataProvider()
-    {
-        return array(
-            'match last part of string' => array('hello world', 'world'),
-            'match last char of string' => array('hellod world', 'd'),
-            'match whole string' => array('hello', 'hello'),
-            'integer is part of string with same number' => array('24', 24),
-            'string is part of integer with same number' => array(24, '24'),
-            'integer is part of string starting with same number' => array('please gimme beer, 24', 24)
-        );
-    }
-
-    /**
-     * @test
-     * @dataProvider isLastPartOfStringReturnsTrueForMatchingFirstPartDataProvider
-     */
-    public function isLastPartOfStringReturnsTrueForMatchingFirstPart($string, $part)
-    {
-        $this->assertTrue(\TYPO3\CMS\Core\Utility\StringUtility::isLastPartOfString($string, $part));
-    }
-
-    /**
-     * Data provider for checkisLastPartOfStringReturnsFalseForNotMatchingFirstParts
-     *
-     * @return array
-     */
-    public function isLastPartOfStringReturnsFalseForNotMatchingFirstPartDataProvider()
-    {
-        return array(
-            'no string match' => array('hello', 'bye'),
-            'no case sensitive string match' => array('hello world', 'World'),
-        );
-    }
-
-    /**
-     * @test
-     * @dataProvider isLastPartOfStringReturnsFalseForNotMatchingFirstPartDataProvider
-     */
-    public function isLastPartOfStringReturnsFalseForNotMatchingFirstPart($string, $part)
-    {
-        $this->assertFalse(\TYPO3\CMS\Core\Utility\StringUtility::isLastPartOfString($string, $part));
-    }
-
-    /**
-     * Data provider for isLastPartOfStringReturnsThrowsExceptionWithInvalidArguments
-     *
-     * @return array
-     */
-    public function isLastPartOfStringReturnsInvalidArgumentDataProvider()
-    {
-        return array(
-            'array is not part of string' => array('string', array()),
-            'string is not part of array' => array(array(), 'string'),
-            'NULL is not part of string' => array('string', null),
-            'null is not part of array' => array(null, 'string'),
-            'NULL is not part of array' => array(array(), null),
-            'array is not part of null' => array(null, array()),
-            'NULL is not part of empty string' => array('', null),
-            'false is not part of empty string' => array('', false),
-            'empty string is not part of NULL' => array(null, ''),
-            'empty string is not part of false' => array(false, ''),
-            'empty string is not part of zero integer' => array(0, ''),
-            'zero integer is not part of NULL' => array(null, 0),
-            'zero integer is not part of empty string' => array('', 0),
-            'string is not part of object' => array(new \stdClass(), 'foo'),
-            'object is not part of string' => array('foo', new \stdClass()),
-        );
-    }
-
-    /**
-     * @test
-     * @dataProvider isLastPartOfStringReturnsInvalidArgumentDataProvider
-     * @expectedException \InvalidArgumentException
-     */
-    public function isLastPartOfStringReturnsThrowsExceptionWithInvalidArguments($string, $part)
-    {
-        $this->assertFalse(\TYPO3\CMS\Core\Utility\StringUtility::isLastPartOfString($string, $part));
-    }
 
     /**
      * Data provider for endsWithReturnsTrueForMatchingFirstPart
index c9f3001..887d1cc 100644 (file)
@@ -260,18 +260,6 @@ class ConfigurationView extends BaseScriptClass
     }
 
     /**
-     * Print output to browser
-     *
-     * @return void
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     */
-    public function printContent()
-    {
-        GeneralUtility::logDeprecatedFunction();
-        echo $this->content;
-    }
-
-    /**
      * Generates the action menu
      */
     protected function getModuleMenu()
index 5c518de..e07b181 100644 (file)
@@ -235,18 +235,6 @@ class DatabaseIntegrityView extends BaseScriptClass
     }
 
     /**
-     * Print content
-     *
-     * @return void
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     */
-    public function printContent()
-    {
-        GeneralUtility::logDeprecatedFunction();
-        echo $this->content;
-    }
-
-    /**
      * Injects the request object for the current request or subrequest
      * Simply calls main() and init() and outputs the content
      *