[BUGFIX] L10n PHP parser stores NULL for unknown key
authorXavier Perseguers <xavier@typo3.org>
Sun, 9 Sep 2012 20:03:08 +0000 (22:03 +0200)
committerXavier Perseguers <xavier@typo3.org>
Sun, 9 Sep 2012 20:04:52 +0000 (22:04 +0200)
The PHP parser caches NULL instead of an array when the Backend
language is not available for a given extension using PHP array
localization files (e.g., tscobj with German "de").

This leads to PHP warning when reading the labels as NULL cannot
be used in a foreach statement.

Change-Id: I1678674ecfba71e04c9c13aed44dd7f0aa574cbc
Fixes: #40643
Releases: 6.0, 4.7, 4.6
Reviewed-on: http://review.typo3.org/14484
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
t3lib/l10n/parser/class.t3lib_l10n_parser_llphp.php

index 5a07419..79d6a6e 100644 (file)
@@ -155,7 +155,11 @@ class t3lib_l10n_parser_Llphp implements t3lib_l10n_parser {
                }
 
                // Cache the content now:
-               $serContent = array('origFile' => $this->hashSource, 'LOCAL_LANG' => array('default' => $LOCAL_LANG['default'], $languageKey => $LOCAL_LANG[$languageKey]));
+               if (isset($LOCAL_LANG[$languageKey])) {
+                       $serContent = array('origFile' => $this->hashSource, 'LOCAL_LANG' => array('default' => $LOCAL_LANG['default'], $languageKey => $LOCAL_LANG[$languageKey]));
+               } else {
+                       $serContent = array('origFile' => $this->hashSource, 'LOCAL_LANG' => array('default' => $LOCAL_LANG['default']));
+               }
                $res = t3lib_div::writeFileToTypo3tempDir($this->cacheFileName, serialize($serContent));
                if ($res) {
                        throw new RuntimeException(