[BUGFIX] Fix possible language handling issue 64/27664/2
authorMarkus Klein <klein.t3@mfc-linz.at>
Sun, 1 Sep 2013 11:01:49 +0000 (13:01 +0200)
committerMarkus Klein <klein.t3@mfc-linz.at>
Fri, 21 Feb 2014 09:37:19 +0000 (10:37 +0100)
commit6512f653cc38e5bbcde87a67d938b8d92f3e9c07
tree49e5e03640e2989e2817113178e1816cc6644c7f
parentb09e7f9e5e0ac6c30fe05d12c05d68d27b0cde64
[BUGFIX] Fix possible language handling issue

The language initialization process is currently split in two main
methods (TypoScriptFrontendController->initLLvars and ->settingLanguage).

Only settingLanguage contains hooks and sets the "sys_language_uid"
property (and "sys_language_content") which determine the displayed
records in Frontend. On the opposite, initLLvars is not hookable and sets
the "lang" property, which may be used by charset conversion methods.

In order to determine display language within hooks, the only way
currently is to call initLLvars a second time after determining language,
but this method populates the "languageDependencies" property without
initializing it. So it is filled two times, which leads to incorrect
labels, especially if the displayed language is English and the
default language is not English (as "languageDependencies" is already
filled with "default language").

The three parts of the patch are:
 * The initLLvars method now pre-initializes the "languageDependencies"
   property.
 * The initLLvars is now called from "settingLanguage" method, right
   after the "settingLanguage_preProcess" hook to avoid a second call it.
 * The convPOSTCharset call is now moved after the language
   initialization, as the language determination done by initLLvars
   can have some impact on charset handling (multi-charset locallang.php
   legacy).

Change-Id: I6924345931342d5114b13e5d6fab417387559b9a
Resolves: #49499
Releases: 6.2, 6.1, 6.0
Reviewed-on: https://review.typo3.org/27664
Reviewed-by: Markus Klein
Tested-by: Markus Klein
typo3/sysext/cms/tslib/index_ts.php
typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php