[TASK] Add tool-function to strip PATH_site-part of paths
[Packages/TYPO3.CMS.git] / typo3 / sysext / cshmanual / Classes / Controller / HelpModuleController.php
index d1bbe22..a49b395 100644 (file)
@@ -1,12 +1,38 @@
 <?php
 namespace TYPO3\CMS\Cshmanual\Controller;
 
+/***************************************************************
+ *  Copyright notice
+ *
+ *  (c) 1999-2013 Kasper Skårhøj (kasperYYYY@typo3.com)
+ *  All rights reserved
+ *
+ *  This script is part of the TYPO3 project. The TYPO3 project is
+ *  free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  The GNU General Public License can be found at
+ *  http://www.gnu.org/copyleft/gpl.html.
+ *  A copy is found in the textfile GPL.txt and important notices to the license
+ *  from the author is found in LICENSE.txt distributed with these scripts.
+ *
+ *
+ *  This script is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+
 /**
  * Script Class for rendering the Context Sensitive Help documents, either the single display in the small pop-up window or the full-table view in the larger window.
  *
  * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- * @package TYPO3
- * @subpackage core
  */
 class HelpModuleController {
 
@@ -15,21 +41,24 @@ class HelpModuleController {
         */
        public $allowedHTML = '<strong><em><b><i>';
 
-       // For these vars, see init()
-       // If set access to fields and tables is checked. Should be done for TRUE database tables.
        /**
+        * For these vars, see init()
+        * If set access to fields and tables is checked. Should be done for TRUE database tables.
+        *
         * @todo Define visibility
         */
        public $limitAccess;
 
-       // The "table" key
        /**
+        * The "table" key
+        *
         * @todo Define visibility
         */
        public $table;
 
-       // The "field" key
        /**
+        * The "field" key
+        *
         * @todo Define visibility
         */
        public $field;
@@ -42,34 +71,38 @@ class HelpModuleController {
         */
        protected $mainKey;
 
-       // Internal, static: GPvar:
-       // Table/FIeld id.
        /**
+        * Internal, static: GPvar
+        * Table/Field id
+        *
         * @todo Define visibility
         */
        public $tfID;
 
-       // Back (previous tfID)
        /**
+        * Back (previous tfID)
+        *
         * @todo Define visibility
         */
        public $back;
 
-       // If set, then in TOC mode the FULL manual will be printed as well!
        /**
+        * If set, then in TOC mode the FULL manual will be printed as well!
+        *
         * @todo Define visibility
         */
        public $renderALL;
 
-       // Internal, dynamic:
-       // Content accumulation.
        /**
+        * Content accumulation
+        *
         * @todo Define visibility
         */
        public $content;
 
-       // Glossary words
        /**
+        * Glossary words
+        *
         * @todo Define visibility
         */
        public $glossaryWords;
@@ -101,8 +134,6 @@ class HelpModuleController {
                        // There's at least one extra part
                        $extraIdentifierInformation = array();
                        $extraIdentifierInformation[] = array_shift($identifierParts);
-                       // Load the TCA details of the table
-                       \TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA($this->table);
                        // If the ds_pointerField contains a comma, it means the choice of FlexForm DS
                        // is determined by 2 parameters. In this case we have an extra identifier part
                        if (strpos($GLOBALS['TCA'][$this->table]['columns'][$this->field]['config']['ds_pointerField'], ',') !== FALSE) {
@@ -119,7 +150,7 @@ class HelpModuleController {
                        $this->field = $flexFormField;
                }
                // limitAccess is checked if the $this->table really IS a table (and if the user is NOT a translator who should see all!)
-               $showAllToUser = \TYPO3\CMS\Backend\Utility\BackendUtility::isModuleSetInTBE_MODULES('txllxmltranslateM1') && $GLOBALS['BE_USER']->check('modules', 'txllxmltranslateM1');
+               $showAllToUser = BackendUtility::isModuleSetInTBE_MODULES('txllxmltranslateM1') && $GLOBALS['BE_USER']->check('modules', 'txllxmltranslateM1');
                $this->limitAccess = isset($GLOBALS['TCA'][$this->table]) ? !$showAllToUser : FALSE;
                $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_view_help.xlf', 1);
        }
@@ -162,10 +193,9 @@ class HelpModuleController {
        }
 
        /************************************
-        *
         * Rendering main modes
-        *
         ************************************/
+
        /**
         * Creates Table Of Contents and possibly "Full Manual" mode if selected.
         *
@@ -192,7 +222,7 @@ class HelpModuleController {
                        }
                        if (is_array($info['sub'])) {
                                foreach ($info['sub'] as $subMod => $subInfo) {
-                                       $cshKey = (('_MOD_' . $mainMod) . '_') . $subMod;
+                                       $cshKey = '_MOD_' . $mainMod . '_' . $subMod;
                                        if ($CSHkeys[$cshKey]) {
                                                $GLOBALS['LANG']->loadSingleTableDescription($cshKey);
                                                $this->render_TOC_el($cshKey, 'modules', $outputSections, $tocArray, $CSHkeys);
@@ -229,33 +259,28 @@ class HelpModuleController {
                                $this->render_TOC_el($cshKey, 'other', $outputSections, $tocArray, $CSHkeys);
                        }
                }
+
                // COMPILE output:
                $output = '';
-               $output .= ('
+               $output .= '<h1>' . $GLOBALS['LANG']->getLL('manual_title', TRUE) . '</h1>';
+               $output .= '<p class="lead">' . $GLOBALS['LANG']->getLL('description', TRUE) . '</p>';
 
-                       <h1>' . $GLOBALS['LANG']->getLL('manual_title', 1)) . '</h1>';
-               $output .= ((('
-
-                       <h2>' . $GLOBALS['LANG']->getLL('introduction', 1)) . '</h2>
-                       <p>') . $GLOBALS['LANG']->getLL('description', 1)) . '</p>';
-               $output .= (('
-
-                       <h2>' . $GLOBALS['LANG']->getLL('TOC', 1)) . '</h2>') . $this->render_TOC_makeTocList($tocArray);
+               $output .= '<h2>' . $GLOBALS['LANG']->getLL('TOC', TRUE) . '</h2>' . $this->render_TOC_makeTocList($tocArray);
                if (!$this->renderALL) {
-                       $output .= ('
+                       $output .= '
                                <br/>
-                               <p class="c-nav"><a href="mod.php?M=help_cshmanual&renderALL=1">' . $GLOBALS['LANG']->getLL('full_manual', 1)) . '</a></p>';
+                               <p class="c-nav"><a href="mod.php?M=help_cshmanual&renderALL=1">' . $GLOBALS['LANG']->getLL('full_manual', TRUE) . '</a></p>';
                }
                if ($this->renderALL) {
-                       $output .= (('
+                       $output .= '
 
-                               <h2>' . $GLOBALS['LANG']->getLL('full_manual_chapters', 1)) . '</h2>') . implode('
+                               <h2>' . $GLOBALS['LANG']->getLL('full_manual_chapters', TRUE) . '</h2>' . implode('
 
 
                                <!-- NEW SECTION: -->
                                ', $outputSections);
                }
-               $output .= ('<hr /><p class="manual-title">' . \TYPO3\CMS\Backend\Utility\BackendUtility::TYPO3_copyRightNotice()) . '</p>';
+               $output .= '<hr /><p class="manual-title">' . BackendUtility::TYPO3_copyRightNotice() . '</p>';
                return $output;
        }
 
@@ -275,20 +300,20 @@ class HelpModuleController {
                if ($this->renderALL) {
                        $outputSections[$table] = $this->render_Table($table);
                        if ($outputSections[$table]) {
-                               $outputSections[$table] = (((((((('
+                               $outputSections[$table] = '
 
-               <!-- New CSHkey/Table: ' . $table) . ' -->
-               <p class="c-nav"><a name="ANCHOR_') . $table) . '" href="#">') . $GLOBALS['LANG']->getLL('to_top', 1)) . '</a></p>
-               <h2>') . $this->getTableFieldLabel($table)) . '</h2>
+               <!-- New CSHkey/Table: ' . $table . ' -->
+               <p class="c-nav"><a name="ANCHOR_' . $table . '" href="#">' . $GLOBALS['LANG']->getLL('to_top', TRUE) . '</a></p>
+               <h2>' . $this->getTableFieldLabel($table) . '</h2>
 
-               ') . $outputSections[$table];
-                               $tocArray[$tocCat][$table] = ((('<a href="#ANCHOR_' . $table) . '">') . $this->getTableFieldLabel($table)) . '</a>';
+               ' . $outputSections[$table];
+                               $tocArray[$tocCat][$table] = '<a href="#ANCHOR_' . $table . '">' . $this->getTableFieldLabel($table) . '</a>';
                        } else {
                                unset($outputSections[$table]);
                        }
                } else {
                        // Only TOC:
-                       $tocArray[$tocCat][$table] = ((('<p><a href="mod.php?M=help_cshmanual&tfID=' . rawurlencode(($table . '.*'))) . '">') . $this->getTableFieldLabel($table)) . '</a></p>';
+                       $tocArray[$tocCat][$table] = '<p><a href="mod.php?M=help_cshmanual&tfID=' . rawurlencode(($table . '.*')) . '">' . $this->getTableFieldLabel($table) . '</a></p>';
                }
                // Unset CSH key:
                unset($CSHkeys[$table]);
@@ -308,22 +333,22 @@ class HelpModuleController {
                $output = '';
                foreach ($keys as $tocKey) {
                        if (is_array($tocArray[$tocKey])) {
-                               $output .= ((('
-                                       <li>' . $GLOBALS['LANG']->getLL(('TOC_' . $tocKey), 1)) . '
+                               $output .= '
+                                       <li>' . $GLOBALS['LANG']->getLL(('TOC_' . $tocKey), TRUE) . '
                                                <ul>
-                                                       <li>') . implode('</li>
-                                                       <li>', $tocArray[$tocKey])) . '</li>
+                                                       <li>' . implode('</li>
+                                                       <li>', $tocArray[$tocKey]) . '</li>
                                                </ul>
                                        </li>';
                        }
                }
                // Compile TOC:
-               $output = ('
+               $output = '
 
                        <!-- TOC: -->
                        <div class="c-toc">
                                <ul>
-                               ' . $output) . '
+                               ' . $output . '
                                </ul>
                        </div>';
                return $output;
@@ -343,8 +368,6 @@ class HelpModuleController {
                if ($table === NULL) {
                        $table = $key;
                }
-               // Load table TCA
-               \TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA($key);
                // Load descriptions for table $table
                $GLOBALS['LANG']->loadSingleTableDescription($key);
                if (is_array($GLOBALS['TCA_DESCR'][$key]['columns']) && (!$this->limitAccess || $GLOBALS['BE_USER']->check('tables_select', $table))) {
@@ -355,7 +378,7 @@ class HelpModuleController {
                        // Traverse table columns as listed in TCA_DESCR
                        foreach ($GLOBALS['TCA_DESCR'][$key]['columns'] as $field => $_) {
                                $fieldValue = isset($GLOBALS['TCA'][$key]) && strcmp($field, '') ? $GLOBALS['TCA'][$key]['columns'][$field] : array();
-                               if (is_array($fieldValue) && ((!$this->limitAccess || !$fieldValue['exclude']) || $GLOBALS['BE_USER']->check('non_exclude_fields', ($table . ':') . $field))) {
+                               if (is_array($fieldValue) && (!$this->limitAccess || !$fieldValue['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields', $table . ':' . $field))) {
                                        if (!$field) {
                                                // Header
                                                $parts[0] = $this->printItem($key, '', 1);
@@ -374,10 +397,10 @@ class HelpModuleController {
                $output = $this->substituteGlossaryWords($output);
                // TOC link:
                if (!$this->renderALL) {
-                       $tocLink = ('<p class="c-nav"><a href="mod.php?M=help_cshmanual">' . $GLOBALS['LANG']->getLL('goToToc', 1)) . '</a></p>';
-                       $output = ((($tocLink . '
-                               <br/>') . $output) . '
-                               <br />') . $tocLink;
+                       $tocLink = '<p class="c-nav"><a href="mod.php?M=help_cshmanual">' . $GLOBALS['LANG']->getLL('goToToc', TRUE) . '</a></p>';
+                       $output = $tocLink . '
+                               <br/>' . $output . '
+                               <br />' . $tocLink;
                }
                return $output;
        }
@@ -400,17 +423,16 @@ class HelpModuleController {
                $output = $this->substituteGlossaryWords($output);
                // Link to Full table description and TOC:
                $getLLKey = $this->limitAccess ? 'fullDescription' : 'fullDescription_module';
-               $output .= ((((('<br />
-                       <p class="c-nav"><a href="mod.php?M=help_cshmanual&tfID=' . rawurlencode(($key . '.*'))) . '">') . $GLOBALS['LANG']->getLL($getLLKey, 1)) . '</a></p>
-                       <p class="c-nav"><a href="mod.php?M=help_cshmanual">') . $GLOBALS['LANG']->getLL('goToToc', 1)) . '</a></p>';
+               $output .= '<br />
+                       <p class="c-nav"><a href="mod.php?M=help_cshmanual&tfID=' . rawurlencode(($key . '.*')) . '">' . $GLOBALS['LANG']->getLL($getLLKey, TRUE) . '</a></p>
+                       <p class="c-nav"><a href="mod.php?M=help_cshmanual">' . $GLOBALS['LANG']->getLL('goToToc', TRUE) . '</a></p>';
                return $output;
        }
 
        /************************************
-        *
         * Rendering CSH items
-        *
         ************************************/
+
        /**
         * Make seeAlso links from $value
         *
@@ -421,7 +443,7 @@ class HelpModuleController {
         */
        public function make_seeAlso($value, $anchorTable = '') {
                // Split references by comma or linebreak
-               $items = preg_split(('/[,' . LF) . ']/', $value);
+               $items = preg_split('/[,' . LF . ']/', $value);
                $lines = array();
                foreach ($items as $val) {
                        $val = trim($val);
@@ -430,23 +452,22 @@ class HelpModuleController {
                                $iPUrl = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode('|', $val);
                                // URL reference:
                                if (substr($iPUrl[1], 0, 4) == 'http') {
-                                       $lines[] = ((('<a href="' . htmlspecialchars($iPUrl[1])) . '" target="_blank"><em>') . htmlspecialchars($iPUrl[0])) . '</em></a>';
+                                       $lines[] = '<a href="' . htmlspecialchars($iPUrl[1]) . '" target="_blank"><em>' . htmlspecialchars($iPUrl[0]) . '</em></a>';
                                } elseif (substr($iPUrl[1], 0, 5) == 'FILE:') {
                                        $fileName = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName(substr($iPUrl[1], 5), 1, 1);
                                        if ($fileName && @is_file($fileName)) {
-                                               $fileName = '../' . substr($fileName, strlen(PATH_site));
-                                               $lines[] = ((('<a href="' . htmlspecialchars($fileName)) . '" target="_blank"><em>') . htmlspecialchars($iPUrl[0])) . '</em></a>';
+                                               $fileName = '../' . \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix($fileName);
+                                               $lines[] = '<a href="' . htmlspecialchars($fileName) . '" target="_blank"><em>' . htmlspecialchars($iPUrl[0]) . '</em></a>';
                                        }
                                } else {
                                        // "table" reference
-                                       \TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA($iP[0]);
-                                       if (!isset($GLOBALS['TCA'][$iP[0]]) || (!$iP[1] || is_array($GLOBALS['TCA'][$iP[0]]['columns'][$iP[1]])) && (!$this->limitAccess || $GLOBALS['BE_USER']->check('tables_select', $iP[0]) && ((!$iP[1] || !$GLOBALS['TCA'][$iP[0]]['columns'][$iP[1]]['exclude']) || $GLOBALS['BE_USER']->check('non_exclude_fields', ($iP[0] . ':') . $iP[1])))) {
+                                       if (!isset($GLOBALS['TCA'][$iP[0]]) || (!$iP[1] || is_array($GLOBALS['TCA'][$iP[0]]['columns'][$iP[1]])) && (!$this->limitAccess || $GLOBALS['BE_USER']->check('tables_select', $iP[0]) && (!$iP[1] || !$GLOBALS['TCA'][$iP[0]]['columns'][$iP[1]]['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields', $iP[0] . ':' . $iP[1])))) {
                                                // Checking read access:
                                                if (isset($GLOBALS['TCA_DESCR'][$iP[0]])) {
                                                        // Make see-also link:
-                                                       $href = $this->renderALL || $anchorTable && $iP[0] == $anchorTable ? '#' . implode('.', $iP) : (('mod.php?M=help_cshmanual&tfID=' . rawurlencode(implode('.', $iP))) . '&back=') . $this->tfID;
+                                                       $href = $this->renderALL || $anchorTable && $iP[0] == $anchorTable ? '#' . implode('.', $iP) : 'mod.php?M=help_cshmanual&tfID=' . rawurlencode(implode('.', $iP)) . '&back=' . $this->tfID;
                                                        $label = $this->getTableFieldLabel($iP[0], $iP[1], ' / ');
-                                                       $lines[] = ((('<a href="' . htmlspecialchars($href)) . '">') . htmlspecialchars($label)) . '</a>';
+                                                       $lines[] = '<a href="' . htmlspecialchars($href) . '">' . htmlspecialchars($label) . '</a>';
                                                }
                                        }
                                }
@@ -466,26 +487,26 @@ class HelpModuleController {
        public function printImage($images, $descr) {
                $code = '';
                // Splitting:
-               $imgArray = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $images, 1);
+               $imgArray = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $images, TRUE);
                if (count($imgArray)) {
                        $descrArray = explode(LF, $descr, count($imgArray));
                        foreach ($imgArray as $k => $image) {
                                $descr = $descrArray[$k];
                                $absImagePath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($image, 1, 1);
                                if ($absImagePath && @is_file($absImagePath)) {
-                                       $imgFile = substr($absImagePath, strlen(PATH_site));
+                                       $imgFile = \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix($absImagePath);
                                        $imgInfo = @getimagesize($absImagePath);
                                        if (is_array($imgInfo)) {
                                                $imgFile = '../' . $imgFile;
-                                               $code .= ((('<br /><img src="' . $imgFile) . '" ') . $imgInfo[3]) . ' class="c-inlineimg" alt="" /><br />
+                                               $code .= '<br /><img src="' . $imgFile . '" ' . $imgInfo[3] . ' class="c-inlineimg" alt="" /><br />
                                                ';
-                                               $code .= ('<p><em>' . htmlspecialchars($descr)) . '</em></p>
+                                               $code .= '<p><em>' . htmlspecialchars($descr) . '</em></p>
                                                ';
                                        } else {
-                                               $code .= ('<div style="background-color: red; border: 1px solid black; color: white;">NOT AN IMAGE: ' . $imgFile) . '</div>';
+                                               $code .= '<div style="background-color: red; border: 1px solid black; color: white;">NOT AN IMAGE: ' . $imgFile . '</div>';
                                        }
                                } else {
-                                       $code .= ('<div style="background-color: red; border: 1px solid black; color: white;">IMAGE FILE NOT FOUND: ' . $image) . '</div>';
+                                       $code .= '<div style="background-color: red; border: 1px solid black; color: white;">IMAGE FILE NOT FOUND: ' . $image . '</div>';
                                }
                        }
                }
@@ -496,20 +517,20 @@ class HelpModuleController {
         * Returns header HTML content
         *
         * @param string $str Header text
-        * @param string $type Header type (1, 0)
+        * @param integer $type Header type (1, 0)
         * @return string The HTML for the header.
         * @todo Define visibility
         */
        public function headerLine($str, $type = 0) {
                switch ($type) {
-               case 1:
-                       $str = ('<h2 class="t3-row-header">' . htmlspecialchars($str)) . '</h2>
-                               ';
-                       break;
-               case 0:
-                       $str = ('<h3 class="divider">' . htmlspecialchars($str)) . '</h3>
-                               ';
-                       break;
+                       case 1:
+                               $str = '<h2 class="t3-row-header">' . htmlspecialchars($str) . '</h2>
+                                       ';
+                               break;
+                       case 0:
+                               $str = '<h3 class="divider">' . htmlspecialchars($str) . '</h3>
+                                       ';
+                               break;
                }
                return $str;
        }
@@ -522,7 +543,7 @@ class HelpModuleController {
         * @todo Define visibility
         */
        public function prepareContent($str) {
-               return ('<p>' . nl2br(trim(strip_tags($str, $this->allowedHTML)))) . '</p>
+               return '<p>' . nl2br(trim(strip_tags($str, $this->allowedHTML))) . '</p>
                ';
        }
 
@@ -538,13 +559,11 @@ class HelpModuleController {
         */
        public function printItem($key, $field, $anchors = FALSE) {
                $out = '';
-               // Load full table definition in $GLOBALS['TCA']
-               \TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA($key);
                if ($key && (!$field || is_array($GLOBALS['TCA_DESCR'][$key]['columns'][$field]))) {
                        // Make seeAlso references.
                        $seeAlsoRes = $this->make_seeAlso($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['seeAlso'], $anchors ? $key : '');
                        // Making item:
-                       $out = ((((((((((('<a name="' . $key) . '.') . $field) . '"></a>') . $this->headerLine($this->getTableFieldLabel($key, $field), 1)) . $this->prepareContent($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['description'])) . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['details'] ? $this->headerLine(($GLOBALS['LANG']->getLL('details') . ':')) . $this->prepareContent($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['details']) : '')) . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['syntax'] ? $this->headerLine(($GLOBALS['LANG']->getLL('syntax') . ':')) . $this->prepareContent($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['syntax']) : '')) . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['image'] ? $this->printImage($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['image'], $GLOBALS['TCA_DESCR'][$key]['columns'][$field]['image_descr']) : '')) . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['seeAlso'] && $seeAlsoRes ? (($this->headerLine(($GLOBALS['LANG']->getLL('seeAlso') . ':')) . '<p>') . $seeAlsoRes) . '</p>' : '')) . ($this->back ? ((('<br /><p><a href="' . htmlspecialchars(('mod.php?M=help_cshmanual&tfID=' . rawurlencode($this->back)))) . '" class="typo3-goBack">') . htmlspecialchars($GLOBALS['LANG']->getLL('goBack'))) . '</a></p>' : '')) . '<br />';
+                       $out = '<a name="' . $key . '.' . $field . '"></a>' . $this->headerLine($this->getTableFieldLabel($key, $field), 1) . $this->prepareContent($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['description']) . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['details'] ? $this->headerLine(($GLOBALS['LANG']->getLL('details') . ':')) . $this->prepareContent($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['details']) : '') . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['syntax'] ? $this->headerLine(($GLOBALS['LANG']->getLL('syntax') . ':')) . $this->prepareContent($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['syntax']) : '') . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['image'] ? $this->printImage($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['image'], $GLOBALS['TCA_DESCR'][$key]['columns'][$field]['image_descr']) : '') . ($GLOBALS['TCA_DESCR'][$key]['columns'][$field]['seeAlso'] && $seeAlsoRes ? $this->headerLine(($GLOBALS['LANG']->getLL('seeAlso') . ':')) . '<p>' . $seeAlsoRes . '</p>' : '') . ($this->back ? '<br /><p><a href="' . htmlspecialchars(('mod.php?M=help_cshmanual&tfID=' . rawurlencode($this->back))) . '" class="typo3-goBack">' . htmlspecialchars($GLOBALS['LANG']->getLL('goBack')) . '</a></p>' : '') . '<br />';
                }
                return $out;
        }
@@ -604,10 +623,9 @@ class HelpModuleController {
        }
 
        /******************************
-        *
         * Glossary related
-        *
         ******************************/
+
        /**
         * Creates glossary index in $this->glossaryWords
         * Glossary is cached in cache_hash cache and so will be updated only when cache is cleared.
@@ -618,9 +636,11 @@ class HelpModuleController {
        public function createGlossaryIndex() {
                // Create hash string and try to retrieve glossary array:
                $hash = md5('typo3/mod.php?M=help_cshmanual:glossary');
-               list($this->glossaryWords, $this->substWords) = unserialize(\TYPO3\CMS\Backend\Utility\BackendUtility::getHash($hash));
+               $cachedData = BackendUtility::getHash($hash);
                // Generate glossary words if not found:
-               if (!is_array($this->glossaryWords)) {
+               if (is_array($cachedData)) {
+                       list($this->glossaryWords, $this->substWords) = $cachedData;
+               } else {
                        // Initialize:
                        $this->glossaryWords = array();
                        $this->substWords = array();
@@ -633,7 +653,7 @@ class HelpModuleController {
                                                // Traverse table columns as listed in TCA_DESCR
                                                foreach ($GLOBALS['TCA_DESCR'][$cshKey]['columns'] as $field => $data) {
                                                        if ($field) {
-                                                               $this->glossaryWords[($cshKey . '.') . $field] = array(
+                                                               $this->glossaryWords[$cshKey . '.' . $field] = array(
                                                                        'title' => trim($data['alttitle'] ? $data['alttitle'] : $cshKey),
                                                                        'description' => str_replace('%22', '%23%23%23', rawurlencode($data['description']))
                                                                );
@@ -652,7 +672,7 @@ class HelpModuleController {
                                }
                        }
                        krsort($this->substWords);
-                       \TYPO3\CMS\Backend\Utility\BackendUtility::storeHash($hash, serialize(array($this->glossaryWords, $this->substWords)), 'Glossary');
+                       BackendUtility::storeHash($hash, array($this->glossaryWords, $this->substWords), 'Glossary');
                }
        }
 
@@ -665,7 +685,7 @@ class HelpModuleController {
         * @todo Define visibility
         */
        public function substituteGlossaryWords($code) {
-               $htmlParser = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('local_TYPO3\\CMS\\Core\\Html\\HtmlParser');
+               $htmlParser = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\Html\HtmlParser');
                $htmlParser->pObj = $this;
                $code = $htmlParser->HTMLcleaner($code, array(), 1);
                return $code;
@@ -673,21 +693,21 @@ class HelpModuleController {
 
        /**
         * Substituting glossary words in the CSH
-        * (This is a call-back function from "class local_t3lib_parsehtml extends t3lib_parsehtml", see top of this script)
+        * This is a call-back function from "class local_t3lib_parsehtml
+        * extends \TYPO3\CMS\Core\Html\HtmlParser", see top of this script
         *
         * @param string $code Input HTML string
         * @return string HTML with substituted words in.
-        * @coauthor Alex Widschwendter, media.res kommunikationsloesungen
         * @todo Define visibility
         */
        public function substituteGlossaryWords_htmlcleaner_callback($code) {
-               if ((is_array($this->substWords) && count($this->substWords)) && strlen(trim($code))) {
+               if (is_array($this->substWords) && count($this->substWords) && strlen(trim($code))) {
                        // Substitute words:
                        foreach ($this->substWords as $wordKey => $wordSet) {
                                // quoteMeta used so special chars (which should not occur though) in words will not break the regex. Seemed to work (- kasper)
-                               $parts = preg_split(('/( |[\\(])(' . quoteMeta($wordSet['title'])) . ')([\\.\\!\\)\\?\\:\\,]+| )/i', (' ' . $code) . ' ', 2, PREG_SPLIT_DELIM_CAPTURE);
+                               $parts = preg_split('/( |[\\(])(' . quoteMeta($wordSet['title']) . ')([\\.\\!\\)\\?\\:\\,]+| )/i', ' ' . $code . ' ', 2, PREG_SPLIT_DELIM_CAPTURE);
                                if (count($parts) == 5) {
-                                       $parts[2] = ((((('<a class="glossary-term" href="' . htmlspecialchars(((('mod.php?M=help_cshmanual&tfID=' . rawurlencode($wordSet['key'])) . '&back=') . $this->tfID))) . '" title="') . rawurlencode(htmlspecialchars(\TYPO3\CMS\Core\Utility\GeneralUtility::fixed_lgd_cs(rawurldecode($wordSet['description']), 80)))) . '">') . htmlspecialchars($parts[2])) . '</a>';
+                                       $parts[2] = '<a class="glossary-term" href="' . htmlspecialchars(('mod.php?M=help_cshmanual&tfID=' . rawurlencode($wordSet['key']) . '&back=' . $this->tfID)) . '" title="' . rawurlencode(htmlspecialchars(\TYPO3\CMS\Core\Utility\GeneralUtility::fixed_lgd_cs(rawurldecode($wordSet['description']), 80))) . '">' . htmlspecialchars($parts[2]) . '</a>';
                                        $code = substr(implode('', $parts), 1, -1);
                                        // Disable entry so it doesn't get used next time:
                                        unset($this->substWords[$wordKey]);
@@ -699,6 +719,3 @@ class HelpModuleController {
        }
 
 }
-
-
-?>
\ No newline at end of file