[BUGFIX] L10n PHP parser stores NULL for unknown key
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Localization / Parser / LocallangArrayParser.php
index a5aa795..a145807 100644 (file)
@@ -77,7 +77,7 @@ class LocallangArrayParser implements \TYPO3\CMS\Core\Localization\Parser\Locali
         * @param string $languageKey Language key
         * @param string $charset Charset
         * @return array
-        * @throws RuntimeException
+        * @throws \RuntimeException
         */
        public function getParsedData($sourcePath, $languageKey, $charset = '') {
                $this->validateParameters($sourcePath, $languageKey);
@@ -133,7 +133,7 @@ class LocallangArrayParser implements \TYPO3\CMS\Core\Localization\Parser\Locali
         * @param string $sourcePath
         * @param string $languageKey
         * @return array
-        * @throws RuntimeException
+        * @throws \RuntimeException
         */
        protected function generateCacheFile($sourcePath, $languageKey) {
                $LOCAL_LANG = array();
@@ -158,7 +158,11 @@ class LocallangArrayParser implements \TYPO3\CMS\Core\Localization\Parser\Locali
                        unset($labelValue);
                }
                // 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 = \TYPO3\CMS\Core\Utility\GeneralUtility::writeFileToTypo3tempDir($this->cacheFileName, serialize($serContent));
                if ($res) {
                        throw new \RuntimeException('TYPO3 Fatal Error: "' . $res, 1308898501);
@@ -221,7 +225,7 @@ class LocallangArrayParser implements \TYPO3\CMS\Core\Localization\Parser\Locali
         * @param string $sourcePath
         * @param string $languageKey
         * @return void
-        * @throws RuntimeException
+        * @throws \RuntimeException
         */
        protected function validateParameters($sourcePath, $languageKey) {
                if ((!$this->isWithinWebRoot($sourcePath) || !@is_file($sourcePath)) || !$languageKey) {