Added feature #15668: TYPO3 Backend should display flags for translations as sprite...
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_tstemplate.php
index bfea913..71c24b3 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 1999-2010 Kasper Skårhøj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -28,9 +28,9 @@
  * Class with template object that is responsible for generating the template
  *
  * $Id$
- * Revised for TYPO3 3.6 July/2003 by Kasper Skaarhoj
+ * Revised for TYPO3 3.6 July/2003 by Kasper Skårhøj
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  */
 /**
  * [CLASS/FUNCTION INDEX of SCRIPT]
@@ -99,7 +99,7 @@
 /**
  * Template object that is responsible for generating the TypoScript template based on template records.
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
  * @see        t3lib_tsparser.php, t3lib_matchcondition.php
@@ -279,6 +279,7 @@ class t3lib_TStemplate      {
                        if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                $currentPageData = unserialize($row['content']);
                        }
+                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
                }
 
                return $currentPageData;
@@ -510,7 +511,7 @@ class t3lib_TStemplate      {
                        $GLOBALS['TYPO3_DB']->sql_free_result($res);
                        $this->rootLine[] = $this->absoluteRootLine[$a];
                }
-               $this->procesIncludes();
+               $this->processIncludes();
        }
 
        /**
@@ -572,7 +573,7 @@ class t3lib_TStemplate      {
                                        $GLOBALS['TYPO3_DB']->sql_free_result($res);
                                }
                        } else {
-                                       // Normal Operation, which is to include the "based-on" sys_templates, 
+                                       // Normal Operation, which is to include the "based-on" sys_templates,
                                        // if they are not already included, and maintaining the sorting of the templates
                                $basedOnIds = t3lib_div::intExplode(',', $row['basedOn']);
 
@@ -591,7 +592,7 @@ class t3lib_TStemplate      {
                                );
 
                                        // traversing list again to ensure the sorting of the templates
-                               foreach ($basedOnIds as $id) { 
+                               foreach ($basedOnIds as $id) {
                                        if (is_array($subTemplates[$id])) {
                                                $this->versionOL($subTemplates[$id]);
                                                $this->processTemplate($subTemplates[$id], $idList . ',sys_' . $id, $pid, 'sys_' . $id, $templateID);
@@ -616,7 +617,7 @@ class t3lib_TStemplate      {
                        'title'=>$row['title'],
                        'uid'=>$row['uid'],
                        'pid'=>$row['pid'],
-                       'configLines' => substr_count($row['config'], chr(10))+1
+                       'configLines' => substr_count($row['config'], LF)+1
                );
 
                        // Adding the content of the fields constants (Constants), config (Setup) and editorcfg (Backend Editor Configuration) to the internal arrays.
@@ -704,6 +705,19 @@ class t3lib_TStemplate     {
                }
 
                $this->addExtensionStatics($idList,$templateID,$pid,$row);
+
+                       // Include Static Template Records after all other TypoScript has been included.
+               if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['includeStaticTypoScriptSourcesAtEnd'])) {
+                       $_params = array(
+                                       'idList' => &$idList,
+                                       'templateId' => &$templateID,
+                                       'pid' => &$pid,
+                                       'row' => &$row
+                       );
+                       foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['includeStaticTypoScriptSourcesAtEnd'] as $_funcRef)     {
+                               t3lib_div::callUserFunction($_funcRef, $_params, $this);
+                       }
+               }
        }
 
        /**
@@ -806,7 +820,7 @@ class t3lib_TStemplate      {
                array_unshift($this->editorcfg,''.$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_editorcfg']);    // Adding default TS/editorcfg
 
                        // Parse the TypoScript code text for include-instructions!
-               $this->procesIncludes();
+               $this->processIncludes();
 
                        // These vars are also set lateron...
                $this->setup['resources']= $this->resources;
@@ -964,12 +978,25 @@ class t3lib_TStemplate    {
 
        /**
         * Searching TypoScript code text (for constants, config (Setup) and editorcfg) for include instructions and does the inclusion if needed.
-        * Modifies
+        *
+        * @return      void
+        * @deprecated since TYPO3 4.4 - Method name misspelled. Use "processIncludes" instead! This function will be removed in TYPO3 4.6.
+        * @see t3lib_TSparser, processIncludes()
+        */
+       public function procesIncludes() {
+               t3lib_div::logDeprecatedFunction();
+               $this->processIncludes();
+       }
+
+       /**
+        * Searching TypoScript code text (for constants, config (Setup) and editorcfg)
+        * for include instructions and does the inclusion of external TypoScript files
+        * if needed.
         *
         * @return      void
         * @see t3lib_TSparser, generateConfig()
         */
-       function procesIncludes() {
+       public function processIncludes() {
                $files = array();
                foreach ($this->constants as &$value) {
                        $includeData = t3lib_TSparser::checkIncludeLines($value, 1, true);
@@ -991,7 +1018,7 @@ class t3lib_TStemplate     {
                if (count($files)) {
                        $files = array_unique($files);
                        foreach ($files as $file) {
-                               $this->rowSum[] = Array($file, filemtime($file));
+                               $this->rowSum[] = array($file, filemtime($file));
                        }
                }
        }
@@ -1012,7 +1039,7 @@ class t3lib_TStemplate    {
                }
                        // Parsing the user TS (or getting from cache)
                $TSdataArray = t3lib_TSparser::checkIncludeLines_array($TSdataArray);
-               $userTS = implode(chr(10).'[GLOBAL]'.chr(10),$TSdataArray);
+               $userTS = implode(LF.'[GLOBAL]'.LF,$TSdataArray);
 
                $parseObj = t3lib_div::makeInstance('t3lib_TSparser');
                $parseObj->parse($userTS);
@@ -1275,14 +1302,13 @@ class t3lib_TStemplate  {
         * @param       string          Property name in the menu array
         * @param       array           Menu array to traverse
         * @return      array           Modified menu array
-        * @deprecated since TYPO3 3.6, this function will be removed in TYPO3 4.5.
+        * @deprecated since TYPO3 3.6, this function will be removed in TYPO3 4.6.
         * @internal
         */
        function checkFile($name,$menuArr)      {
                t3lib_div::logDeprecatedFunction();
 
-               reset ($menuArr);
-               while (list($aKey,)=each($menuArr))     {
+               foreach ($menuArr as $aKey => $value) {
                        $menuArr[$aKey][$name] = $this->getFileName($menuArr[$aKey][$name]);
                }
                return $menuArr;
@@ -1331,7 +1357,7 @@ class t3lib_TStemplate    {
         * Ordinary "wrapping" function. Used in the tslib_menu class and extension classes instead of the similar function in tslib_cObj
         *
         * @param       string          The content to wrap
-        * @param       string          The wrap value, eg. "<b> | </b>"
+        * @param       string          The wrap value, eg. "<strong> | </strong>"
         * @return      string          Wrapped input string
         * @see tslib_menu, tslib_cObj::wrap()
         */
@@ -1594,7 +1620,8 @@ class t3lib_TStemplate    {
                        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
                                                'uid,pid,doktype,mount_pid,mount_pid_ol',
                                                'pages',
-                                               'pid='.intval($id).' AND deleted=0 AND doktype!=255 AND doktype!=6'     // 255 = Garbage bin, 6 = Backend User Section
+                                               'pid='.intval($id).' AND deleted=0 AND doktype!=' . t3lib_pageSelect::DOKTYPE_RECYCLER .
+                                                       ' AND doktype!=' . t3lib_pageSelect::DOKTYPE_BE_USER_SECTION
                                        );
                        while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))      {