[TASK] Cleanup Localization Charset code 85/52185/3
authorBenni Mack <benni@typo3.org>
Mon, 27 Mar 2017 14:27:48 +0000 (16:27 +0200)
committerBenni Mack <benni@typo3.org>
Mon, 27 Mar 2017 23:03:20 +0000 (01:03 +0200)
The protected property "AbstractXmlParser->charset" is set from
the outside but never used anymore in either the abstract class nor
in the subclasses.

The protected method "getCharset()" is basically useless:
a) it's never called or in use
b) it has nothing to do with the XmlParser as it does not work
with any properties / functionalities of the XmlParser itself.

The protected method "initialize()" is called solely in the
contructor which can be dealt with directly in the constructor
(that's what a constructor is there for).

The third parameter $charset within getParsedData() is
now not needed anymore within the Parsers, as all expect
UTF-8 for files.

Resolves: #80486
Releases: master
Change-Id: I929c3960fb5b94f5448a2d29f4a73fbb5d81a500
Reviewed-on: https://review.typo3.org/52185
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Tested-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/core/Classes/Localization/LocalizationFactory.php
typo3/sysext/core/Classes/Localization/Parser/AbstractXmlParser.php
typo3/sysext/core/Classes/Localization/Parser/LocalizationParserInterface.php
typo3/sysext/core/Classes/Localization/Parser/LocallangXmlParser.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-80486-SettingCharsetViaLocalizationParserInterface-getParsedData.rst [new file with mode: 0644]

index 03b908f..07ca8af 100644 (file)
@@ -43,16 +43,6 @@ class LocalizationFactory implements \TYPO3\CMS\Core\SingletonInterface
      */
     public function __construct()
     {
-        $this->initialize();
-    }
-
-    /**
-     * Initialize
-     *
-     * @return void
-     */
-    protected function initialize()
-    {
         $this->store = GeneralUtility::makeInstance(LanguageStore::class);
         $this->initializeCache();
     }
@@ -142,7 +132,7 @@ class LocalizationFactory implements \TYPO3\CMS\Core\SingletonInterface
             /** @var $parser \TYPO3\CMS\Core\Localization\Parser\LocalizationParserInterface */
             $parser = $this->store->getParserInstance($fileReference);
             // Get parsed data
-            $LOCAL_LANG = $parser->getParsedData($this->store->getAbsoluteFileReference($fileReference), $languageKey, $charset);
+            $LOCAL_LANG = $parser->getParsedData($this->store->getAbsoluteFileReference($fileReference), $languageKey);
         } catch (Exception\FileNotFoundException $exception) {
             // Source localization file not found, set empty data as there could be an override
             $this->store->setData($fileReference, $languageKey, []);
index dffc270..4dba8e2 100644 (file)
@@ -14,7 +14,6 @@ namespace TYPO3\CMS\Core\Localization\Parser;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Core\Charset\CharsetConverter;
 use TYPO3\CMS\Core\Localization\Exception\FileNotFoundException;
 use TYPO3\CMS\Core\Localization\Exception\InvalidXmlFileException;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -35,16 +34,11 @@ abstract class AbstractXmlParser implements LocalizationParserInterface
     protected $languageKey;
 
     /**
-     * @var string
-     */
-    protected $charset;
-
-    /**
      * Returns parsed representation of XML file.
      *
      * @param string $sourcePath Source file path
      * @param string $languageKey Language key
-     * @param string $charset File charset
+     * @param string $charset File charset, not in use anymore and deprecated since TYPO3 v8, will be removed in TYPO3 v9 as UTF-8 is expected for all language files
      * @return array
      * @throws \TYPO3\CMS\Core\Localization\Exception\FileNotFoundException
      */
@@ -52,7 +46,6 @@ abstract class AbstractXmlParser implements LocalizationParserInterface
     {
         $this->sourcePath = $sourcePath;
         $this->languageKey = $languageKey;
-        $this->charset = $this->getCharset($charset);
         if ($this->languageKey !== 'default') {
             $this->sourcePath = GeneralUtility::getFileAbsFileName(GeneralUtility::llXmlAutoFileName($this->sourcePath, $this->languageKey));
             if (!@is_file($this->sourcePath)) {
@@ -69,21 +62,6 @@ abstract class AbstractXmlParser implements LocalizationParserInterface
     }
 
     /**
-     * Gets the character set to use.
-     *
-     * @param string $charset
-     * @return string
-     */
-    protected function getCharset($charset = '')
-    {
-        if ($charset !== '') {
-            return GeneralUtility::makeInstance(CharsetConverter::class)->parse_charset($charset);
-        } else {
-            return 'utf-8';
-        }
-    }
-
-    /**
      * Loads the current XML file before processing.
      *
      * @return array An array representing parsed XML file (structure depends on concrete parser)
index 42abfe7..91bc3de 100644 (file)
@@ -24,7 +24,7 @@ interface LocalizationParserInterface
      *
      * @param string $sourcePath Source file path
      * @param string $languageKey Language key
-     * @param string $charset Charset
+     * @param string $charset Charset, not in use anymore since TYPO3 v8, will be removed in TYPO3 v9 as UTF-8 is expected for all language files
      * @return array
      */
     public function getParsedData($sourcePath, $languageKey, $charset = '');
index 71971dd..ff3a678 100644 (file)
@@ -36,14 +36,13 @@ class LocallangXmlParser extends AbstractXmlParser
      *
      * @param string $sourcePath Source file path
      * @param string $languageKey Language key
-     * @param string $charset Charset
+     * @param string $charset File charset, not in use anymore and deprecated since TYPO3 v8, will be removed in TYPO3 v9 as UTF-8 is expected for all language files
      * @return array
      */
     public function getParsedData($sourcePath, $languageKey, $charset = '')
     {
         $this->sourcePath = $sourcePath;
         $this->languageKey = $languageKey;
-        $this->charset = $this->getCharset($charset);
         // Parse source
         $parsedSource = $this->parseXmlFile();
         // Parse target
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80486-SettingCharsetViaLocalizationParserInterface-getParsedData.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80486-SettingCharsetViaLocalizationParserInterface-getParsedData.rst
new file mode 100644 (file)
index 0000000..d63b4db
--- /dev/null
@@ -0,0 +1,30 @@
+.. include:: ../../Includes.txt
+
+======================================================================================
+Deprecation: #80486 - Setting charset via LocalizationParserInterface->getParsedData()
+======================================================================================
+
+See :issue:`80486`
+
+Description
+===========
+
+The `LocalizationParserInterface->getParsedData()` contains a third parameter to hand over a value
+for the charset used.
+
+This third parameter has been marked as deprecated, as it is not in use anymore.
+
+
+Affected Installations
+======================
+
+Any installation with an extension that extends the LocalizationParser functionality with a custom
+PHP class implementing the `LocalizationParserInterface`.
+
+
+Migration
+=========
+
+If implementing the `LocalizationParserInterface`, be aware that this third parameter will be dropped in TYPO3 v9.
+
+.. index:: PHP-API
\ No newline at end of file