[BUGFIX] Fix possible language handling issue 29/23529/11
authorMarkus Klein <klein.t3@mfc-linz.at>
Sun, 1 Sep 2013 11:01:49 +0000 (13:01 +0200)
committerStefan Neufeind <typo3.neufeind@speedpartner.de>
Mon, 17 Feb 2014 14:21:16 +0000 (15:21 +0100)
commitdae88a2656e9480a6d4f0cc2d8b6c9a916e2101e
treed61659ed4b6c403d0ab7768a68e19c90ddae242b
parent65fc589573dadfe7de51c12fc929cd6374bcb3ad
[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/23529
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
typo3/sysext/cms/tslib/index_ts.php
typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php