Various changes
authorKasper Skårhøj <kasper@typo3.org>
Tue, 16 Dec 2003 17:13:12 +0000 (17:13 +0000)
committerKasper Skårhøj <kasper@typo3.org>
Tue, 16 Dec 2003 17:13:12 +0000 (17:13 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@71 709f56b5-9817-0410-a4d7-c38de5d9e867

t3lib/class.t3lib_div.php
t3lib/class.t3lib_parsehtml.php
t3lib/class.t3lib_parsehtml_proc.php
t3lib/config_default.php
t3lib/ext_php_api.dat
typo3/stylesheet.css
typo3/sysext/cms/layout/db_layout.php
typo3/sysext/cms/tslib/class.tslib_content.php

index 689343d..633e4a8 100755 (executable)
@@ -1838,6 +1838,7 @@ class t3lib_div {
 
        /**
         * Reads the file or url $url and returns the content
+        * If you are having trouble with proxys when reading URLs you can configure your way out of that with settings like $TYPO3_CONF_VARS['SYS']['curlUse'] etc.
         * 
         * Usage: 79
         * 
index 9a88194..734ea0c 100644 (file)
@@ -440,7 +440,7 @@ class t3lib_parsehtml {
         * @param       string          $content; is the HTML-content being processed. This is also the result being returned.
         * @param       array           $tags; is an array where each key is a tagname in lowercase. Only tags present as keys in this array are preserved. The value of the key can be an array with a vast number of options to configure.
         * @param       string          $keepAll; boolean/'protect', if set, then all tags are kept regardless of tags present as keys in $tags-array. If 'protect' then the preserved tags have their <> converted to &lt; and &gt;
-        * @param       integer         $hSC; Values -1,0,1: Set to zero= disabled, set to 1 then the content BETWEEN tags is htmlspecialchar()'ed.
+        * @param       integer         $hSC; Values -1,0,1,2: Set to zero= disabled, set to 1 then the content BETWEEN tags is htmlspecialchar()'ed, set to -1 its the opposite and set to 2 the content will be HSC'ed BUT with preservation for real entities (eg. "&amp;" or "&#234;")
         * @param       array           Configuration array send along as $conf to the internal functions ->processContent() and ->processTag()
         * @return      string          Processed HTML content
         */
@@ -688,16 +688,18 @@ class t3lib_parsehtml {
        }
        
        /**
-        * Converts htmlspecialchars forth ($dir=1) AND back ($dir=0)
+        * Converts htmlspecialchars forth ($dir=1) AND back ($dir=-1)
         * 
         * @param       string          Input value
-        * @param       integer         Direction: forth ($dir=1) AND back ($dir=0)
+        * @param       integer         Direction: forth ($dir=1, dir=2 for preserving entities) AND back ($dir=-1)
         * @return      string          Output value
         */
        function bidir_htmlspecialchars($value,$dir)    {
-               if ($dir>0)     {
+               if ($dir==1)    {
                        $value = htmlspecialchars($value);
-               } elseif ($dir<0) {
+               } elseif ($dir==2)      {
+                       $value = t3lib_div::deHSCentities(htmlspecialchars($value));
+               } elseif ($dir==-1) {
                        $value = str_replace('&gt;','>',$value);
                        $value = str_replace('&lt;','<',$value);
                        $value = str_replace('&quot;','"',$value);
@@ -832,8 +834,8 @@ class t3lib_parsehtml {
         * @return      string          Processed HTML content
         */
        function mapTags($value,$tags=array(),$ltChar='<',$ltChar2='<') {
-               reset($tags);
-               while(list($from,$to)=each($tags))      {
+       
+               foreach($tags as $from => $to)  {
                        $value = eregi_replace($ltChar.$from.'>',$ltChar2.$to.'>',$value);
                        $value = eregi_replace($ltChar.$from.'[[:space:]]([^>]*)>',$ltChar2.$to.' \\1>',$value);
                        $value = eregi_replace($ltChar.'\/'.$from.'[^>]*>',$ltChar2.'/'.$to.'>',$value);
@@ -1055,7 +1057,18 @@ class t3lib_parsehtml {
                        }
                }
                
-               return array($keepTags, ''.$TSconfig['keepNonMatchedTags'], intval($TSconfig['htmlSpecialChars']));
+                       // Create additional configuration:
+               $addConfig=array();
+               if ($TSconfig['xhtml_cleaning'])        {
+                       $addConfig['xhtml']=1;
+               }               
+               
+               return array(
+                       $keepTags, 
+                       ''.$TSconfig['keepNonMatchedTags'], 
+                       intval($TSconfig['htmlSpecialChars']),
+                       $addConfig
+               );
        }
        
        /**
index 1499e6a..b30ca11 100755 (executable)
@@ -28,8 +28,8 @@
  * Functions for parsing HTML, specially for TYPO3 processing in relation to TCEmain and Rich Text Editor (RTE)
  *
  * $Id$
- * Revised for TYPO3 3.6 July/2003 by Kasper Skaarhoj
- * Generally NOT XHTML compatible. Must be revised for XHTML compatibility later.
+ * Revised for TYPO3 3.6 December/2003 by Kasper Skaarhoj
+ * XHTML compatible.
  *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @internal
  *
  *
  *
- *   99: class t3lib_parsehtml_proc extends t3lib_parsehtml 
- *  126:     function init($elRef='',$recPid=0)        
- *  137:     function setRelPath($path)        
- *  158:     function getURL($url)     
- *  176:     function evalWriteFile($pArr,$currentRecord)      
+ *  102: class t3lib_parsehtml_proc extends t3lib_parsehtml 
+ *  137:     function init($elRef='',$recPid=0)        
+ *  149:     function setRelPath($path)        
+ *  173:     function evalWriteFile($pArr,$currentRecord)      
  *
- *              SECTION: TRANSFORMATION functions for specific TYPO3 use
- *  241:     function HTMLcleaner_db($content,$tagList='')     
- *  263:     function divideIntoLines($value,$count=5,$returnArray=0)  
- *  347:     function internalizeFontTags($value)      
- *  384:     function setDivTags($value,$dT='P')       
- *  411:     function siteUrl()        
- *  422:     function removeTables($value,$breakChar='<BR>')   
- *  451:     function defaultTStagMapping($code,$direction='rte')      
- *  474:     function getWHFromAttribs($attribArray)   
- *  500:     function urlInfoForLinkTags($url) 
- *  557:     function TS_images_db($value)     
- *  653:     function TS_images_rte($value)    
- *  679:     function TS_reglinks($value,$direction)           
- *  711:     function TS_links_db($value)      
- *  752:     function TS_AtagToAbs($value,$dontSetRTEKEEP=0)   
- *  779:     function TS_links_rte($value)     
- *  852:     function TS_preserve_db($value)   
- *  876:     function TS_preserve_rte($value)  
- *  896:     function TS_strip_db($value)      
- *  906:     function getKeepTags($direction='rte',$tagList='')        
- *  986:     function TS_transform_db($value,$css=0)   
- * 1074:     function TS_transform_rte($value,$css=0)  
- * 1146:     function TS_tmplParts_rte($value) 
- * 1189:     function RTE_transform($value,$specConf,$direction='rte',$thisConfig='')  
- * 1301:     function rteImageStorageDir()     
+ *              SECTION: Main function
+ *  231:     function RTE_transform($value,$specConf,$direction='rte',$thisConfig=array())     
  *
- * TOTAL FUNCTIONS: 28
+ *              SECTION: Specific RTE TRANSFORMATION functions
+ *  378:     function TS_images_db($value)     
+ *  479:     function TS_images_rte($value)    
+ *  513:     function TS_reglinks($value,$direction)           
+ *  547:     function TS_links_db($value)      
+ *  591:     function TS_links_rte($value)     
+ *  666:     function TS_preserve_db($value)   
+ *  690:     function TS_preserve_rte($value)  
+ *  711:     function TS_transform_db($value,$css=FALSE)       
+ *  822:     function TS_transform_rte($value,$css=0)  
+ *  893:     function TS_strip_db($value)      
+ *
+ *              SECTION: Generic RTE transformation, analysis and helper functions
+ *  924:     function getURL($url)     
+ *  938:     function HTMLcleaner_db($content,$tagList='')     
+ *  959:     function getKeepTags($direction='rte',$tagList='')        
+ * 1068:     function divideIntoLines($value,$count=5,$returnArray=FALSE)      
+ * 1172:     function setDivTags($value,$dT='p')       
+ * 1217:     function internalizeFontTags($value)      
+ * 1253:     function siteUrl()        
+ * 1263:     function rteImageStorageDir()     
+ * 1275:     function removeTables($value,$breakChar='<br />') 
+ * 1307:     function defaultTStagMapping($code,$direction='rte')      
+ * 1330:     function getWHFromAttribs($attribArray)   
+ * 1356:     function urlInfoForLinkTags($url) 
+ * 1415:     function TS_AtagToAbs($value,$dontSetRTEKEEP=FALSE)       
+ *
+ * TOTAL FUNCTIONS: 27
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
@@ -97,20 +100,28 @@ require_once (PATH_t3lib.'class.t3lib_parsehtml.php');
  * @subpackage t3lib
  */
 class t3lib_parsehtml_proc extends t3lib_parsehtml {
-       var $recPid = 0;                // Set this to the pid of the record manipulated by the class.
-       var $elRef = '';
-       var $procOptions = '';
-       var $headListTags = 'PRE,UL,OL,H1,H2,H3,H4,H5,H6';
-       var $preserveTags = '';
-
-       var $relPath='';
-       var $relBackPath='';
-       var $getKeepTags_cache=array();
-       var $allowedClasses=array();
-       
-               // Internal
-       var $TS_transform_db_safecounter=100;
-       var $rte_p='';
+
+               // Static:
+       var $headListTags = 'PRE,UL,OL,H1,H2,H3,H4,H5,H6';              // List of tags for header, pre and list containers
+
+               // Internal, static:
+       var $recPid = 0;                                // Set this to the pid of the record manipulated by the class.
+       var $elRef = '';                                // Element reference [table]:[field], eg. "tt_content:bodytext" 
+       var $relPath='';                                // Relative path
+       var $relBackPath='';                    // Relative back-path
+       var $procOptions = '';                  // Set to the TSconfig options coming from Page TSconfig
+
+               // Internal, dynamic
+       var $TS_transform_db_safecounter=100;           // Run-away brake for recursive calls.
+       var $rte_p='';                                                          // Parameters from TCA types configuration related to the RTE
+       var $getKeepTags_cache=array();                         // Data caching for processing function
+       var $allowedClasses=array();                            // Storage of the allowed CSS class names in the RTE
+       var $preserveTags = '';                                         // Set to tags to preserve from Page TSconfig configuration
+
+
+
+
+
 
 
 
@@ -119,9 +130,9 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        /**
         * Initialize, setting element reference and record PID
         * 
-        * @param       [type]          $elRef: ...
-        * @param       [type]          $recPid: ...
-        * @return      [type]          ...
+        * @param       string          Element reference, eg "tt_content:bodytext"
+        * @param       integer         PID of the record (page id)
+        * @return      void            
         */
        function init($elRef='',$recPid=0)      {
                $this->recPid=$recPid;
@@ -130,9 +141,10 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
 
        /**
         * Setting the ->relPath and ->relBackPath to proper values so absolute references to links and images can be converted to relative dittos.
+        * This is used when editing files with the RTE
         * 
-        * @param       [type]          $path: ...
-        * @return      [type]          ...
+        * @param       string          The relative path from PATH_site to the place where the file being edited is. Eg. "fileadmin/static".
+        * @return      void            There is no output, it is set in internal variables. With the above example of "fileadmin/static" as input this will yield ->relPath to be "fileadmin/static/" and ->relBackPath to be "../../"
         */
        function setRelPath($path)      {
                $path = trim($path);
@@ -150,30 +162,16 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        }
 
        /**
-        * Reads the file or url $url and returns the content
-        * 
-        * @param       [type]          $url: ...
-        * @return      [type]          ...
-        */
-       function getURL($url)   {
-               if($fd = @fopen($url,'rb'))     {
-                       $content = '';
-                       while (!feof($fd))      {
-                               $content.=fread($fd, 5000);
-                       }
-                       fclose($fd);
-                       return $content;
-               }
-       }
-
-       /**
         * Evaluate the environment for editing a staticFileEdit file.
+        * Called for almost all fields being saved in the database. Is called without an instance of the object: t3lib_parsehtml_proc::evalWriteFile()
         * 
-        * @param       [type]          $pArr: ...
-        * @param       [type]          $currentRecord: ...
+        * @param       array           Parameters for the current field as found in types-config
+        * @param       array           Current record we are editing.
         * @return      mixed           On success an array with various information is returned, otherwise a string with an error message
+        * @see t3lib_TCEmain, t3lib_transferData
         */
        function evalWriteFile($pArr,$currentRecord)    {
+
                        // Write file configuration:
                if (is_array($pArr))    {
                        if ($GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'] 
@@ -200,19 +198,10 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                        } else return "ERROR: staticFileEditPath was not set, not set correctly or did not exist!";
                }
        }
+       
 
 
 
-
-       
-       
-       
-       
-       
-       
-       
-       
-       
        
        
        
@@ -222,348 +211,183 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        
        
        
-       
-       
-       
-       /************************************
+       /**********************************************
         *
-        * TRANSFORMATION functions for specific TYPO3 use
+        * Main function
         *
-        *************************************/
-
+        **********************************************/        
+       
        /**
-        * Function for cleaning content going to the database.
+        * Tranform value for RTE based on specConf in the direction specified by $direction (rte/db)
+        * This is the main function called from tcemain and transfer data classes
         * 
-        * @param       [type]          $content: ...
-        * @param       [type]          $tagList: ...
-        * @return      [type]          ...
+        * @param       string          Input value
+        * @param       array           Special configuration for a field; This is coming from the types-configuration of the field in the TCA. In the types-configuration you can setup features for the field rendering and in particular the RTE takes al its major configuration options from there!
+        * @param       string          Direction of the transformation. Two keywords are allowed; "db" or "rte". If "db" it means the transformation will clean up content coming from the Rich Text Editor and goes into the database. The other direction, "rte", is of course when content is coming from database and must be transformed to fit the RTE.
+        * @param       array           Parsed TypoScript content configuring the RTE, probably coming from Page TSconfig.
+        * @return      string          Output value
+        * @see t3lib_TCEmain::fillInFieldArray(), t3lib_transferData::renderRecord_typesProc()
         */
-        function HTMLcleaner_db($content,$tagList='')  {
-               if (!$tagList)  {
-                       $keepTags = $this->getKeepTags('db');
+       function RTE_transform($value,$specConf,$direction='rte',$thisConfig=array())   {
+       
+                       // Init:
+               $this->procOptions=$thisConfig['proc.'];
+               $this->preserveTags = strtoupper(implode(',',t3lib_div::trimExplode(',',$this->procOptions['preserveTags'])));
+
+                       // Get parameters for rte_transformation:
+               $p = $this->rte_p = t3lib_BEfunc::getSpecConfParametersFromArray($specConf['rte_transform']['parameters']);
+
+                       // Setting modes:
+               if (strcmp($this->procOptions['overruleMode'],''))      {
+                       $modes=array_unique(t3lib_div::trimExplode(',',$this->procOptions['overruleMode']));
                } else {
-                       $keepTags = $this->getKeepTags('db',$tagList);
+                       $modes=array_unique(t3lib_div::trimExplode('-',$p['mode']));
                }
-               $kUknown = $this->procOptions['dontRemoveUnknownTags_db'] ? 1 : 0;      // Default: remove unknown tags.
-               $hSC = $this->procOptions['dontUndoHSC_db'] ? 0 : -1;   // Default: re-convert literals to characters (that is &lt; to <)
-               
-               return $this->HTMLcleaner($content,$keepTags,$kUknown,$hSC);
-        }
-        
-       /**
-        * This resolves the $value into parts based on <div></div>-sections and <P>-sections and <BR>-tags. These are returned as lines separated by chr(10).
-        * This point is to resolve the HTML-code returned from RTE into ordinary lines so it's 'human-readable'
-        * The function ->setDivTags does the opposite.
-        * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $count: ...
-        * @param       [type]          $returnArray: ...
-        * @return      [type]          ...
-        */
-       function divideIntoLines($value,$count=5,$returnArray=0)        {
-               if ($this->procOptions['internalizeFontTags'])  {$value = $this->internalizeFontTags($value);}
-               $allowTagsOutside = t3lib_div::trimExplode(',',strtolower($this->procOptions['allowTagsOutside']?$this->procOptions['allowTagsOutside']:'img'),1);
-               $remapParagraphTag = strtoupper($this->procOptions['remapParagraphTag']);
-               $divSplit = $this->splitIntoBlock('div,p',$value,1);    // Setting the third param to 1 will eliminate false end-tags. Maybe this is a good thing to do...?
+               $revmodes=array_flip($modes);
 
-               $keepAttribListArr = array();
-               if ($this->procOptions['keepPDIVattribs'])      {
-                       $keepAttribListArr = t3lib_div::trimExplode(',',strtolower($this->procOptions['keepPDIVattribs']),1);
+                       // Find special modes and extract them:
+               if (isset($revmodes['ts']))     {
+                       $modes[$revmodes['ts']]='ts_transform,ts_preserve,ts_images,ts_links';
                }
-                       
-                       // returns plainly the value if there was no div/p sections in it
-               if (count($divSplit)<=1 || $count<=0)   {
-                       return $value;
+                       // Find special modes and extract them:
+               if (isset($revmodes['ts_css'])) {
+                       $modes[$revmodes['ts_css']]='css_transform,ts_images,ts_links';
+               }
+               $modes = array_unique(t3lib_div::trimExplode(',',implode(',',$modes),1));
+               if ($direction=='rte')  {
+                       $modes=array_reverse($modes);
                }
 
-               reset($divSplit);
-               while(list($k,$v)=each($divSplit))      {
-                       if ($k%2)       {       // Inside
-                               $v=$this->removeFirstAndLastTag($v);
+                       // Getting additional HTML cleaner configuration. These are applied either before or after the main transformation is done and is thus totally independant processing options you can set up:
+               $entry_HTMLparser = $this->procOptions['entryHTMLparser_'.$direction] ? $this->HTMLparserConfig($this->procOptions['entryHTMLparser_'.$direction.'.']) : '';
+               $exit_HTMLparser = $this->procOptions['exitHTMLparser_'.$direction] ? $this->HTMLparserConfig($this->procOptions['exitHTMLparser_'.$direction.'.']) : '';
 
-                                       // Fetching 'sub-lines' - which will explode any further p/div nesting...
-                               $subLines = $this->divideIntoLines($v,$count-1,1);
-                               if (is_array($subLines))        {       // So, if there happend to be sub-nesting of p/div, this is written directly as the new content of THIS section. (This would be considered 'an error')
+                       // Line breaks of content is unified into char-10 only (removing char 13)
+               if (!$this->procOptions['disableUnifyLineBreaks'])      {
+                       $value = str_replace(chr(13).chr(10),chr(10),$value);
+               }
 
-                               } else {        //... but if NO subsection was found, we process it as a TRUE line without erronous content:
-                                       $subLines=array($subLines);
-                                       if (!$this->procOptions['dontConvBRtoParagraph'])       {       // process break-tags, if configured for. Simply, the breaktags will here be treated like if each was a line of content...
-                                               $subLines = spliti('<BR[[:space:]]*>',$v);
-                                       }
-                                       reset($subLines);
-                                       while(list($sk)=each($subLines))        {
-                                               $subLines[$sk]=$this->HTMLcleaner_db($subLines[$sk]);
-                                               
-                                               $fTag = $this->getFirstTag($divSplit[$k]);
-                                               $tagName=$this->getFirstTagName($divSplit[$k]);
-                                               $attribs=$this->get_tag_attributes($fTag);
-                                               
-                                               $newAttribs=array();
-                                                       // Keep attributes
-                                               if (count($keepAttribListArr))  {
-                                                       reset($keepAttribListArr);
-                                                       while(list(,$keepA)=each($keepAttribListArr))   {
-                                                               if (isset($attribs[0][$keepA])) {$newAttribs[$keepA]=$attribs[0][$keepA];}
-                                                       }
-                                               }
-                                                       // ALIGN attribute:
-                                               if (!$this->procOptions['skipAlign'] && strcmp($attribs[0]['align'],'') && strtolower($attribs[0]['align'])!='left')    {       // Set to value, but not 'left'
-                                                       $newAttribs['align']=$attribs[0]['align'];
-                                               }
-                                                       // CLASS attribute:
-                                               if (!$this->procOptions['skipClass'] && strcmp($attribs[0]['class'],''))        {       // Set to whatever value
-                                                       if (!count($this->allowedClasses) || in_array(strtoupper($attribs[0]['class']),$this->allowedClasses))  {
-                                                               $newAttribs['class']=$attribs[0]['class'];
-                                                       }
-                                               }
-                                               $subLines[$sk]=ereg_replace(chr(10).'|'.chr(13),'',$subLines[$sk]);
-                                               if (count($newAttribs) && strcmp($remapParagraphTag,'1'))               {
-                                                       if ($remapParagraphTag=='P')    $tagName='P';
-                                                       if ($remapParagraphTag=='DIV')  $tagName='DIV';
-                                                       $subLines[$sk]='<'.trim($tagName.' '.$this->compileTagAttribs($newAttribs)).'>'.$subLines[$sk].'</'.$tagName.'>';
-                                               }
-                                       }
+                       // In an entry-cleaner was configured, pass value through the HTMLcleaner with that:
+               if (is_array($entry_HTMLparser))        {
+                       $value = $this->HTMLcleaner($value,$entry_HTMLparser[0],$entry_HTMLparser[1],$entry_HTMLparser[2],$entry_HTMLparser[3]);
+               }
+               
+                       // Traverse modes:
+               foreach($modes as $cmd) {
+                               // ->DB
+                       if ($direction=='db')   {
+                               switch($cmd)    {
+                                       case 'ts_images':
+                                               $value=$this->TS_images_db($value);
+                                       break;
+                                       case 'ts_reglinks':
+                                               $value=$this->TS_reglinks($value,'db');
+                                       break;
+                                       case 'ts_links':
+                                               $value=$this->TS_links_db($value);
+                                       break;
+                                       case 'ts_preserve':
+                                               $value=$this->TS_preserve_db($value);
+                                       break;
+                                       case 'ts_transform':
+                                       case 'css_transform':
+                                               $value = str_replace(chr(13),'',$value);        // Has a very disturbing effect, so just remove all '13' - depend on '10'
+                                               $this->allowedClasses = t3lib_div::trimExplode(',',strtoupper($this->procOptions['allowedClasses']),1);
+                                               $value=$this->TS_transform_db($value,$cmd=='css_transform');
+                                       break;
+                                       case 'ts_strip':
+                                               $value=$this->TS_strip_db($value);
+                                       break;
+                                       case 'dummy':
+                                       break;
                                }
-                               $divSplit[$k] = implode(chr(10),$subLines);
-                               if (trim(strip_tags($divSplit[$k]))=='&nbsp;')          $divSplit[$k]='';
-                       } else {        // outside div:
-                                       // Remove positions which are outside div/p tags and without content
-                               $divSplit[$k]=trim(strip_tags($divSplit[$k],'<'.implode('><',$allowTagsOutside).'>'));
-                               if (!$divSplit[$k])     unset($divSplit[$k]);   // Remove part if it's 
                        }
-               }
-               return $returnArray ? $divSplit : implode(chr(10),$divSplit);
-       }
-
-       /**
-        * This splits the $value in font-tag chunks. 
-        * If there are any <P>/<DIV> sections inside of them, the font-tag is wrapped AROUND the content INSIDE of the P/DIV sections and the outer font-tag is removed.
-        * This functions seems to be a good choice for pre-processing content if it has been pasted into the RTE from eg. star-office. 
-        * In that case the font-tags is normally on the OUTSIDE of the sections.
-        * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
-        */
-       function internalizeFontTags($value)    {
-               $fontSplit = $this->splitIntoBlock('font',$value);
-
-               reset($fontSplit);
-               while(list($k,$v)=each($fontSplit))     {
-                       if ($k%2)       {       // Inside
-                               $fTag = $this->getFirstTag($v); // Fint font-tag
-                               
-                               $divSplit_sub = $this->splitIntoBlock('div,p',$this->removeFirstAndLastTag($v),1);
-                               if (count($divSplit_sub)>1)     {       // If there were div/p sections inside the font-tag, do something about it...
-                                               // traverse those sections:
-                                       reset($divSplit_sub);
-                                       while(list($k2,$v2)=each($divSplit_sub))        {
-                                               if ($k2%2)      {       // Inside
-                                                       $div_p = $this->getFirstTag($v2);       // Fint font-tag
-                                                       $div_p_tagname = $this->getFirstTagName($v2);   // Fint font-tag
-                                                       $v2=$this->removeFirstAndLastTag($v2); // ... and remove it from original.
-                                                       $divSplit_sub[$k2]=$div_p.$fTag.$v2.'</FONT>'.'</'.$div_p_tagname.'>';
-                                               } elseif (trim(strip_tags($v2))) {
-                                                       $divSplit_sub[$k2]=$fTag.$v2.'</FONT>';
-                                               }
-                                       }
-                                       $fontSplit[$k]=implode('',$divSplit_sub);
+                               // ->RTE
+                       if ($direction=='rte')  {
+                               switch($cmd)    {
+                                       case 'ts_images':
+                                               $value=$this->TS_images_rte($value);
+                                       break;
+                                       case 'ts_reglinks':
+                                               $value=$this->TS_reglinks($value,'rte');
+                                       break;
+                                       case 'ts_links':
+                                               $value=$this->TS_links_rte($value);
+                                       break;
+                                       case 'ts_preserve':
+                                               $value=$this->TS_preserve_rte($value);
+                                       break;
+                                       case 'ts_transform':
+                                       case 'css_transform':
+                                               $value = str_replace(chr(13),'',$value);        // Has a very disturbing effect, so just remove all '13' - depend on '10'
+                                               $value=$this->TS_transform_rte($value,$cmd=='css_transform');
+                                       break;
+                                       case 'dummy':
+                                       break;
                                }
                        }
                }
 
-               return implode('',$fontSplit);
-       }
-       
-       /**
-        * Converts all lines into <div></div>-sections (unless the line is a div-section already
-        * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $dT: ...
-        * @return      [type]          ...
-        */
-       function setDivTags($value,$dT='P')     {
-               $keepTags = $this->getKeepTags('rte');
-               $kUknown = $this->procOptions['dontProtectUnknownTags_rte'] ? 0 : 'protect';    // Default: remove unknown tags.
-               $hSC = $this->procOptions['dontHSC_rte'] ? 0 : 1;       // Default: re-convert literals to characters (that is &lt; to <)
-               $convNBSP = !$this->procOptions['dontConvAmpInNBSP_rte']?1:0;
+                       // In an exit-cleaner was configured, pass value through the HTMLcleaner with that:
+               if (is_array($exit_HTMLparser)) {
+                       $value = $this->HTMLcleaner($value,$exit_HTMLparser[0],$exit_HTMLparser[1],$exit_HTMLparser[2],$exit_HTMLparser[3]);
+               }
 
-               $parts = explode(chr(10),$value);
-               reset($parts);
-               while(list($k,$v)=each($parts)) {
-                       $parts[$k]=$this->HTMLcleaner($parts[$k],$keepTags,$kUknown,$hSC);
-                       if ($convNBSP)  $parts[$k]=str_replace('&amp;nbsp;','&nbsp;',$parts[$k]);
-                       if (!$v)        $parts[$k]='&nbsp;';
-                       if (substr(strtoupper(trim($parts[$k])),0,4)!='<DIV' || substr(strtoupper(trim($parts[$k])),-6)!='</DIV>')      {
-                               if (substr(strtoupper(trim($parts[$k])),0,2)!='<P' || substr(strtoupper(trim($parts[$k])),-4)!='</P>')  {
-                                               // Only set p-tags if there is not already div or p tags:
-                                       $parts[$k]='<'.$dT.'>'.(trim($parts[$k])?$parts[$k]:'&nbsp;').'</'.$dT.'>';     
-                               }
-                       }
+                       // Final clean up of linebreaks:
+               if (!$this->procOptions['disableUnifyLineBreaks'])      {
+                       $value = str_replace(chr(13).chr(10),chr(10),$value);   // Make sure no \r\n sequences has entered in the meantime...
+                       $value = str_replace(chr(10),chr(13).chr(10),$value);   // ... and then change all \n into \r\n
                }
-               return implode(chr(10),$parts);
-       }
 
-       /**
-        * Returns SiteURL based on thisScript.
-        * 
-        * @return      [type]          ...
-        */
-       function siteUrl()      {
-               return t3lib_div::getIndpEnv('TYPO3_SITE_URL');
+                       // Return value:
+               return $value;
        }
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+       /************************************
+        *
+        * Specific RTE TRANSFORMATION functions
+        *
+        *************************************/
+
        /**
-        * Remove all tables from incoming code
+        * Transformation handler: 'ts_images' / direction: "db"
+        * Processing images inserted in the RTE.
+        * This is used when content goes from the RTE to the database. 
+        * Images inserted in the RTE has an absolute URL applied to the src attribute. This URL is converted to a relative URL
+        * If it turns out that the URL is from another website than the current the image is read from that external URL and moved to the local server.
+        * Also "magic" images are processed here.
         * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $breakChar: ...
-        * @return      [type]          ...
-        */
-       function removeTables($value,$breakChar='<BR>') {
-               $tableSplit = $this->splitIntoBlock('table',$value);
-               reset($tableSplit);
-               while(list($k,$v)=each($tableSplit))    {
-                       if ($k%2)       {
-                               $tableSplit[$k]='';
-                               $rowSplit = $this->splitIntoBlock('tr',$v);
-                               reset($rowSplit);
-                               while(list($k2,$v2)=each($rowSplit))    {
-                                       if ($k2%2)      {
-                                               $cellSplit = $this->getAllParts($this->splitIntoBlock('td',$v2),1,0);
-                                               reset($cellSplit);
-                                               while(list($k3,$v3)=each($cellSplit))   {
-                                                       $tableSplit[$k].=$v3.$breakChar;
-                                               }
-                                       }
-                               }
-                       }
-               }
-               return implode($breakChar,$tableSplit);
-       }
-       
-       /**
-        * Default tag mapping for TS
-        * 
-        * @param       [type]          $code: ...
-        * @param       [type]          $direction: ...
-        * @return      [type]          ...
-        */
-       function defaultTStagMapping($code,$direction='rte')    {
-               if ($direction=='db')   {
-                       $code=$this->mapTags($code,array(       // Map tags
-                               'STRONG' => 'B',
-                               'EM' => 'I'
-                       ));
-               }
-               if ($direction=='rte')  {
-                       $code=$this->mapTags($code,array(       // Map tags
-                               'B' => 'STRONG',
-                               'I' => 'EM'
-                       ));
-               }
-               return $code;
-       }
-       
-       /**
-        * Finds width and height from attrib-array
-        * If the width and height is found in the style-attribute, use that!
-        * 
-        * @param       [type]          $attribArray: ...
-        * @return      [type]          ...
-        */
-       function getWHFromAttribs($attribArray) {
-               $style =trim($attribArray['style']);
-               if ($style)     {
-                       $regex='[[:space:]]*:[[:space:]]*([0-9]*)[[:space:]]*px';
-                               // Width
-                       eregi('width'.$regex,$style,$reg);
-                       $w = intval($reg[1]);
-                               // Height
-                       eregi('height'.$regex,$style,$reg);
-                       $h = intval($reg[1]);
-               }
-               if (!$w)        {
-                       $w = $attribArray['width'];
-               }
-               if (!$h)        {
-                       $h = $attribArray['height'];
-               }
-               return array(intval($w),intval($h));
-       }
-       
-       /**
-        * Parse <A>-tag href and return status of email,external,file or page
-        * 
-        * @param       [type]          $url: ...
-        * @return      [type]          ...
-        */
-       function urlInfoForLinkTags($url)       {
-               $url = trim($url);
-               if (substr(strtolower($url),0,7)=='mailto:')    {
-                       $info['url']=trim(substr($url,7));
-                       $info['type']='email';
-               } else {
-                       $curURL = $this->siteUrl();     // 100502, removed this: 'http://'.t3lib_div::getThisUrl(); Reason: The url returned had typo3/ in the end - should be only the site's url as far as I see...
-                       for($a=0;$a<strlen($url);$a++)  {
-                               if ($url[$a]!=$curURL[$a])      {
-                                       break;
-                               }
-                       }
-                       
-                       $info['relScriptPath']=substr($curURL,$a);
-                       $info['relUrl']=substr($url,$a);
-                       $info['url']=$url;
-                       $info['type']='ext';
-
-                       $siteUrl_parts = parse_url($url);
-                       $curUrl_parts = parse_url($curURL);
-                       
-                       if ($siteUrl_parts['host']==$curUrl_parts['host']       // Hosts should match
-                               && (!$info['relScriptPath']     || (defined('TYPO3_mainDir') && substr($info['relScriptPath'],0,strlen(TYPO3_mainDir))==TYPO3_mainDir)))        {       // If the script path seems to match or is empty (FE-EDIT)
-
-                                       // New processing order 100502
-                               $uP=parse_url($info['relUrl']);
-
-                               if (!strcmp('#'.$siteUrl_parts['fragment'],$info['relUrl'])) {
-                                       $info['url']=$info['relUrl'];
-                                       $info['type']='anchor';
-                               } elseif (!trim($uP['path']) || !strcmp($uP['path'],'index.php'))       {
-                                       $pp = explode('id=',$uP['query']);
-                                       $id = trim($pp[1]);
-                                       if ($id)        {
-                                               $info['pageid']=$id;
-                                               $info['cElement']=$uP['fragment'];
-                                               $info['url']=$id.($info['cElement']?'#'.$info['cElement']:'');
-                                               $info['type']='page';
-                                       }
-                               } else {
-                                       $info['url']=$info['relUrl'];
-                                       $info['type']='file';
-                               }
-                       } else {
-                               unset($info['relScriptPath']);
-                               unset($info['relUrl']);
-                       }
-               }
-               return $info;
-       }
-
-       /**
-        * Processing images inserted in the RTE.
-        * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
+        * @param       string          The content from RTE going to Database
+        * @return      string          Processed content
         */
        function TS_images_db($value)   {
+
+                       // Split content by <img> tags and traverse the resulting array for processing:
                $imgSplit = $this->splitTags('img',$value);
-               reset($imgSplit);
-               while(list($k,$v)=each($imgSplit))      {
-                       if ($k%2)       {       // image:
+               foreach($imgSplit as $k => $v)  {
+                       if ($k%2)       {       // image found, do processing:
+                       
+                                       // Init
                                $attribArray=$this->get_tag_attributes_classic($v,1);
                                $siteUrl = $this->siteUrl();
                                $absRef = trim($attribArray['src']);
                                
-                                       // External?
+                                       // External image from another URL?
                                if (!t3lib_div::isFirstPartOfStr($absRef,$siteUrl) && !$this->procOptions['dontFetchExtPictures'])      {
                                        $externalFile = $this->getUrl($absRef); // Get it
                                        if ($externalFile)      {
@@ -587,7 +411,7 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                                }
                                        }
                                }
-                                       // Check file
+                                       // Check image as local file
                                if (t3lib_div::isFirstPartOfStr($absRef,$siteUrl))      {
                                        $path = substr($absRef,strlen($siteUrl));
                                        $pathPre=$this->rteImageStorageDir().'RTEmagicC_';
@@ -636,7 +460,7 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                $absRef = trim($attribArray['src']);
                                if (t3lib_div::isFirstPartOfStr($absRef,$siteUrl))      {
                                        $attribArray['src'] = $this->relBackPath.substr($absRef,strlen($siteUrl));
-                                       if (!isset($attribArray['alt']))        $attribArray['alt']='';
+                                       if (!isset($attribArray['alt']))        $attribArray['alt']='image';            // Must have value, otherwise the attribute is stripped by implodeParams()
                                        $imgSplit[$k]='<img '.t3lib_div::implodeParams($attribArray,1).' />';
                                }
                        }
@@ -645,19 +469,26 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        }
        
        /**
-        * Processing images inserted in the RTE.
+        * Transformation handler: 'ts_images' / direction: "rte"
+        * Processing images from database content going into the RTE.
+        * Processing includes converting the src attribute to an absolute URL.
         * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @return      string          Content output
         */
        function TS_images_rte($value)  {
+
+                       // Split content by <img> tags and traverse the resulting array for processing:
                $imgSplit = $this->splitTags('img',$value);
-               reset($imgSplit);
-               while(list($k,$v)=each($imgSplit))      {
-                       if ($k%2)       {       // image:
+               foreach($imgSplit as $k => $v)  {
+                       if ($k%2)       {       // image found:
+
+                                       // Init
                                $attribArray=$this->get_tag_attributes_classic($v,1);
                                $siteUrl = $this->siteUrl();
                                $absRef = trim($attribArray['src']);
+
+                                       // Unless the src attribute is already pointing to an external URL:
                                if (strtolower(substr($absRef,0,4))!='http')    {
                                        $attribArray['src'] = $siteUrl.substr($attribArray['src'],strlen($this->relBackPath));
                                        if (!isset($attribArray['alt']))        $attribArray['alt']='';
@@ -666,15 +497,18 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                }
                        }
                }               
+
+                       // return processed content:
                return implode('',$imgSplit);
        }
        
        /**
+        * Transformation handler: 'ts_reglinks' / direction: "db"+"rte" depending on $direction variable.
         * Converting <A>-tags to/from abs/rel
         * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $direction: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @param       string          Direction of conversion; "rte" (from database to RTE) or "db" (from RTE to database)
+        * @return      string          Content output
         */
        function TS_reglinks($value,$direction)         {
                switch($direction)      {
@@ -703,16 +537,19 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        }
        
        /**
+        * Transformation handler: 'ts_links' / direction: "db"
         * Converting <A>-tags to <LINK tags>
         * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @return      string          Content output
+        * @see TS_links_rte()
         */
        function TS_links_db($value)    {
+       
+                       // Split content into <a> tag blocks and process:
                $blockSplit = $this->splitIntoBlock('A',$value);
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
-                       if ($k%2)       {       // block:
+               foreach($blockSplit as $k => $v)        {
+                       if ($k%2)       {       // If an A-tag was found:
                                $attribArray=$this->get_tag_attributes_classic($this->getFirstTag($v),1);
                                $info = $this->urlInfoForLinkTags($attribArray['href']);
                                
@@ -722,6 +559,7 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                unset($attribArray_copy['target']);
                                unset($attribArray_copy['class']);
                                if (!count($attribArray_copy))  {       // Only if href, target and class are the only attributes, we can alter the link!
+                                               // Creating the TYPO3 pseudo-tag "<LINK>" for the link (includes href/url, target and class attributes):
                                        $bTag='<LINK '.$info['url'].($attribArray['target']?' '.$attribArray['target']:($attribArray['class']?' -':'')).($attribArray['class']?' '.$attribArray['class']:'').'>';
                                        $eTag='</LINK>';
                                        $blockSplit[$k] = $bTag.$this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])).$eTag;
@@ -741,47 +579,21 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                }
                return implode('',$blockSplit);
        }
-       
-       /**
-        * Converting <A>-tags to absolute URLs (+ setting rtekeep attribute)
-        * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $dontSetRTEKEEP: ...
-        * @return      [type]          ...
-        */
-       function TS_AtagToAbs($value,$dontSetRTEKEEP=0) {
-               $blockSplit = $this->splitIntoBlock('A',$value);
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
-                       if ($k%2)       {       // block:
-                               $attribArray=$this->get_tag_attributes_classic($this->getFirstTag($v),1);
-                                       // Checking if there is a scheme, and if not, prepend the current url.
-                               $uP = parse_url(strtolower($attribArray['href']));
-                               if (!$uP['scheme'])     {
-                                       $attribArray['href']=$this->siteUrl().substr($attribArray['href'],strlen($this->relBackPath));
-                               }
-                               if (!$dontSetRTEKEEP)   $attribArray['rtekeep']=1;
 
-                               $bTag='<a '.t3lib_div::implodeParams($attribArray,1).'>';
-                               $eTag='</a>';
-                               $blockSplit[$k] = $bTag.$this->TS_AtagToAbs($this->removeFirstAndLastTag($blockSplit[$k])).$eTag;
-                       }
-               }
-               return implode('',$blockSplit);
-       }
-       
        /**
+        * Transformation handler: 'ts_links' / direction: "rte"
         * Converting <LINK tags> to <A>-tags
         * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @return      string          Content output
+        * @see TS_links_rte()
         */
        function TS_links_rte($value)   {
                $value = $this->TS_AtagToAbs($value);
                
+                       // Split content by the TYPO3 pseudo tag "<LINK>":
                $blockSplit = $this->splitIntoBlock('link',$value,1);
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
+               foreach($blockSplit as $k => $v)        {
                        if ($k%2)       {       // block:
                                $tagCode = t3lib_div::trimExplode(' ',trim(substr($this->getFirstTag($v),0,-1)),1);
                                $link_param=$tagCode[1];
@@ -835,26 +647,28 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                }
 
                                // Setting the A-tag:
-                               $bTag='<A href="'.$href.'"'.($tagCode[2]&&$tagCode[2]!="-"?' target="'.$tagCode[2].'"':'').($tagCode[3]?' class="'.$tagCode[3].'"':'').'>';
-                               $eTag='</A>';
+                               $bTag='<a href="'.htmlspecialchars($href).'"'.($tagCode[2]&&$tagCode[2]!='-'?' target="'.htmlspecialchars($tagCode[2]).'"':'').($tagCode[3]?' class="'.htmlspecialchars($tagCode[3]).'"':'').'>';
+                               $eTag='</a>';
                                $blockSplit[$k] = $bTag.$this->TS_links_rte($this->removeFirstAndLastTag($blockSplit[$k])).$eTag;
                        }                       
                }
+               
+                       // Return content:
                return implode('',$blockSplit);
        }
        
        /**
         * Preserve special tags
         * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @return      string          Content output
         */
        function TS_preserve_db($value) {
                if (!$this->preserveTags)       return $value;
 
-               $blockSplit = $this->splitIntoBlock('SPAN',$value);
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
+                       // Splitting into blocks for processing (span-tags are used for special tags)
+               $blockSplit = $this->splitIntoBlock('span',$value);
+               foreach($blockSplit as $k => $v)        {
                        if ($k%2)       {       // block:
                                $attribArray=$this->get_tag_attributes_classic($this->getFirstTag($v));
                                if ($attribArray['specialtag']) {
@@ -870,141 +684,60 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        /**
         * Preserve special tags
         * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @return      string          Content output
         */
        function TS_preserve_rte($value)        {
                if (!$this->preserveTags)       return $value;
                
                $blockSplit = $this->splitIntoBlock($this->preserveTags,$value);
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
+               foreach($blockSplit as $k => $v)        {
                        if ($k%2)       {       // block:
-                               $blockSplit[$k] = '<SPAN specialtag="'.rawurlencode($this->getFirstTag($v)).'">'.$this->removeFirstAndLastTag($blockSplit[$k]).'</SPAN>';
+                               $blockSplit[$k] = '<span specialtag="'.rawurlencode($this->getFirstTag($v)).'">'.$this->removeFirstAndLastTag($blockSplit[$k]).'</span>';
                        }
                }
                return implode('',$blockSplit);
        }
-       
-       /**
-        * Removing all non-allowed tags
-        * DEPRECIATED!
-        * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
-        */
-       function TS_strip_db($value)    {
-               $value = $this->stripTagsExcept($value,'b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote');
-               return $value;
-       }
-
-       /**
-        * @param       [type]          $direction: ...
-        * @param       [type]          $tagList: ...
-        * @return      [type]          ...
-        */
-       function getKeepTags($direction='rte',$tagList='')      {
-               if (!is_array($this->getKeepTags_cache[$direction]) || $tagList)        {
-                       $typoScript_list = 'b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span';
-                       $keepTags = array_flip(t3lib_div::trimExplode(',',$typoScript_list.','.strtolower($this->procOptions['allowTags']),1));
-                       $denyTags = t3lib_div::trimExplode(',',$this->procOptions['denyTags'],1);
-                       reset($denyTags);
-                       while(list(,$dKe)=each($denyTags))      {
-                               unset($keepTags[$dKe]);
-                       }
-                       
-                       if (strcmp($tagList,''))        {
-                               $keepTags = array_flip(t3lib_div::trimExplode(',',$tagList,1));
-                       }
-                       
-                       switch ($direction)     {
-                               case 'rte':
-                                       if (isset($keepTags['b']))      {$keepTags['b']=array('remap'=>'STRONG');}
-                                       if (isset($keepTags['i']))      {$keepTags['i']=array('remap'=>'EM');}
-                                       list($keepTags) = $this->HTMLparserConfig($this->procOptions['HTMLparser_rte.'],$keepTags);
-                               break;
-                               case 'db':
-                                       if (isset($keepTags['strong'])) {$keepTags['strong']=array('remap'=>'B');}
-                                       if (isset($keepTags['em']))             {$keepTags['em']=array('remap'=>'I');}
-                                       if (isset($keepTags['span']))           {
-                                               $classes=array_merge(array(''),$this->allowedClasses);
-                                               $keepTags['span']=array(
-                                                       'allowedAttribs'=>'class',
-                                                       'fixAttrib' => Array(
-                                                               'class' => Array (
-                                                                       'list' => $classes,
-                                                                       'removeIfFalse' => 1
-                                                               )
-                                                       ),
-                                                       'rmTagIfNoAttrib' => 1
-                                               );
-                                               if (!$this->procOptions['allowedClasses'])      unset($keepTags['span']['fixAttrib']['class']['list']);
-                                       }
-                                       if (isset($keepTags['font']))           {
-                                               $colors=array_merge(array(''),t3lib_div::trimExplode(',',$this->procOptions['allowedFontColors'],1));
-                                               $keepTags['font']=array(
-                                                       'allowedAttribs'=>'face,color,size',
-                                                       'fixAttrib' => Array(
-                                                               'face' => Array (
-                                                                       'removeIfFalse' => 1
-                                                               ),
-                                                               'color' => Array (
-                                                                       'removeIfFalse' => 1,
-                                                                       'list'=>$colors
-                                                               ),
-                                                               'size' => Array (
-                                                                       'removeIfFalse' => 1,
-                                                               )
-                                                       ),
-                                                       'rmTagIfNoAttrib' => 1
-                                               );
-                                               if (!$this->procOptions['allowedFontColors'])   unset($keepTags['font']['fixAttrib']['color']['list']);
-                                       }
-
-                                       $TSc = $this->procOptions['HTMLparser_db.'];
-                                       if (!$TSc['globalNesting'])     $TSc['globalNesting']='b,i,u,a,center,font,sub,sup,strong,em,strike,span';
-                                       if (!$TSc['noAttrib'])  $TSc['noAttrib']='b,i,u,br,center,hr,sub,sup,strong,em,li,ul,ol,blockquote,strike';
-                                       list($keepTags) = $this->HTMLparserConfig($TSc,$keepTags);
-                               break;
-                       }
-                       if (!$tagList)  {
-                               $this->getKeepTags_cache[$direction] = $keepTags;
-                       } else {
-                               return $keepTags;
-                       }
-               }
-               return $this->getKeepTags_cache[$direction];
-       }
 
        /**
+        * Transformation handler: 'ts_transform' + 'css_transform' / direction: "db"
         * Cleaning (->db) for standard content elements (ts)
         * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $css: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @param       boolean         If true, the transformation was "css_transform", otherwise "ts_transform"
+        * @return      string          Content output
+        * @see TS_transform_rte()
         */
-       function TS_transform_db($value,$css=0) {
+       function TS_transform_db($value,$css=FALSE)     {
+       
+                       // safety... so forever loops are avoided (they should not occur, but an error would potentially do this...)
                $this->TS_transform_db_safecounter--;
-               if ($this->TS_transform_db_safecounter<0)       return $value;  // safety... so forever loops are avoided (they should not occur, but an error would potentially do this...)
-                       // Work on everything but these blocks.
+               if ($this->TS_transform_db_safecounter<0)       return $value;  
+
+                       // Split the content from RTE by the occurence of these blocks:
                $blockSplit = $this->splitIntoBlock('TABLE,BLOCKQUOTE,'.$this->headListTags,$value);
 
                $cc=0;
                $aC = count($blockSplit);
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
+               
+                       // Traverse the blocks
+               foreach($blockSplit as $k => $v)        {
                        $cc++;
                        $lastBR = $cc==$aC ? '' : chr(10);
 
-                       if ($k%2)       {       // block:
+                       if ($k%2)       {       // Inside block:
+
+                                       // Init:
                                $tag=$this->getFirstTag($v);
-                               $tagName=$this->getFirstTagName($v);
+                               $tagName=strtolower($this->getFirstTagName($v));
+                               
+                                       // Process based on the tag:
                                switch($tagName)        {
-                                       case 'BLOCKQUOTE':      // Keep blockquotes, but clean the inside recursively in the same manner as the main code
+                                       case 'blockquote':      // Keep blockquotes, but clean the inside recursively in the same manner as the main code
                                                $blockSplit[$k]='<'.$tagName.'>'.$this->TS_transform_db($this->removeFirstAndLastTag($blockSplit[$k]),$css).'</'.$tagName.'>'.$lastBR;
                                        break;
-                                       case 'OL':
-                                       case 'UL':      // Transform lists into <typolist>-tags:
+                                       case 'ol':
+                                       case 'ul':      // Transform lists into <typolist>-tags:
                                                if (!$css)      {
                                                        if (!isset($this->procOptions['typolist']) || $this->procOptions['typolist'])   {
                                                                $parts = $this->getAllParts($this->splitIntoBlock('LI',$this->removeFirstAndLastTag($blockSplit[$k])),1,0);
@@ -1014,26 +747,26 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                                                        $parts[$k2]=$this->cleanFontTags($parts[$k2],0,0,0);
                                                                        $parts[$k2] = $this->HTMLcleaner_db($parts[$k2],strtolower($this->procOptions['allowTagsInTypolists']?$this->procOptions['allowTagsInTypolists']:'br,font,b,i,u,a,img,span,strong,em'));
                                                                }
-                                                               if ($tagName=='OL')     {$params=' type="1"';}else{$params='';}
+                                                               if ($tagName=='ol')     { $params=' type="1"'; } else { $params=''; }
                                                                $blockSplit[$k]='<typolist'.$params.'>'.chr(10).implode(chr(10),$parts).chr(10).'</typolist>'.$lastBR;
                                                        }
                                                } else {
                                                        $blockSplit[$k].=$lastBR;
                                                }
                                        break;
-                                       case 'TABLE':   // Tables are NOT allowed in any form.
+                                       case 'table':   // Tables are NOT allowed in any form (unless preserveTables is set or CSS is the mode)
                                                if (!$this->procOptions['preserveTables'] && !$css)     {
                                                        $blockSplit[$k]=$this->TS_transform_db($this->removeTables($blockSplit[$k]));
                                                } else {
                                                        $blockSplit[$k]=str_replace(chr(10),'',$blockSplit[$k]).$lastBR;
                                                }
                                        break;
-                                       case 'H1':
-                                       case 'H2':
-                                       case 'H3':
-                                       case 'H4':
-                                       case 'H5':
-                                       case 'H6':
+                                       case 'h1':
+                                       case 'h2':
+                                       case 'h3':
+                                       case 'h4':
+                                       case 'h5':
+                                       case 'h6':
                                                if (!$css)      {
                                                        $attribArray=$this->get_tag_attributes_classic($tag);
                                                                // Processing inner content here:
@@ -1041,9 +774,22 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                                        
                                                        if (!isset($this->procOptions['typohead']) || $this->procOptions['typohead'])   {
                                                                $type = intval(substr($tagName,1));
-                                                               $blockSplit[$k]='<typohead'.($type!=6?' type='.$type:'').($attribArray['align']?' align='.$attribArray['align']:'').($attribArray['class']?' class='.$attribArray['class']:'').'>'.$innerContent.'</typohead>'.$lastBR;
+                                                               $blockSplit[$k]='<typohead'.
+                                                                                               ($type!=6?' type="'.$type.'"':'').
+                                                                                               ($attribArray['align']?' align="'.$attribArray['align'].'"':'').
+                                                                                               ($attribArray['class']?' class="'.$attribArray['class'].'"':'').
+                                                                                               '>'.
+                                                                                               $innerContent.
+                                                                                               '</typohead>'.
+                                                                                               $lastBR;
                                                        } else {
-                                                               $blockSplit[$k]='<'.$tagName.($attribArray['align']?' align='.$attribArray['align']:'').($attribArray['class']?' class='.$attribArray['class']:'').'>'.$innerContent.'</'.$tagName.'>'.$lastBR;
+                                                               $blockSplit[$k]='<'.$tagName.
+                                                                                               ($attribArray['align']?' align="'.htmlspecialchars($attribArray['align']).'"':'').
+                                                                                               ($attribArray['class']?' class="'.htmlspecialchars($attribArray['class']).'"':'').
+                                                                                               '>'.
+                                                                                               $innerContent.
+                                                                                               '</'.$tagName.'>'.
+                                                                                               $lastBR;
                                                        }
                                                } else {
                                                        $blockSplit[$k].=$lastBR;
@@ -1065,48 +811,57 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        }
 
        /**
+        * Transformation handler: 'ts_transform' + 'css_transform' / direction: "rte"
         * Set (->rte) for standard content elements (ts)
         * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $css: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @param       boolean         If true, the transformation was "css_transform", otherwise "ts_transform"
+        * @return      string          Content output
+        * @see TS_transform_db()
         */
        function TS_transform_rte($value,$css=0)        {
-                       // Work on everything but the blocks.
-               $blockSplit = $this->splitIntoBlock('TABLE,BLOCKQUOTE,TYPOLIST,TYPOHEAD,'.$this->headListTags,$value);
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
-//debug(t3lib_div::debug_ordvalue($blockSplit[$k]),1);         
-               }
 
-               reset($blockSplit);
-               while(list($k,$v)=each($blockSplit))    {
-                       if ($k%2)       {       // block:
+                       // Split the content from Database by the occurence of these blocks:
+               $blockSplit = $this->splitIntoBlock('TABLE,BLOCKQUOTE,TYPOLIST,TYPOHEAD,'.$this->headListTags,$value);
+               
+                       // Traverse the blocks
+               foreach($blockSplit as $k => $v)        {
+                       if ($k%2)       {       // Inside one of the blocks:
+                       
+                                       // Init:
                                $tag=$this->getFirstTag($v);
-                               $tagName=$this->getFirstTagName($v);
+                               $tagName=strtolower($this->getFirstTagName($v));
                                $attribArray=$this->get_tag_attributes_classic($tag);
+                               
+                                       // Based on tagname, we do transformations:
                                switch($tagName)        {
-                                       case 'BLOCKQUOTE':      // Keep blockquotes:
-                                               $blockSplit[$k]=$tag.$this->TS_transform_rte($this->removeFirstAndLastTag($blockSplit[$k]),$css).'</'.$tagName.'>';
+                                       case 'blockquote':      // Keep blockquotes:
+                                               $blockSplit[$k] = $tag.
+                                                                                       $this->TS_transform_rte($this->removeFirstAndLastTag($blockSplit[$k]),$css).
+                                                                                       '</'.$tagName.'>';
                                        break;
-                                       case 'TYPOLIST':        // Transform typolist blocks into OL/UL lists. Type 1 is expected to be numerical block
+                                       case 'typolist':        // Transform typolist blocks into OL/UL lists. Type 1 is expected to be numerical block
                                                if (!isset($this->procOptions['typolist']) || $this->procOptions['typolist'])   {
                                                        $tListContent = $this->removeFirstAndLastTag($blockSplit[$k]);
                                                        $tListContent = ereg_replace('^[ ]*'.chr(10),'',$tListContent);
                                                        $tListContent = ereg_replace(chr(10).'[ ]*$','',$tListContent);
                                                        $lines=explode(chr(10),$tListContent);
                                                        $typ= $attribArray['type']==1?'ol':'ul';
-                                                       $blockSplit[$k]='<'.$typ.'>'.chr(10).'<li>'.implode('</li>'.chr(10).'<li>',$lines).'</li></'.$typ.'>';
+                                                       $blockSplit[$k] = '<'.$typ.'>'.chr(10).
+                                                                                               '<li>'.implode('</li>'.chr(10).'<li>',$lines).'</li>'.
+                                                                                               '</'.$typ.'>';
                                                }
                                        break;
-                                       case 'TYPOHEAD':        // Transform typohead into Hx tags.
+                                       case 'typohead':        // Transform typohead into Hx tags.
                                                if (!isset($this->procOptions['typohead']) || $this->procOptions['typohead'])   {
                                                        $tC=$this->removeFirstAndLastTag($blockSplit[$k]);
                                                        $typ=t3lib_div::intInRange($attribArray['type'],0,6);
                                                        if (!$typ)      $typ=6;
-                                                       $align = $attribArray['align']?' align='.$attribArray['align']: '';
-                                                       $class = $attribArray['class']?' class='.$attribArray['class']: '';
-                                                       $blockSplit[$k]='<h'.$typ.$align.$class.'>'.$tC.'</h'.$typ.'>';
+                                                       $align = $attribArray['align']?' align="'.$attribArray['align'].'"': '';
+                                                       $class = $attribArray['class']?' class="'.$attribArray['class'].'"': '';
+                                                       $blockSplit[$k] = '<h'.$typ.$align.$class.'>'.
+                                                                                               $tC.
+                                                                                               '</h'.$typ.'>';
                                                }
                                        break;
                                }
@@ -1121,47 +876,22 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
                                if (!strcmp($blockSplit[$k],'') && !$singleLineBreak)   {
                                        unset($blockSplit[$k]); 
                                } else {
-                                       $blockSplit[$k]=$this->setDivTags($blockSplit[$k],($this->procOptions['useDIVasParagraphTagForRTE']?'DIV':'P'));
+                                       $blockSplit[$k]=$this->setDivTags($blockSplit[$k],($this->procOptions['useDIVasParagraphTagForRTE']?'div':'p'));
                                }
                        }
                }
                return implode(chr(10),$blockSplit);
-       }
+       }       
        
-
-
-
-
-
-
-
-
-
        /**
-        * Tranform value for RTE based on specConf in the direction specified by $direction (rte/db)
+        * Transformation handler: 'ts_strip' / direction: "db"
+        * Removing all non-allowed tags
         * 
-        * @param       [type]          $value: ...
-        * @return      [type]          ...
+        * @param       string          Content input
+        * @return      string          Content output
         */
-       function TS_tmplParts_rte($value)       {
-               $substMarkers=Array(
-                       '###POST_TIME###' => 'time',
-                       '###POST_AGE###' => 'age',
-                       '###POST_AUTHOR###' => 'name',
-                       '###POST_EMAIL###' => 'email',
-                       '###POST_WWW###' => 'url',
-                       '###POST_DATE###' => 'date',
-//                     '###POST_TITLE###' => 'Caeli ut dividant diem ac noctem!',
-//                     '###POST_CONTENT###' => 'Dixit autem Deus fiant luminaria in firmamento caeli ut dividant diem ac noctem et sint in signa<BR>et tempora et dies et annos ut luceant in firmamento caeli et inluminent terram et factum est ita fecitque Deus duo magna luminaria luminare maius ut praeesset diei et luminare minus ut praeesset nocti et stellas et posuit eas in firmamento caeli ut lucerent super terram.',
-               );
-
-               
-               reset($substMarkers);
-               while(list($key,$content)=each($substMarkers))  {
-                       $value=str_replace($key,
-                               '<img src="'.TYPO3_mainDir.'ext/rte/markers/'.$content.'.gif" align="absmiddle" alt="" />'
-                       ,$value);
-               }
+       function TS_strip_db($value)    {
+               $value = strip_tags($value,'<'.implode('><',explode(',','b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote')).'>');
                return $value;
        }
        
@@ -1177,130 +907,531 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml {
        
        
        
+       
+       /***************************************************************
+        *
+        * Generic RTE transformation, analysis and helper functions
+        *
+        **************************************************************/
+
        /**
-        * Tranform value for RTE based on specConf in the direction specified by $direction (rte/db)
+        * Reads the file or url $url and returns the content
         * 
-        * @param       [type]          $value: ...
-        * @param       [type]          $specConf: ...
-        * @param       [type]          $direction: ...
-        * @param       [type]          $thisConfig: ...
-        * @return      [type]          ...
+        * @param       string          Filepath/URL to read
+        * @return      string          The content from the resource given as input.
+        * @see t3lib_div::getURL()
         */
-       function RTE_transform($value,$specConf,$direction='rte',$thisConfig='')        {
-               $this->procOptions=$thisConfig['proc.'];
-               $this->preserveTags = strtoupper(implode(',',t3lib_div::trimExplode(',',$this->procOptions['preserveTags'])));
-
-                       // Get parameters for rte_transformation:
-               $p = $this->rte_p = t3lib_BEfunc::getSpecConfParametersFromArray($specConf['rte_transform']['parameters']);
+       function getURL($url)   {
+               return t3lib_div::getURL($url);
+       }
 
-               if (strcmp($this->procOptions['overruleMode'],''))      {
-                       $modes=array_unique(t3lib_div::trimExplode(',',$this->procOptions['overruleMode']));
+       /**
+        * Function for cleaning content going into the database. 
+        * Content is cleaned eg. by removing unallowed HTML and ds-HSC content
+        * It is basically calling HTMLcleaner from the parent class with some preset configuration specifically set up for cleaning content going from the RTE into the db
+        * 
+        * @param       string          Content to clean up
+        * @param       string          Comma list of tags to specifically allow. Default comes from getKeepTags and is ""
+        * @return      string          Clean content
+        * @see getKeepTags()
+        */
+        function HTMLcleaner_db($content,$tagList='')  {
+               if (!$tagList)  {
+                       $keepTags = $this->getKeepTags('db');
                } else {
-                       $modes=array_unique(t3lib_div::trimExplode('-',$p['mode']));
+                       $keepTags = $this->getKeepTags('db',$tagList);
                }
+               $kUknown = $this->procOptions['dontRemoveUnknownTags_db'] ? 1 : 0;              // Default: remove unknown tags.
+               $hSC = $this->procOptions['dontUndoHSC_db'] ? 0 : -1;                                   // Default: re-convert literals to characters (that is &lt; to <)
+               
+               return $this->HTMLcleaner($content,$keepTags,$kUknown,$hSC);
+        }
 
-               $revmodes=array_flip($modes);
+       /**
+        * Creates an array of configuration for the HTMLcleaner function based on whether content go TO or FROM the Rich Text Editor ($direction)
+        * Unless "tagList" is given, the function will cache the configuration for next time processing goes on. (In this class that is the case only if we are processing a bulletlist)
+        * 
+        * @param       string          The direction of the content being processed by the output configuration; "db" (content going into the database FROM the rte) or "rte" (content going into the form)
+        * @param       string          Comma list of tags to keep (overriding default which is to keep all + take notice of internal configuration)
+        * @return      array           Configuration array
+        * @see HTMLcleaner_db()
+        */
+       function getKeepTags($direction='rte',$tagList='')      {
+               if (!is_array($this->getKeepTags_cache[$direction]) || $tagList)        {
 
-                       // Find special modes and extract them:
-               if (isset($revmodes['ts']))     {
-                       $modes[$revmodes['ts']]='ts_transform,ts_preserve,ts_images,ts_links';
+                               // Setting up allowed tags:
+                       if (strcmp($tagList,''))        {       // If the $tagList input var is set, this will take precedence
+                               $keepTags = array_flip(t3lib_div::trimExplode(',',$tagList,1));
+                       } else {        // Default is to get allowed/denied tags from internal array of processing options:
+                                       // Construct default list of tags to keep:
+                               $typoScript_list = 'b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span';
+                               $keepTags = array_flip(t3lib_div::trimExplode(',',$typoScript_list.','.strtolower($this->procOptions['allowTags']),1));
+                               
+                                       // For tags to deny, remove them from $keepTags array:
+                               $denyTags = t3lib_div::trimExplode(',',$this->procOptions['denyTags'],1);
+                               foreach($denyTags as $dKe)      {
+                                       unset($keepTags[$dKe]);
+                               }
+                       }
+                       
+                               // Based on the direction of content, set further options:
+                       switch ($direction)     {
+
+                                       // GOING from database to Rich Text Editor:
+                               case 'rte':
+                                               // Transform bold/italics tags to strong/em
+                                       if (isset($keepTags['b']))      {$keepTags['b']=array('remap'=>'STRONG');}
+                                       if (isset($keepTags['i']))      {$keepTags['i']=array('remap'=>'EM');}
+
+                                               // Transforming keepTags array so it can be understood by the HTMLcleaner function. This basically converts the format of the array from TypoScript (having .'s) to plain multi-dimensional array.
+                                       list($keepTags) = $this->HTMLparserConfig($this->procOptions['HTMLparser_rte.'],$keepTags);
+                               break;
+                               
+                                       // GOING from RTE to database:
+                               case 'db':
+                                               // Transform strong/em back to bold/italics:
+                                       if (isset($keepTags['strong'])) { $keepTags['strong']=array('remap'=>'b'); }
+                                       if (isset($keepTags['em']))             { $keepTags['em']=array('remap'=>'i'); }
+                                       
+                                               // Setting up span tags if they are allowed:
+                                       if (isset($keepTags['span']))           {
+                                               $classes=array_merge(array(''),$this->allowedClasses);
+                                               $keepTags['span']=array(
+                                                       'allowedAttribs'=>'class',
+                                                       'fixAttrib' => Array(
+                                                               'class' => Array (
+                                                                       'list' => $classes,
+                                                                       'removeIfFalse' => 1
+                                                               )
+                                                       ),
+                                                       'rmTagIfNoAttrib' => 1
+                                               );
+                                               if (!$this->procOptions['allowedClasses'])      unset($keepTags['span']['fixAttrib']['class']['list']);
+                                       }
+                                       
+                                               // Setting up font tags if they are allowed:
+                                       if (isset($keepTags['font']))           {
+                                               $colors=array_merge(array(''),t3lib_div::trimExplode(',',$this->procOptions['allowedFontColors'],1));
+                                               $keepTags['font']=array(
+                                                       'allowedAttribs'=>'face,color,size',
+                                                       'fixAttrib' => Array(
+                                                               'face' => Array (
+                                                                       'removeIfFalse' => 1
+                                                               ),
+                                                               'color' => Array (
+                                                                       'removeIfFalse' => 1,
+                                                                       'list'=>$colors
+                                                               ),
+                                                               'size' => Array (
+                                                                       'removeIfFalse' => 1,
+                                                               )
+                                                       ),
+                                                       'rmTagIfNoAttrib' => 1
+                                               );
+                                               if (!$this->procOptions['allowedFontColors'])   unset($keepTags['font']['fixAttrib']['color']['list']);
+                                       }
+                                               
+                                               // Setting further options, getting them from the processiong options:
+                                       $TSc = $this->procOptions['HTMLparser_db.'];
+                                       if (!$TSc['globalNesting'])     $TSc['globalNesting']='b,i,u,a,center,font,sub,sup,strong,em,strike,span';
+                                       if (!$TSc['noAttrib'])  $TSc['noAttrib']='b,i,u,br,center,hr,sub,sup,strong,em,li,ul,ol,blockquote,strike';
+
+                                               // Transforming the array from TypoScript to regular array:
+                                       list($keepTags) = $this->HTMLparserConfig($TSc,$keepTags);
+                               break;
+                       }
+                       
+                               // Caching (internally, in object memory) the result unless tagList is set:
+                       if (!$tagList)  {
+                               $this->getKeepTags_cache[$direction] = $keepTags;
+                       } else {
+                               return $keepTags;
+                       }
                }
-                       // Find special modes and extract them:
-               if (isset($revmodes['ts_css'])) {
-                       $modes[$revmodes['ts_css']]='css_transform,ts_images,ts_links';
+               
+                       // Return result:
+               return $this->getKeepTags_cache[$direction];
+       }
+                
+       /**
+        * This resolves the $value into parts based on <div></div>-sections and <P>-sections and <BR>-tags. These are returned as lines separated by chr(10).
+        * This point is to resolve the HTML-code returned from RTE into ordinary lines so it's 'human-readable'
+        * The function ->setDivTags does the opposite.
+        * This function processes content to go into the database.
+        * 
+        * @param       string          Value to process.
+        * @param       integer         Recursion brake. Decremented on each recursion down to zero. Default is 5 (which equals the allowed nesting levels of p/div tags).
+        * @param       boolean         If true, an array with the lines is returned, otherwise a string of the processed input value.
+        * @return      string          Processed input value.
+        * @see setDivTags()
+        */
+       function divideIntoLines($value,$count=5,$returnArray=FALSE)    {
+       
+                       // Internalize font tags (move them from OUTSIDE p/div to inside it that is the case):
+               if ($this->procOptions['internalizeFontTags'])  {$value = $this->internalizeFontTags($value);}
+               
+                       // Setting configuration for processing:
+               $allowTagsOutside = t3lib_div::trimExplode(',',strtolower($this->procOptions['allowTagsOutside']?$this->procOptions['allowTagsOutside']:'img'),1);
+               $remapParagraphTag = strtoupper($this->procOptions['remapParagraphTag']);
+               $divSplit = $this->splitIntoBlock('div,p',$value,1);    // Setting the third param to 1 will eliminate false end-tags. Maybe this is a good thing to do...?
+
+               if ($this->procOptions['keepPDIVattribs'])      {
+                       $keepAttribListArr = t3lib_div::trimExplode(',',strtolower($this->procOptions['keepPDIVattribs']),1);
+               } else {
+                       $keepAttribListArr = array();
                }
-               $modes = array_unique(t3lib_div::trimExplode(',',implode(',',$modes),1));
-               if ($direction=='rte')  {
-                       $modes=array_reverse($modes);
+                       
+                       // Returns plainly the value if there was no div/p sections in it
+               if (count($divSplit)<=1 || $count<=0)   {
+                       return $value;
                }
+               
+                       // Traverse the splitted sections:
+               foreach($divSplit as $k => $v)  {
+                       if ($k%2)       {       // Inside
+                               $v=$this->removeFirstAndLastTag($v);
 
-               $entry_HTMLparser = $this->procOptions['entryHTMLparser_'.$direction] ? $this->HTMLparserConfig($this->procOptions['entryHTMLparser_'.$direction.'.']) : '';
-               $exit_HTMLparser = $this->procOptions['exitHTMLparser_'.$direction] ? $this->HTMLparserConfig($this->procOptions['exitHTMLparser_'.$direction.'.']) : '';
+                                       // Fetching 'sub-lines' - which will explode any further p/div nesting...
+                               $subLines = $this->divideIntoLines($v,$count-1,1);
+                               if (is_array($subLines))        {       // So, if there happend to be sub-nesting of p/div, this is written directly as the new content of THIS section. (This would be considered 'an error')
+                                       // No noting.
+                               } else {        //... but if NO subsection was found, we process it as a TRUE line without erronous content:
+                                       $subLines=array($subLines);
+                                       if (!$this->procOptions['dontConvBRtoParagraph'])       {       // process break-tags, if configured for. Simply, the breaktags will here be treated like if each was a line of content...
+                                               $subLines = spliti('<br[[:space:]]*[\/]?>',$v);
+                                       }
+                                       
+                                               // Traverse sublines (there is typically one, except if <br/> has been converted to lines as well!)
+                                       reset($subLines);
+                                       while(list($sk)=each($subLines))        {
+                                       
+                                                       // Clear up the subline for DB.
+                                               $subLines[$sk]=$this->HTMLcleaner_db($subLines[$sk]);
+                                               
+                                                       // Get first tag, attributes etc:
+                                               $fTag = $this->getFirstTag($divSplit[$k]);
+                                               $tagName=$this->getFirstTagName($divSplit[$k]);
+                                               $attribs=$this->get_tag_attributes($fTag);
+                                               
+                                                       // Keep attributes (lowercase)
+                                               $newAttribs=array();
+                                               if (count($keepAttribListArr))  {
+                                                       foreach($keepAttribListArr as $keepA)   {
+                                                               if (isset($attribs[0][$keepA])) { $newAttribs[$keepA] = $attribs[0][$keepA]; }
+                                                       }
+                                               }
+                                               
+                                                       // ALIGN attribute:
+                                               if (!$this->procOptions['skipAlign'] && strcmp(trim($attribs[0]['align']),'') && strtolower($attribs[0]['align'])!='left')      {       // Set to value, but not 'left'
+                                                       $newAttribs['align']=strtolower($attribs[0]['align']);
+                                               }
 
-               if (!$this->procOptions['disableUnifyLineBreaks'])      {
-                       $value = str_replace(chr(13).chr(10),chr(10),$value);
-               }
+                                                       // CLASS attribute:
+                                               if (!$this->procOptions['skipClass'] && strcmp(trim($attribs[0]['class']),''))  {       // Set to whatever value
+                                                       if (!count($this->allowedClasses) || in_array(strtoupper($attribs[0]['class']),$this->allowedClasses))  {
+                                                               $newAttribs['class']=$attribs[0]['class'];
+                                                       }
+                                               }
 
-               if (is_array($entry_HTMLparser))        {
-                       $value = $this->HTMLcleaner($value,$entry_HTMLparser[0],$entry_HTMLparser[1],$entry_HTMLparser[2]);
-               }
-                       // Traverse modes:
-               reset($modes);
-               while(list(,$cmd)=each($modes)) {
-                               // ->DB
-                       if ($direction=='db')   {
-                               switch($cmd)    {
-                                       case 'ts_transform':
-                                       case 'css_transform':
-                                               $value = str_replace(chr(13),'',$value);        // Has a very disturbing effect, so just remove all '13' - depend on '10'
-                                               $this->allowedClasses = t3lib_div::trimExplode(',',strtoupper($this->procOptions['allowedClasses']),1);
-                                               $value=$this->TS_transform_db($value,$cmd=='css_transform');
-                                       break;
-                                       case 'ts_links':
-                                               $value=$this->TS_links_db($value);
-                                       break;
-                                       case 'ts_reglinks':
-                                               $value=$this->TS_reglinks($value,'db');
-                                       break;
-                                       case 'ts_preserve':
-                                               $value=$this->TS_preserve_db($value);
-                                       break;
-                                       case 'ts_images':
-                                               $value=$this->TS_images_db($value);
-                                       break;
-                                       case 'ts_strip':
-                                               $value=$this->TS_strip_db($value);
-                                       break;
-                                       case 'dummy':
-                                       break;
+                                                       // Remove any line break char (10 or 13)
+                                               $subLines[$sk]=ereg_replace(chr(10).'|'.chr(13),'',$subLines[$sk]);
+                                               
+                                                       // If there are any attributes or if we are supposed to remap the tag, then do so:
+                                               if (count($newAttribs) && strcmp($remapParagraphTag,'1'))               {
+                                                       if ($remapParagraphTag=='P')    $tagName='p';
+                                                       if ($remapParagraphTag=='DIV')  $tagName='div';
+                                                       $subLines[$sk]='<'.trim($tagName.' '.$this->compileTagAttribs($newAttribs)).'>'.$subLines[$sk].'</'.$tagName.'>';
+                                               }
+                                       }
                                }
+                                       // Add the processed line(s)
+                               $divSplit[$k] = implode(chr(10),$subLines);
+                               
+                                       // If it turns out the line is just blank (containing a &nbsp; possibly) then just make it pure blank:
+                               if (trim(strip_tags($divSplit[$k]))=='&nbsp;')          $divSplit[$k]='';
+                       } else {        // outside div:
+                                       // Remove positions which are outside div/p tags and without content
+                               $divSplit[$k]=trim(strip_tags($divSplit[$k],'<'.implode('><',$allowTagsOutside).'>'));
+                               if (!strcmp($divSplit[$k],''))  unset($divSplit[$k]);   // Remove part if it's empty
                        }
-                               // ->RTE
-                       if ($direction=='rte')  {
-                               switch($cmd)    {
-                                       case 'ts_transform':
-                                       case 'css_transform':
-                                               $value = str_replace(chr(13),'',$value);        // Has a very disturbing effect, so just remove all '13' - depend on '10'
-                                               $value=$this->TS_transform_rte($value,$cmd=='css_transform');
-                                       break;
-                                       case 'ts_links':
-                                               $value=$this->TS_links_rte($value);
-                                       break;
-                                       case 'ts_reglinks':
-                                               $value=$this->TS_reglinks($value,'rte');
-                                       break;
-                                       case 'ts_preserve':
-                                               $value=$this->TS_preserve_rte($value);
-                                       break;
-                                       case 'ts_images':
-                                               $value=$this->TS_images_rte($value);
-                                       break;
-                                       case 'dummy':
-                                       break;
+               }
+               
+                       // Return value:
+               return $returnArray ? $divSplit : implode(chr(10),$divSplit);
+       }
+
+       /**
+        * Converts all lines into <div></div>/<p></p>-sections (unless the line is a div-section already)
+        * For processing of content going FROM database TO RTE.
+        * 
+        * @param       string          Value to convert
+        * @param       string          Tag to wrap with. Either "p" or "div" should it be. Lowercase preferably.
+        * @return      string          Processed value.
+        * @see divideIntoLines()
+        */
+       function setDivTags($value,$dT='p')     {
+       
+                       // First, setting configuration for the HTMLcleaner function. This will process each line between the <div>/<p> section on their way to the RTE
+               $keepTags = $this->getKeepTags('rte');
+               $kUknown = $this->procOptions['dontProtectUnknownTags_rte'] ? 0 : 'protect';    // Default: remove unknown tags.
+               $hSC = $this->procOptions['dontHSC_rte'] ? 0 : 1;       // Default: re-convert literals to characters (that is &lt; to <)
+               $convNBSP = !$this->procOptions['dontConvAmpInNBSP_rte']?1:0;
+
+                       // Divide the content into lines, based on chr(10):
+               $parts = explode(chr(10),$value);
+               foreach($parts as $k => $v)     {
+               
+                               // Processing of line content:
+                       if (!strcmp(trim($parts[$k]),''))       {       // If the line is blank, set it to &nbsp;
+                               $parts[$k]='&nbsp;';
+                       } else {        // Clean the line content:
+                               $parts[$k]=$this->HTMLcleaner($parts[$k],$keepTags,$kUknown,$hSC);
+                               if ($convNBSP)  $parts[$k]=str_replace('&amp;nbsp;','&nbsp;',$parts[$k]);
+                       }
+                       
+                               // Wrapping the line in <$dT> is not already wrapped:
+                       $testStr = strtolower(trim($parts[$k]));
+                       if (substr($testStr,0,4)!='<div' || substr($testStr,-6)!='</div>')      {
+                               if (substr($testStr,0,2)!='<p' || substr($testStr,-4)!='</p>')  {
+                                               // Only set p-tags if there is not already div or p tags:
+                                       $parts[$k]='<'.$dT.'>'.$parts[$k].'</'.$dT.'>'; 
                                }
                        }
                }
+                       
+                       // Implode result:
+               return implode(chr(10),$parts);
+       }
 
-               if (is_array($exit_HTMLparser)) {
-                       $value = $this->HTMLcleaner($value,$exit_HTMLparser[0],$exit_HTMLparser[1],$exit_HTMLparser[2]);
-               }
+       /**
+        * This splits the $value in font-tag chunks. 
+        * If there are any <P>/<DIV> sections inside of them, the font-tag is wrapped AROUND the content INSIDE of the P/DIV sections and the outer font-tag is removed.
+        * This functions seems to be a good choice for pre-processing content if it has been pasted into the RTE from eg. star-office. 
+        * In that case the font-tags are normally on the OUTSIDE of the sections.
+        * This function is used by eg. divideIntoLines() if the procesing option 'internalizeFontTags' is set.
+        * 
+        * @param       string          Input content
+        * @return      string          Output content
+        * @see divideIntoLines()
+        */
+       function internalizeFontTags($value)    {
 
-               if (!$this->procOptions['disableUnifyLineBreaks'])      {
-                       $value = str_replace(chr(13).chr(10),chr(10),$value);   // Make sure no \r\n sequences has entered in the meantime...
-                       $value = str_replace(chr(10),chr(13).chr(10),$value);   // ... and then change all \n into \r\n
+                       // Splitting into font tag blocks:
+               $fontSplit = $this->splitIntoBlock('font',$value);
+
+               foreach($fontSplit as $k => $v) {
+                       if ($k%2)       {       // Inside
+                               $fTag = $this->getFirstTag($v); // Fint font-tag
+                               
+                               $divSplit_sub = $this->splitIntoBlock('div,p',$this->removeFirstAndLastTag($v),1);
+                               if (count($divSplit_sub)>1)     {       // If there were div/p sections inside the font-tag, do something about it...
+                                               // traverse those sections:
+                                       foreach($divSplit_sub as $k2 => $v2)    {
+                                               if ($k2%2)      {       // Inside
+                                                       $div_p = $this->getFirstTag($v2);       // Fint font-tag
+                                                       $div_p_tagname = $this->getFirstTagName($v2);   // Fint font-tag
+                                                       $v2=$this->removeFirstAndLastTag($v2); // ... and remove it from original.
+                                                       $divSplit_sub[$k2]=$div_p.$fTag.$v2.'</font>'.'</'.$div_p_tagname.'>';
+                                               } elseif (trim(strip_tags($v2))) {
+                                                       $divSplit_sub[$k2]=$fTag.$v2.'</font>';
+                                               }
+                                       }
+                                       $fontSplit[$k]=implode('',$divSplit_sub);
+                               }
+                       }
                }
 
-               return $value;
+               return implode('',$fontSplit);
+       }
+       
+       /**
+        * Returns SiteURL based on thisScript.
+        * 
+        * @return      string          Value of t3lib_div::getIndpEnv('TYPO3_SITE_URL');
+        * @see t3lib_div::getIndpEnv()
+        */
+       function siteUrl()      {
+               return t3lib_div::getIndpEnv('TYPO3_SITE_URL');
        }
 
        /**
-        * [Describe function...]
+        * Return the storage folder of RTE image files.
+        * Default is $GLOBALS['TYPO3_CONF_VARS']['BE']['RTE_imageStorageDir'] unless something else is configured in the types configuration for the RTE.
         * 
-        * @return      [type]          ...
+        * @return      string          
         */
        function rteImageStorageDir()   {
                return $this->rte_p['imgpath'] ? $this->rte_p['imgpath'] : $GLOBALS['TYPO3_CONF_VARS']['BE']['RTE_imageStorageDir'];
        }
+       
+       /**
+        * Remove all tables from incoming code
+        * The function is trying to to this is some more or less respectfull way. The approach is to resolve each table cells content and implode it all by <br /> chars. Thus at least the content is preserved in some way.
+        * 
+        * @param       string          Input value
+        * @param       string          Break character to use for linebreaks.
+        * @return      string          Output value
+        */
+       function removeTables($value,$breakChar='<br />')       {
+       
+                       // Splitting value into table blocks:
+               $tableSplit = $this->splitIntoBlock('table',$value);
+               
+                       // Traverse blocks of tables:
+               foreach($tableSplit as $k => $v)        {
+                       if ($k%2)       {
+                               $tableSplit[$k]='';
+                               $rowSplit = $this->splitIntoBlock('tr',$v);
+                               foreach($rowSplit as $k2 => $v2)        {
+                                       if ($k2%2)      {
+                                               $cellSplit = $this->getAllParts($this->splitIntoBlock('td',$v2),1,0);
+                                               foreach($cellSplit as $k3 => $v3)       {
+                                                       $tableSplit[$k].=$v3.$breakChar;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               
+                       // Implode it all again:
+               return implode($breakChar,$tableSplit);
+       }
+       
+       /**
+        * Default tag mapping for TS
+        * 
+        * @param       string          Input code to process
+        * @param       string          Direction To databsae (db) or from database to RTE (rte)
+        * @return      string          Processed value
+        */
+       function defaultTStagMapping($code,$direction='rte')    {
+               if ($direction=='db')   {
+                       $code=$this->mapTags($code,array(       // Map tags
+                               'strong' => 'b',
+                               'em' => 'i'
+                       ));
+               }
+               if ($direction=='rte')  {
+                       $code=$this->mapTags($code,array(       // Map tags
+                               'b' => 'strong',
+                               'i' => 'em'
+                       ));
+               }
+               return $code;
+       }
+       
+       /**
+        * Finds width and height from attrib-array
+        * If the width and height is found in the style-attribute, use that!
+        * 
+        * @param       array           Array of attributes from tag in which to search. More specifically the content of the key "style" is used to extract "width:xxx / height:xxx" information
+        * @return      array           Integer w/h in key 0/1. Zero is returned if not found.
+        */
+       function getWHFromAttribs($attribArray) {
+               $style =trim($attribArray['style']);
+               if ($style)     {
+                       $regex='[[:space:]]*:[[:space:]]*([0-9]*)[[:space:]]*px';
+                               // Width
+                       eregi('width'.$regex,$style,$reg);
+                       $w = intval($reg[1]);
+                               // Height
+                       eregi('height'.$regex,$style,$reg);
+                       $h = intval($reg[1]);
+               }
+               if (!$w)        {
+                       $w = $attribArray['width'];
+               }
+               if (!$h)        {
+                       $h = $attribArray['height'];
+               }
+               return array(intval($w),intval($h));
+       }
+       
+       /**
+        * Parse <A>-tag href and return status of email,external,file or page
+        * 
+        * @param       string          URL to analyse.
+        * @return      array           Information in an array about the URL
+        */
+       function urlInfoForLinkTags($url)       {
+               $info = array();
+               $url = trim($url);
+               if (substr(strtolower($url),0,7)=='mailto:')    {
+                       $info['url']=trim(substr($url,7));
+                       $info['type']='email';
+               } else {
+                       $curURL = $this->siteUrl();     // 100502, removed this: 'http://'.t3lib_div::getThisUrl(); Reason: The url returned had typo3/ in the end - should be only the site's url as far as I see...
+                       for($a=0;$a<strlen($url);$a++)  {
+                               if ($url[$a]!=$curURL[$a])      {
+                                       break;
+                               }
+                       }
+                       
+                       $info['relScriptPath']=substr($curURL,$a);
+                       $info['relUrl']=substr($url,$a);
+                       $info['url']=$url;
+                       $info['type']='ext';
+
+                       $siteUrl_parts = parse_url($url);
+                       $curUrl_parts = parse_url($curURL);
+                       
+                       if ($siteUrl_parts['host']==$curUrl_parts['host']       // Hosts should match
+                               && (!$info['relScriptPath']     || (defined('TYPO3_mainDir') && substr($info['relScriptPath'],0,strlen(TYPO3_mainDir))==TYPO3_mainDir)))        {       // If the script path seems to match or is empty (FE-EDIT)
+
+                                       // New processing order 100502
+                               $uP=parse_url($info['relUrl']);
+
+                               if (!strcmp('#'.$siteUrl_parts['fragment'],$info['relUrl'])) {
+                                       $info['url']=$info['relUrl'];
+                                       $info['type']='anchor';
+                               } elseif (!trim($uP['path']) || !strcmp($uP['path'],'index.php'))       {
+                                       $pp = explode('id=',$uP['query']);
+                                       $id = trim($pp[1]);
+                                       if ($id)        {
+                                               $info['pageid']=$id;
+                                               $info['cElement']=$uP['fragment'];
+                                               $info['url']=$id.($info['cElement']?'#'.$info['cElement']:'');
+                                               $info['type']='page';
+                                       }
+                               } else {
+                                       $info['url']=$info['relUrl'];
+                                       $info['type']='file';
+                               }
+                       } else {
+                               unset($info['relScriptPath']);
+                               unset($info['relUrl']);
+                       }
+               }
+               return $info;
+       }
+
+       /**
+        * Converting <A>-tags to absolute URLs (+ setting rtekeep attribute)
+        * 
+        * @param       string          Content input
+        * @param       boolean         If true, then the "rtekeep" attribute will not be set.
+        * @return      string          Content output
+        */
+       function TS_AtagToAbs($value,$dontSetRTEKEEP=FALSE)     {
+               $blockSplit = $this->splitIntoBlock('A',$value);
+               reset($blockSplit);
+               while(list($k,$v)=each($blockSplit))    {
+                       if ($k%2)       {       // block:
+                               $attribArray=$this->get_tag_attributes_classic($this->getFirstTag($v),1);
+                                       // Checking if there is a scheme, and if not, prepend the current url.
+                               $uP = parse_url(strtolower($attribArray['href']));
+                               if (!$uP['scheme'])     {
+                                       $attribArray['href']=$this->siteUrl().substr($attribArray['href'],strlen($this->relBackPath));
+                               }
+                               if (!$dontSetRTEKEEP)   $attribArray['rtekeep']=1;
+
+                               $bTag='<a '.t3lib_div::implodeParams($attribArray,1).'>';
+                               $eTag='</a>';
+                               $blockSplit[$k] = $bTag.$this->TS_AtagToAbs($this->removeFirstAndLastTag($blockSplit[$k])).$eTag;
+                       }
+               }
+               return implode('',$blockSplit);
+       }
 }
 
 
index d3523d3..dbdbd91 100755 (executable)
@@ -55,7 +55,7 @@ $TYPO3_CONF_VARS = Array(
                'encryptionKey' => '',                                  // Insert some unique string here! Used in eg. direct mail module to generate a md5 hash in combination with uid. This string should be kept secret although it's not as critical as a password.
                'doNotCheckReferer' => 0,                               // Boolean. If set, it's NOT checked numerous places that the refering host is the same as the current. This is an option you should set if you have problems with proxies not passing the HTTP_REFERER variable.
                'recursiveDomainSearch' => 0,                   // Boolean. If set, the search for domain records will be done recursively by stripping parts of the host name off until a matching domain record is found.
-               'report_error_html' => chr(10).'Please report this error to the <a href="mailto:kasper@typo3.com">Typo Development Team</a>',
+               'report_error_html' => chr(10).'Please report this error to the <a href="mailto:kasper@typo3.com">TYPO3 Development Team</a>',
                'T3instID' => 'N/A',
                'devIPmask' => '192.168.*,127.0.0.1',   // Defines a list of IP addresses which will allow development-output to display. The debug() function will use this as a filter. See the function t3lib_div::cmpIP() for details on syntax. Setting this to blank value will deny all. Setting to '*' will allow all.
                'curlUse' => 0,                                                 // Boolean: If set, try to use Curl to fetch external URLs (implemented by Arco <arco@appeltaart.mine.nu>)
index 87f7f3b..b5547b2 100644 (file)
@@ -7,7 +7,7 @@ Here is a few highlights from this library:
 For writing extensions, the file class.t3lib_extMgm.php contains various API functions for adding modules, tables, fields, and other configuration options, mostly from ext_tables.php and ext_localconf.php files.\r
 General purpose functions for usage in both frontend and backend (often functions not specific to TYPO3) can be found in class.t3lib_div.php - please look into this class!\r
 For backend programming (modules etc) the file class.t3lib_befunc.php contains functions - notice, they cannot be used from the frontend!\r
-";s:7:"options";a:2:{s:10:"usageCount";N;s:19:"includeCodeAbstract";N;}}s:5:"files";a:38:{s:14:"MD5_94ced24d11";a:4:{s:8:"filename";s:21:"class.t3lib_admin.php";s:8:"filesize";i:19373;s:6:"header";a:5:{s:4:"text";s:184:"
+";s:7:"options";a:2:{s:10:"usageCount";N;s:19:"includeCodeAbstract";N;}}s:5:"files";a:39:{s:14:"MD5_94ced24d11";a:4:{s:8:"filename";s:21:"class.t3lib_admin.php";s:8:"filesize";i:19373;s:6:"header";a:5:{s:4:"text";s:184:"
 
 This class holds functions used by the TYPO3 backend to check the integrity of the database (The DBint module, 'lowlevel' extension)
 
@@ -203,7 +203,7 @@ Formatting details text for the sys_log row inputted
 
 For all entries in the $inArray (expected to be filepaths) the basename is extracted and set as value (if $this->stripPath is set)
 This is done for log-entries from the FILE modules
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:19:"Array of file paths";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:27:"@see formatDetailsForList()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:23:"formatDetailsForList() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:360;s:13:"content_lines";i:13;s:6:"atLine";i:250;}}}s:14:"MD5_bce9b8541b";a:4:{s:8:"filename";s:22:"class.t3lib_befunc.php";s:8:"filesize";i:100220;s:6:"header";a:5:{s:4:"text";s:139:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:19:"Array of file paths";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:27:"@see formatDetailsForList()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:23:"formatDetailsForList() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:360;s:13:"content_lines";i:13;s:6:"atLine";i:250;}}}s:14:"MD5_bce9b8541b";a:4:{s:8:"filename";s:22:"class.t3lib_befunc.php";s:8:"filesize";i:100261;s:6:"header";a:5:{s:4:"text";s:139:"
 
 Standard functions available for the TYPO3 backend.
 Don't instantiate - call functions with "t3lib_BEfunc::" prefixed the function name.
@@ -563,7 +563,7 @@ Requires the JS function jumpToUrl() to be available
 See Inside TYPO3 for details about how to use / make Function menus
 
 Usage: 50
-";s:5:"param";a:6:{i:0;a:2:{i:0;s:6:"string";i:1;s:58:"$id is the "&id=" parameter value to be sent to the module";}i:1;a:2:{i:0;s:6:"string";i:1;s:74:"$elementName it the form elements name, probably something like "SET[...]"";}i:2;a:2:{i:0;s:6:"string";i:1;s:52:"$currentValue is the value to be selected currently.";}i:3;a:2:{i:0;s:5:"array";i:1;s:63:"$menuItems is an array with the menu items for the selector box";}i:4;a:2:{i:0;s:6:"string";i:1;s:75:"$script is the script to send the &id to, if empty it's automatically found";}i:5;a:2:{i:0;s:6:"string";i:1;s:58:"$addParams is additional parameters to pass to the script.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:26:"HTML code for selector box";}}s:7:"content";s:0:"";s:12:"content_size";i:643;s:13:"content_lines";i:14;s:6:"atLine";i:1917;}i:117;a:7:{s:6:"header";s:94:"function getFuncCheck($id,$elementName,$currentValue,$script='',$addparams='',$tagParams='')   {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:126:"
+";s:5:"param";a:6:{i:0;a:2:{i:0;s:6:"string";i:1;s:58:"$id is the "&id=" parameter value to be sent to the module";}i:1;a:2:{i:0;s:6:"string";i:1;s:74:"$elementName it the form elements name, probably something like "SET[...]"";}i:2;a:2:{i:0;s:6:"string";i:1;s:52:"$currentValue is the value to be selected currently.";}i:3;a:2:{i:0;s:5:"array";i:1;s:63:"$menuItems is an array with the menu items for the selector box";}i:4;a:2:{i:0;s:6:"string";i:1;s:75:"$script is the script to send the &id to, if empty it's automatically found";}i:5;a:2:{i:0;s:6:"string";i:1;s:58:"$addParams is additional parameters to pass to the script.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:26:"HTML code for selector box";}}s:7:"content";s:0:"";s:12:"content_size";i:653;s:13:"content_lines";i:14;s:6:"atLine";i:1917;}i:117;a:7:{s:6:"header";s:94:"function getFuncCheck($id,$elementName,$currentValue,$script='',$addparams='',$tagParams='')   {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:126:"
 
 Checkbox function menu.
 Works like ->getFuncMenu() but takes no $menuItem array since this is a simple checkbox.
@@ -588,99 +588,99 @@ t3lib_BEfunc::getSetUpdateSignal('updatePageTree') -> will set the page tree to
 t3lib_BEfunc::getSetUpdateSignal() -> will return some JavaScript that does the update (called in the typo3/template.php file, end() function)
 
 Usage: 11
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:199:"Whether to set or clear the update signal. When setting, this value contains strings telling WHAT to set. At this point it seems that the value "updatePageTree" is the only one it makes sense to set.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:28:"HTML code (<script> section)";}}s:7:"content";s:0:"";s:12:"content_size";i:780;s:13:"content_lines";i:34;s:6:"atLine";i:2009;}i:125;a:7:{s:6:"header";s:116:"function getModuleData($MOD_MENU, $CHANGED_SETTINGS, $modName, $type='', $dontValidateList='', $setDefaultList='')        {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:485:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:199:"Whether to set or clear the update signal. When setting, this value contains strings telling WHAT to set. At this point it seems that the value "updatePageTree" is the only one it makes sense to set.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:28:"HTML code (<script> section)";}}s:7:"content";s:0:"";s:12:"content_size";i:811;s:13:"content_lines";i:35;s:6:"atLine";i:2009;}i:125;a:7:{s:6:"header";s:116:"function getModuleData($MOD_MENU, $CHANGED_SETTINGS, $modName, $type='', $dontValidateList='', $setDefaultList='')        {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:485:"
 
 Returns an array which is most backend modules becomes MOD_SETTINGS containing values from function menus etc. determining the function of the module.
 This is kind of session variable management framework for the backend users.
 If a key from MOD_MENU is set in the CHANGED_SETTINGS array (eg. a value is passed to the script from the outside), this value is put into the settings-array
 Ultimately, see Inside TYPO3 for how to use this function in relation to your modules.
 Usage: 23
-";s:5:"param";a:6:{i:0;a:2:{i:0;s:5:"array";i:1;s:55:"MOD_MENU is an array that defines the options in menus.";}i:1;a:2:{i:0;s:5:"array";i:1;s:92:"CHANGED_SETTINGS represents the array used when passing values to the script from the menus.";}i:2;a:2:{i:0;s:6:"string";i:1;s:72:"modName is the name of this module. Used to get the correct module data.";}i:3;a:2:{i:0;s:6:"string";i:1;s:132:"If type is 'ses' then the data is stored as session-lasting data. This means that it'll be wiped out the next time the user logs in.";}i:4;a:2:{i:0;s:6:"string";i:1;s:158:"dontValidateList can be used to list variables that should not be checked if their value is found in the MOD_MENU array. Used for dynamically generated menus.";}i:5;a:2:{i:0;s:6:"string";i:1;s:114:"List of default values from $MOD_MENU to set in the output array (only if the values from MOD_MENU are not arrays)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:140:"The array $settings, which holds a key for each MOD_MENU key and the values of each key will be within the range of values for each menuitem";}}s:7:"content";s:0:"";s:12:"content_size";i:1746;s:13:"content_lines";i:63;s:6:"atLine";i:2059;}i:127;a:8:{s:6:"header";s:47:"function lockRecords($table='',$uid=0,$pid=0)  {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:11:"sectionText";a:1:{i:0;s:4:"Core";}s:4:"cDat";a:5:{s:4:"text";s:142:"
+";s:5:"param";a:6:{i:0;a:2:{i:0;s:5:"array";i:1;s:55:"MOD_MENU is an array that defines the options in menus.";}i:1;a:2:{i:0;s:5:"array";i:1;s:92:"CHANGED_SETTINGS represents the array used when passing values to the script from the menus.";}i:2;a:2:{i:0;s:6:"string";i:1;s:72:"modName is the name of this module. Used to get the correct module data.";}i:3;a:2:{i:0;s:6:"string";i:1;s:132:"If type is 'ses' then the data is stored as session-lasting data. This means that it'll be wiped out the next time the user logs in.";}i:4;a:2:{i:0;s:6:"string";i:1;s:158:"dontValidateList can be used to list variables that should not be checked if their value is found in the MOD_MENU array. Used for dynamically generated menus.";}i:5;a:2:{i:0;s:6:"string";i:1;s:114:"List of default values from $MOD_MENU to set in the output array (only if the values from MOD_MENU are not arrays)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:140:"The array $settings, which holds a key for each MOD_MENU key and the values of each key will be within the range of values for each menuitem";}}s:7:"content";s:0:"";s:12:"content_size";i:1746;s:13:"content_lines";i:63;s:6:"atLine";i:2060;}i:127;a:8:{s:6:"header";s:47:"function lockRecords($table='',$uid=0,$pid=0)  {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:11:"sectionText";a:1:{i:0;s:4:"Core";}s:4:"cDat";a:5:{s:4:"text";s:142:"
 
 Unlock or Lock a record from $table with $uid
 If $table and $uid is not set, then all locking for the current BE_USER is removed!
 
 Usage: 5
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:94:"@see t3lib_transferData::lockRecord(), alt_doc.php, db_layout.php, db_list.php, wizard_rte.php";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:89:"t3lib_transferData::lockRecord(), alt_doc.php, db_layout.php, db_list.php, wizard_rte.php";}}}s:7:"content";s:0:"";s:12:"content_size";i:498;s:13:"content_lines";i:18;s:6:"atLine";i:2136;}i:129;a:7:{s:6:"header";s:38:"function isRecordLocked($table,$uid)       {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:457:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:94:"@see t3lib_transferData::lockRecord(), alt_doc.php, db_layout.php, db_list.php, wizard_rte.php";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:89:"t3lib_transferData::lockRecord(), alt_doc.php, db_layout.php, db_list.php, wizard_rte.php";}}}s:7:"content";s:0:"";s:12:"content_size";i:498;s:13:"content_lines";i:18;s:6:"atLine";i:2137;}i:129;a:7:{s:6:"header";s:38:"function isRecordLocked($table,$uid)       {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:457:"
 
 Returns information about whether the record from table, $table, with uid, $uid is currently locked (edited by another user - which should issue a warning).
 Notice: Locking is not strictly carried out since locking is abandoned when other backend scripts are activated - which means that a user CAN have a record "open" without having it locked. So this just serves as a warning that counts well in 90% of the cases, which should be sufficient.
 
 Usage: 5
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:73:"@see class.db_layout.inc, alt_db_navframe.php, alt_doc.php, db_layout.php";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:68:"class.db_layout.inc, alt_db_navframe.php, alt_doc.php, db_layout.php";}}}s:7:"content";s:0:"";s:12:"content_size";i:1254;s:13:"content_lines";i:25;s:6:"atLine";i:2167;}i:131;a:7:{s:6:"header";s:88:"function foreign_table_where_query($fieldValue,$field='',$TSconfig=array(),$prefix='')       {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:80:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:73:"@see class.db_layout.inc, alt_db_navframe.php, alt_doc.php, db_layout.php";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:68:"class.db_layout.inc, alt_db_navframe.php, alt_doc.php, db_layout.php";}}}s:7:"content";s:0:"";s:12:"content_size";i:1254;s:13:"content_lines";i:25;s:6:"atLine";i:2168;}i:131;a:7:{s:6:"header";s:88:"function foreign_table_where_query($fieldValue,$field='',$TSconfig=array(),$prefix='')       {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:80:"
 
 Returns select statement for MM relations (as used by TCEFORMs etc)
 
 Usage: 3
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:5:"array";i:1;s:50:"Configuration array for the field, taken from $TCA";}i:1;a:2:{i:0;s:6:"string";i:1;s:10:"Field name";}i:2;a:2:{i:0;s:5:"array";i:1;s:82:"TSconfig array from which to get further configuration settings for the field name";}i:3;a:2:{i:0;s:6:"string";i:1;s:71:"Prefix string for the key "*foreign_table_where" from $fieldValue array";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:13:"Part of query";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:71:"@see t3lib_transferData::renderRecord(), t3lib_TCEforms::foreignTable()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:66:"t3lib_transferData::renderRecord(), t3lib_TCEforms::foreignTable()";}}}s:7:"content";s:0:"";s:12:"content_size";i:2305;s:13:"content_lines";i:41;s:6:"atLine";i:2206;}i:133;a:7:{s:6:"header";s:43:"function getTCEFORM_TSconfig($table,$row) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:87:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:5:"array";i:1;s:50:"Configuration array for the field, taken from $TCA";}i:1;a:2:{i:0;s:6:"string";i:1;s:10:"Field name";}i:2;a:2:{i:0;s:5:"array";i:1;s:82:"TSconfig array from which to get further configuration settings for the field name";}i:3;a:2:{i:0;s:6:"string";i:1;s:71:"Prefix string for the key "*foreign_table_where" from $fieldValue array";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:13:"Part of query";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:71:"@see t3lib_transferData::renderRecord(), t3lib_TCEforms::foreignTable()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:66:"t3lib_transferData::renderRecord(), t3lib_TCEforms::foreignTable()";}}}s:7:"content";s:0:"";s:12:"content_size";i:2305;s:13:"content_lines";i:41;s:6:"atLine";i:2207;}i:133;a:7:{s:6:"header";s:43:"function getTCEFORM_TSconfig($table,$row) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:87:"
 
 Returns TSConfig for the TCEFORM object in Page TSconfig.
 Used in TCEFORMs
 
 Usage: 4
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:25:"Table name present in TCA";}i:1;a:2:{i:0;s:5:"array";i:1;s:14:"Row from table";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:117:"@see t3lib_transferData::renderRecord(), t3lib_TCEforms::setTSconfig(), SC_wizard_list::main(), SC_wizard_add::main()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:112:"t3lib_transferData::renderRecord(), t3lib_TCEforms::setTSconfig(), SC_wizard_list::main(), SC_wizard_add::main()";}}}s:7:"content";s:0:"";s:12:"content_size";i:1261;s:13:"content_lines";i:35;s:6:"atLine";i:2259;}i:135;a:7:{s:6:"header";s:49:"function getTSconfig_pidValue($table,$uid,$pid) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:198:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:25:"Table name present in TCA";}i:1;a:2:{i:0;s:5:"array";i:1;s:14:"Row from table";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:117:"@see t3lib_transferData::renderRecord(), t3lib_TCEforms::setTSconfig(), SC_wizard_list::main(), SC_wizard_add::main()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:112:"t3lib_transferData::renderRecord(), t3lib_TCEforms::setTSconfig(), SC_wizard_list::main(), SC_wizard_add::main()";}}}s:7:"content";s:0:"";s:12:"content_size";i:1261;s:13:"content_lines";i:35;s:6:"atLine";i:2260;}i:135;a:7:{s:6:"header";s:49:"function getTSconfig_pidValue($table,$uid,$pid) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:198:"
 
 Find the real PID of the record (with $uid from $table). This MAY be impossible if the pid is set as a reference to the former record or a page (if two records are created at one time).
 
 Usage: 2
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:45:"@see t3lib_TCEmain::copyRecord(), getTSCpid()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:40:"t3lib_TCEmain::copyRecord(), getTSCpid()";}}}s:7:"content";s:0:"";s:12:"content_size";i:869;s:13:"content_lines";i:16;s:6:"atLine";i:2307;}i:137;a:7:{s:6:"header";s:49:"function getPidForModTSconfig($table,$uid,$pid)   {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:84:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:45:"@see t3lib_TCEmain::copyRecord(), getTSCpid()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:40:"t3lib_TCEmain::copyRecord(), getTSCpid()";}}}s:7:"content";s:0:"";s:12:"content_size";i:869;s:13:"content_lines";i:16;s:6:"atLine";i:2308;}i:137;a:7:{s:6:"header";s:49:"function getPidForModTSconfig($table,$uid,$pid)   {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:84:"
 
 Return $uid if $table is pages and $uid is integer - otherwise the $pid
 
 Usage: 1
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:32:"@see t3lib_TCEforms::getTSCpid()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:28:"t3lib_TCEforms::getTSCpid() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:96;s:13:"content_lines";i:4;s:6:"atLine";i:2336;}i:139;a:7:{s:6:"header";s:38:"function getTSCpid($table,$uid,$pid) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:143:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:32:"@see t3lib_TCEforms::getTSCpid()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:28:"t3lib_TCEforms::getTSCpid() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:96;s:13:"content_lines";i:4;s:6:"atLine";i:2337;}i:139;a:7:{s:6:"header";s:38:"function getTSCpid($table,$uid,$pid) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:143:"
 
 Returns the REAL pid of the record, if possible. If both $uid and $pid is strings, then pid=-1 is returned as an error indication.
 
 Usage: 8
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:66:"@see t3lib_TCEmain::setHistory(), t3lib_TCEmain::process_datamap()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:61:"t3lib_TCEmain::setHistory(), t3lib_TCEmain::process_datamap()";}}}s:7:"content";s:0:"";s:12:"content_size";i:348;s:13:"content_lines";i:8;s:6:"atLine";i:2353;}i:141;a:7:{s:6:"header";s:39:"function firstDomainRecord($rootLine)    {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:116:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:10:"Record uid";}i:2;a:2:{i:0;s:7:"integer";i:1;s:10:"Record pid";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:66:"@see t3lib_TCEmain::setHistory(), t3lib_TCEmain::process_datamap()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:61:"t3lib_TCEmain::setHistory(), t3lib_TCEmain::process_datamap()";}}}s:7:"content";s:0:"";s:12:"content_size";i:348;s:13:"content_lines";i:8;s:6:"atLine";i:2354;}i:141;a:7:{s:6:"header";s:39:"function firstDomainRecord($rootLine)    {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:116:"
 
 Returns first found domain record "domainName" (without trailing slash) if found in the input $rootLine
 
 Usage: 2
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:15:"Root line array";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Domain name, if found.";}}s:7:"content";s:0:"";s:12:"content_size";i:385;s:13:"content_lines";i:13;s:6:"atLine";i:2370;}i:143;a:7:{s:6:"header";s:48:"function getDomainStartPage($domain, $path='')     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:87:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:15:"Root line array";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Domain name, if found.";}}s:7:"content";s:0:"";s:12:"content_size";i:385;s:13:"content_lines";i:13;s:6:"atLine";i:2371;}i:143;a:7:{s:6:"header";s:48:"function getDomainStartPage($domain, $path='')     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:87:"
 
 Returns the sys_domain record for $domain, optionally with $path appended.
 
 Usage: 2
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Domain name";}i:1;a:2:{i:0;s:6:"string";i:1;s:13:"Appended path";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:23:"Domain record, if found";}}s:7:"content";s:0:"";s:12:"content_size";i:651;s:13:"content_lines";i:20;s:6:"atLine";i:2393;}i:145;a:7:{s:6:"header";s:52:"function RTEsetup($RTEprop,$table,$field,$type='')        {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:100:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Domain name";}i:1;a:2:{i:0;s:6:"string";i:1;s:13:"Appended path";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:23:"Domain record, if found";}}s:7:"content";s:0:"";s:12:"content_size";i:651;s:13:"content_lines";i:20;s:6:"atLine";i:2394;}i:145;a:7:{s:6:"header";s:52:"function RTEsetup($RTEprop,$table,$field,$type='')        {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:100:"
 
 Returns overlayered RTE setup from an array with TSconfig. Used in TCEforms and TCEmain
 
 Usage: 8
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:5:"array";i:1;s:49:"The properties of Page TSconfig in the key "RTE."";}i:1;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:2;a:2:{i:0;s:6:"string";i:1;s:10:"Field name";}i:3;a:2:{i:0;s:6:"string";i:1;s:64:"Type value of the current record (like from CType of tt_content)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:40:"Array with the configuration for the RTE";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:569;s:13:"content_lines";i:12;s:6:"atLine";i:2426;}i:147;a:7:{s:6:"header";s:45:"function isModuleSetInTBE_MODULES($modName)   {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:103:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:5:"array";i:1;s:49:"The properties of Page TSconfig in the key "RTE."";}i:1;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:2;a:2:{i:0;s:6:"string";i:1;s:10:"Field name";}i:3;a:2:{i:0;s:6:"string";i:1;s:64:"Type value of the current record (like from CType of tt_content)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:40:"Array with the configuration for the RTE";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:569;s:13:"content_lines";i:12;s:6:"atLine";i:2427;}i:147;a:7:{s:6:"header";s:45:"function isModuleSetInTBE_MODULES($modName)   {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:103:"
 
 Returns true if $modName is set and is found as a main- or submodule in $TBE_MODULES array
 
 Usage: 1
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Module name";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:487;s:13:"content_lines";i:38;s:6:"atLine";i:2447;}i:149;a:8:{s:6:"header";s:57:"function typo3PrintError ($header,$text,$js='',$head=1)     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:11:"sectionText";a:1:{i:0;s:13:"Miscellaneous";}s:4:"cDat";a:3:{s:4:"text";s:56:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Module name";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:487;s:13:"content_lines";i:38;s:6:"atLine";i:2448;}i:149;a:8:{s:6:"header";s:57:"function typo3PrintError ($header,$text,$js='',$head=1)     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:11:"sectionText";a:1:{i:0;s:13:"Miscellaneous";}s:4:"cDat";a:3:{s:4:"text";s:56:"
 
 Print error message with header, text etc.
 
 Usage: 19
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Header string";}i:1;a:2:{i:0;s:6:"string";i:1;s:14:"Content string";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:59:"Will return an alert() with the content of header and text.";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:13:"Print header.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1228;s:13:"content_lines";i:38;s:6:"atLine";i:2497;}i:151;a:7:{s:6:"header";s:40:"function getPathType_web_nonweb($path) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:121:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Header string";}i:1;a:2:{i:0;s:6:"string";i:1;s:14:"Content string";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:59:"Will return an alert() with the content of header and text.";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:13:"Print header.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1228;s:13:"content_lines";i:38;s:6:"atLine";i:2498;}i:151;a:7:{s:6:"header";s:40:"function getPathType_web_nonweb($path) {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:121:"
 
 Returns "web" if the $path (absolute) is within the DOCUMENT ROOT - and thereby qualifies as a "web" folder.
 
 Usage: 4
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"Path to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:108;s:13:"content_lines";i:3;s:6:"atLine";i:2544;}i:153;a:7:{s:6:"header";s:40:"function ADMCMD_previewCmds($pageinfo)  {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:84:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"Path to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:108;s:13:"content_lines";i:3;s:6:"atLine";i:2545;}i:153;a:7:{s:6:"header";s:40:"function ADMCMD_previewCmds($pageinfo)  {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:84:"
 
 Creates ADMCMD parameters for the "viewpage" extension / "cms" frontend
 
 Usage: 1
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:11:"Page record";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:16:"Query-parameters";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:354;s:13:"content_lines";i:12;s:6:"atLine";i:2557;}i:155;a:4:{s:6:"header";s:33:"function processParams($params)     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:230:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:11:"Page record";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:16:"Query-parameters";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:354;s:13:"content_lines";i:12;s:6:"atLine";i:2558;}i:155;a:4:{s:6:"header";s:33:"function processParams($params)     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:3:{s:4:"text";s:230:"
 
 Returns an array with key=>values based on input text $params
 $params is exploded by line-breaks and each line is supposed to be on the syntax [key] = [some value]
 These pairs will be parsed into an array an returned.
 
 Usage: 1
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:95:"String of parameters on multiple lines to parse into key-value pairs (see function description)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:6:"atLine";i:2580;}i:157;a:7:{s:6:"header";s:88:"function getListOfBackendModules($name,$perms_clause,$backPath='',$script='index.php')     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:108:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:95:"String of parameters on multiple lines to parse into key-value pairs (see function description)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:6:"atLine";i:2581;}i:157;a:7:{s:6:"header";s:88:"function getListOfBackendModules($name,$perms_clause,$backPath='',$script='index.php')     {";s:11:"parentClass";s:12:"t3lib_BEfunc";s:4:"cDat";a:5:{s:4:"text";s:108:"
 
 Returns "list of backend modules". Most likely this will be obsolete soon / removed. Don't use.
 
 Usage: 3
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:17:"Module names list";}i:1;a:2:{i:0;s:6:"string";i:1;s:26:"Perms clause for SQL query";}i:2;a:2:{i:0;s:6:"string";i:1;s:8:"Backpath";}i:3;a:2:{i:0;s:6:"string";i:1;s:41:"The URL/script to jump to (used in A tag)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:23:"Two keys, rows and list";}s:5:"other";a:3:{i:0;s:9:"@internal";i:1;s:12:"@depreciated";i:2;s:9:"@obsolete";}s:11:"other_index";a:3:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:12:"@depreciated";a:1:{i:0;s:1:" ";}s:9:"@obsolete";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:678;s:13:"content_lines";i:15;s:6:"atLine";i:2607;}}}s:14:"MD5_72d4b89844";a:4:{s:8:"filename";s:26:"class.t3lib_beuserauth.php";s:8:"filesize";i:12577;s:6:"header";a:5:{s:4:"text";s:501:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:17:"Module names list";}i:1;a:2:{i:0;s:6:"string";i:1;s:26:"Perms clause for SQL query";}i:2;a:2:{i:0;s:6:"string";i:1;s:8:"Backpath";}i:3;a:2:{i:0;s:6:"string";i:1;s:41:"The URL/script to jump to (used in A tag)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:23:"Two keys, rows and list";}s:5:"other";a:3:{i:0;s:9:"@internal";i:1;s:12:"@depreciated";i:2;s:9:"@obsolete";}s:11:"other_index";a:3:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:12:"@depreciated";a:1:{i:0;s:1:" ";}s:9:"@obsolete";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:678;s:13:"content_lines";i:15;s:6:"atLine";i:2608;}}}s:14:"MD5_72d4b89844";a:4:{s:8:"filename";s:26:"class.t3lib_beuserauth.php";s:8:"filesize";i:12577;s:6:"header";a:5:{s:4:"text";s:501:"
 
 TYPO3 user authentication, backend
 Could technically have been the same class as t3lib_userauthgroup since these two are always used together and only together. 
@@ -723,21 +723,24 @@ Depends on various parameters whether mails are send and to whom.
 
 VeriCode returns 10 first chars of a md5 hash of the session cookie AND the encryptionKey from TYPO3_CONF_VARS. 
 This code is used as an alternative verification when the JavaScript interface executes cmd's to tce_db.php from eg. MSIE 5.0 because the proper referer is not passed with this browser...
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:301;s:13:"content_lines";i:10;s:6:"atLine";i:316;}}}s:14:"MD5_6c5e1df3ba";a:4:{s:8:"filename";s:26:"class.t3lib_browsetree.php";s:8:"filesize";i:3482;s:6:"header";a:5:{s:4:"text";s:82:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:301;s:13:"content_lines";i:10;s:6:"atLine";i:316;}}}s:14:"MD5_6c5e1df3ba";a:4:{s:8:"filename";s:26:"class.t3lib_browsetree.php";s:8:"filesize";i:4427;s:6:"header";a:5:{s:4:"text";s:82:"
 
 Extension class for the t3lib_treeView class, specially made for browsing pages
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:35:"@see t3lib_treeView, t3lib_pageTree";i:3;s:14:"@package TYPO3";i:4;s:17:"@subpackage t3lib";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:4:"@see";a:1:{i:0;s:30:"t3lib_treeView, t3lib_pageTree";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:3:"DAT";a:3:{i:1;a:8:{s:6:"header";s:47:"class t3lib_browseTree extends t3lib_treeView {";s:5:"class";i:1;s:11:"parentClass";s:16:"t3lib_browseTree";s:4:"cDat";a:5:{s:4:"text";s:82:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:35:"@see t3lib_treeView, t3lib_pageTree";i:3;s:14:"@package TYPO3";i:4;s:17:"@subpackage t3lib";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:4:"@see";a:1:{i:0;s:30:"t3lib_treeView, t3lib_pageTree";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:3:"DAT";a:4:{i:1;a:8:{s:6:"header";s:47:"class t3lib_browseTree extends t3lib_treeView {";s:5:"class";i:1;s:11:"parentClass";s:16:"t3lib_browseTree";s:4:"cDat";a:5:{s:4:"text";s:82:"
 
 Extension class for the t3lib_treeView class, specially made for browsing pages
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:35:"@see t3lib_treeView, t3lib_pageTree";i:3;s:14:"@package TYPO3";i:4;s:17:"@subpackage t3lib";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:4:"@see";a:1:{i:0;s:30:"t3lib_treeView, t3lib_pageTree";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2;s:13:"content_lines";i:1;s:6:"atLine";i:71;}i:3;a:4:{s:6:"header";s:27:"function init($clause='')      {";s:11:"parentClass";s:16:"t3lib_browseTree";s:4:"cDat";a:3:{s:4:"text";s:84:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:35:"@see t3lib_treeView, t3lib_pageTree";i:3;s:14:"@package TYPO3";i:4;s:17:"@subpackage t3lib";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:4:"@see";a:1:{i:0;s:30:"t3lib_treeView, t3lib_pageTree";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2;s:13:"content_lines";i:1;s:6:"atLine";i:71;}i:3;a:7:{s:6:"header";s:27:"function init($clause='')      {";s:11:"parentClass";s:16:"t3lib_browseTree";s:4:"cDat";a:3:{s:4:"text";s:84:"
 
 Initialize, setting what is necessary for browsing pages.
 Using the current user.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:38:"Additional clause for selecting pages.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:6:"atLine";i:80;}i:5;a:7:{s:6:"header";s:31:"function getTitleAttrib($row) {";s:11:"parentClass";s:16:"t3lib_browseTree";s:4:"cDat";a:3:{s:4:"text";s:137:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:38:"Additional clause for selecting pages.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:678;s:13:"content_lines";i:15;s:6:"atLine";i:80;}i:5;a:4:{s:6:"header";s:31:"function getTitleAttrib($row) {";s:11:"parentClass";s:16:"t3lib_browseTree";s:4:"cDat";a:3:{s:4:"text";s:137:"
 
 Creates title attribute content for pages.
 Uses API function in t3lib_BEfunc which will retrieve lots of useful information for pages.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:14:"The table row.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:282;s:13:"content_lines";i:8;s:6:"atLine";i:103;}}}s:14:"MD5_078c4a59ec";a:4:{s:8:"filename";s:25:"class.t3lib_clipboard.php";s:8:"filesize";i:32687;s:6:"header";a:5:{s:4:"text";s:40:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:14:"The table row.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:6:"atLine";i:103;}i:7;a:7:{s:6:"header";s:31:"function wrapIcon($icon,$row)  {";s:11:"parentClass";s:16:"t3lib_browseTree";s:4:"cDat";a:4:{s:4:"text";s:77:"
+
+Wrapping the image tag, $icon, for the row, $row (except for mount points)
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"The image tag for the icon";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The row for the current element";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"The processed icon input value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:854;s:13:"content_lines";i:18;s:6:"atLine";i:115;}}}s:14:"MD5_078c4a59ec";a:4:{s:8:"filename";s:25:"class.t3lib_clipboard.php";s:8:"filesize";i:32687;s:6:"header";a:5:{s:4:"text";s:40:"
 
 TYPO3 clipboard for records and files
 ";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:3:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";}s:11:"other_index";a:3:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:3:"DAT";a:31:{i:1;a:8:{s:6:"header";s:23:"class t3lib_clipboard {";s:5:"class";i:1;s:11:"parentClass";s:15:"t3lib_clipboard";s:4:"cDat";a:5:{s:4:"text";s:40:"
@@ -944,7 +947,7 @@ This is done by splitting first by lines, then by space char. Each word will be
 ";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"The string input";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:17:"Array with words.";}s:6:"access";s:7:"private";}s:6:"atLine";i:200;}i:11;a:7:{s:6:"header";s:32:"function tagSpace($str,$rev=0) {";s:11:"parentClass";s:10:"t3lib_diff";s:4:"cDat";a:4:{s:4:"text";s:86:"
 
 Adds a space character before and after HTML tags (more precisely any found < or >)
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:17:"String to process";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:50:"If set, the < > searched for will be &lt; and &gt;";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:16:"Processed string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:357;s:13:"content_lines";i:11;s:6:"atLine";i:221;}}}s:14:"MD5_2340d0eef3";a:4:{s:8:"filename";s:19:"class.t3lib_div.php";s:8:"filesize";i:101267;s:6:"header";a:5:{s:4:"text";s:555:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:17:"String to process";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:50:"If set, the < > searched for will be &lt; and &gt;";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:16:"Processed string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:357;s:13:"content_lines";i:11;s:6:"atLine";i:221;}}}s:14:"MD5_2340d0eef3";a:4:{s:8:"filename";s:19:"class.t3lib_div.php";s:8:"filesize";i:102193;s:6:"header";a:5:{s:4:"text";s:555:"
 
 The legendary "t3lib_div" class - Miscellaneous functions for general purpose.
 Most of the functions does not relate specifically to TYPO3
@@ -1152,83 +1155,83 @@ Usage: 74
 Returns true if the first part of $str matches the string $partStr
 
 Usage: 58
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Full string to check";}i:1;a:2:{i:0;s:6:"string";i:1;s:75:"Reference string which must be found as the "first part" of the full string";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:64:"True if $partStr was found to be equal to the first part of $str";}}s:7:"content";s:0:"";s:12:"content_size";i:210;s:13:"content_lines";i:7;s:6:"atLine";i:845;}i:63;a:7:{s:6:"header";s:35:"function formatSize($sizeInBytes)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:89:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Full string to check";}i:1;a:2:{i:0;s:6:"string";i:1;s:75:"Reference string which must be found as the "first part" of the full string";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:64:"True if $partStr was found to be equal to the first part of $str";}}s:7:"content";s:0:"";s:12:"content_size";i:210;s:13:"content_lines";i:7;s:6:"atLine";i:845;}i:63;a:7:{s:6:"header";s:46:"function formatSize($sizeInBytes,$labels='')       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:89:"
 
 Formats the input integer $sizeInBytes as bytes/kilobytes/megabytes (-/K/M)
 
 Usage: 54
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:26:"Number of bytes to format.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:56:"Formatted representation of the byte number, for output.";}}s:7:"content";s:0:"";s:12:"content_size";i:348;s:13:"content_lines";i:13;s:6:"atLine";i:861;}i:65;a:7:{s:6:"header";s:39:"function convertMicrotime($microtime) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:52:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:7:"integer";i:1;s:26:"Number of bytes to format.";}i:1;a:2:{i:0;s:6:"string";i:1;s:146:"Labels for bytes, kilo, mega and giga separated by vertical bar (|) and possibly encapsulated in "". Eg: " | K| M| G" (which is the default value)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:56:"Formatted representation of the byte number, for output.";}}s:7:"content";s:0:"";s:12:"content_size";i:720;s:13:"content_lines";i:27;s:6:"atLine";i:862;}i:65;a:7:{s:6:"header";s:39:"function convertMicrotime($microtime)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:52:"
 
 Returns microtime input to milliseconds
 
 Usage: 2
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:9:"Microtime";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:61:"Microtime input string converted to an integer (milliseconds)";}}s:7:"content";s:0:"";s:12:"content_size";i:85;s:13:"content_lines";i:4;s:6:"atLine";i:883;}i:67;a:7:{s:6:"header";s:40:"function splitCalc($string,$operators)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:108:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:9:"Microtime";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:61:"Microtime input string converted to an integer (milliseconds)";}}s:7:"content";s:0:"";s:12:"content_size";i:85;s:13:"content_lines";i:4;s:6:"atLine";i:898;}i:67;a:7:{s:6:"header";s:40:"function splitCalc($string,$operators)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:108:"
 
 This splits a string by the chars in $operators (typical /+-*) and returns an array with them in
 Usage: 2
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:38:"Input string, eg "123 + 456 / 789 - 4"";}i:1;a:2:{i:0;s:6:"string";i:1;s:39:"Operators to split by, typically "/+-*"";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:44:"Array with operators and operands separated.";}s:5:"other";a:1:{i:0;s:55:"@see tslib_cObj::calc(), tslib_gifBuilder::calcOffset()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:50:"tslib_cObj::calc(), tslib_gifBuilder::calcOffset()";}}}s:7:"content";s:0:"";s:12:"content_size";i:287;s:13:"content_lines";i:13;s:6:"atLine";i:897;}i:69;a:7:{s:6:"header";s:32:"function calcPriority($string)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:72:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:38:"Input string, eg "123 + 456 / 789 - 4"";}i:1;a:2:{i:0;s:6:"string";i:1;s:39:"Operators to split by, typically "/+-*"";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:44:"Array with operators and operands separated.";}s:5:"other";a:1:{i:0;s:55:"@see tslib_cObj::calc(), tslib_gifBuilder::calcOffset()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:50:"tslib_cObj::calc(), tslib_gifBuilder::calcOffset()";}}}s:7:"content";s:0:"";s:12:"content_size";i:287;s:13:"content_lines";i:13;s:6:"atLine";i:912;}i:69;a:7:{s:6:"header";s:32:"function calcPriority($string)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:72:"
 
 Calculates the input by +,-,*,/,%,^ with priority to + and -
 Usage: 1
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:38:"Input string, eg "123 + 456 / 789 - 4"";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:34:"Calculated value. Or error string.";}s:5:"other";a:1:{i:0;s:22:"@see calcParenthesis()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:18:"calcParenthesis() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1005;s:13:"content_lines";i:31;s:6:"atLine";i:919;}i:71;a:7:{s:6:"header";s:35:"function calcParenthesis($string)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:56:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:38:"Input string, eg "123 + 456 / 789 - 4"";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:34:"Calculated value. Or error string.";}s:5:"other";a:1:{i:0;s:22:"@see calcParenthesis()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:18:"calcParenthesis() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1005;s:13:"content_lines";i:31;s:6:"atLine";i:934;}i:71;a:7:{s:6:"header";s:35:"function calcParenthesis($string)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:56:"
 
 Calculates the input with parenthesis levels
 Usage: 2
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:40:"Input string, eg "(123 + 456) / 789 - 4"";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:34:"Calculated value. Or error string.";}s:5:"other";a:1:{i:0;s:42:"@see calcPriority(), tslib_cObj::stdWrap()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:37:"calcPriority(), tslib_cObj::stdWrap()";}}}s:7:"content";s:0:"";s:12:"content_size";i:535;s:13:"content_lines";i:18;s:6:"atLine";i:959;}i:73;a:7:{s:6:"header";s:42:"function htmlspecialchars_decode($value)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:50:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:40:"Input string, eg "(123 + 456) / 789 - 4"";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:34:"Calculated value. Or error string.";}s:5:"other";a:1:{i:0;s:42:"@see calcPriority(), tslib_cObj::stdWrap()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:37:"calcPriority(), tslib_cObj::stdWrap()";}}}s:7:"content";s:0:"";s:12:"content_size";i:535;s:13:"content_lines";i:18;s:6:"atLine";i:974;}i:73;a:7:{s:6:"header";s:42:"function htmlspecialchars_decode($value)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:50:"
 
 Inverse version of htmlspecialchars()
 
 Usage: 2
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:78:"Value where &gt;, &lt;, &quot; and &amp; should be converted to regular chars.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:17:"Converted result.";}}s:7:"content";s:0:"";s:12:"content_size";i:197;s:13:"content_lines";i:7;s:6:"atLine";i:986;}i:75;a:7:{s:6:"header";s:30:"function deHSCentities($str)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:78:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:78:"Value where &gt;, &lt;, &quot; and &amp; should be converted to regular chars.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:17:"Converted result.";}}s:7:"content";s:0:"";s:12:"content_size";i:197;s:13:"content_lines";i:7;s:6:"atLine";i:1001;}i:75;a:7:{s:6:"header";s:30:"function deHSCentities($str)      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:78:"
 
 Re-converts HTML entities if they have been converted by htmlspecialchars()
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:123:"String which contains eg. "&amp;amp;" which should stay "&amp;". Or "&amp;#1234;" to "&#1234;". Or "&amp;#x1b;" to "&#x1b;"";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:17:"Converted result.";}}s:7:"content";s:0:"";s:12:"content_size";i:65;s:13:"content_lines";i:3;s:6:"atLine";i:1000;}i:77;a:7:{s:6:"header";s:49:"function slashJS($string,$extended=0,$char="'")      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:99:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:123:"String which contains eg. "&amp;amp;" which should stay "&amp;". Or "&amp;#1234;" to "&#1234;". Or "&amp;#x1b;" to "&#x1b;"";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:17:"Converted result.";}}s:7:"content";s:0:"";s:12:"content_size";i:65;s:13:"content_lines";i:3;s:6:"atLine";i:1015;}i:77;a:7:{s:6:"header";s:49:"function slashJS($string,$extended=0,$char="'")      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:99:"
 
 This function is used to escape any ' -characters when transferring text to JavaScript!
 Usage: 6
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"String to escape";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:37:"If set, also backslashes are escaped.";}i:2;a:2:{i:0;s:6:"string";i:1;s:52:"The character to escape, default is ' (single-quote)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed input string";}}s:7:"content";s:0:"";s:12:"content_size";i:123;s:13:"content_lines";i:4;s:6:"atLine";i:1013;}i:79;a:7:{s:6:"header";s:31:"function rawUrlEncodeJS($str)      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:229:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"String to escape";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:37:"If set, also backslashes are escaped.";}i:2;a:2:{i:0;s:6:"string";i:1;s:52:"The character to escape, default is ' (single-quote)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed input string";}}s:7:"content";s:0:"";s:12:"content_size";i:123;s:13:"content_lines";i:4;s:6:"atLine";i:1028;}i:79;a:7:{s:6:"header";s:31:"function rawUrlEncodeJS($str)      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:229:"
 
 Version of rawurlencode() where all spaces (%20) are re-converted to space-characters.
 Usefull when passing text to JavaScript where you simply url-encode it to get around problems with syntax-errors, linebreaks etc.
 
 Usage: 8
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:46:"String to raw-url-encode with spaces preserved";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:94:"Rawurlencoded result of input string, but with all %20 (space chars) converted to real spaces.";}}s:7:"content";s:0:"";s:12:"content_size";i:57;s:13:"content_lines";i:3;s:6:"atLine";i:1027;}i:81;a:7:{s:6:"header";s:29:"function validEmail($email)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:51:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:46:"String to raw-url-encode with spaces preserved";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:94:"Rawurlencoded result of input string, but with all %20 (space chars) converted to real spaces.";}}s:7:"content";s:0:"";s:12:"content_size";i:57;s:13:"content_lines";i:3;s:6:"atLine";i:1042;}i:81;a:7:{s:6:"header";s:29:"function validEmail($email)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:51:"
 
 Checking syntax of input email address
 
 Usage: 4
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:24:"Input string to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:140:"Returns true if the $email address (input string) is valid; Has a "@", domain name with at least one period and only allowed a-z characters.";}}s:7:"content";s:0:"";s:12:"content_size";i:130;s:13:"content_lines";i:4;s:6:"atLine";i:1039;}i:83;a:7:{s:6:"header";s:38:"function formatForTextarea($content)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:397:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:24:"Input string to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:140:"Returns true if the $email address (input string) is valid; Has a "@", domain name with at least one period and only allowed a-z characters.";}}s:7:"content";s:0:"";s:12:"content_size";i:130;s:13:"content_lines";i:4;s:6:"atLine";i:1054;}i:83;a:7:{s:6:"header";s:38:"function formatForTextarea($content)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:397:"
 
 Formats a string for output between <textarea>-tags
 All content outputted in a textarea form should be passed through this function
 Not only is the content htmlspecialchar'ed on output but there is also a single newline added in the top. The newline is necessary because browsers will ignore the first newline after <textarea> if that is the first character. Therefore better set it!
 
 Usage: 30
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:29:"Input string to be formatted.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:29:"Formatted for <textarea>-tags";}}s:7:"content";s:0:"";s:12:"content_size";i:154;s:13:"content_lines";i:20;s:6:"atLine";i:1054;}i:85;a:8:{s:6:"header";s:35:"function inArray($in_array,$item)     {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:15:"ARRAY FUNCTIONS";}s:4:"cDat";a:5:{s:4:"text";s:144:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:29:"Input string to be formatted.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:29:"Formatted for <textarea>-tags";}}s:7:"content";s:0:"";s:12:"content_size";i:154;s:13:"content_lines";i:20;s:6:"atLine";i:1069;}i:85;a:8:{s:6:"header";s:35:"function inArray($in_array,$item)     {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:15:"ARRAY FUNCTIONS";}s:4:"cDat";a:5:{s:4:"text";s:144:"
 
 Check if an item exists in an array
 Please note that the order of parameters is reverse compared to the php4-function in_array()!!!
 
 Usage: 3
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:41:"$in_array                one-dimensional array of items";}i:1;a:2:{i:0;s:6:"string";i:1;s:24:"$item      item to check for";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:55:"true if $item is in the one-dimensional array $in_array";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:145;s:13:"content_lines";i:7;s:6:"atLine";i:1086;}i:87;a:7:{s:6:"header";s:38:"function intExplode($delim, $string)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:178:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:41:"$in_array                one-dimensional array of items";}i:1;a:2:{i:0;s:6:"string";i:1;s:24:"$item      item to check for";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:55:"true if $item is in the one-dimensional array $in_array";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:145;s:13:"content_lines";i:7;s:6:"atLine";i:1101;}i:87;a:7:{s:6:"header";s:38:"function intExplode($delim, $string)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:178:"
 
 Explodes a $string delimited by $delim and passes each item in the array through intval().
 Corresponds to explode(), but with conversion to integers for all values.
 
 Usage: 86
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:32:"Delimiter string to explode with";}i:1;a:2:{i:0;s:6:"string";i:1;s:21:"The string to explode";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:42:"Exploded values, all converted to integers";}}s:7:"content";s:0:"";s:12:"content_size";i:144;s:13:"content_lines";i:8;s:6:"atLine";i:1104;}i:89;a:7:{s:6:"header";s:48:"function revExplode($delim, $string, $count=0)      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:163:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:32:"Delimiter string to explode with";}i:1;a:2:{i:0;s:6:"string";i:1;s:21:"The string to explode";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:42:"Exploded values, all converted to integers";}}s:7:"content";s:0:"";s:12:"content_size";i:144;s:13:"content_lines";i:8;s:6:"atLine";i:1119;}i:89;a:7:{s:6:"header";s:48:"function revExplode($delim, $string, $count=0)      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:163:"
 
 Reverse explode which explodes the string counting from behind.
 Thus t3lib_div::revExplode(':','my:words:here',2) will return array('my:words','here')
 
 Usage: 6
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:32:"Delimiter string to explode with";}i:1;a:2:{i:0;s:6:"string";i:1;s:21:"The string to explode";}i:2;a:2:{i:0;s:7:"integer";i:1;s:23:"Number of array entries";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:15:"Exploded values";}}s:7:"content";s:0:"";s:12:"content_size";i:189;s:13:"content_lines";i:9;s:6:"atLine";i:1124;}i:91;a:7:{s:6:"header";s:62:"function trimExplode($delim, $string, $onlyNonEmptyValues=0)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:152:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:32:"Delimiter string to explode with";}i:1;a:2:{i:0;s:6:"string";i:1;s:21:"The string to explode";}i:2;a:2:{i:0;s:7:"integer";i:1;s:23:"Number of array entries";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:15:"Exploded values";}}s:7:"content";s:0:"";s:12:"content_size";i:189;s:13:"content_lines";i:9;s:6:"atLine";i:1139;}i:91;a:7:{s:6:"header";s:62:"function trimExplode($delim, $string, $onlyNonEmptyValues=0)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:152:"
 
 Explodes a string and trims all values for whitespace in the ends.
 If $onlyNonEmptyValues is set, then all blank ('') values are removed.
 
 Usage: 239
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:32:"Delimiter string to explode with";}i:1;a:2:{i:0;s:6:"string";i:1;s:21:"The string to explode";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:56:"If set, all empty values (='') will NOT be set in output";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:15:"Exploded values";}}s:7:"content";s:0:"";s:12:"content_size";i:229;s:13:"content_lines";i:11;s:6:"atLine";i:1145;}i:93;a:7:{s:6:"header";s:35:"function uniqueArray($valueArray)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:6:{s:4:"text";s:272:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:32:"Delimiter string to explode with";}i:1;a:2:{i:0;s:6:"string";i:1;s:21:"The string to explode";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:56:"If set, all empty values (='') will NOT be set in output";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:15:"Exploded values";}}s:7:"content";s:0:"";s:12:"content_size";i:229;s:13:"content_lines";i:11;s:6:"atLine";i:1160;}i:93;a:7:{s:6:"header";s:35:"function uniqueArray($valueArray)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:6:{s:4:"text";s:272:"
 
 Takes a one-dimensional array and returns an array where the values are unique
 The keys in the array are substituted with some md5-hashes
@@ -1236,22 +1239,22 @@ If the value is trim(empty), the value is ignored.
 Values are trimmed
 (Depreciated, use PHP function array_unique instead)
 Usage: 2
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:30:"Array of values to make unique";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"ignore";i:1;s:5:"other";a:1:{i:0;s:12:"@depreciated";}s:11:"other_index";a:1:{s:12:"@depreciated";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:244;s:13:"content_lines";i:13;s:6:"atLine";i:1170;}i:95;a:7:{s:6:"header";s:52:"function removeArrayEntryByValue($array,$cmpValue) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:99:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:30:"Array of values to make unique";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"ignore";i:1;s:5:"other";a:1:{i:0;s:12:"@depreciated";}s:11:"other_index";a:1:{s:12:"@depreciated";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:244;s:13:"content_lines";i:13;s:6:"atLine";i:1185;}i:95;a:7:{s:6:"header";s:52:"function removeArrayEntryByValue($array,$cmpValue) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:99:"
 
 Removes the value $cmpValue from the $array if found there. Returns the modified array
 
 Usage: 2
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:27:"Array containing the values";}i:1;a:2:{i:0;s:6:"string";i:1;s:64:"Value to search for and if found remove array entry where found.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:59:"Output array with entries removed if search string is found";}}s:7:"content";s:0:"";s:12:"content_size";i:306;s:13:"content_lines";i:16;s:6:"atLine";i:1193;}i:97;a:7:{s:6:"header";s:92:"function implodeArrayForUrl($name,$theArray,$str='',$skipBlank=0,$rawurlencodeParamName=0)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:114:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:27:"Array containing the values";}i:1;a:2:{i:0;s:6:"string";i:1;s:64:"Value to search for and if found remove array entry where found.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:59:"Output array with entries removed if search string is found";}}s:7:"content";s:0:"";s:12:"content_size";i:306;s:13:"content_lines";i:16;s:6:"atLine";i:1208;}i:97;a:7:{s:6:"header";s:92:"function implodeArrayForUrl($name,$theArray,$str='',$skipBlank=0,$rawurlencodeParamName=0)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:114:"
 
 Implodes a multidim-array into GET-parameters (eg. &param[key][key2]=value2&param[key][key3]=value3)
 
 Usage: 24
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:55:"Name prefix for entries. Set to blank if you wish none.";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The (multidim) array to implode";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:60:"If set, all values that are blank (='') will NOT be imploded";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:61:"If set, parameters which were blank strings would be removed.";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:94:"If set, the param name itselt (for example "param[key][key2]") would be rawurlencoded as well.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:69:"Imploded result, fx. &param[key][key2]=value2&param[key][key3]=value3";}}s:7:"content";s:0:"";s:12:"content_size";i:587;s:13:"content_lines";i:17;s:6:"atLine";i:1222;}i:99;a:7:{s:6:"header";s:74:"function compileSelectedGetVarsFromArray($varList,$getArray,$GPvarAlt=1)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:120:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:55:"Name prefix for entries. Set to blank if you wish none.";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The (multidim) array to implode";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:60:"If set, all values that are blank (='') will NOT be imploded";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:61:"If set, parameters which were blank strings would be removed.";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:94:"If set, the param name itselt (for example "param[key][key2]") would be rawurlencoded as well.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:69:"Imploded result, fx. &param[key][key2]=value2&param[key][key3]=value3";}}s:7:"content";s:0:"";s:12:"content_size";i:587;s:13:"content_lines";i:17;s:6:"atLine";i:1237;}i:99;a:7:{s:6:"header";s:74:"function compileSelectedGetVarsFromArray($varList,$getArray,$GPvarAlt=1)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:120:"
 
 Returns an array with selected keys from incoming data.
 (Better read source code if you want to find out...)
 Usage: 3
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"List of variable/key names";}i:1;a:2:{i:0;s:5:"array";i:1;s:60:"Array from where to get values based on the keys in $varList";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:96:"If set, then t3lib_div::GPvar() is used to fetch the value if not found (isset) in the $getArray";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:37:"Output array with selected variables.";}}s:7:"content";s:0:"";s:12:"content_size";i:261;s:13:"content_lines";i:12;s:6:"atLine";i:1250;}i:101;a:7:{s:6:"header";s:40:"function addSlashesOnArray(&$theArray) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:203:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"List of variable/key names";}i:1;a:2:{i:0;s:5:"array";i:1;s:60:"Array from where to get values based on the keys in $varList";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:96:"If set, then t3lib_div::GPvar() is used to fetch the value if not found (isset) in the $getArray";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:37:"Output array with selected variables.";}}s:7:"content";s:0:"";s:12:"content_size";i:261;s:13:"content_lines";i:12;s:6:"atLine";i:1265;}i:101;a:7:{s:6:"header";s:40:"function addSlashesOnArray(&$theArray) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:203:"
 
 AddSlash array
 This function traverses a multidimentional array and adds slashes to the values.
@@ -1259,7 +1262,7 @@ NOTE that the input array is and argument by reference.!!
 Twin-function to stripSlashesOnArray
 
 Usage: 6
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:42:"Multidimensional input array, (REFERENCE!)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:273;s:13:"content_lines";i:13;s:6:"atLine";i:1274;}i:103;a:7:{s:6:"header";s:42:"function stripSlashesOnArray(&$theArray)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:205:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:42:"Multidimensional input array, (REFERENCE!)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:273;s:13:"content_lines";i:13;s:6:"atLine";i:1289;}i:103;a:7:{s:6:"header";s:42:"function stripSlashesOnArray(&$theArray)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:205:"
 
 StripSlash array
 This function traverses a multidimentional array and strips slashes to the values.
@@ -1267,54 +1270,54 @@ NOTE that the input array is and argument by reference.!!
 Twin-function to addSlashesOnArray
 
 Usage: 7
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:42:"Multidimensional input array, (REFERENCE!)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:277;s:13:"content_lines";i:13;s:6:"atLine";i:1299;}i:105;a:7:{s:6:"header";s:32:"function slashArray($arr,$cmd)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:90:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:42:"Multidimensional input array, (REFERENCE!)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:277;s:13:"content_lines";i:13;s:6:"atLine";i:1314;}i:105;a:7:{s:6:"header";s:32:"function slashArray($arr,$cmd)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:90:"
 
 Either slashes ($cmd=add) or strips ($cmd=strip) array $arr depending on $cmd
 
 Usage: 6
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:28:"Multidimensional input array";}i:1;a:2:{i:0;s:6:"string";i:1;s:46:""add" or "strip", depending on usage you wish.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:134;s:13:"content_lines";i:5;s:6:"atLine";i:1322;}i:107;a:7:{s:6:"header";s:69:"function array_merge_recursive_overrule ($arr0,$arr1,$notAddKeys=0) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:210:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:28:"Multidimensional input array";}i:1;a:2:{i:0;s:6:"string";i:1;s:46:""add" or "strip", depending on usage you wish.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:134;s:13:"content_lines";i:5;s:6:"atLine";i:1337;}i:107;a:7:{s:6:"header";s:69:"function array_merge_recursive_overrule ($arr0,$arr1,$notAddKeys=0) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:210:"
 
 Merges two arrays recursively, overruling similar the values in the first array ($arr0) with the values of the second array ($arr1)
 In case of identical keys, ie. keeping the values of the second.
 
 Usage: 26
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:11:"First array";}i:1;a:2:{i:0;s:5:"array";i:1;s:40:"Second array, overruling the first array";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:137:"If set, keys that are NOT found in $arr0 (first array) will not be set. Thus only existing value can/will be overruled from second array.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:61:"Resulting array where $arr1 values has overruled $arr0 values";}}s:7:"content";s:0:"";s:12:"content_size";i:416;s:13:"content_lines";i:20;s:6:"atLine";i:1339;}i:109;a:7:{s:6:"header";s:35:"function array_merge($arr1,$arr2)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:131:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:11:"First array";}i:1;a:2:{i:0;s:5:"array";i:1;s:40:"Second array, overruling the first array";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:137:"If set, keys that are NOT found in $arr0 (first array) will not be set. Thus only existing value can/will be overruled from second array.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:61:"Resulting array where $arr1 values has overruled $arr0 values";}}s:7:"content";s:0:"";s:12:"content_size";i:416;s:13:"content_lines";i:20;s:6:"atLine";i:1354;}i:109;a:7:{s:6:"header";s:35:"function array_merge($arr1,$arr2)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:131:"
 
 An array_merge function where the keys are NOT renumbered as they happen to be with the real php-array_merge function
 
 Usage: 27
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:11:"First array";}i:1;a:2:{i:0;s:5:"array";i:1;s:12:"Second array";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:14:"Merged result.";}}s:7:"content";s:0:"";s:12:"content_size";i:28;s:13:"content_lines";i:3;s:6:"atLine";i:1369;}i:111;a:7:{s:6:"header";s:48:"function csvValues($row,$delim=',',$quote='"')  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:136:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:11:"First array";}i:1;a:2:{i:0;s:5:"array";i:1;s:12:"Second array";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:14:"Merged result.";}}s:7:"content";s:0:"";s:12:"content_size";i:28;s:13:"content_lines";i:3;s:6:"atLine";i:1384;}i:111;a:7:{s:6:"header";s:48:"function csvValues($row,$delim=',',$quote='"')  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:136:"
 
 Takes a row and returns a CSV string of the values with $delim (default is ,) and $quote (default is ") as separator chars.
 
 Usage: 5
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:21:"Input array of values";}i:1;a:2:{i:0;s:6:"string";i:1;s:28:"Delimited, default is comman";}i:2;a:2:{i:0;s:6:"string";i:1;s:42:"Quote-character to wrap around the values.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:20:"A single line of CSV";}}s:7:"content";s:0:"";s:12:"content_size";i:385;s:13:"content_lines";i:32;s:6:"atLine";i:1383;}i:113;a:8:{s:6:"header";s:35:"function get_tag_attributes($tag)  {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:19:"HTML/XML PROCESSING";}s:4:"cDat";a:3:{s:4:"text";s:329:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:21:"Input array of values";}i:1;a:2:{i:0;s:6:"string";i:1;s:28:"Delimited, default is comman";}i:2;a:2:{i:0;s:6:"string";i:1;s:42:"Quote-character to wrap around the values.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:20:"A single line of CSV";}}s:7:"content";s:0:"";s:12:"content_size";i:385;s:13:"content_lines";i:32;s:6:"atLine";i:1398;}i:113;a:8:{s:6:"header";s:35:"function get_tag_attributes($tag)  {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:19:"HTML/XML PROCESSING";}s:4:"cDat";a:3:{s:4:"text";s:329:"
 
 $tag is either a whole tag (eg '<TAG OPTION ATTRIB=VALUE>') or the parameterlist (ex ' OPTION ATTRIB=VALUE>')
 Returns an array with all attributes as keys. Attributes are only lowercase a-z
 If a attribute is empty (I call it 'an option'), then the value for the key is empty. You can check if it existed with isset()
 
 Usage: 9
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:36:"HTML-tag string (or attributes only)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:32:"Array with the attribute values.";}}s:7:"content";s:0:"";s:12:"content_size";i:789;s:13:"content_lines";i:27;s:6:"atLine";i:1426;}i:115;a:7:{s:6:"header";s:37:"function split_tag_attributes($tag) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:172:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:36:"HTML-tag string (or attributes only)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:32:"Array with the attribute values.";}}s:7:"content";s:0:"";s:12:"content_size";i:789;s:13:"content_lines";i:27;s:6:"atLine";i:1441;}i:115;a:7:{s:6:"header";s:37:"function split_tag_attributes($tag) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:172:"
 
 Returns an array with the 'components' from an attribute list from an HTML tag. The result is normally analyzed by get_tag_attributes
 Removes tag-name if found
 
 Usage: 1
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:36:"HTML-tag string (or attributes only)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:32:"Array with the attribute values.";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:838;s:13:"content_lines";i:24;s:6:"atLine";i:1464;}i:117;a:7:{s:6:"header";s:43:"function implodeParams($arr,$xhtmlSafe=0)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:107:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:36:"HTML-tag string (or attributes only)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:32:"Array with the attribute values.";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:849;s:13:"content_lines";i:24;s:6:"atLine";i:1479;}i:117;a:7:{s:6:"header";s:43:"function implodeParams($arr,$xhtmlSafe=0)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:107:"
 
 Implodes attributes in the array $arr for an attribute list in eg. and HTML tag (with quotes)
 
 Usage: 10
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:71:"Array with attribute key/value pairs, eg. "bgcolor"=>"red", "border"=>0";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:213:"If set the resulting attribute list will have a) all attributes in lowercase (and duplicates weeded out, first entry taking precedence) and b) all values htmlspecialchar()'ed. It is recommended to use this switch!";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:51:"Imploded attributes, eg. 'bgcolor="red" border="0"'";}}s:7:"content";s:0:"";s:12:"content_size";i:364;s:13:"content_lines";i:16;s:6:"atLine";i:1498;}i:119;a:7:{s:6:"header";s:43:"function wrapJS($string, $linebreak=TRUE) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:211:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:71:"Array with attribute key/value pairs, eg. "bgcolor"=>"red", "border"=>0";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:213:"If set the resulting attribute list will have a) all attributes in lowercase (and duplicates weeded out, first entry taking precedence) and b) all values htmlspecialchar()'ed. It is recommended to use this switch!";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:51:"Imploded attributes, eg. 'bgcolor="red" border="0"'";}}s:7:"content";s:0:"";s:12:"content_size";i:364;s:13:"content_lines";i:16;s:6:"atLine";i:1513;}i:119;a:7:{s:6:"header";s:43:"function wrapJS($string, $linebreak=TRUE) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:211:"
 
 Wraps JavaScript code XHTML ready with <script>-tags
 Automatic re-identing of the JS code is done by using the first line as ident reference.
 This is nice for identing JS code with PHP code on the same level.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:15:"JavaScript code";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:51:"Wrap script element in linebreaks? Default is TRUE.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:51:"The wrapped JS code, ready to put into a XHTML page";}s:5:"other";a:2:{i:0;s:40:"@author     Ingmar Schlecht <ingmars@web.de>";i:1;s:41:"@author     René Fritz <r.fritz@colorcube.de>";}s:11:"other_index";a:1:{s:7:"@author";a:2:{i:0;s:32:"Ingmar Schlecht <ingmars@web.de>";i:1;s:33:"René Fritz <r.fritz@colorcube.de>";}}}s:7:"content";s:0:"";s:12:"content_size";i:471;s:13:"content_lines";i:20;s:6:"atLine";i:1526;}i:121;a:7:{s:6:"header";s:39:"function xml2tree($string,$depth=999) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:58:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:15:"JavaScript code";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:51:"Wrap script element in linebreaks? Default is TRUE.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:51:"The wrapped JS code, ready to put into a XHTML page";}s:5:"other";a:2:{i:0;s:40:"@author     Ingmar Schlecht <ingmars@web.de>";i:1;s:41:"@author     René Fritz <r.fritz@colorcube.de>";}s:11:"other_index";a:1:{s:7:"@author";a:2:{i:0;s:32:"Ingmar Schlecht <ingmars@web.de>";i:1;s:33:"René Fritz <r.fritz@colorcube.de>";}}}s:7:"content";s:0:"";s:12:"content_size";i:471;s:13:"content_lines";i:20;s:6:"atLine";i:1541;}i:121;a:7:{s:6:"header";s:39:"function xml2tree($string,$depth=999) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:58:"
 
 Parses XML input into a PHP array with associative keys
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"XML data input";}i:1;a:2:{i:0;s:7:"integer";i:1;s:100:"Number of element levels to resolve the XML into an array. Any further structure will be set as XML.";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:131:"The array with the parsed structure unless the XML parser returns with an error in which case the error message string is returned.";}s:5:"other";a:1:{i:0;s:126:"@author bisqwit at iki dot fi dot not dot for dot ads dot invalid / http://dk.php.net/xml_parse_into_struct + kasper@typo3.com";}s:11:"other_index";a:1:{s:7:"@author";a:1:{i:0;s:118:"bisqwit at iki dot fi dot not dot for dot ads dot invalid / http://dk.php.net/xml_parse_into_struct + kasper@typo3.com";}}}s:7:"content";s:0:"";s:12:"content_size";i:1696;s:13:"content_lines";i:64;s:6:"atLine";i:1555;}i:123;a:7:{s:6:"header";s:81:"function array2xml($array,$NSprefix='',$level=0,$docTag='phparray',$spaceInd=0)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:1105:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"XML data input";}i:1;a:2:{i:0;s:7:"integer";i:1;s:100:"Number of element levels to resolve the XML into an array. Any further structure will be set as XML.";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:131:"The array with the parsed structure unless the XML parser returns with an error in which case the error message string is returned.";}s:5:"other";a:1:{i:0;s:126:"@author bisqwit at iki dot fi dot not dot for dot ads dot invalid / http://dk.php.net/xml_parse_into_struct + kasper@typo3.com";}s:11:"other_index";a:1:{s:7:"@author";a:1:{i:0;s:118:"bisqwit at iki dot fi dot not dot for dot ads dot invalid / http://dk.php.net/xml_parse_into_struct + kasper@typo3.com";}}}s:7:"content";s:0:"";s:12:"content_size";i:1696;s:13:"content_lines";i:64;s:6:"atLine";i:1570;}i:123;a:7:{s:6:"header";s:81:"function array2xml($array,$NSprefix='',$level=0,$docTag='phparray',$spaceInd=0)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:1105:"
 
 Converts a PHP array into an XML file.
 The XML output is optimized for readability since associative keys are used as fieldnames. 
@@ -1324,56 +1327,57 @@ The function handles input values from the PHP array in a binary-safe way; All c
 The PHP variable type of the data is NOT preserved; integers will become strings, but arrays will stay arrays of course.
 The output XML has been tested with the PHP XML-parser and parses OK under all tested circumstances.
 However using MSIE to read the XML output didn't always go well: One reason could be that the character encoding is not observed in the PHP data. The other reason may be if the tag-names are invalid in the eyes of MSIE. Also using the namespace feature will make MSIE break parsing. There might be more reasons...
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:86:"The input PHP array with any kind of data; text, binary, integers. Not objects though.";}i:1;a:2:{i:0;s:6:"string";i:1;s:45:"tag-prefix, eg. a namespace prefix like "T3:"";}i:2;a:2:{i:0;s:7:"integer";i:1;s:52:"Current recursion level. Don't change, stay at zero!";}i:3;a:2:{i:0;s:6:"string";i:1;s:48:"Alternative document tag. Default is "phparray".";}i:4;a:2:{i:0;s:7:"integer";i:1;s:120:"If set, the number of spaces corresponding to this number is used for indenting, otherwise a single chr(9) (TAB) is used";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:55:"An XML string made from the input content in the array.";}s:5:"other";a:1:{i:0;s:16:"@see xml2array()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:12:"xml2array() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1985;s:13:"content_lines";i:48;s:6:"atLine";i:1638;}i:125;a:7:{s:6:"header";s:42:"function xml2array($string,$NSprefix='') {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:83:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:86:"The input PHP array with any kind of data; text, binary, integers. Not objects though.";}i:1;a:2:{i:0;s:6:"string";i:1;s:45:"tag-prefix, eg. a namespace prefix like "T3:"";}i:2;a:2:{i:0;s:7:"integer";i:1;s:52:"Current recursion level. Don't change, stay at zero!";}i:3;a:2:{i:0;s:6:"string";i:1;s:48:"Alternative document tag. Default is "phparray".";}i:4;a:2:{i:0;s:7:"integer";i:1;s:120:"If set, the number of spaces corresponding to this number is used for indenting, otherwise a single chr(9) (TAB) is used";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:55:"An XML string made from the input content in the array.";}s:5:"other";a:1:{i:0;s:16:"@see xml2array()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:12:"xml2array() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1985;s:13:"content_lines";i:48;s:6:"atLine";i:1653;}i:125;a:7:{s:6:"header";s:42:"function xml2array($string,$NSprefix='') {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:83:"
 
 Converts an XML file to a PHP array.
 This is the inverse function of array2xml()
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:36:"XML content to convert into an array";}i:1;a:2:{i:0;s:6:"string";i:1;s:50:"The tag-prefix resolve, eg. a namespace like "T3:"";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:108:"If the parsing had errors, a string with the error message is returned. Otherwise an array with the content.";}s:5:"other";a:1:{i:0;s:16:"@see array2xml()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:12:"array2xml() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2185;s:13:"content_lines";i:52;s:6:"atLine";i:1696;}i:127;a:7:{s:6:"header";s:48:"function xmlRecompileFromStructValArray($vals)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:90:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:36:"XML content to convert into an array";}i:1;a:2:{i:0;s:6:"string";i:1;s:50:"The tag-prefix resolve, eg. a namespace like "T3:"";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:108:"If the parsing had errors, a string with the error message is returned. Otherwise an array with the content.";}s:5:"other";a:1:{i:0;s:16:"@see array2xml()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:12:"array2xml() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2185;s:13:"content_lines";i:52;s:6:"atLine";i:1711;}i:127;a:7:{s:6:"header";s:48:"function xmlRecompileFromStructValArray($vals)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:90:"
 
 This implodes an array of XML parts (made with xml_parse_into_struct()) into XML again.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:34:"A array of XML parts, see xml2tree";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:21:"Re-compiled XML data.";}}s:7:"content";s:0:"";s:12:"content_size";i:852;s:13:"content_lines";i:36;s:6:"atLine";i:1755;}i:129;a:7:{s:6:"header";s:40:"function xmlGetHeaderAttribs($xmlData)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:88:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:34:"A array of XML parts, see xml2tree";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:21:"Re-compiled XML data.";}}s:7:"content";s:0:"";s:12:"content_size";i:852;s:13:"content_lines";i:36;s:6:"atLine";i:1770;}i:129;a:7:{s:6:"header";s:40:"function xmlGetHeaderAttribs($xmlData)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:88:"
 
 Extract the encoding scheme as found in the first line of an XML document (typically)
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:8:"XML data";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:38:"Encoding scheme (lowercase), if found.";}}s:7:"content";s:0:"";s:12:"content_size";i:279;s:13:"content_lines";i:23;s:6:"atLine";i:1798;}i:131;a:8:{s:6:"header";s:23:"function getURL($url)     {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:15:"FILES FUNCTIONS";}s:4:"cDat";a:3:{s:4:"text";s:64:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:8:"XML data";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:38:"Encoding scheme (lowercase), if found.";}}s:7:"content";s:0:"";s:12:"content_size";i:279;s:13:"content_lines";i:23;s:6:"atLine";i:1813;}i:131;a:8:{s:6:"header";s:23:"function getURL($url)     {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:15:"FILES FUNCTIONS";}s:4:"cDat";a:3:{s:4:"text";s:218:"
 
 Reads the file or url $url and returns the content
+If you are having trouble with proxys when reading URLs you can configure your way out of that with settings like $TYPO3_CONF_VARS['SYS']['curlUse'] etc.
 
 Usage: 79
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath/URL to read";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:45:"The content from the resource given as input.";}}s:7:"content";s:0:"";s:12:"content_size";i:1169;s:13:"content_lines";i:33;s:6:"atLine";i:1830;}i:133;a:7:{s:6:"header";s:36:"function writeFile($file,$content)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:47:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath/URL to read";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:45:"The content from the resource given as input.";}}s:7:"content";s:0:"";s:12:"content_size";i:1169;s:13:"content_lines";i:33;s:6:"atLine";i:1846;}i:133;a:7:{s:6:"header";s:36:"function writeFile($file,$content)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:47:"
 
 Writes $content to the file $file
 
 Usage: 31
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to write to";}i:1;a:2:{i:0;s:6:"string";i:1;s:16:"Content to write";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:56:"True if the file was successfully opened and written to.";}}s:7:"content";s:0:"";s:12:"content_size";i:169;s:13:"content_lines";i:8;s:6:"atLine";i:1873;}i:135;a:7:{s:6:"header";s:26:"function get_dirs($path)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:159:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to write to";}i:1;a:2:{i:0;s:6:"string";i:1;s:16:"Content to write";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:56:"True if the file was successfully opened and written to.";}}s:7:"content";s:0:"";s:12:"content_size";i:275;s:13:"content_lines";i:11;s:6:"atLine";i:1889;}i:135;a:7:{s:6:"header";s:26:"function get_dirs($path)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:159:"
 
 Returns an array with the names of folders in a specific path
 Will return 'error' (string) if there were an error with reading directory content.
 
 Usage: 13
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:29:"Path to list directories from";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:95:"Returns an array with the directory entries as values. If no path, the return value is nothing.";}}s:7:"content";s:0:"";s:12:"content_size";i:279;s:13:"content_lines";i:14;s:6:"atLine";i:1891;}i:137;a:7:{s:6:"header";s:74:"function getFilesInDir($path,$extensionList='',$prependPath=0,$order='')    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:73:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:29:"Path to list directories from";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:95:"Returns an array with the directory entries as values. If no path, the return value is nothing.";}}s:7:"content";s:0:"";s:12:"content_size";i:279;s:13:"content_lines";i:14;s:6:"atLine";i:1910;}i:137;a:7:{s:6:"header";s:74:"function getFilesInDir($path,$extensionList='',$prependPath=0,$order='')    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:73:"
 
 Returns an array with the names of files in a specific path
 
 Usage: 17
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:30:"$path: Is the path to the file";}i:1;a:2:{i:0;s:6:"string";i:1;s:73:"$extensionList is the comma list of extensions to read only (blank = all)";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:104:"If set, then the path is prepended the filenames. Otherwise only the filenames are returned in the array";}i:3;a:2:{i:0;s:6:"string";i:1;s:79:"$order is sorting: 1= sort alphabetically, 'mtime' = sort by modification time.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:24:"Array of the files found";}}s:7:"content";s:0:"";s:12:"content_size";i:914;s:13:"content_lines";i:34;s:6:"atLine";i:1917;}i:139;a:7:{s:6:"header";s:99:"function getAllFilesAndFoldersInPath($fileArr,$path,$extList='',$regDirs=0,$recursivityLevels=99)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:54:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:30:"$path: Is the path to the file";}i:1;a:2:{i:0;s:6:"string";i:1;s:73:"$extensionList is the comma list of extensions to read only (blank = all)";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:104:"If set, then the path is prepended the filenames. Otherwise only the filenames are returned in the array";}i:3;a:2:{i:0;s:6:"string";i:1;s:79:"$order is sorting: 1= sort alphabetically, 'mtime' = sort by modification time.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:24:"Array of the files found";}}s:7:"content";s:0:"";s:12:"content_size";i:914;s:13:"content_lines";i:34;s:6:"atLine";i:1936;}i:139;a:7:{s:6:"header";s:99:"function getAllFilesAndFoldersInPath($fileArr,$path,$extList='',$regDirs=0,$recursivityLevels=99)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:54:"
 
 Recursively gather all files and folders of a path.
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:57:"$fileArr: Empty input array (will have files added to it)";}i:1;a:2:{i:0;s:6:"string";i:1;s:51:"$path: The path to read recursively from (absolute)";}i:2;a:2:{i:0;s:6:"string";i:1;s:114:"$extList: Comma list of file extensions: Only files with extensions in this list (if applicable) will be selected.";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:58:"$regDirs: If set, directories are also included in output.";}i:4;a:2:{i:0;s:7:"integer";i:1;s:55:"$recursivityLevels: The number of levels to dig down...";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:42:"An array with the found files/directories.";}}s:7:"content";s:0:"";s:12:"content_size";i:431;s:13:"content_lines";i:14;s:6:"atLine";i:1962;}i:141;a:7:{s:6:"header";s:61:"function removePrefixPathFromList($fileArr,$prefixToRemove)      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:60:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:57:"$fileArr: Empty input array (will have files added to it)";}i:1;a:2:{i:0;s:6:"string";i:1;s:51:"$path: The path to read recursively from (absolute)";}i:2;a:2:{i:0;s:6:"string";i:1;s:114:"$extList: Comma list of file extensions: Only files with extensions in this list (if applicable) will be selected.";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:58:"$regDirs: If set, directories are also included in output.";}i:4;a:2:{i:0;s:7:"integer";i:1;s:55:"$recursivityLevels: The number of levels to dig down...";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:42:"An array with the found files/directories.";}}s:7:"content";s:0:"";s:12:"content_size";i:431;s:13:"content_lines";i:14;s:6:"atLine";i:1981;}i:141;a:7:{s:6:"header";s:61:"function removePrefixPathFromList($fileArr,$prefixToRemove)      {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:60:"
 
 Removes the absolute part of all files/folders in fileArr
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:50:"$fileArr: The file array to remove the prefix from";}i:1;a:2:{i:0;s:6:"string";i:1;s:78:"$prefixToRemove: The prefix path to remove (if found as first part of string!)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:29:"The input $fileArr processed.";}}s:7:"content";s:0:"";s:12:"content_size";i:313;s:13:"content_lines";i:9;s:6:"atLine";i:1984;}i:143;a:7:{s:6:"header";s:49:"function upload_copy_move($source,$destination)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:88:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:50:"$fileArr: The file array to remove the prefix from";}i:1;a:2:{i:0;s:6:"string";i:1;s:78:"$prefixToRemove: The prefix path to remove (if found as first part of string!)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:29:"The input $fileArr processed.";}}s:7:"content";s:0:"";s:12:"content_size";i:313;s:13:"content_lines";i:9;s:6:"atLine";i:2003;}i:143;a:7:{s:6:"header";s:49:"function upload_copy_move($source,$destination)       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:88:"
 
 Moves $source file to $destination if uploaded, otherwise try to make a copy
 Usage: 3
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"Source file, absolute path";}i:1;a:2:{i:0;s:6:"string";i:1;s:31:"Destination file, absolute path";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:35:"Returns true if the file was moved.";}s:5:"other";a:1:{i:0;s:46:"@coauthor    Dennis Petersen <fessor@software.dk>";}s:11:"other_index";a:1:{s:9:"@coauthor";a:1:{i:0;s:36:"Dennis Petersen <fessor@software.dk>";}}}s:7:"content";s:0:"";s:12:"content_size";i:512;s:13:"content_lines";i:9;s:6:"atLine";i:2003;}i:145;a:7:{s:6:"header";s:39:"function fixWindowsFilePath($theFile) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:94:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"Source file, absolute path";}i:1;a:2:{i:0;s:6:"string";i:1;s:31:"Destination file, absolute path";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:35:"Returns true if the file was moved.";}s:5:"other";a:1:{i:0;s:46:"@coauthor    Dennis Petersen <fessor@software.dk>";}s:11:"other_index";a:1:{s:9:"@coauthor";a:1:{i:0;s:36:"Dennis Petersen <fessor@software.dk>";}}}s:7:"content";s:0:"";s:12:"content_size";i:613;s:13:"content_lines";i:12;s:6:"atLine";i:2022;}i:145;a:7:{s:6:"header";s:39:"function fixWindowsFilePath($theFile)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:94:"
 
 Fixes a path for windows-backslashes and reduces double-slashes to single slashes
 
 Usage: 2
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"File path to process";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:71;s:13:"content_lines";i:3;s:6:"atLine";i:2021;}i:147;a:7:{s:6:"header";s:36:"function resolveBackPath($pathStr)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:51:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"File path to process";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:71;s:13:"content_lines";i:3;s:6:"atLine";i:2043;}i:147;a:7:{s:6:"header";s:36:"function resolveBackPath($pathStr)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:51:"
 
 Resolves "../" sections in the input path string
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:37:"File path in which "/../" is resolved";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:262;s:13:"content_lines";i:16;s:6:"atLine";i:2031;}i:149;a:7:{s:6:"header";s:35:"function locationHeaderUrl($path)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:340:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:37:"File path in which "/../" is resolved";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:262;s:13:"content_lines";i:16;s:6:"atLine";i:2053;}i:149;a:7:{s:6:"header";s:35:"function locationHeaderUrl($path)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:340:"
 
 Prefixes a URL used with 'header-location' with 'http://...' depending on whether it has it already.
 - If already having a scheme, nothing is prepended
@@ -1381,21 +1385,21 @@ Prefixes a URL used with 'header-location' with 'http://...' depending on whethe
 - Otherwise prefixed with TYPO3_REQUEST_DIR (relative to current dir / TYPO3_REQUEST_DIR)
 
 Usage: 31
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:45:"URL / path to prepend full URL addressing to.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:402;s:13:"content_lines";i:30;s:6:"atLine";i:2059;}i:151;a:8:{s:6:"header";s:50:"function debug_ordvalue($string,$characters=100)   {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:22:"DEBUG helper FUNCTIONS";}s:4:"cDat";a:5:{s:4:"text";s:104:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:45:"URL / path to prepend full URL addressing to.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:402;s:13:"content_lines";i:30;s:6:"atLine";i:2081;}i:151;a:8:{s:6:"header";s:50:"function debug_ordvalue($string,$characters=100)   {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:22:"DEBUG helper FUNCTIONS";}s:4:"cDat";a:5:{s:4:"text";s:104:"
 
 Returns a string with a list of ascii-values for the first $characters characters in $string
 Usage: 5
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:30:"String to show ASCII value for";}i:1;a:2:{i:0;s:7:"integer";i:1;s:28:"Number of characters to show";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:58:"The string with ASCII values in separated by a space char.";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:190;s:13:"content_lines";i:7;s:6:"atLine";i:2099;}i:153;a:7:{s:6:"header";s:32:"function view_array($array_in)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:191:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:30:"String to show ASCII value for";}i:1;a:2:{i:0;s:7:"integer";i:1;s:28:"Number of characters to show";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:58:"The string with ASCII values in separated by a space char.";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:190;s:13:"content_lines";i:7;s:6:"atLine";i:2121;}i:153;a:7:{s:6:"header";s:32:"function view_array($array_in)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:191:"
 
 Returns HTML-code, which is a visual representation of a multidimensional array
 use t3lib_div::print_array() in order to print an array
 Returns false if $array_in is not an array
 Usage: 27
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:13:"Array to view";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:11:"HTML output";}}s:7:"content";s:0:"";s:12:"content_size";i:747;s:13:"content_lines";i:18;s:6:"atLine";i:2116;}i:155;a:7:{s:6:"header";s:33:"function print_array($array_in) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:28:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:13:"Array to view";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:11:"HTML output";}}s:7:"content";s:0:"";s:12:"content_size";i:747;s:13:"content_lines";i:18;s:6:"atLine";i:2138;}i:155;a:7:{s:6:"header";s:33:"function print_array($array_in) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:28:"
 
 Prints an array
 Usage: 28
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:37:"Array to print visually (in a table).";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:17:"@see view_array()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:13:"view_array() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:46;s:13:"content_lines";i:3;s:6:"atLine";i:2144;}i:157;a:7:{s:6:"header";s:39:"function debug($var="",$brOrHeader=0)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:188:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:37:"Array to print visually (in a table).";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:2:{i:0;s:9:"@internal";i:1;s:17:"@see view_array()";}s:11:"other_index";a:2:{s:9:"@internal";a:1:{i:0;s:1:" ";}s:4:"@see";a:1:{i:0;s:13:"view_array() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:46;s:13:"content_lines";i:3;s:6:"atLine";i:2166;}i:157;a:7:{s:6:"header";s:39:"function debug($var="",$brOrHeader=0)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:188:"
 
 Makes debug output
 Prints $var in bold between two vertical lines
@@ -1403,61 +1407,61 @@ If not $var the word 'debug' is printed
 If $var is an array, the array is printed by t3lib_div::print_array()
 
 Usage: 8
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:17:"Variable to print";}i:1;a:2:{i:0;s:5:"mixed";i:1;s:161:"If the parameter is a string it will be used as header. Otherwise number of break tags to apply after (positive integer) or before (negative integer) the output.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1039;s:13:"content_lines";i:62;s:6:"atLine";i:2160;}i:159;a:8:{s:6:"header";s:23:"function getThisUrl()    {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:18:"SYSTEM INFORMATION";}s:4:"cDat";a:3:{s:4:"text";s:120:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:17:"Variable to print";}i:1;a:2:{i:0;s:5:"mixed";i:1;s:161:"If the parameter is a string it will be used as header. Otherwise number of break tags to apply after (positive integer) or before (negative integer) the output.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1039;s:13:"content_lines";i:62;s:6:"atLine";i:2182;}i:159;a:8:{s:6:"header";s:23:"function getThisUrl()    {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:18:"SYSTEM INFORMATION";}s:4:"cDat";a:3:{s:4:"text";s:120:"
 
 Returns the HOST+DIR-PATH of the current script (The URL, but without 'http://' and without script-filename)
 Usage: 1
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:242;s:13:"content_lines";i:6;s:6:"atLine";i:2229;}i:161;a:7:{s:6:"header";s:45:"function linkThisScript($getParams=array())     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:381:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:242;s:13:"content_lines";i:6;s:6:"atLine";i:2251;}i:161;a:7:{s:6:"header";s:45:"function linkThisScript($getParams=array())     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:381:"
 
 Returns the link-url to the current script.
 In $getParams you can set associative keys corresponding to the get-vars you wish to add to the url. If you set them empty, they will remove existing get-vars from the current url.
 REMEMBER to always htmlspecialchar() content in href-properties to ampersands get converted to entities (XHTML requirement and XSS precaution)
 
 Usage: 54
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:34:"Array of GET parameters to include";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:360;s:13:"content_lines";i:12;s:6:"atLine";i:2246;}i:163;a:7:{s:6:"header";s:47:"function linkThisUrl($url,$getParams=array())  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:251:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:34:"Array of GET parameters to include";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:360;s:13:"content_lines";i:12;s:6:"atLine";i:2268;}i:163;a:7:{s:6:"header";s:47:"function linkThisUrl($url,$getParams=array())  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:251:"
 
 Takes a full URL, $url, possibly with a querystring and overlays the $getParams arrays values onto the quirystring, packs it all together and returns the URL again.
 So basically it adds the parameters in $getParams to an existing URL, $url
 Usage: 2
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"URL string";}i:1;a:2:{i:0;s:5:"array";i:1;s:90:"Array of key/value pairs for get parameters to add/overrule with. Can be multidimensional.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:32:"Output URL with added getParams.";}}s:7:"content";s:0:"";s:12:"content_size";i:297;s:13:"content_lines";i:10;s:6:"atLine";i:2268;}i:165;a:7:{s:6:"header";s:34:"function getIndpEnv($getEnvName)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:291:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"URL string";}i:1;a:2:{i:0;s:5:"array";i:1;s:90:"Array of key/value pairs for get parameters to add/overrule with. Can be multidimensional.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:32:"Output URL with added getParams.";}}s:7:"content";s:0:"";s:12:"content_size";i:297;s:13:"content_lines";i:10;s:6:"atLine";i:2290;}i:165;a:7:{s:6:"header";s:34:"function getIndpEnv($getEnvName)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:291:"
 
 Abstraction method which returns System Environment Variables regardless of server OS, CGI/MODULE version etc. Basically this is SERVER variables for most of them.
 This should be used instead of getEnv() and HTTP_SERVER_VARS/ENV_VARS to get reliable values for all situations.
 
 Usage: 226
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:402:"Name of the "environment variable"/"server variable" you wish to use. Valid values are SCRIPT_NAME, SCRIPT_FILENAME, REQUEST_URI, PATH_INFO, REMOTE_ADDR, REMOTE_HOST, HTTP_REFERER, HTTP_HOST, HTTP_USER_AGENT, HTTP_ACCEPT_LANGUAGE, QUERY_STRING, TYPO3_DOCUMENT_ROOT, TYPO3_HOST_ONLY, TYPO3_HOST_ONLY, TYPO3_REQUEST_HOST, TYPO3_REQUEST_URL, TYPO3_REQUEST_SCRIPT, TYPO3_REQUEST_DIR, TYPO3_SITE_URL, _ARRAY";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:67:"Value based on the input key, independent of server/os environment.";}}s:7:"content";s:0:"";s:12:"content_size";i:8036;s:13:"content_lines";i:202;s:6:"atLine";i:2288;}i:167;a:8:{s:6:"header";s:78:"function getFileAbsFileName($filename,$onlyRelative=1,$relToTYPO3_mainDir=0)   {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:24:"TYPO3 SPECIFIC FUNCTIONS";}s:4:"cDat";a:3:{s:4:"text";s:102:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:402:"Name of the "environment variable"/"server variable" you wish to use. Valid values are SCRIPT_NAME, SCRIPT_FILENAME, REQUEST_URI, PATH_INFO, REMOTE_ADDR, REMOTE_HOST, HTTP_REFERER, HTTP_HOST, HTTP_USER_AGENT, HTTP_ACCEPT_LANGUAGE, QUERY_STRING, TYPO3_DOCUMENT_ROOT, TYPO3_HOST_ONLY, TYPO3_HOST_ONLY, TYPO3_REQUEST_HOST, TYPO3_REQUEST_URL, TYPO3_REQUEST_SCRIPT, TYPO3_REQUEST_DIR, TYPO3_SITE_URL, _ARRAY";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:67:"Value based on the input key, independent of server/os environment.";}}s:7:"content";s:0:"";s:12:"content_size";i:8036;s:13:"content_lines";i:202;s:6:"atLine";i:2310;}i:167;a:8:{s:6:"header";s:78:"function getFileAbsFileName($filename,$onlyRelative=1,$relToTYPO3_mainDir=0)   {";s:11:"parentClass";s:9:"t3lib_div";s:11:"sectionText";a:1:{i:0;s:24:"TYPO3 SPECIFIC FUNCTIONS";}s:4:"cDat";a:3:{s:4:"text";s:102:"
 
 Returns the absolute filename of $filename.
 Decodes the prefix EXT: for TYPO3 Extensions.
 
 Usage: 9
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:39:"The input filename/filepath to evaluate";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:120:"If $onlyRelative is set (which it is by default), then only return values relative to the current PATH_site is accepted.";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:139:"If $relToTYPO3_mainDir is set, then relative paths are relative to PATH_typo3 constant - otherwise (default) they are relative to PATH_site";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:76:"Returns the absolute filename of $filename IF valid, otherwise blank string.";}}s:7:"content";s:0:"";s:12:"content_size";i:869;s:13:"content_lines";i:24;s:6:"atLine";i:2502;}i:169;a:7:{s:6:"header";s:33:"function validPathStr($theFile)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:262:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:39:"The input filename/filepath to evaluate";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:120:"If $onlyRelative is set (which it is by default), then only return values relative to the current PATH_site is accepted.";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:139:"If $relToTYPO3_mainDir is set, then relative paths are relative to PATH_typo3 constant - otherwise (default) they are relative to PATH_site";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:76:"Returns the absolute filename of $filename IF valid, otherwise blank string.";}}s:7:"content";s:0:"";s:12:"content_size";i:869;s:13:"content_lines";i:24;s:6:"atLine";i:2524;}i:169;a:7:{s:6:"header";s:33:"function validPathStr($theFile)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:262:"
 
 Returns true if no '//', '..' or '\' is in the $theFile
 This should make sure that the path is not pointing 'backwards' and further doesn't contain double/back slashes.
 So it's compatible with  the UNIX style path strings valid for TYPO3 internally.
 
 Usage: 8
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:48:"True, if no '//', '..' or '\' is in the $theFile";}}s:7:"content";s:0:"";s:12:"content_size";i:100;s:13:"content_lines";i:3;s:6:"atLine";i:2537;}i:171;a:7:{s:6:"header";s:27:"function isAbsPath($path)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:136:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:48:"True, if no '//', '..' or '\' is in the $theFile";}}s:7:"content";s:0:"";s:12:"content_size";i:100;s:13:"content_lines";i:3;s:6:"atLine";i:2559;}i:171;a:7:{s:6:"header";s:27:"function isAbsPath($path)  {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:136:"
 
 Checks if the $path is absolute or relative (detecting either '/' or 'x:/' as first part of string) and returns true if so.
 
 Usage: 9
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:83;s:13:"content_lines";i:3;s:6:"atLine";i:2549;}i:173;a:7:{s:6:"header";s:34:"function isAllowedAbsPath($path)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:124:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:83;s:13:"content_lines";i:3;s:6:"atLine";i:2571;}i:173;a:7:{s:6:"header";s:34:"function isAllowedAbsPath($path)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:124:"
 
 Returns true if the path is absolute, without backpath '..' and within the PATH_site OR within the lockRootPath
 
 Usage: 1
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:310;s:13:"content_lines";i:9;s:6:"atLine";i:2561;}i:175;a:7:{s:6:"header";s:54:"function verifyFilenameAgainstDenyPattern($filename)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:91:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:310;s:13:"content_lines";i:9;s:6:"atLine";i:2583;}i:175;a:7:{s:6:"header";s:54:"function verifyFilenameAgainstDenyPattern($filename)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:91:"
 
 Verifies the input filename againts the 'fileDenyPattern'. Returns true if OK.
 
 Usage: 2
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:289;s:13:"content_lines";i:7;s:6:"atLine";i:2579;}i:177;a:7:{s:6:"header";s:49:"function stdAuthCode($uid_or_record,$fields='')     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:77:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath to evaluate";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:289;s:13:"content_lines";i:7;s:6:"atLine";i:2601;}i:177;a:7:{s:6:"header";s:49:"function stdAuthCode($uid_or_record,$fields='')     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:77:"
 
 standard authentication code - can't remember what it's used for.
 Usage: 2
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:31:"Uid (integer) or record (array)";}i:1;a:2:{i:0;s:6:"string";i:1;s:48:"List of fields from the record if that is given.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:20:"MD5 hash of 8 chars.";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:519;s:13:"content_lines";i:21;s:6:"atLine";i:2596;}i:179;a:7:{s:6:"header";s:26:"function loadTCA($table)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:290:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:31:"Uid (integer) or record (array)";}i:1;a:2:{i:0;s:6:"string";i:1;s:48:"List of fields from the record if that is given.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:20:"MD5 hash of 8 chars.";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:519;s:13:"content_lines";i:21;s:6:"atLine";i:2618;}i:179;a:7:{s:6:"header";s:26:"function loadTCA($table)     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:290:"
 
 Loads the $TCA (Table Configuration Array) for the $table
 
@@ -1466,45 +1470,45 @@ Requirements:
 2) columns must not be an array (which it is always if whole table loaded), and
 3) there is a value for dynamicConfigFile (filename in typo3conf)
 Usage: 92
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:73:"Table name for which to load the full TCA array part into the global $TCA";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:614;s:13:"content_lines";i:10;s:6:"atLine";i:2630;}i:181;a:7:{s:6:"header";s:62:"function resolveSheetDefInDS($dataStructArray,$sheet='sDEF')     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:270:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:73:"Table name for which to load the full TCA array part into the global $TCA";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:614;s:13:"content_lines";i:10;s:6:"atLine";i:2652;}i:181;a:7:{s:6:"header";s:62:"function resolveSheetDefInDS($dataStructArray,$sheet='sDEF')     {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:270:"
 
 Looks for a sheet-definition in the input data structure array. If found it will return the data structure for the sheet given as $sheet (if found). 
 If the sheet definition is in an external file that file is parsed and the data structure inside of that is returned.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:100:"Input data structure, possibly with a sheet-definition and references to external data source files.";}i:1;a:2:{i:0;s:6:"string";i:1;s:32:"The sheet to return, preferably.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:193:"An array with two num. keys: key0: The data structure is returned in this key (array) UNLESS an error happend in which case an error string is returned (string). key1: The used sheet key value!";}}s:7:"content";s:0:"";s:12:"content_size";i:621;s:13:"content_lines";i:20;s:6:"atLine";i:2649;}i:183;a:7:{s:6:"header";s:49:"function resolveAllSheetsInDS($dataStructArray)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:145:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:100:"Input data structure, possibly with a sheet-definition and references to external data source files.";}i:1;a:2:{i:0;s:6:"string";i:1;s:32:"The sheet to return, preferably.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:193:"An array with two num. keys: key0: The data structure is returned in this key (array) UNLESS an error happend in which case an error string is returned (string). key1: The used sheet key value!";}}s:7:"content";s:0:"";s:12:"content_size";i:621;s:13:"content_lines";i:20;s:6:"atLine";i:2671;}i:183;a:7:{s:6:"header";s:49:"function resolveAllSheetsInDS($dataStructArray)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:145:"
 
 Resolves ALL sheet definitions in dataStructArray
 If no sheet is found, then the default "sDEF" will be created with the dataStructure inside.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:100:"Input data structure, possibly with a sheet-definition and references to external data source files.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:57:"Output data structure with all sheets resolved as arrays.";}}s:7:"content";s:0:"";s:12:"content_size";i:439;s:13:"content_lines";i:15;s:6:"atLine";i:2677;}i:185;a:7:{s:6:"header";s:84:"function callUserFunction($funcName,&$params,&$ref,$checkPrefix='user_',$silent=0) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:142:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:100:"Input data structure, possibly with a sheet-definition and references to external data source files.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:57:"Output data structure with all sheets resolved as arrays.";}}s:7:"content";s:0:"";s:12:"content_size";i:439;s:13:"content_lines";i:15;s:6:"atLine";i:2699;}i:185;a:7:{s:6:"header";s:84:"function callUserFunction($funcName,&$params,&$ref,$checkPrefix='user_',$silent=0) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:142:"
 
 Calls a userdefined function/method in class
 Such a function/method should look like this: "function proc(&$params, &$ref)  {...}"
 
 Usage: 3
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:49:"Method reference, [class]->[method] or [function]";}i:1;a:2:{i:0;s:5:"mixed";i:1;s:61:"Parameters to be pass along (typically an array) (REFERENCE!)";}i:2;a:2:{i:0;s:5:"mixed";i:1;s:103:"Reference to be passed along (typically "$this" - being a reference to the calling object) (REFERENCE!)";}i:3;a:2:{i:0;s:6:"string";i:1;s:41:"Required prefix of class or function name";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:76:"If set, not debug() error message is shown if class/function is not present.";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:33:"Content from method/function call";}}s:7:"content";s:0:"";s:12:"content_size";i:995;s:13:"content_lines";i:29;s:6:"atLine";i:2706;}i:187;a:7:{s:6:"header";s:35:"function makeInstance($className)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:229:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:49:"Method reference, [class]->[method] or [function]";}i:1;a:2:{i:0;s:5:"mixed";i:1;s:61:"Parameters to be pass along (typically an array) (REFERENCE!)";}i:2;a:2:{i:0;s:5:"mixed";i:1;s:103:"Reference to be passed along (typically "$this" - being a reference to the calling object) (REFERENCE!)";}i:3;a:2:{i:0;s:6:"string";i:1;s:41:"Required prefix of class or function name";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:76:"If set, not debug() error message is shown if class/function is not present.";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:33:"Content from method/function call";}}s:7:"content";s:0:"";s:12:"content_size";i:995;s:13:"content_lines";i:29;s:6:"atLine";i:2728;}i:187;a:7:{s:6:"header";s:35:"function makeInstance($className)        {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:229:"
 
 Make instance of class
 Takes the class-extensions API of TYPO3 into account
 Please USE THIS instead of the PHP "new" keyword. Eg. "$obj = new myclass;" should be "$obj = t3lib_div::makeInstance("myclass")" instead!
 
 Usage: 455
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:25:"Class name to instantiate";}}s:6:"return";a:2:{i:0;s:6:"object";i:1;s:10:"The object";}}s:7:"content";s:0:"";s:12:"content_size";i:139;s:13:"content_lines";i:7;s:6:"atLine";i:2746;}i:189;a:7:{s:6:"header";s:88:"function makeInstanceService($serviceType, $serviceSubType='', $excludeServiceKeys='')       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:84:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:25:"Class name to instantiate";}}s:6:"return";a:2:{i:0;s:6:"object";i:1;s:10:"The object";}}s:7:"content";s:0:"";s:12:"content_size";i:139;s:13:"content_lines";i:7;s:6:"atLine";i:2768;}i:189;a:7:{s:6:"header";s:88:"function makeInstanceService($serviceType, $serviceSubType='', $excludeServiceKeys='')       {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:84:"
 
 Find the best service and check if it works.
 Returns object of the service class.
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:30:"Type of service (service key).";}i:1;a:2:{i:0;s:6:"string";i:1;s:65:"Sub type like file extensions or similar. Defined by the service.";}i:2;a:2:{i:0;s:6:"string";i:1;s:73:"List of service keys which should be exluded in the search for a service.";}}s:6:"return";a:2:{i:0;s:6:"object";i:1;s:49:"The service object or an array with error info's.";}s:5:"other";a:1:{i:0;s:41:"@author   René Fritz <r.fritz@colorcube.de>";}s:11:"other_index";a:1:{s:7:"@author";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}}}s:7:"content";s:0:"";s:12:"content_size";i:662;s:13:"content_lines";i:25;s:6:"atLine";i:2764;}i:191;a:7:{s:6:"header";s:44:"function makeInstanceClassName($className)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:100:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:30:"Type of service (service key).";}i:1;a:2:{i:0;s:6:"string";i:1;s:65:"Sub type like file extensions or similar. Defined by the service.";}i:2;a:2:{i:0;s:6:"string";i:1;s:73:"List of service keys which should be exluded in the search for a service.";}}s:6:"return";a:2:{i:0;s:6:"object";i:1;s:49:"The service object or an array with error info's.";}s:5:"other";a:1:{i:0;s:41:"@author   René Fritz <r.fritz@colorcube.de>";}s:11:"other_index";a:1:{s:7:"@author";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}}}s:7:"content";s:0:"";s:12:"content_size";i:662;s:13:"content_lines";i:25;s:6:"atLine";i:2786;}i:191;a:7:{s:6:"header";s:44:"function makeInstanceClassName($className)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:100:"
 
 Return classname for new instance
 Takes the class-extensions API of TYPO3 into account
 
 Usage: 18
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:27:"Base Class name to evaluate";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:54:"Final class name to instantiate with "new [classname]"";}}s:7:"content";s:0:"";s:12:"content_size";i:109;s:13:"content_lines";i:3;s:6:"atLine";i:2799;}i:193;a:7:{s:6:"header";s:116:"function plainMailEncoded($email,$subject,$message,$headers='',$enc='',$charset='ISO-8859-1',$dontEncodeSubject=0)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:230:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:27:"Base Class name to evaluate";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:54:"Final class name to instantiate with "new [classname]"";}}s:7:"content";s:0:"";s:12:"content_size";i:109;s:13:"content_lines";i:3;s:6:"atLine";i:2821;}i:193;a:7:{s:6:"header";s:116:"function plainMailEncoded($email,$subject,$message,$headers='',$enc='',$charset='ISO-8859-1',$dontEncodeSubject=0)    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:230:"
 
 Simple substitute for the PHP function mail().
 The fifth parameter, $enc, will allow you to specify 'base64' encryption for the output (set $enc=base64)
 Further the output has the charset set to ISO-8859-1 by default.
 
 Usage: 4
-";s:5:"param";a:7:{i:0;a:2:{i:0;s:6:"string";i:1;s:51:"Email address to send to. (see PHP function mail())";}i:1;a:2:{i:0;s:6:"string";i:1;s:52:"Subject line, non-encoded. (see PHP function mail())";}i:2;a:2:{i:0;s:6:"string";i:1;s:55:"Message content, non-encoded. (see PHP function mail())";}i:3;a:2:{i:0;s:6:"string";i:1;s:29:"Headers, separated by chr(10)";}i:4;a:2:{i:0;s:6:"string";i:1;s:113:"Encoding type: "base64", "quoted-printable", "8bit". If blank, no encoding will be used, no encoding headers set.";}i:5;a:2:{i:0;s:6:"string";i:1;s:100:"Charset used in encoding-headers (only if $enc is set to a valid value which produces such a header)";}i:6;a:2:{i:0;s:7:"boolean";i:1;s:52:"If set, the content of $subject will not be encoded.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1330;s:13:"content_lines";i:34;s:6:"atLine";i:2819;}i:195;a:7:{s:6:"header";s:47:"function quoted_printable($string,$maxlen=76)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:419:"
+";s:5:"param";a:7:{i:0;a:2:{i:0;s:6:"string";i:1;s:51:"Email address to send to. (see PHP function mail())";}i:1;a:2:{i:0;s:6:"string";i:1;s:52:"Subject line, non-encoded. (see PHP function mail())";}i:2;a:2:{i:0;s:6:"string";i:1;s:55:"Message content, non-encoded. (see PHP function mail())";}i:3;a:2:{i:0;s:6:"string";i:1;s:29:"Headers, separated by chr(10)";}i:4;a:2:{i:0;s:6:"string";i:1;s:113:"Encoding type: "base64", "quoted-printable", "8bit". If blank, no encoding will be used, no encoding headers set.";}i:5;a:2:{i:0;s:6:"string";i:1;s:100:"Charset used in encoding-headers (only if $enc is set to a valid value which produces such a header)";}i:6;a:2:{i:0;s:7:"boolean";i:1;s:52:"If set, the content of $subject will not be encoded.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1330;s:13:"content_lines";i:34;s:6:"atLine";i:2841;}i:195;a:7:{s:6:"header";s:47:"function quoted_printable($string,$maxlen=76)   {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:419:"
 
 Implementation of quoted-printable encode.
 This functions is buggy. It seems that in the part where the lines are breaked every 76th character, that it fails if the break happens right in a quoted_printable encode character!
@@ -1512,23 +1516,23 @@ This functions is buggy. It seems that in the part where the lines are breaked e
 See RFC 1521, section 5.1 Quoted-Printable Content-Transfer-Encoding
 
 Usage: 2
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:17:"Content to encode";}i:1;a:2:{i:0;s:7:"integer";i:1;s:34:"Length of the lines, default is 76";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:21:"The QP encoded string";}}s:7:"content";s:0:"";s:12:"content_size";i:1130;s:13:"content_lines";i:30;s:6:"atLine";i:2866;}i:197;a:7:{s:6:"header";s:76:"function substUrlsInPlainText($message,$urlmode='76',$index_script_url='')    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:387:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:17:"Content to encode";}i:1;a:2:{i:0;s:7:"integer";i:1;s:34:"Length of the lines, default is 76";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:21:"The QP encoded string";}}s:7:"content";s:0:"";s:12:"content_size";i:1130;s:13:"content_lines";i:30;s:6:"atLine";i:2888;}i:197;a:7:{s:6:"header";s:76:"function substUrlsInPlainText($message,$urlmode='76',$index_script_url='')    {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:387:"
 
 Takes a clear-text message body for a plain text email, finds all 'http://' links and if they are longer than 76 chars they are converted to a shorter URL with a hash parameter. The real parameter is stored in the database and the hash-parameter/URL will be redirected to the real parameter when the link is clicked.
 This function is about preserving long links in messages.
 
 Usage: 3
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:15:"Message content";}i:1;a:2:{i:0;s:6:"string";i:1;s:23:"URL mode; "76" or "all"";}i:2;a:2:{i:0;s:6:"string";i:1;s:43:"URL of index script (see makeRedirectUrl())";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:25:"Processed message content";}s:5:"other";a:1:{i:0;s:22:"@see makeRedirectUrl()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:18:"makeRedirectUrl() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:612;s:13:"content_lines";i:23;s:6:"atLine";i:2909;}i:199;a:4:{s:6:"header";s:60:"function makeRedirectUrl($inUrl,$l=0,$index_script_url='') {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:58:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:15:"Message content";}i:1;a:2:{i:0;s:6:"string";i:1;s:23:"URL mode; "76" or "all"";}i:2;a:2:{i:0;s:6:"string";i:1;s:43:"URL of index script (see makeRedirectUrl())";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:25:"Processed message content";}s:5:"other";a:1:{i:0;s:22:"@see makeRedirectUrl()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:18:"makeRedirectUrl() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:612;s:13:"content_lines";i:23;s:6:"atLine";i:2931;}i:199;a:4:{s:6:"header";s:60:"function makeRedirectUrl($inUrl,$l=0,$index_script_url='') {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:5:{s:4:"text";s:58:"
 
 Subfunction for substUrlsInPlainText() above.
 
 Usage: 2
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:9:"Input URL";}i:1;a:2:{i:0;s:7:"integer";i:1;s:23:"URL string length limit";}i:2;a:2:{i:0;s:6:"string";i:1;s:142:"URL of "index script" - the prefix of the "?RDCT=..." parameter. If not supplyed it will default to t3lib_div::getIndpEnv('TYPO3_REQUEST_DIR')";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:13:"Processed URL";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:6:"atLine";i:2944;}i:201;a:7:{s:6:"header";s:38:"function freetypeDpiComp($font_size) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:57:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:9:"Input URL";}i:1;a:2:{i:0;s:7:"integer";i:1;s:23:"URL string length limit";}i:2;a:2:{i:0;s:6:"string";i:1;s:142:"URL of "index script" - the prefix of the "?RDCT=..." parameter. If not supplyed it will default to t3lib_div::getIndpEnv('TYPO3_REQUEST_DIR')";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:13:"Processed URL";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:6:"atLine";i:2966;}i:201;a:7:{s:6:"header";s:38:"function freetypeDpiComp($font_size) {";s:11:"parentClass";s:9:"t3lib_div";s:4:"cDat";a:3:{s:4:"text";s:57:"
 
 Function to compensate for FreeType2 96 dpi
 
 Usage: 16
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:35:"Fontsize for freetype function call";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:74:"Compensated fontsize based on $GLOBALS['TYPO3_CONF_VARS']['GFX']['TTFdpi']";}}s:7:"content";s:0:"";s:12:"content_size";i:143;s:13:"content_lines";i:8;s:6:"atLine";i:2967;}}}s:14:"MD5_d27fb8aa89";a:4:{s:8:"filename";s:22:"class.t3lib_extmgm.php";s:8:"filesize";i:38322;s:6:"header";a:5:{s:4:"text";s:164:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:35:"Fontsize for freetype function call";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:74:"Compensated fontsize based on $GLOBALS['TYPO3_CONF_VARS']['GFX']['TTFdpi']";}}s:7:"content";s:0:"";s:12:"content_size";i:143;s:13:"content_lines";i:8;s:6:"atLine";i:2989;}}}s:14:"MD5_d27fb8aa89";a:4:{s:8:"filename";s:22:"class.t3lib_extmgm.php";s:8:"filesize";i:38322;s:6:"header";a:5:{s:4:"text";s:164:"
 
 Extension Management functions
 
@@ -1701,7 +1705,7 @@ Evaluation relies on $TYPO3_LOADED_EXT['_CACHEFILE']
 
 Compiles/Creates the two cache-files in typo3conf/ based on $cacheFilePrefix
 Returns a array with the key "_CACHEFILE" set to the $cacheFilePrefix value
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:27:"Extension information array";}i:1;a:2:{i:0;s:6:"string";i:1;s:26:"Prefix for the cache files";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1072;s:13:"content_lines";i:34;s:6:"atLine";i:1010;}}}s:14:"MD5_042cc40614";a:4:{s:8:"filename";s:26:"class.t3lib_extobjbase.php";s:8:"filesize";i:11268;s:6:"header";a:5:{s:4:"text";s:1160:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:27:"Extension information array";}i:1;a:2:{i:0;s:6:"string";i:1;s:26:"Prefix for the cache files";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:9:"@internal";}s:11:"other_index";a:1:{s:9:"@internal";a:1:{i:0;s:1:" ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1072;s:13:"content_lines";i:34;s:6:"atLine";i:1010;}}}s:14:"MD5_042cc40614";a:4:{s:8:"filename";s:26:"class.t3lib_extobjbase.php";s:8:"filesize";i:11182;s:6:"header";a:5:{s:4:"text";s:1160:"
 
 Parent class for 'Extension Objects' in backend modules.
 Used for 'submodules' to other modules. Also called 'Function menu modules' in t3lib_extMgm. And now its even called 'Extension Objects'. Or 'Module functions'. Wish we had just one name. Or a name at all...(?) Thank God its not so advanced when it works...
@@ -1717,65 +1721,61 @@ In other words this class is used for backend modules which is not true backend
 The magic that binds this together is stored in the global variable $TBE_MODULES_EXT where extensions wanting to connect a module based on this class to an existing backend module store configuration which consists of the classname, script-path and a label (title/name)
 For more information about this, please see the large example comment for the class t3lib_SCbase. This will show the principle of a 'level-1' connection.
 The more advanced example - having two layers as it is done by the 'func_wizards' extension with the 'web_info' module - can be seen in the comment above.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:4:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";i:3;s:102:"@see t3lib_SCbase,tx_funcwizards_webfunc::init(), tx_funcwizards_webfunc, tx_wizardsortpages_webfunc_2";}s:11:"other_index";a:4:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:97:"t3lib_SCbase,tx_funcwizards_webfunc::init(), tx_funcwizards_webfunc, tx_wizardsortpages_webfunc_2";}}}s:7:"content";s:0:"";s:12:"content_size";i:1237;s:13:"content_lines";i:43;s:6:"atLine";i:145;}i:3;a:7:{s:6:"header";s:29:"function init(&$pObj,$conf)  {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:24:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:4:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";i:3;s:102:"@see t3lib_SCbase,tx_funcwizards_webfunc::init(), tx_funcwizards_webfunc, tx_wizardsortpages_webfunc_2";}s:11:"other_index";a:4:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:97:"t3lib_SCbase,tx_funcwizards_webfunc::init(), tx_funcwizards_webfunc, tx_wizardsortpages_webfunc_2";}}}s:7:"content";s:0:"";s:12:"content_size";i:1237;s:13:"content_lines";i:43;s:6:"atLine";i:143;}i:3;a:7:{s:6:"header";s:29:"function init(&$pObj,$conf)  {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:24:"
 
 Initialize the object
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"object";i:1;s:112:"A reference to the parent (calling) object (which is probably an instance of an extension class to t3lib_SCbase)";}i:1;a:2:{i:0;s:5:"array";i:1;s:73:"The configuration set for this module - from global array TBE_MODULES_EXT";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:32:"@see t3lib_SCbase::checkExtObj()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:28:"t3lib_SCbase::checkExtObj() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:507;s:13:"content_lines";i:17;s:6:"atLine";i:197;}i:5;a:7:{s:6:"header";s:40:"function handleExternalFunctionValue()       {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:188:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"object";i:1;s:112:"A reference to the parent (calling) object (which is probably an instance of an extension class to t3lib_SCbase)";}i:1;a:2:{i:0;s:5:"array";i:1;s:73:"The configuration set for this module - from global array TBE_MODULES_EXT";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:32:"@see t3lib_SCbase::checkExtObj()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:28:"t3lib_SCbase::checkExtObj() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:507;s:13:"content_lines";i:17;s:6:"atLine";i:195;}i:5;a:7:{s:6:"header";s:40:"function handleExternalFunctionValue()       {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:188:"
 
 If $this->function_key is set (which means there are two levels of object connectivity) then $this->extClassConf is loaded with the TBE_MODULES_EXT configuration for that sub-sub-module
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:50:"@see $function_key, tx_funcwizards_webfunc::init()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:45:"$function_key, tx_funcwizards_webfunc::init()";}}}s:7:"content";s:0:"";s:12:"content_size";i:528;s:13:"content_lines";i:10;s:6:"atLine";i:221;}i:7;a:7:{s:6:"header";s:25:"function incLocalLang()  {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:3:{s:4:"text";s:139:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:50:"@see $function_key, tx_funcwizards_webfunc::init()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:45:"$function_key, tx_funcwizards_webfunc::init()";}}}s:7:"content";s:0:"";s:12:"content_size";i:528;s:13:"content_lines";i:10;s:6:"atLine";i:219;}i:7;a:7:{s:6:"header";s:25:"function incLocalLang()  {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:3:{s:4:"text";s:139:"
 
 Including any locallang file configured and merging its content over the current global LOCAL_LANG array (which is EXPECTED to exist!!!)
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:252;s:13:"content_lines";i:6;s:6:"atLine";i:237;}i:9;a:7:{s:6:"header";s:24:"function checkExtObj()       {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:38:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:252;s:13:"content_lines";i:6;s:6:"atLine";i:235;}i:9;a:7:{s:6:"header";s:24:"function checkExtObj()       {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:38:"
 
 Same as t3lib_SCbase::checkExtObj()
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:32:"@see t3lib_SCbase::checkExtObj()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:28:"t3lib_SCbase::checkExtObj() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:363;s:13:"content_lines";i:9;s:6:"atLine";i:250;}i:11;a:4:{s:6:"header";s:26:"function extObjContent()    {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:3:{s:4:"text";s:74:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:32:"@see t3lib_SCbase::checkExtObj()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:28:"t3lib_SCbase::checkExtObj() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:363;s:13:"content_lines";i:9;s:6:"atLine";i:248;}i:11;a:4:{s:6:"header";s:26:"function extObjContent()    {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:3:{s:4:"text";s:74:"
 
 Calls the main function inside ANOTHER sub-submodule which might exist.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:6:"atLine";i:265;}i:13;a:7:{s:6:"header";s:20:"function modMenu()  {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:237:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:6:"atLine";i:263;}i:13;a:7:{s:6:"header";s:20:"function modMenu()  {";s:11:"parentClass";s:16:"t3lib_extobjbase";s:4:"cDat";a:5:{s:4:"text";s:237:"
 
 Dummy function - but is used to set up additional menu items for this submodule.
 For an example see the extension 'cms' where the 'web_info' submodule is defined in cms/web_info/class.tx_cms_webinfo.php, tx_cms_webinfo_page::modMenu()
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:82:"A MOD_MENU array which will be merged together with the one from the parent object";}s:5:"other";a:1:{i:0;s:43:"@see init(), tx_cms_webinfo_page::modMenu()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:38:"init(), tx_cms_webinfo_page::modMenu()";}}}s:7:"content";s:0:"";s:12:"content_size";i:25;s:13:"content_lines";i:3;s:6:"atLine";i:276;}}}s:14:"MD5_85f9936e27";a:4:{s:8:"filename";s:26:"class.t3lib_foldertree.php";s:8:"filesize";i:10910;s:6:"header";a:5:{s:4:"text";s:103:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:82:"A MOD_MENU array which will be merged together with the one from the parent object";}s:5:"other";a:1:{i:0;s:43:"@see init(), tx_cms_webinfo_page::modMenu()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:38:"init(), tx_cms_webinfo_page::modMenu()";}}}s:7:"content";s:0:"";s:12:"content_size";i:25;s:13:"content_lines";i:3;s:6:"atLine";i:274;}}}s:14:"MD5_85f9936e27";a:4:{s:8:"filename";s:26:"class.t3lib_foldertree.php";s:8:"filesize";i:10586;s:6:"header";a:5:{s:4:"text";s:103:"
 
 Extension class for the t3lib_treeView class, specially made for browsing folders in the File module
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:14:"@package TYPO3";i:3;s:17:"@subpackage t3lib";i:4;s:25:"@see class t3lib_treeView";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:20:"class t3lib_treeView";}}}s:3:"DAT";a:11:{i:1;a:8:{s:6:"header";s:48:"class t3lib_folderTree extends t3lib_treeView  {";s:5:"class";i:1;s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:5:{s:4:"text";s:103:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:14:"@package TYPO3";i:3;s:17:"@subpackage t3lib";i:4;s:25:"@see class t3lib_treeView";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:20:"class t3lib_treeView";}}}s:3:"DAT";a:10:{i:1;a:8:{s:6:"header";s:48:"class t3lib_folderTree extends t3lib_treeView  {";s:5:"class";i:1;s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:5:{s:4:"text";s:103:"
 
 Extension class for the t3lib_treeView class, specially made for browsing folders in the File module
 ";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:14:"@package TYPO3";i:3;s:17:"@subpackage t3lib";i:4;s:25:"@see class t3lib_treeView";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:20:"class t3lib_treeView";}}}s:7:"content";s:0:"";s:12:"content_size";i:2;s:13:"content_lines";i:1;s:6:"atLine";i:80;}i:3;a:7:{s:6:"header";s:29:"function t3lib_folderTree()        {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:36:"
 
 Constructor function of the class
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:177;s:13:"content_lines";i:9;s:6:"atLine";i:87;}i:5;a:7:{s:6:"header";s:33:"function wrapTitle($title,$row)       {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:4:{s:4:"text";s:73:"
-
-Wrapping $title in a-tags.
-$row is the array with path and other info.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:12:"Title string";}i:1;a:2:{i:0;s:6:"string";i:1;s:11:"Item record";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:178;s:13:"content_lines";i:4;s:6:"atLine";i:106;}i:7;a:7:{s:6:"header";s:31:"function wrapIcon($icon,$row)      {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:4:{s:4:"text";s:27:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:178;s:13:"content_lines";i:9;s:6:"atLine";i:87;}i:5;a:7:{s:6:"header";s:31:"function wrapIcon($icon,$row) {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:4:{s:4:"text";s:27:"
 
 Wrapping the folder icon
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"The image tag for the icon";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The row for the current element";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"The processed icon input value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:630;s:13:"content_lines";i:13;s:6:"atLine";i:119;}i:9;a:7:{s:6:"header";s:20:"function getId($v) {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:69:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"The image tag for the icon";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The row for the current element";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"The processed icon input value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:669;s:13:"content_lines";i:13;s:6:"atLine";i:105;}i:7;a:7:{s:6:"header";s:20:"function getId($v) {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:69:"
 
 Returns the id from the record - for folders, this is an md5 hash.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:12:"Record array";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:22:"The "uid" field value.";}}s:7:"content";s:0:"";s:12:"content_size";i:45;s:13:"content_lines";i:3;s:6:"atLine";i:139;}i:11;a:7:{s:6:"header";s:28:"function getJumpToParm($v) {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:36:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:12:"Record array";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:22:"The "uid" field value.";}}s:7:"content";s:0:"";s:12:"content_size";i:45;s:13:"content_lines";i:3;s:6:"atLine";i:125;}i:9;a:7:{s:6:"header";s:28:"function getJumpToParm($v) {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:36:"
 
 Returns jump-url parameter value.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:17:"The record array.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:23:"The jump-url parameter.";}}s:7:"content";s:0:"";s:12:"content_size";i:48;s:13:"content_lines";i:3;s:6:"atLine";i:149;}i:13;a:7:{s:6:"header";s:41:"function getTitleStr($row,$titleLen=30)     {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:166:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:17:"The record array.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:23:"The jump-url parameter.";}}s:7:"content";s:0:"";s:12:"content_size";i:48;s:13:"content_lines";i:3;s:6:"atLine";i:135;}i:11;a:7:{s:6:"header";s:41:"function getTitleStr($row,$titleLen=30)     {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:166:"
 
 Returns the title for the input record. If blank, a "no title" labele (localized) will be returned. 
 '_title' is used for setting an alternative title for folders.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:66:"The input row array (where the key "_title" is used for the title)";}i:1;a:2:{i:0;s:7:"integer";i:1;s:17:"Title length (30)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:10:"The title.";}}s:7:"content";s:0:"";s:12:"content_size";i:85;s:13:"content_lines";i:3;s:6:"atLine";i:161;}i:15;a:7:{s:6:"header";s:29:"function getBrowsableTree()    {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:157:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:66:"The input row array (where the key "_title" is used for the title)";}i:1;a:2:{i:0;s:7:"integer";i:1;s:17:"Title length (30)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:10:"The title.";}}s:7:"content";s:0:"";s:12:"content_size";i:85;s:13:"content_lines";i:3;s:6:"atLine";i:147;}i:13;a:7:{s:6:"header";s:29:"function getBrowsableTree()    {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:157:"
 
 Will create and return the HTML code for a browsable tree of folders.
 Is based on the mounts found in the internal array ->MOUNTS (set in the constructor)
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:32:"HTML code for the browsable tree";}}s:7:"content";s:0:"";s:12:"content_size";i:1788;s:13:"content_lines";i:53;s:6:"atLine";i:171;}i:17;a:7:{s:6:"header";s:64:"function getFolderTree($files_path, $depth=999, $depthData='') {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:5:{s:4:"text";s:32:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:32:"HTML code for the browsable tree";}}s:7:"content";s:0:"";s:12:"content_size";i:1808;s:13:"content_lines";i:53;s:6:"atLine";i:157;}i:15;a:7:{s:6:"header";s:64:"function getFolderTree($files_path, $depth=999, $depthData='') {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:5:{s:4:"text";s:32:"
 
 Fetches the data for the tree
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Abs file path";}i:1;a:2:{i:0;s:7:"integer";i:1;s:29:"Max depth (recursivity limit)";}i:2;a:2:{i:0;s:6:"string";i:1;s:37:"HTML-code prefix for recursive calls.";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:31:"The count of items on the level";}s:5:"other";a:1:{i:0;s:23:"@see getBrowsableTree()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:19:"getBrowsableTree() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1969;s:13:"content_lines";i:72;s:6:"atLine";i:234;}i:19;a:4:{s:6:"header";s:32:"function getCount($files_path)      {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:51:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Abs file path";}i:1;a:2:{i:0;s:7:"integer";i:1;s:29:"Max depth (recursivity limit)";}i:2;a:2:{i:0;s:6:"string";i:1;s:37:"HTML-code prefix for recursive calls.";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:31:"The count of items on the level";}s:5:"other";a:1:{i:0;s:23:"@see getBrowsableTree()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:19:"getBrowsableTree() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1995;s:13:"content_lines";i:73;s:6:"atLine";i:220;}i:17;a:4:{s:6:"header";s:32:"function getCount($files_path)      {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:3:{s:4:"text";s:51:"
 
 Counts the number of directories in a file path.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"File path.";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}}s:6:"atLine";i:313;}i:21;a:7:{s:6:"header";s:37:"function initializePositionSaving()     {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:4:{s:4:"text";s:88:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"File path.";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}}s:6:"atLine";i:300;}i:19;a:7:{s:6:"header";s:37:"function initializePositionSaving()     {";s:11:"parentClass";s:16:"t3lib_folderTree";s:4:"cDat";a:4:{s:4:"text";s:88:"
 
 Get stored tree structure AND updating it if needed according to incoming PM GET var.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:1133;s:13:"content_lines";i:31;s:6:"atLine";i:329;}}}s:14:"MD5_c3a82d6efd";a:4:{s:8:"filename";s:24:"class.t3lib_formmail.php";s:8:"filesize";i:6911;s:6:"header";a:5:{s:4:"text";s:92:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:1133;s:13:"content_lines";i:31;s:6:"atLine";i:316;}}}s:14:"MD5_c3a82d6efd";a:4:{s:8:"filename";s:24:"class.t3lib_formmail.php";s:8:"filesize";i:6911;s:6:"header";a:5:{s:4:"text";s:92:"
 
 Formmail class, used by the TYPO3 "cms" extension (default frontend) to send email forms.
 ";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:4:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";i:3;s:49:"@see tslib_fe::sendFormmail(), t3lib/formmail.php";}s:11:"other_index";a:4:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:44:"tslib_fe::sendFormmail(), t3lib/formmail.php";}}}s:3:"DAT";a:3:{i:1;a:8:{s:6:"header";s:45:"class t3lib_formmail extends t3lib_htmlmail {";s:5:"class";i:1;s:11:"parentClass";s:14:"t3lib_formmail";s:4:"cDat";a:5:{s:4:"text";s:92:"
@@ -1802,7 +1802,7 @@ Fields:
 ";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:48:"Contains values for the field names listed above";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:41:"Whether to base64 encode the mail content";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:6:"atLine";i:93;}i:5;a:7:{s:6:"header";s:42:"function addAttachment($file, $filename)       {";s:11:"parentClass";s:14:"t3lib_formmail";s:4:"cDat";a:4:{s:4:"text";s:33:"
 
 Adds an attachment to the mail
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:50:"The absolute path to the file to add as attachment";}i:1;a:2:{i:0;s:6:"string";i:1;s:107:"The files original filename (not necessarily the same as the current since this could be uploaded files...)";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:39:"True if the file existed and was added.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:953;s:13:"content_lines";i:22;s:6:"atLine";i:167;}}}s:14:"MD5_6d3083c6db";a:4:{s:8:"filename";s:25:"class.t3lib_iconworks.php";s:8:"filesize";i:16358;s:6:"header";a:5:{s:4:"text";s:401:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:50:"The absolute path to the file to add as attachment";}i:1;a:2:{i:0;s:6:"string";i:1;s:107:"The files original filename (not necessarily the same as the current since this could be uploaded files...)";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:39:"True if the file existed and was added.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:953;s:13:"content_lines";i:22;s:6:"atLine";i:167;}}}s:14:"MD5_6d3083c6db";a:4:{s:8:"filename";s:25:"class.t3lib_iconworks.php";s:8:"filesize";i:16368;s:6:"header";a:5:{s:4:"text";s:401:"
 
 Icon generation, backend
 This library has functions that returns - and if necessary creates - the icon for an element in TYPO3
@@ -1836,18 +1836,18 @@ ALL functions called without making a class instance, eg. "t3lib_iconWorks::getI
 
 Returns an icon image tag, 18x16 pixels, based on input information. 
 This function is recommended to use in your backend modules.
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"The table name";}i:1;a:2:{i:0;s:5:"array";i:1;s:127:"The table row ("enablefields" are at least needed for correct icon display and for pages records some more fields in addition!)";}i:2;a:2:{i:0;s:6:"string";i:1;s:75:"The backpath to the main TYPO3 directory (relative path back to PATH_typo3)";}i:3;a:2:{i:0;s:6:"string";i:1;s:39:"Additional attributes for the image tag";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:39:"If set, the icon will be grayed/shaded.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:9:"<img>-tag";}s:5:"other";a:1:{i:0;s:14:"@see getIcon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:10:"getIcon() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:234;s:13:"content_lines";i:6;s:6:"atLine";i:97;}i:5;a:7:{s:6:"header";s:49:"function getIcon($table,$row=array(),$shaded=0)      {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:5:{s:4:"text";s:99:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"The table name";}i:1;a:2:{i:0;s:5:"array";i:1;s:127:"The table row ("enablefields" are at least needed for correct icon display and for pages records some more fields in addition!)";}i:2;a:2:{i:0;s:6:"string";i:1;s:75:"The backpath to the main TYPO3 directory (relative path back to PATH_typo3)";}i:3;a:2:{i:0;s:6:"string";i:1;s:39:"Additional attributes for the image tag";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:39:"If set, the icon will be grayed/shaded.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:9:"<img>-tag";}s:5:"other";a:1:{i:0;s:14:"@see getIcon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:10:"getIcon() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:241;s:13:"content_lines";i:6;s:6:"atLine";i:97;}i:5;a:7:{s:6:"header";s:49:"function getIcon($table,$row=array(),$shaded=0)      {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:5:{s:4:"text";s:99:"
 
 Creates the icon for input table/row
 Returns filename for the image icon, relative to PATH_typo3
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"The table name";}i:1;a:2:{i:0;s:5:"array";i:1;s:127:"The table row ("enablefields" are at least needed for correct icon display and for pages records some more fields in addition!)";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:39:"If set, the icon will be grayed/shaded.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:13:"Icon filename";}s:5:"other";a:1:{i:0;s:19:"@see getIconImage()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:15:"getIconImage() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2017;s:13:"content_lines";i:70;s:6:"atLine";i:114;}i:7;a:7:{s:6:"header";s:62:"function skinImg($backPath,$src,$wHattribs='',$outputMode=0)       {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:5:{s:4:"text";s:167:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"The table name";}i:1;a:2:{i:0;s:5:"array";i:1;s:127:"The table row ("enablefields" are at least needed for correct icon display and for pages records some more fields in addition!)";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:39:"If set, the icon will be grayed/shaded.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:13:"Icon filename";}s:5:"other";a:1:{i:0;s:19:"@see getIconImage()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:15:"getIconImage() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2020;s:13:"content_lines";i:71;s:6:"atLine";i:114;}i:7;a:7:{s:6:"header";s:62:"function skinImg($backPath,$src,$wHattribs='',$outputMode=0)       {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:5:{s:4:"text";s:167:"
 
 Returns the src=... for the input $src value OR any alternative found in $TBE_STYLES['skinImg']
 Used for skinning the TYPO3 backend with an alternative set of icons
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:37:"Current backpath to PATH_typo3 folder";}i:1;a:2:{i:0;s:6:"string";i:1;s:44:"Icon file name relative to PATH_typo3 folder";}i:2;a:2:{i:0;s:6:"string";i:1;s:59:"Default width/height, defined like 'width="12" height="14"'";}i:3;a:2:{i:0;s:7:"integer";i:1;s:112:"Mode: 0 (zero) is default and returns src/width/height. 1 returns value of src+backpath, 2 returns value of w/h.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:44:"Returns ' src="[backPath][src]" [wHattribs]'";}s:5:"other";a:1:{i:0;s:18:"@see skinImgFile()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:14:"skinImgFile() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2040;s:13:"content_lines";i:57;s:6:"atLine";i:196;}i:9;a:8:{s:6:"header";s:74:"function makeIcon($iconfile,$mode, $user, $protectSection=0,$absFile='')      {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:11:"sectionText";a:1:{i:0;s:15:"Other functions";}s:4:"cDat";a:4:{s:4:"text";s:51:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:37:"Current backpath to PATH_typo3 folder";}i:1;a:2:{i:0;s:6:"string";i:1;s:44:"Icon file name relative to PATH_typo3 folder";}i:2;a:2:{i:0;s:6:"string";i:1;s:59:"Default width/height, defined like 'width="12" height="14"'";}i:3;a:2:{i:0;s:7:"integer";i:1;s:112:"Mode: 0 (zero) is default and returns src/width/height. 1 returns value of src+backpath, 2 returns value of w/h.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:44:"Returns ' src="[backPath][src]" [wHattribs]'";}s:5:"other";a:1:{i:0;s:18:"@see skinImgFile()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:14:"skinImgFile() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2040;s:13:"content_lines";i:57;s:6:"atLine";i:197;}i:9;a:8:{s:6:"header";s:74:"function makeIcon($iconfile,$mode, $user, $protectSection=0,$absFile='')      {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:11:"sectionText";a:1:{i:0;s:15:"Other functions";}s:4:"cDat";a:4:{s:4:"text";s:51:"
 
 Creates the icon file for the function getIcon()
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:59:"Original unprocessed Icon file, relative path to PATH_typo3";}i:1;a:2:{i:0;s:6:"string";i:1;s:79:"Mode string, eg. "deleted" or "futuretiming" determining how the icon will look";}i:2;a:2:{i:0;s:7:"integer";i:1;s:51:"The number of the fe_group record uid if applicable";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:64:"Flag determines if the protected-section icon should be applied.";}i:4;a:2:{i:0;s:6:"string";i:1;s:52:"Absolute path to file from which to create the icon.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"Filename relative to PATH_typo3";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:3107;s:13:"content_lines";i:77;s:6:"atLine";i:265;}i:11;a:7:{s:6:"header";s:99:"function imagecopyresized(&$im, $cpImg, $Xstart, $Ystart, $cpImgCutX, $cpImgCutY, $w, $h, $w, $h)      {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:4:{s:4:"text";s:998:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:6:"string";i:1;s:59:"Original unprocessed Icon file, relative path to PATH_typo3";}i:1;a:2:{i:0;s:6:"string";i:1;s:79:"Mode string, eg. "deleted" or "futuretiming" determining how the icon will look";}i:2;a:2:{i:0;s:7:"integer";i:1;s:51:"The number of the fe_group record uid if applicable";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:64:"Flag determines if the protected-section icon should be applied.";}i:4;a:2:{i:0;s:6:"string";i:1;s:52:"Absolute path to file from which to create the icon.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"Filename relative to PATH_typo3";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:3107;s:13:"content_lines";i:77;s:6:"atLine";i:266;}i:11;a:7:{s:6:"header";s:99:"function imagecopyresized(&$im, $cpImg, $Xstart, $Ystart, $cpImgCutX, $cpImgCutY, $w, $h, $w, $h)      {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:4:{s:4:"text";s:998:"
 
 The necessity of using this function for combining two images if GD is version 2 is that
        GD2 cannot manage to combine two indexed-color images without totally spoiling everything.
@@ -1859,13 +1859,13 @@ The necessity of using this function for combining two images if GD is version 2
        The only drawback is (apparently) that IM creates true-color png's. The transparency of these will not be shown by MSIE on windows at this time (although it's straight 0%/100% transparency!) and the file size may be larger.
 
 For parameters, see PHP function "imagecopyresized()"
-";s:5:"param";a:10:{i:0;a:2:{i:0;s:7:"pointer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:1;a:2:{i:0;s:7:"pointer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:2;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:3;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:4;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:5;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:6;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:7;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:8;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:9;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:1018;s:13:"content_lines";i:24;s:6:"atLine";i:368;}i:13;a:4:{s:6:"header";s:33:"function imagecreatefrom($file)     {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:6:{s:4:"text";s:131:"
+";s:5:"param";a:10:{i:0;a:2:{i:0;s:7:"pointer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:1;a:2:{i:0;s:7:"pointer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:2;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:3;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:4;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:5;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:6;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:7;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:8;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}i:9;a:2:{i:0;s:7:"integer";i:1;s:37:"see PHP function "imagecopyresized()"";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:1018;s:13:"content_lines";i:24;s:6:"atLine";i:369;}i:13;a:4:{s:6:"header";s:33:"function imagecreatefrom($file)     {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:6:{s:4:"text";s:131:"
 
 Create new image pointer from input file (either gif/png, in case the wrong format it is converted by t3lib_div::read_png_gif())
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:74:"Absolute filename of the image file from which to start the icon creation.";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:41:"If success, image pointer, otherwise "-1"";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:28:"@see t3lib_div::read_png_gif";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:24:"t3lib_div::read_png_gif ";}}}s:6:"atLine";i:401;}i:15;a:7:{s:6:"header";s:32:"function imagemake($im, $path)       {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:4:{s:4:"text";s:41:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:74:"Absolute filename of the image file from which to start the icon creation.";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:41:"If success, image pointer, otherwise "-1"";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:28:"@see t3lib_div::read_png_gif";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:24:"t3lib_div::read_png_gif ";}}}s:6:"atLine";i:402;}i:15;a:7:{s:6:"header";s:32:"function imagemake($im, $path)       {";s:11:"parentClass";s:15:"t3lib_iconWorks";s:4:"cDat";a:4:{s:4:"text";s:41:"
 
 Write the icon in $im pointer to $path
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:7:"pointer";i:1;s:31:"Pointer to GDlib image resource";}i:1;a:2:{i:0;s:6:"string";i:1;s:57:"Absolute path to the filename in which to write the icon.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:131;s:13:"content_lines";i:7;s:6:"atLine";i:418;}}}s:14:"MD5_8e1033b429";a:4:{s:8:"filename";s:27:"class.t3lib_loaddbgroup.php";s:8:"filesize";i:13090;s:6:"header";a:5:{s:4:"text";s:171:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:7:"pointer";i:1;s:31:"Pointer to GDlib image resource";}i:1;a:2:{i:0;s:6:"string";i:1;s:57:"Absolute path to the filename in which to write the icon.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:131;s:13:"content_lines";i:7;s:6:"atLine";i:419;}}}s:14:"MD5_8e1033b429";a:4:{s:8:"filename";s:27:"class.t3lib_loaddbgroup.php";s:8:"filesize";i:13090;s:6:"header";a:5:{s:4:"text";s:171:"
 
 Load database groups (relations)
 Used to process the relations created by the TCA element types "group" and "select" for database records. Manages MM-relations as well.
@@ -2052,10 +2052,10 @@ Returns the "AND NOT deleted" clause for the tablename given IF $TCA configurati
 
 Returns a part of a WHERE clause which will filter out records with start/end times or hidden/fe_groups fields set to values that should de-select them according to the current time, preview settings or user login. Definitely a frontend function.
 Is using the $TCA arrays "ctrl" part where the key "enablefields" determines for each table which of these features applies to that table.
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:34:"Table name found in the $TCA array";}i:1;a:2:{i:0;s:7:"integer";i:1;s:245:"If $show_hidden is set (0/1), any hidden-fields in records are ignored. NOTICE: If you call this function, consider what to do with the show_hidden parameter. Maybe it should be set? See tslib_cObj->enableFields where it's implemented correctly.";}i:2;a:2:{i:0;s:5:"array";i:1;s:253:"Array you can pass where keys can be "disabled", "starttime", "endtime", "fe_group" (keys from "enablefields" in TCA) and if set they will make sure that part of the clause is not added. Thus disables the specific part of the clause. For previewing etc.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:51:"The clause starting like " AND ...=... AND ...=..."";}s:5:"other";a:1:{i:0;s:47:"@see tslib_cObj::enableFields(), deleteClause()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:42:"tslib_cObj::enableFields(), deleteClause()";}}}s:7:"content";s:0:"";s:12:"content_size";i:1931;s:13:"content_lines";i:44;s:6:"atLine";i:614;}}}s:14:"MD5_5a82c40494";a:4:{s:8:"filename";s:24:"class.t3lib_pagetree.php";s:8:"filesize";i:4869;s:6:"header";a:5:{s:4:"text";s:36:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:34:"Table name found in the $TCA array";}i:1;a:2:{i:0;s:7:"integer";i:1;s:245:"If $show_hidden is set (0/1), any hidden-fields in records are ignored. NOTICE: If you call this function, consider what to do with the show_hidden parameter. Maybe it should be set? See tslib_cObj->enableFields where it's implemented correctly.";}i:2;a:2:{i:0;s:5:"array";i:1;s:253:"Array you can pass where keys can be "disabled", "starttime", "endtime", "fe_group" (keys from "enablefields" in TCA) and if set they will make sure that part of the clause is not added. Thus disables the specific part of the clause. For previewing etc.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:51:"The clause starting like " AND ...=... AND ...=..."";}s:5:"other";a:1:{i:0;s:47:"@see tslib_cObj::enableFields(), deleteClause()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:42:"tslib_cObj::enableFields(), deleteClause()";}}}s:7:"content";s:0:"";s:12:"content_size";i:1931;s:13:"content_lines";i:44;s:6:"atLine";i:614;}}}s:14:"MD5_5a82c40494";a:4:{s:8:"filename";s:24:"class.t3lib_pagetree.php";s:8:"filesize";i:4553;s:6:"header";a:5:{s:4:"text";s:36:"
 
 Class for generating a page tree.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:37:"@see t3lib_treeView, t3lib_browseTree";i:3;s:14:"@package TYPO3";i:4;s:17:"@subpackage t3lib";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:4:"@see";a:1:{i:0;s:32:"t3lib_treeView, t3lib_browseTree";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:3:"DAT";a:6:{i:1;a:8:{s:6:"header";s:45:"class t3lib_pageTree extends t3lib_treeView  {";s:5:"class";i:1;s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:5:{s:4:"text";s:36:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:37:"@see t3lib_treeView, t3lib_browseTree";i:3;s:14:"@package TYPO3";i:4;s:17:"@subpackage t3lib";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:4:"@see";a:1:{i:0;s:32:"t3lib_treeView, t3lib_browseTree";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:3:"DAT";a:5:{i:1;a:8:{s:6:"header";s:45:"class t3lib_pageTree extends t3lib_treeView  {";s:5:"class";i:1;s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:5:{s:4:"text";s:36:"
 
 Class for generating a page tree.
 ";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:37:"@see t3lib_treeView, t3lib_browseTree";i:3;s:14:"@package TYPO3";i:4;s:17:"@subpackage t3lib";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:4:"@see";a:1:{i:0;s:32:"t3lib_treeView, t3lib_browseTree";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:7:"content";s:0:"";s:12:"content_size";i:226;s:13:"content_lines";i:4;s:6:"atLine";i:77;}i:3;a:7:{s:6:"header";s:27:"function init($clause='')        {";s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:3:{s:4:"text";s:85:"
@@ -2065,18 +2065,15 @@ REMEMBER to feed a $clause which will filter out non-readable pages!
 ";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:61:"Part of where query which will filter out non-readable pages.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:295;s:13:"content_lines";i:9;s:6:"atLine";i:89;}i:5;a:7:{s:6:"header";s:26:"function expandNext($id)  {";s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:3:{s:4:"text";s:114:"
 
 Returns true/false if the next level for $id should be expanded - and all levels should, so we always return 1.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:87:"ID (uid) to test for (see extending classes where this is checked againts session data)";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:17;s:13:"content_lines";i:3;s:6:"atLine";i:105;}i:7;a:7:{s:6:"header";s:31:"function wrapIcon($icon,$row)       {";s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:4:{s:4:"text";s:77:"
-
-Wrapping the image tag, $icon, for the row, $row (except for mount points)
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"The image tag for the icon";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The row for the current element";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"The processed icon input value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:21;s:13:"content_lines";i:3;s:6:"atLine";i:117;}i:9;a:4:{s:6:"header";s:45:"function PMicon($row,$a,$c,$nextCount,$exp)        {";s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:6:{s:4:"text";s:108:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:87:"ID (uid) to test for (see extending classes where this is checked againts session data)";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:17;s:13:"content_lines";i:3;s:6:"atLine";i:105;}i:7;a:4:{s:6:"header";s:45:"function PMicon($row,$a,$c,$nextCount,$exp) {";s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:6:{s:4:"text";s:108:"
 
 Generate the plus/minus icon for the browsable tree.
 In this case, there is no plus-minus icon displayed.
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:20:"record for the entry";}i:1;a:2:{i:0;s:7:"integer";i:1;s:24:"The current entry number";}i:2;a:2:{i:0;s:7:"integer";i:1;s:76:"The total number of entries. If equal to $a, a 'bottom' element is returned.";}i:3;a:2:{i:0;s:7:"integer";i:1;s:50:"The number of sub-elements to the current element.";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:67:"The element was expanded to render subelements if this flag is set.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:35:"Image tag with the plus/minus icon.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:29:"@see t3lib_treeView::PMicon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:25:"t3lib_treeView::PMicon() ";}}}s:6:"atLine";i:134;}i:11;a:7:{s:6:"header";s:37:"function initializePositionSaving()   {";s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:4:{s:4:"text";s:174:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:20:"record for the entry";}i:1;a:2:{i:0;s:7:"integer";i:1;s:24:"The current entry number";}i:2;a:2:{i:0;s:7:"integer";i:1;s:76:"The total number of entries. If equal to $a, a 'bottom' element is returned.";}i:3;a:2:{i:0;s:7:"integer";i:1;s:50:"The number of sub-elements to the current element.";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:67:"The element was expanded to render subelements if this flag is set.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:35:"Image tag with the plus/minus icon.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:29:"@see t3lib_treeView::PMicon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:25:"t3lib_treeView::PMicon() ";}}}s:6:"atLine";i:122;}i:9;a:7:{s:6:"header";s:37:"function initializePositionSaving()    {";s:11:"parentClass";s:14:"t3lib_pageTree";s:4:"cDat";a:4:{s:4:"text";s:174:"
 
 Get stored tree structure AND updating it if needed according to incoming PM GET var.
 - Here we just set it to nothing since we want to just render the tree, nothing more.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:230;s:13:"content_lines";i:8;s:6:"atLine";i:149;}}}s:14:"MD5_3ad1947ed4";a:4:{s:8:"filename";s:25:"class.t3lib_parsehtml.php";s:8:"filesize";i:46895;s:6:"header";a:5:{s:4:"text";s:93:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:230;s:13:"content_lines";i:8;s:6:"atLine";i:137;}}}s:14:"MD5_3ad1947ed4";a:4:{s:8:"filename";s:25:"class.t3lib_parsehtml.php";s:8:"filesize";i:47147;s:6:"header";a:5:{s:4:"text";s:93:"
 
 Functions for parsing HTML. 
 You are encouraged to use this class in your own applications
@@ -2153,46 +2150,46 @@ If the value of the $tags[$tagname] entry is an array, advanced processing of th
 
 Returns an array with all attributes as keys. Attributes are only lowercase a-z
 If a attribute is empty (shorthand), then the value for the key is empty. You can check if it existed with isset()
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:114:"Tag: $tag is either a whole tag (eg '<TAG OPTION ATTRIB=VALUE>') or the parameterlist (ex ' OPTION ATTRIB=VALUE>')";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:86:"If set, the attribute values are de-htmlspecialchar'ed. Should actually always be set!";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:41:"array(Tag attributes,Attribute meta-data)";}}s:7:"content";s:0:"";s:12:"content_size";i:1077;s:13:"content_lines";i:32;s:6:"atLine";i:616;}i:25;a:7:{s:6:"header";s:37:"function split_tag_attributes($tag)    {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:145:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:114:"Tag: $tag is either a whole tag (eg '<TAG OPTION ATTRIB=VALUE>') or the parameterlist (ex ' OPTION ATTRIB=VALUE>')";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:86:"If set, the attribute values are de-htmlspecialchar'ed. Should actually always be set!";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:41:"array(Tag attributes,Attribute meta-data)";}}s:7:"content";s:0:"";s:12:"content_size";i:1077;s:13:"content_lines";i:32;s:6:"atLine";i:616;}i:25;a:7:{s:6:"header";s:37:"function split_tag_attributes($tag)    {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:6:{s:4:"text";s:145:"
 
 Returns an array with the 'components' from an attribute list. The result is normally analyzed by get_tag_attributes
 Removes tag-name if found
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:21:"The tag or attributes";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:972;s:13:"content_lines";i:29;s:6:"atLine";i:657;}i:27;a:7:{s:6:"header";s:46:"function bidir_htmlspecialchars($value,$dir)       {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:61:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:21:"The tag or attributes";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:38:"@see t3lib_div::split_tag_attributes()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:34:"t3lib_div::split_tag_attributes() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:983;s:13:"content_lines";i:29;s:6:"atLine";i:658;}i:27;a:7:{s:6:"header";s:46:"function bidir_htmlspecialchars($value,$dir)   {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:61:"
 
 Converts htmlspecialchars forth ($dir=1) AND back ($dir=0)
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Input value";}i:1;a:2:{i:0;s:7:"integer";i:1;s:43:"Direction: forth ($dir=1) AND back ($dir=0)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:12:"Output value";}}s:7:"content";s:0:"";s:12:"content_size";i:281;s:13:"content_lines";i:11;s:6:"atLine";i:694;}i:29;a:7:{s:6:"header";s:74:"function prefixResourcePath($main_prefix,$content,$alternatives=array())       {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:187:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Input value";}i:1;a:2:{i:0;s:7:"integer";i:1;s:43:"Direction: forth ($dir=1) AND back ($dir=0)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:12:"Output value";}}s:7:"content";s:0:"";s:12:"content_size";i:281;s:13:"content_lines";i:11;s:6:"atLine";i:695;}i:29;a:7:{s:6:"header";s:74:"function prefixResourcePath($main_prefix,$content,$alternatives=array())       {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:187:"
 
 Prefixes the relative paths of hrefs/src/action in the tags [td,table,body,img,input,form,link,script,a] in the $content with the $main_prefix or and alternative given by $alternatives
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Prefix string";}i:1;a:2:{i:0;s:6:"string";i:1;s:12:"HTML content";}i:2;a:2:{i:0;s:5:"array";i:1;s:127:"Array with alternative prefixes for certain of the tags. key=>value pairs where the keys are the tag element names in uppercase";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:1814;s:13:"content_lines";i:59;s:6:"atLine";i:714;}i:31;a:7:{s:6:"header";s:41:"function prefixRelPath($prefix,$srcVal)     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:51:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Prefix string";}i:1;a:2:{i:0;s:6:"string";i:1;s:12:"HTML content";}i:2;a:2:{i:0;s:5:"array";i:1;s:127:"Array with alternative prefixes for certain of the tags. key=>value pairs where the keys are the tag element names in uppercase";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:1814;s:13:"content_lines";i:59;s:6:"atLine";i:715;}i:31;a:7:{s:6:"header";s:41:"function prefixRelPath($prefix,$srcVal)     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:51:"
 
 Internal sub-function for ->prefixResourcePath()
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Prefix string";}i:1;a:2:{i:0;s:6:"string";i:1;s:17:"Relative path/URL";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:50:"Output path, prefixed if no scheme in input string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:137;s:13:"content_lines";i:7;s:6:"atLine";i:782;}i:33;a:7:{s:6:"header";s:69:"function cleanFontTags($value,$keepFace=0,$keepSize=0,$keepColor=0)     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:143:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Prefix string";}i:1;a:2:{i:0;s:6:"string";i:1;s:17:"Relative path/URL";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:50:"Output path, prefixed if no scheme in input string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:137;s:13:"content_lines";i:7;s:6:"atLine";i:783;}i:33;a:7:{s:6:"header";s:69:"function cleanFontTags($value,$keepFace=0,$keepSize=0,$keepColor=0)     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:143:"
 
 Cleans up the input $value for fonttags. 
 If keepFace,-Size and -Color is set then font-tags with an allowed property is kept. Else deleted.
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:47:"HTML content with font-tags inside to clean up.";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:29:"If set, keep "face" attribute";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:29:"If set, keep "size" attribute";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:30:"If set, keep "color" attribute";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:963;s:13:"content_lines";i:21;s:6:"atLine";i:800;}i:35;a:7:{s:6:"header";s:65:"function mapTags($value,$tags=array(),$ltChar='<',$ltChar2='<')     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:58:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:47:"HTML content with font-tags inside to clean up.";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:29:"If set, keep "face" attribute";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:29:"If set, keep "size" attribute";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:30:"If set, keep "color" attribute";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:963;s:13:"content_lines";i:21;s:6:"atLine";i:801;}i:35;a:7:{s:6:"header";s:65:"function mapTags($value,$tags=array(),$ltChar='<',$ltChar2='<')     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:58:"
 
 This is used to map certain tag-names into other names.
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:12:"HTML content";}i:1;a:2:{i:0;s:5:"array";i:1;s:73:"Array with tag key=>value pairs where key is from-tag and value is to-tag";}i:2;a:2:{i:0;s:6:"string";i:1;s:62:"Alternative less-than char to search for (search regex string)";}i:3;a:2:{i:0;s:6:"string";i:1;s:65:"Alternative less-than char to replace with (replace regex string)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:327;s:13:"content_lines";i:9;s:6:"atLine";i:831;}i:37;a:7:{s:6:"header";s:46:"function unprotectTags($content,$tagList='')        {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:156:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:12:"HTML content";}i:1;a:2:{i:0;s:5:"array";i:1;s:73:"Array with tag key=>value pairs where key is from-tag and value is to-tag";}i:2;a:2:{i:0;s:6:"string";i:1;s:62:"Alternative less-than char to search for (search regex string)";}i:3;a:2:{i:0;s:6:"string";i:1;s:65:"Alternative less-than char to replace with (replace regex string)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:309;s:13:"content_lines";i:9;s:6:"atLine";i:832;}i:37;a:7:{s:6:"header";s:46:"function unprotectTags($content,$tagList='')        {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:3:{s:4:"text";s:156:"
 
 This converts htmlspecialchar()'ed tags (from $tagList) back to real tags. Eg. '&lt;strong&gt' would be converted back to '<strong>' if found in $tagList
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:12:"HTML content";}i:1;a:2:{i:0;s:6:"string";i:1;s:40:"Tag list, separated by comma. Lowercase!";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:868;s:13:"content_lines";i:23;s:6:"atLine";i:848;}i:39;a:7:{s:6:"header";s:43:"function stripTagsExcept($value,$tagList)       {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:93:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:12:"HTML content";}i:1;a:2:{i:0;s:6:"string";i:1;s:40:"Tag list, separated by comma. Lowercase!";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed HTML content";}}s:7:"content";s:0:"";s:12:"content_size";i:868;s:13:"content_lines";i:23;s:6:"atLine";i:849;}i:39;a:7:{s:6:"header";s:43:"function stripTagsExcept($value,$tagList)       {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:93:"
 
 Strips tags except the tags in the list, $tagList
 OBSOLETE - use PHP function strip_tags()
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"Value to process";}i:1;a:2:{i:0;s:6:"string";i:1;s:12:"List of tags";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:12:"Output value";}s:6:"ignore";i:1;}s:7:"content";s:0:"";s:12:"content_size";i:362;s:13:"content_lines";i:13;s:6:"atLine";i:881;}i:41;a:7:{s:6:"header";s:45:"function caseShift($str,$flag,$cacheKey='')      {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:65:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"Value to process";}i:1;a:2:{i:0;s:6:"string";i:1;s:12:"List of tags";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:12:"Output value";}s:6:"ignore";i:1;}s:7:"content";s:0:"";s:12:"content_size";i:362;s:13:"content_lines";i:13;s:6:"atLine";i:882;}i:41;a:7:{s:6:"header";s:45:"function caseShift($str,$flag,$cacheKey='')      {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:65:"
 
 Internal function for case shifting of a string or whole array
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:18:"Input string/array";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:81:"If $str is a string AND this boolean is true, the string is returned in uppercase";}i:2;a:2:{i:0;s:6:"string";i:1;s:138:"Key string used for internal caching of the results. Could be an MD5 hash of the serialized version of the input $str if that is an array.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:24:"Output string, processed";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:372;s:13:"content_lines";i:14;s:6:"atLine";i:904;}i:43;a:7:{s:6:"header";s:69:"function compileTagAttribs($tagAttrib,$meta=array(), $xhtmlClean=0)       {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:55:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:18:"Input string/array";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:81:"If $str is a string AND this boolean is true, the string is returned in uppercase";}i:2;a:2:{i:0;s:6:"string";i:1;s:138:"Key string used for internal caching of the results. Could be an MD5 hash of the serialized version of the input $str if that is an array.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:24:"Output string, processed";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:372;s:13:"content_lines";i:14;s:6:"atLine";i:905;}i:43;a:7:{s:6:"header";s:69:"function compileTagAttribs($tagAttrib,$meta=array(), $xhtmlClean=0)       {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:55:"
 
 Compiling an array with tag attributes into a string
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:14:"Tag attributes";}i:1;a:2:{i:0;s:5:"array";i:1;s:66:"Meta information about these attributes (like if they were quoted)";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:132:"If set, then the attribute names will be set in lower case, value quotes in double-quotes and the value will be htmlspecialchar()'ed";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:61:"Imploded attributes, eg: 'attribute="value" attrib2="value2"'";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:545;s:13:"content_lines";i:20;s:6:"atLine";i:928;}i:45;a:7:{s:6:"header";s:52:"function get_tag_attributes_classic($tag,$deHSC=0)     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:72:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:14:"Tag attributes";}i:1;a:2:{i:0;s:5:"array";i:1;s:66:"Meta information about these attributes (like if they were quoted)";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:132:"If set, then the attribute names will be set in lower case, value quotes in double-quotes and the value will be htmlspecialchar()'ed";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:61:"Imploded attributes, eg: 'attribute="value" attrib2="value2"'";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:545;s:13:"content_lines";i:20;s:6:"atLine";i:929;}i:45;a:7:{s:6:"header";s:52:"function get_tag_attributes_classic($tag,$deHSC=0)     {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:72:"
 
 Get tag attributes, the classic version (which had some limitations?)
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:7:"The tag";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:24:"De-htmlspecialchar flag.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:99;s:13:"content_lines";i:4;s:6:"atLine";i:957;}i:47;a:7:{s:6:"header";s:56:"function HTMLparserConfig($TSconfig,$keepTags=array())      {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:64:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:7:"The tag";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:24:"De-htmlspecialchar flag.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:99;s:13:"content_lines";i:4;s:6:"atLine";i:958;}i:47;a:7:{s:6:"header";s:56:"function HTMLparserConfig($TSconfig,$keepTags=array())      {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:64:"
 
 Converts TSconfig into an array for the HTMLcleaner function.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:24:"TSconfig for HTMLcleaner";}i:1;a:2:{i:0;s:5:"array";i:1;s:25:"Array of tags to keep (?)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:3455;s:13:"content_lines";i:87;s:6:"atLine";i:970;}i:49;a:7:{s:6:"header";s:32:"function XHTML_clean($content)   {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:1291:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:24:"TSconfig for HTMLcleaner";}i:1;a:2:{i:0;s:5:"array";i:1;s:25:"Array of tags to keep (?)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:3455;s:13:"content_lines";i:87;s:6:"atLine";i:971;}i:49;a:7:{s:6:"header";s:32:"function XHTML_clean($content)   {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:1291:"
 
 Tries to convert the content to be XHTML compliant and other stuff like that.
 STILL EXPERIMENTAL. See comments below.
@@ -2213,13 +2210,131 @@ STILL EXPERIMENTAL. See comments below.
                        - Lowercase for elements and attributes
                        - All attributes in quotes
                        - Add "alt" attribute to img-tags if it's not there already.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:19:"Content to clean up";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:28:"Cleaned up content returned.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:264;s:13:"content_lines";i:11;s:6:"atLine";i:1083;}i:51;a:4:{s:6:"header";s:56:"function processTag($value,$conf,$endTag,$protected=0)        {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:33:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:19:"Content to clean up";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:28:"Cleaned up content returned.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:264;s:13:"content_lines";i:11;s:6:"atLine";i:1084;}i:51;a:4:{s:6:"header";s:56:"function processTag($value,$conf,$endTag,$protected=0)        {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:67:"
 
 Processing all tags themselves
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"Tag to process";}i:1;a:2:{i:0;s:5:"array";i:1;s:139:"Configuration array passing instructions for processing. If count()==0, function will return value unprocessed. See source code for details";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:25:"Is endtag, then set this.";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:39:"If set, just return value straight away";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:16:"Processed value.";}s:6:"access";s:7:"private";}s:6:"atLine";i:1105;}i:53;a:7:{s:6:"header";s:44:"function processContent($value,$dir,$conf)    {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:51:"
+(Some additions by Sacha Vorbeck)
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"Tag to process";}i:1;a:2:{i:0;s:5:"array";i:1;s:139:"Configuration array passing instructions for processing. If count()==0, function will return value unprocessed. See source code for details";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:25:"Is endtag, then set this.";}i:3;a:2:{i:0;s:7:"boolean";i:1;s:39:"If set, just return value straight away";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:16:"Processed value.";}s:6:"access";s:7:"private";}s:6:"atLine";i:1107;}i:53;a:7:{s:6:"header";s:44:"function processContent($value,$dir,$conf)    {";s:11:"parentClass";s:15:"t3lib_parsehtml";s:4:"cDat";a:4:{s:4:"text";s:51:"
 
 Processing content between tags for HTML_cleaner
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:9:"The value";}i:1;a:2:{i:0;s:7:"integer";i:1;s:68:"Direction, either -1 or +1. 0 (zero) means no change to input value.";}i:2;a:2:{i:0;s:5:"mixed";i:1;s:17:"Not used, ignore.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:20:"The processed value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:293;s:13:"content_lines";i:10;s:6:"atLine";i:1151;}}}s:14:"MD5_8e8a083441";a:4:{s:8:"filename";s:27:"class.t3lib_positionmap.php";s:8:"filesize";i:19954;s:6:"header";a:5:{s:4:"text";s:182:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:9:"The value";}i:1;a:2:{i:0;s:7:"integer";i:1;s:68:"Direction, either -1 or +1. 0 (zero) means no change to input value.";}i:2;a:2:{i:0;s:5:"mixed";i:1;s:17:"Not used, ignore.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:20:"The processed value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:293;s:13:"content_lines";i:10;s:6:"atLine";i:1154;}}}s:14:"MD5_40167d8489";a:4:{s:8:"filename";s:30:"class.t3lib_parsehtml_proc.php";s:8:"filesize";i:54670;s:6:"header";a:5:{s:4:"text";s:81:"
+
+Class for parsing HTML for the Rich Text Editor. (also called transformations)
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:3:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";}s:11:"other_index";a:3:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:3:"DAT";a:28:{i:1;a:8:{s:6:"header";s:52:"class t3lib_parsehtml_proc extends t3lib_parsehtml {";s:5:"class";i:1;s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:81:"
+
+Class for parsing HTML for the Rich Text Editor. (also called transformations)
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:3:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";}s:11:"other_index";a:3:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:7:"content";s:0:"";s:12:"content_size";i:931;s:13:"content_lines";i:27;s:6:"atLine";i:100;}i:3;a:7:{s:6:"header";s:36:"function init($elRef='',$recPid=0)     {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:55:"
+
+Initialize, setting element reference and record PID
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:43:"Element reference, eg "tt_content:bodytext"";}i:1;a:2:{i:0;s:7:"integer";i:1;s:27:"PID of the record (page id)";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:53;s:13:"content_lines";i:4;s:6:"atLine";i:135;}i:5;a:7:{s:6:"header";s:28:"function setRelPath($path)       {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:184:"
+
+Setting the ->relPath and ->relBackPath to proper values so absolute references to links and images can be converted to relative dittos.
+This is used when editing files with the RTE
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:101:"The relative path from PATH_site to the place where the file being edited is. Eg. "fileadmin/static".";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:191:"There is no output, it is set in internal variables. With the above example of "fileadmin/static" as input this will yield ->relPath to be "fileadmin/static/" and ->relBackPath to be "../../"";}}s:7:"content";s:0:"";s:12:"content_size";i:319;s:13:"content_lines";i:14;s:6:"atLine";i:147;}i:7;a:7:{s:6:"header";s:46:"function evalWriteFile($pArr,$currentRecord)  {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:203:"
+
+Evaluate the environment for editing a staticFileEdit file.
+Called for almost all fields being saved in the database. Is called without an instance of the object: t3lib_parsehtml_proc::evalWriteFile()
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:57:"Parameters for the current field as found in types-config";}i:1;a:2:{i:0;s:5:"array";i:1;s:30:"Current record we are editing.";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:98:"On success an array with various information is returned, otherwise a string with an error message";}s:5:"other";a:1:{i:0;s:38:"@see t3lib_TCEmain, t3lib_transferData";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:33:"t3lib_TCEmain, t3lib_transferData";}}}s:7:"content";s:0:"";s:12:"content_size";i:1337;s:13:"content_lines";i:46;s:6:"atLine";i:171;}i:9;a:8:{s:6:"header";s:79:"function RTE_transform($value,$specConf,$direction='rte',$thisConfig=array())    {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:11:"sectionText";a:1:{i:0;s:13:"Main function";}s:4:"cDat";a:5:{s:4:"text";s:165:"
+
+Tranform value for RTE based on specConf in the direction specified by $direction (rte/db)
+This is the main function called from tcemain and transfer data classes
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Input value";}i:1;a:2:{i:0;s:5:"array";i:1;s:256:"Special configuration for a field; This is coming from the types-configuration of the field in the TCA. In the types-configuration you can setup features for the field rendering and in particular the RTE takes al its major configuration options from there!";}i:2;a:2:{i:0;s:6:"string";i:1;s:310:"Direction of the transformation. Two keywords are allowed; "db" or "rte". If "db" it means the transformation will clean up content coming from the Rich Text Editor and goes into the database. The other direction, "rte", is of course when content is coming from database and must be transformed to fit the RTE.";}i:3;a:2:{i:0;s:5:"array";i:1;s:82:"Parsed TypoScript content configuring the RTE, probably coming from Page TSconfig.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:12:"Output value";}s:5:"other";a:1:{i:0;s:84:"@see t3lib_TCEmain::fillInFieldArray(), t3lib_transferData::renderRecord_typesProc()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:79:"t3lib_TCEmain::fillInFieldArray(), t3lib_transferData::renderRecord_typesProc()";}}}s:7:"content";s:0:"";s:12:"content_size";i:4298;s:13:"content_lines";i:135;s:6:"atLine";i:229;}i:11;a:8:{s:6:"header";s:31:"function TS_images_db($value)       {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:11:"sectionText";a:1:{i:0;s:37:"Specific RTE TRANSFORMATION functions";}s:4:"cDat";a:3:{s:4:"text";s:456:"
+
+Transformation handler: 'ts_images' / direction: "db"
+Processing images inserted in the RTE.
+This is used when content goes from the RTE to the database. 
+Images inserted in the RTE has an absolute URL applied to the src attribute. This URL is converted to a relative URL
+If it turns out that the URL is from another website than the current the image is read from that external URL and moved to the local server.
+Also "magic" images are processed here.
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:38:"The content from RTE going to Database";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:17:"Processed content";}}s:7:"content";s:0:"";s:12:"content_size";i:3924;s:13:"content_lines";i:92;s:6:"atLine";i:376;}i:13;a:7:{s:6:"header";s:32:"function TS_images_rte($value)   {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:186:"
+
+Transformation handler: 'ts_images' / direction: "rte"
+Processing images from database content going into the RTE.
+Processing includes converting the src attribute to an absolute URL.
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}}s:7:"content";s:0:"";s:12:"content_size";i:806;s:13:"content_lines";i:25;s:6:"atLine";i:477;}i:15;a:7:{s:6:"header";s:42:"function TS_reglinks($value,$direction)               {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:134:"
+
+Transformation handler: 'ts_reglinks' / direction: "db"+"rte" depending on $direction variable.
+Converting <A>-tags to/from abs/rel
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}i:1;a:2:{i:0;s:6:"string";i:1;s:84:"Direction of conversion; "rte" (from database to RTE) or "db" (from RTE to database)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}}s:7:"content";s:0:"";s:12:"content_size";i:865;s:13:"content_lines";i:25;s:6:"atLine";i:511;}i:17;a:7:{s:6:"header";s:30:"function TS_links_db($value)       {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:90:"
+
+Transformation handler: 'ts_links' / direction: "db"
+Converting <A>-tags to <LINK tags>
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}s:5:"other";a:1:{i:0;s:19:"@see TS_links_rte()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:15:"TS_links_rte() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1690;s:13:"content_lines";i:35;s:6:"atLine";i:545;}i:19;a:7:{s:6:"header";s:31:"function TS_links_rte($value)  {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:91:"
+
+Transformation handler: 'ts_links' / direction: "rte"
+Converting <LINK tags> to <A>-tags
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}s:5:"other";a:1:{i:0;s:19:"@see TS_links_rte()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:15:"TS_links_rte() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:3202;s:13:"content_lines";i:68;s:6:"atLine";i:589;}i:21;a:7:{s:6:"header";s:33:"function TS_preserve_db($value)        {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:24:"
+
+Preserve special tags
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}}s:7:"content";s:0:"";s:12:"content_size";i:618;s:13:"content_lines";i:17;s:6:"atLine";i:664;}i:23;a:7:{s:6:"header";s:34:"function TS_preserve_rte($value)      {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:24:"
+
+Preserve special tags
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}}s:7:"content";s:0:"";s:12:"content_size";i:365;s:13:"content_lines";i:11;s:6:"atLine";i:688;}i:25;a:7:{s:6:"header";s:45:"function TS_transform_db($value,$css=FALSE)   {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:128:"
+
+Transformation handler: 'ts_transform' + 'css_transform' / direction: "db"
+Cleaning (->db) for standard content elements (ts)
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:73:"If true, the transformation was "css_transform", otherwise "ts_transform"";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}s:5:"other";a:1:{i:0;s:23:"@see TS_transform_rte()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:19:"TS_transform_rte() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:3506;s:13:"content_lines";i:80;s:6:"atLine";i:709;}i:27;a:7:{s:6:"header";s:42:"function TS_transform_rte($value,$css=0)      {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:125:"
+
+Transformation handler: 'ts_transform' + 'css_transform' / direction: "rte"
+Set (->rte) for standard content elements (ts)
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:73:"If true, the transformation was "css_transform", otherwise "ts_transform"";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}s:5:"other";a:1:{i:0;s:22:"@see TS_transform_db()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:18:"TS_transform_db() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2709;s:13:"content_lines";i:56;s:6:"atLine";i:799;}i:29;a:7:{s:6:"header";s:30:"function TS_strip_db($value)    {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:85:"
+
+Transformation handler: 'ts_strip' / direction: "db"
+Removing all non-allowed tags
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}}s:7:"content";s:0:"";s:12:"content_size";i:398;s:13:"content_lines";i:23;s:6:"atLine";i:863;}i:31;a:8:{s:6:"header";s:23:"function getURL($url) {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:11:"sectionText";a:1:{i:0;s:57:"Generic RTE transformation, analysis and helper functions";}s:4:"cDat";a:5:{s:4:"text";s:53:"
+
+Reads the file or url $url and returns the content
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:20:"Filepath/URL to read";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:45:"The content from the resource given as input.";}s:5:"other";a:1:{i:0;s:24:"@see t3lib_div::getURL()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:20:"t3lib_div::getURL() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:39;s:13:"content_lines";i:3;s:6:"atLine";i:894;}i:33;a:7:{s:6:"header";s:47:"function HTMLcleaner_db($content,$tagList='')     {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:288:"
+
+Function for cleaning content going into the database. 
+Content is cleaned eg. by removing unallowed HTML and ds-HSC content
+It is basically calling HTMLcleaner from the parent class with some preset configuration specifically set up for cleaning content going from the RTE into the db
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:19:"Content to clean up";}i:1;a:2:{i:0;s:6:"string";i:1;s:82:"Comma list of tags to specifically allow. Default comes from getKeepTags and is """;}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:13:"Clean content";}s:5:"other";a:1:{i:0;s:18:"@see getKeepTags()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:14:"getKeepTags() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:428;s:13:"content_lines";i:11;s:6:"atLine";i:908;}i:35;a:7:{s:6:"header";s:52:"function getKeepTags($direction='rte',$tagList='')  {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:313:"
+
+Creates an array of configuration for the HTMLcleaner function based on whether content go TO or FROM the Rich Text Editor ($direction)
+Unless "tagList" is given, the function will cache the configuration for next time processing goes on. (In this class that is the case only if we are processing a bulletlist)
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:164:"The direction of the content being processed by the output configuration; "db" (content going into the database FROM the rte) or "rte" (content going into the form)";}i:1;a:2:{i:0;s:6:"string";i:1;s:108:"Comma list of tags to keep (overriding default which is to keep all + take notice of internal configuration)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:19:"Configuration array";}s:5:"other";a:1:{i:0;s:21:"@see HTMLcleaner_db()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:17:"HTMLcleaner_db() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:3778;s:13:"content_lines";i:96;s:6:"atLine";i:929;}i:37;a:7:{s:6:"header";s:62:"function divideIntoLines($value,$count=5,$returnArray=FALSE)       {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:354:"
+
+This resolves the $value into parts based on <div></div>-sections and <P>-sections and <BR>-tags. These are returned as lines separated by chr(10).
+This point is to resolve the HTML-code returned from RTE into ordinary lines so it's 'human-readable'
+The function ->setDivTags does the opposite.
+This function processes content to go into the database.
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:17:"Value to process.";}i:1;a:2:{i:0;s:7:"integer";i:1;s:130:"Recursion brake. Decremented on each recursion down to zero. Default is 5 (which equals the allowed nesting levels of p/div tags).";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:94:"If true, an array with the lines is returned, otherwise a string of the processed input value.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Processed input value.";}s:5:"other";a:1:{i:0;s:17:"@see setDivTags()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:13:"setDivTags() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:4318;s:13:"content_lines";i:94;s:6:"atLine";i:1038;}i:39;a:7:{s:6:"header";s:37:"function setDivTags($value,$dT='p')  {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:152:"
+
+Converts all lines into <div></div>/<p></p>-sections (unless the line is a div-section already)
+For processing of content going FROM database TO RTE.
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:16:"Value to convert";}i:1;a:2:{i:0;s:6:"string";i:1;s:73:"Tag to wrap with. Either "p" or "div" should it be. Lowercase preferably.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:16:"Processed value.";}s:5:"other";a:1:{i:0;s:22:"@see divideIntoLines()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:18:"divideIntoLines() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1389;s:13:"content_lines";i:33;s:6:"atLine";i:1142;}i:41;a:7:{s:6:"header";s:38:"function internalizeFontTags($value)       {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:504:"
+
+This splits the $value in font-tag chunks. 
+If there are any <P>/<DIV> sections inside of them, the font-tag is wrapped AROUND the content INSIDE of the P/DIV sections and the outer font-tag is removed.
+This functions seems to be a good choice for pre-processing content if it has been pasted into the RTE from eg. star-office. 
+In that case the font-tags are normally on the OUTSIDE of the sections.
+This function is used by eg. divideIntoLines() if the procesing option 'internalizeFontTags' is set.
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Input content";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Output content";}s:5:"other";a:1:{i:0;s:22:"@see divideIntoLines()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:18:"divideIntoLines() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:1011;s:13:"content_lines";i:29;s:6:"atLine";i:1187;}i:43;a:7:{s:6:"header";s:20:"function siteUrl()      {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:5:{s:4:"text";s:39:"
+
+Returns SiteURL based on thisScript.
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:49:"Value of t3lib_div::getIndpEnv('TYPO3_SITE_URL');";}s:5:"other";a:1:{i:0;s:28:"@see t3lib_div::getIndpEnv()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:24:"t3lib_div::getIndpEnv() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:55;s:13:"content_lines";i:3;s:6:"atLine";i:1223;}i:45;a:7:{s:6:"header";s:31:"function rteImageStorageDir()   {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:192:"
+
+Return the storage folder of RTE image files.
+Default is $GLOBALS['TYPO3_CONF_VARS']['BE']['RTE_imageStorageDir'] unless something else is configured in the types configuration for the RTE.
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:125;s:13:"content_lines";i:3;s:6:"atLine";i:1233;}i:47;a:7:{s:6:"header";s:51:"function removeTables($value,$breakChar='<br />')        {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:251:"
+
+Remove all tables from incoming code
+The function is trying to to this is some more or less respectfull way. The approach is to resolve each table cells content and implode it all by <br /> chars. Thus at least the content is preserved in some way.
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Input value";}i:1;a:2:{i:0;s:6:"string";i:1;s:38:"Break character to use for linebreaks.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:12:"Output value";}}s:7:"content";s:0:"";s:12:"content_size";i:582;s:13:"content_lines";i:24;s:6:"atLine";i:1245;}i:49;a:7:{s:6:"header";s:54:"function defaultTStagMapping($code,$direction='rte')        {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:29:"
+
+Default tag mapping for TS
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:21:"Input code to process";}i:1;a:2:{i:0;s:6:"string";i:1;s:56:"Direction To databsae (db) or from database to RTE (rte)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:15:"Processed value";}}s:7:"content";s:0:"";s:12:"content_size";i:269;s:13:"content_lines";i:15;s:6:"atLine";i:1277;}i:51;a:7:{s:6:"header";s:41:"function getWHFromAttribs($attribArray)      {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:110:"
+
+Finds width and height from attrib-array
+If the width and height is found in the style-attribute, use that!
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:153:"Array of attributes from tag in which to search. More specifically the content of the key "style" is used to extract "width:xxx / height:xxx" information";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:54:"Integer w/h in key 0/1. Zero is returned if not found.";}}s:7:"content";s:0:"";s:12:"content_size";i:416;s:13:"content_lines";i:19;s:6:"atLine";i:1300;}i:53;a:4:{s:6:"header";s:35:"function urlInfoForLinkTags($url) {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:70:"
+
+Parse <A>-tag href and return status of email,external,file or page
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:15:"URL to analyse.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:37:"Information in an array about the URL";}}s:6:"atLine";i:1326;}i:55;a:7:{s:6:"header";s:53:"function TS_AtagToAbs($value,$dontSetRTEKEEP=FALSE)   {";s:11:"parentClass";s:20:"t3lib_parsehtml_proc";s:4:"cDat";a:3:{s:4:"text";s:69:"
+
+Converting <A>-tags to absolute URLs (+ setting rtekeep attribute)
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Content input";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:54:"If true, then the "rtekeep" attribute will not be set.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:14:"Content output";}}s:7:"content";s:0:"";s:12:"content_size";i:976;s:13:"content_lines";i:25;s:6:"atLine";i:1385;}}}s:14:"MD5_8e8a083441";a:4:{s:8:"filename";s:27:"class.t3lib_positionmap.php";s:8:"filesize";i:19954;s:6:"header";a:5:{s:4:"text";s:182:"
 
 Position map class - generating a page tree / content element list which links for inserting (copy/move) of records. 
 Used for pages / tt_content element wizards of various kinds.
@@ -2363,7 +2478,7 @@ Returning "listURL" - the script with parameters to which forward/backward reque
 ";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:6:"atLine";i:274;}i:15;a:7:{s:6:"header";s:24:"function CBfunctions()    {";s:11:"parentClass";s:16:"t3lib_recordList";s:4:"cDat";a:3:{s:4:"text";s:52:"
 
 Returning JavaScript for ClipBoard functionality.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1334;s:13:"content_lines";i:49;s:6:"atLine";i:283;}}}s:14:"MD5_532a24ef5c";a:4:{s:8:"filename";s:22:"class.t3lib_scbase.php";s:8:"filesize";i:13880;s:6:"header";a:5:{s:4:"text";s:82:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1334;s:13:"content_lines";i:49;s:6:"atLine";i:283;}}}s:14:"MD5_532a24ef5c";a:4:{s:8:"filename";s:22:"class.t3lib_scbase.php";s:8:"filesize";i:13836;s:6:"header";a:5:{s:4:"text";s:82:"
 
 Parent class for 'ScriptClasses' in backend modules.
 See example comment above.
@@ -2371,45 +2486,45 @@ See example comment above.
 
 Parent class for 'ScriptClasses' in backend modules.
 See example comment above.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:4:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";i:3;s:21:"@see t3lib_extobjbase";}s:11:"other_index";a:4:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:17:"t3lib_extobjbase ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2723;s:13:"content_lines";i:109;s:6:"atLine";i:132;}i:3;a:7:{s:6:"header";s:17:"function init()       {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:87:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:4:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:14:"@package TYPO3";i:2;s:17:"@subpackage t3lib";i:3;s:21:"@see t3lib_extobjbase";}s:11:"other_index";a:4:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:17:"t3lib_extobjbase ";}}}s:7:"content";s:0:"";s:12:"content_size";i:2723;s:13:"content_lines";i:109;s:6:"atLine";i:131;}i:3;a:7:{s:6:"header";s:17:"function init()       {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:87:"
 
 Initializes the backend module by setting internal variables, initializing the menu.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:17:"@see menuConfig()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:13:"menuConfig() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:258;s:13:"content_lines";i:8;s:6:"atLine";i:248;}i:5;a:7:{s:6:"header";s:23:"function menuConfig()      {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:407:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:17:"@see menuConfig()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:13:"menuConfig() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:258;s:13:"content_lines";i:8;s:6:"atLine";i:247;}i:5;a:7:{s:6:"header";s:23:"function menuConfig()      {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:407:"
 
 Initializes the internal MOD_MENU array setting and unsetting items based on various conditions. It also merges in external menu items from the global array TBE_MODULES_EXT (see mergeExternalItems())
 Then MOD_SETTINGS array is cleaned up (see t3lib_BEfunc::getModuleData()) so it contains only valid values. It's also updated with any SET[] values submitted.
 Also loads the modTSconfig internal variable.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:90:"@see init(), $MOD_MENU, $MOD_SETTINGS, t3lib_BEfunc::getModuleData(), mergeExternalItems()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:85:"init(), $MOD_MENU, $MOD_SETTINGS, t3lib_BEfunc::getModuleData(), mergeExternalItems()";}}}s:7:"content";s:0:"";s:12:"content_size";i:658;s:13:"content_lines";i:9;s:6:"atLine";i:265;}i:7;a:7:{s:6:"header";s:57:"function mergeExternalItems($modName,$menuKey,$menuArr)   {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:6:{s:4:"text";s:55:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:90:"@see init(), $MOD_MENU, $MOD_SETTINGS, t3lib_BEfunc::getModuleData(), mergeExternalItems()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:85:"init(), $MOD_MENU, $MOD_SETTINGS, t3lib_BEfunc::getModuleData(), mergeExternalItems()";}}}s:7:"content";s:0:"";s:12:"content_size";i:658;s:13:"content_lines";i:9;s:6:"atLine";i:264;}i:7;a:7:{s:6:"header";s:57:"function mergeExternalItems($modName,$menuKey,$menuArr)   {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:6:{s:4:"text";s:55:"
 
 Merges menu items from global array $TBE_MODULES_EXT
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:35:"Module name for which to find value";}i:1;a:2:{i:0;s:6:"string";i:1;s:47:"Menu key, eg. 'function' for the function menu.";}i:2;a:2:{i:0;s:5:"array";i:1;s:40:"The part of a MOD_MENU array to work on.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:20:"Modified array part.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:55:"@see t3lib_extMgm::insertModuleFunction(), menuConfig()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:50:"t3lib_extMgm::insertModuleFunction(), menuConfig()";}}}s:7:"content";s:0:"";s:12:"content_size";i:258;s:13:"content_lines";i:10;s:6:"atLine";i:285;}i:9;a:7:{s:6:"header";s:58:"function handleExternalFunctionValue($MM_key='function')        {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:266:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:35:"Module name for which to find value";}i:1;a:2:{i:0;s:6:"string";i:1;s:47:"Menu key, eg. 'function' for the function menu.";}i:2;a:2:{i:0;s:5:"array";i:1;s:40:"The part of a MOD_MENU array to work on.";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:20:"Modified array part.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:55:"@see t3lib_extMgm::insertModuleFunction(), menuConfig()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:50:"t3lib_extMgm::insertModuleFunction(), menuConfig()";}}}s:7:"content";s:0:"";s:12:"content_size";i:258;s:13:"content_lines";i:10;s:6:"atLine";i:284;}i:9;a:7:{s:6:"header";s:58:"function handleExternalFunctionValue($MM_key='function')        {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:266:"
 
 Loads $this->extClassConf with the configuration for the CURRENT function of the menu.
 If for this array the key 'path' is set then that is expected to be an absolute path to a file which should be included - so it is set in the internal array $this->include_once
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:187:"The key to MOD_MENU for which to fetch configuration. 'function' is default since it is first and foremost used to get information per "extension object" (I think that is what its called)";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:26:"@see $include_once, init()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:21:"$include_once, init()";}}}s:7:"content";s:0:"";s:12:"content_size";i:246;s:13:"content_lines";i:6;s:6:"atLine";i:304;}i:11;a:7:{s:6:"header";s:61:"function getExternalItemConfig($modName,$menuKey,$value='')   {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:313:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:187:"The key to MOD_MENU for which to fetch configuration. 'function' is default since it is first and foremost used to get information per "extension object" (I think that is what its called)";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:26:"@see $include_once, init()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:21:"$include_once, init()";}}}s:7:"content";s:0:"";s:12:"content_size";i:246;s:13:"content_lines";i:6;s:6:"atLine";i:303;}i:11;a:7:{s:6:"header";s:61:"function getExternalItemConfig($modName,$menuKey,$value='')   {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:313:"
 
 Returns configuration values from the global variable $TBE_MODULES_EXT for the module given.
 For example if the module is named "web_info" and the "function" key ($menuKey) of MOD_SETTINGS is "stat" ($value) then you will have the values of $TBE_MODULES_EXT['webinfo']['MOD_MENU']['function']['stat'] returned.
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Module name";}i:1;a:2:{i:0;s:6:"string";i:1;s:67:"Menu key, eg. "function" for the function menu. See $this->MOD_MENU";}i:2;a:2:{i:0;s:6:"string";i:1;s:130:"Optionally the value-key to fetch from the array that would otherwise have been returned if this value was not set. Look source...";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:41:"The value from the TBE_MODULES_EXT array.";}s:5:"other";a:1:{i:0;s:34:"@see handleExternalFunctionValue()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:30:"handleExternalFunctionValue() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:161;s:13:"content_lines";i:3;s:6:"atLine";i:321;}i:13;a:7:{s:6:"header";s:24:"function checkExtObj() {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:741:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:11:"Module name";}i:1;a:2:{i:0;s:6:"string";i:1;s:67:"Menu key, eg. "function" for the function menu. See $this->MOD_MENU";}i:2;a:2:{i:0;s:6:"string";i:1;s:130:"Optionally the value-key to fetch from the array that would otherwise have been returned if this value was not set. Look source...";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:41:"The value from the TBE_MODULES_EXT array.";}s:5:"other";a:1:{i:0;s:34:"@see handleExternalFunctionValue()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:30:"handleExternalFunctionValue() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:161;s:13:"content_lines";i:3;s:6:"atLine";i:320;}i:13;a:7:{s:6:"header";s:24:"function checkExtObj() {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:5:{s:4:"text";s:741:"
 
 Creates an instance of the class found in $this->extClassConf['name'] in $this->extObj if any (this should hold three keys, "name", "path" and "title" if a "Function menu module" tries to connect...)
 This value in extClassConf might be set by an extension (in a ext_tables/ext_localconf file) which thus "connects" to a module.
 The array $this->extClassConf is set in handleExternalFunctionValue() based on the value of MOD_SETTINGS[function]
 (Should be) called from global scope right after inclusion of files from the ->include_once array.
 If an instance is created it is initiated with $this passed as value and $this->extClassConf as second argument. Further the $this->MOD_SETTING is cleaned up again after calling the init function.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:81:"@see handleExternalFunctionValue(), t3lib_extMgm::insertModuleFunction(), $extObj";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:76:"handleExternalFunctionValue(), t3lib_extMgm::insertModuleFunction(), $extObj";}}}s:7:"content";s:0:"";s:12:"content_size";i:338;s:13:"content_lines";i:8;s:6:"atLine";i:335;}i:15;a:7:{s:6:"header";s:27:"function checkSubExtObj()  {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:3:{s:4:"text";s:59:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:5:"other";a:1:{i:0;s:81:"@see handleExternalFunctionValue(), t3lib_extMgm::insertModuleFunction(), $extObj";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:76:"handleExternalFunctionValue(), t3lib_extMgm::insertModuleFunction(), $extObj";}}}s:7:"content";s:0:"";s:12:"content_size";i:338;s:13:"content_lines";i:8;s:6:"atLine";i:334;}i:15;a:7:{s:6:"header";s:27:"function checkSubExtObj()  {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:3:{s:4:"text";s:59:"
 
 Calls the checkExtObj function in sub module if present.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:67;s:13:"content_lines";i:3;s:6:"atLine";i:349;}i:17;a:4:{s:6:"header";s:25:"function extObjHeader()      {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:3:{s:4:"text";s:336:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:67;s:13:"content_lines";i:3;s:6:"atLine";i:348;}i:17;a:4:{s:6:"header";s:25:"function extObjHeader()      {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:3:{s:4:"text";s:336:"
 
 Calls the 'header' function inside the "Function menu module" if present.
 A header function might be needed to add JavaScript or other stuff in the head. This can't be done in the main function because the head is already written.
 example call in the header function:
 $this->pObj->doc->JScode = $this->pObj->doc->wrapScriptTags(' ...
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:6:"atLine";i:361;}i:19;a:7:{s:6:"header";s:26:"function extObjContent()    {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:3:{s:4:"text";s:73:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:6:"atLine";i:360;}i:19;a:7:{s:6:"header";s:26:"function extObjContent()    {";s:11:"parentClass";s:12:"t3lib_SCbase";s:4:"cDat";a:3:{s:4:"text";s:73:"
 
 Calls the 'main' function inside the "Function menu module" if present
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:128;s:13:"content_lines";i:5;s:6:"atLine";i:370;}}}s:14:"MD5_20cd36d13d";a:4:{s:8:"filename";s:26:"class.t3lib_stdgraphic.php";s:8:"filesize";i:77237;s:6:"header";a:5:{s:4:"text";s:216:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:128;s:13:"content_lines";i:5;s:6:"atLine";i:369;}}}s:14:"MD5_20cd36d13d";a:4:{s:8:"filename";s:26:"class.t3lib_stdgraphic.php";s:8:"filesize";i:77237;s:6:"header";a:5:{s:4:"text";s:216:"
 
 Class contains a bunch of cool functions for manipulating graphics with GDlib/Freetype and ImageMagick
 VERY OFTEN used with gifbuilder that extends this class and provides a TypoScript API to using these functions
@@ -2614,7 +2729,7 @@ Writes the input GDlib image pointer to file
 
 Creates a new GDlib image resource based on the input image filename.
 If it fails creating a image from the input file a blank gray image with the dimensions of the input image will be created instead.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"Image filename";}}s:6:"return";a:2:{i:0;s:7:"pointer";i:1;s:22:"Image Resource pointer";}}s:7:"content";s:0:"";s:12:"content_size";i:951;s:13:"content_lines";i:28;s:6:"atLine";i:2240;}}}s:14:"MD5_d40e50240a";a:4:{s:8:"filename";s:24:"class.t3lib_tceforms.php";s:8:"filesize";i:147478;s:6:"header";a:5:{s:4:"text";s:61:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"Image filename";}}s:6:"return";a:2:{i:0;s:7:"pointer";i:1;s:22:"Image Resource pointer";}}s:7:"content";s:0:"";s:12:"content_size";i:951;s:13:"content_lines";i:28;s:6:"atLine";i:2240;}}}s:14:"MD5_d40e50240a";a:4:{s:8:"filename";s:24:"class.t3lib_tceforms.php";s:8:"filesize";i:147590;s:6:"header";a:5:{s:4:"text";s:61:"
 
 'TCEforms' - Class for creating the backend editing forms.
 ";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:4:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor Rene Fritz <r.fritz@colorcube.de>";i:2;s:14:"@package TYPO3";i:3;s:17:"@subpackage t3lib";}s:11:"other_index";a:4:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"Rene Fritz <r.fritz@colorcube.de>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}}}s:3:"DAT";a:84:{i:1;a:8:{s:6:"header";s:22:"class t3lib_TCEforms      {";s:5:"class";i:1;s:11:"parentClass";s:14:"t3lib_TCEforms";s:4:"cDat";a:5:{s:4:"text";s:61:"
@@ -2657,7 +2772,7 @@ This will render a single-line input form field, possibly with various control/v
 
 Generation of TCEform elements of the type "text"
 This will render a <textarea> OR RTE area form field, possibly with various control/validation features
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:28:"The table name of the record";}i:1;a:2:{i:0;s:6:"string";i:1;s:53:"The field name which this element is supposed to edit";}i:2;a:2:{i:0;s:5:"array";i:1;s:67:"The record data array where the value(s) for the field can be found";}i:3;a:2:{i:0;s:5:"array";i:1;s:47:"An array with additional configuration options.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:35:"The HTML code for the TCEform field";}}s:7:"content";s:0:"";s:12:"content_size";i:4414;s:13:"content_lines";i:58;s:6:"atLine";i:881;}i:23;a:7:{s:6:"header";s:60:"function getSingleField_typeCheck($table,$field,$row,&$PA)     {";s:11:"parentClass";s:14:"t3lib_TCEforms";s:4:"cDat";a:3:{s:4:"text";s:108:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:28:"The table name of the record";}i:1;a:2:{i:0;s:6:"string";i:1;s:53:"The field name which this element is supposed to edit";}i:2;a:2:{i:0;s:5:"array";i:1;s:67:"The record data array where the value(s) for the field can be found";}i:3;a:2:{i:0;s:5:"array";i:1;s:47:"An array with additional configuration options.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:35:"The HTML code for the TCEform field";}}s:7:"content";s:0:"";s:12:"content_size";i:4419;s:13:"content_lines";i:58;s:6:"atLine";i:881;}i:23;a:7:{s:6:"header";s:60:"function getSingleField_typeCheck($table,$field,$row,&$PA)     {";s:11:"parentClass";s:14:"t3lib_TCEforms";s:4:"cDat";a:3:{s:4:"text";s:108:"
 
 Generation of TCEform elements of the type "check"
 This will render a check-box OR an array of checkboxes
@@ -2850,7 +2965,7 @@ JavaScript code used for input-field evaluation.
                $this->extJSCODE.='typo3FormFieldSet("send_mail_datetime", "datetime", "", 0,0);';
                
                ... and then include the result of this function after the form
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:43:"The identification of the form on the page.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:44:"A <script></script> section with JavaScript.";}}s:7:"content";s:0:"";s:12:"content_size";i:12628;s:13:"content_lines";i:300;s:6:"atLine";i:3089;}i:137;a:7:{s:6:"header";s:50:"function dbFileCon($formObj='document.forms[0]')     {";s:11:"parentClass";s:14:"t3lib_TCEforms";s:4:"cDat";a:3:{s:4:"text";s:83:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:43:"The identification of the form on the page.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:44:"A <script></script> section with JavaScript.";}}s:7:"content";s:0:"";s:12:"content_size";i:12735;s:13:"content_lines";i:300;s:6:"atLine";i:3089;}i:137;a:7:{s:6:"header";s:50:"function dbFileCon($formObj='document.forms[0]')     {";s:11:"parentClass";s:14:"t3lib_TCEforms";s:4:"cDat";a:3:{s:4:"text";s:83:"
 
 Used to connect the db/file browser with this document and the formfields on it!
 ";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:45:"Form object reference (including "document.")";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:63:"JavaScript functions/code (NOT contained in a <script>-element)";}}s:7:"content";s:0:"";s:12:"content_size";i:2920;s:13:"content_lines";i:102;s:6:"atLine";i:3396;}i:139;a:7:{s:6:"header";s:35:"function printNeededJSFunctions()        {";s:11:"parentClass";s:14:"t3lib_TCEforms";s:4:"cDat";a:3:{s:4:"text";s:66:"
@@ -3026,7 +3141,7 @@ Dummy function, can be used to "register" records. Used by eg. the "show_item" s
 ";s:5:"param";a:4:{i:0;a:2:{i:0;s:6:"string";i:1;s:10:"Table name";}i:1;a:2:{i:0;s:7:"integer";i:1;s:9:"Record id";}i:2;a:2:{i:0;s:6:"string";i:1;s:10:"Field name";}i:3;a:2:{i:0;s:6:"string";i:1;s:14:"Field content.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:19:"@see renderRecord()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:15:"renderRecord() ";}}}s:6:"atLine";i:896;}i:37;a:7:{s:6:"header";s:18:"function sL($in)    {";s:11:"parentClass";s:18:"t3lib_transferData";s:4:"cDat";a:4:{s:4:"text";s:66:"
 
 Local wrapper function for LANG->sL (returning language labels)
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:18:"Language label key";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Localized label value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:249;s:13:"content_lines";i:8;s:6:"atLine";i:906;}}}s:14:"MD5_8b874575ba";a:4:{s:8:"filename";s:24:"class.t3lib_treeview.php";s:8:"filesize";i:27173;s:6:"header";a:5:{s:4:"text";s:69:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:6:"string";i:1;s:18:"Language label key";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:22:"Localized label value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:249;s:13:"content_lines";i:8;s:6:"atLine";i:906;}}}s:14:"MD5_8b874575ba";a:4:{s:8:"filename";s:24:"class.t3lib_treeview.php";s:8:"filesize";i:26715;s:6:"header";a:5:{s:4:"text";s:69:"
 
 Base class for creating a browsable array/page/folder tree in HTML
 ";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"[type]";i:1;s:3:"...";}s:5:"other";a:5:{i:0;s:42:"@author       Kasper Skaarhoj <kasper@typo3.com>";i:1;s:43:"@coauthor René Fritz <r.fritz@colorcube.de>";i:2;s:14:"@package TYPO3";i:3;s:17:"@subpackage t3lib";i:4;s:55:"@see t3lib_browsetree, t3lib_pagetree, t3lib_foldertree";}s:11:"other_index";a:5:{s:7:"@author";a:1:{i:0;s:34:"Kasper Skaarhoj <kasper@typo3.com>";}s:9:"@coauthor";a:1:{i:0;s:33:"René Fritz <r.fritz@colorcube.de>";}s:8:"@package";a:1:{i:0;s:6:"TYPO3 ";}s:11:"@subpackage";a:1:{i:0;s:6:"t3lib ";}s:4:"@see";a:1:{i:0;s:50:"t3lib_browsetree, t3lib_pagetree, t3lib_foldertree";}}}s:3:"DAT";a:30:{i:1;a:8:{s:6:"header";s:22:"class t3lib_treeView {";s:5:"class";i:1;s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:5:{s:4:"text";s:69:"
@@ -3043,97 +3158,97 @@ Resets the tree, recs, ids, and ids_hierarchy internal variables. Use it if you
 
 Will create and return the HTML code for a browsable tree
 Is based on the mounts found in the internal array ->MOUNTS (set in the constructor)
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:32:"HTML code for the browsable tree";}}s:7:"content";s:0:"";s:12:"content_size";i:1605;s:13:"content_lines";i:52;s:6:"atLine";i:267;}i:9;a:7:{s:6:"header";s:33:"function printTree($treeArr='') {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:84:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:32:"HTML code for the browsable tree";}}s:7:"content";s:0:"";s:12:"content_size";i:1625;s:13:"content_lines";i:52;s:6:"atLine";i:267;}i:9;a:7:{s:6:"header";s:33:"function printTree($treeArr='') {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:84:"
 
 Compiles the HTML code for displaying the structure found inside the ->tree array
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:66:""tree-array" - if blank string, the internal ->tree array is used.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:26:"The HTML code for the tree";}}s:7:"content";s:0:"";s:12:"content_size";i:853;s:13:"content_lines";i:29;s:6:"atLine";i:326;}i:11;a:7:{s:6:"header";s:45:"function PMicon($row,$a,$c,$nextCount,$exp)   {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:55:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:66:""tree-array" - if blank string, the internal ->tree array is used.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:26:"The HTML code for the tree";}}s:7:"content";s:0:"";s:12:"content_size";i:850;s:13:"content_lines";i:30;s:6:"atLine";i:326;}i:11;a:7:{s:6:"header";s:45:"function PMicon($row,$a,$c,$nextCount,$exp)   {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:55:"
 
 Generate the plus/minus icon for the browsable tree.
-";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:20:"record for the entry";}i:1;a:2:{i:0;s:7:"integer";i:1;s:24:"The current entry number";}i:2;a:2:{i:0;s:7:"integer";i:1;s:76:"The total number of entries. If equal to $a, a "bottom" element is returned.";}i:3;a:2:{i:0;s:7:"integer";i:1;s:50:"The number of sub-elements to the current element.";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:67:"The element was expanded to render subelements if this flag is set.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:35:"Image tag with the plus/minus icon.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:29:"@see t3lib_pageTree::PMicon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:25:"t3lib_pageTree::PMicon() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:419;s:13:"content_lines";i:12;s:6:"atLine";i:368;}i:13;a:7:{s:6:"header";s:44:"function PM_ATagWrap($icon,$cmd,$bMark='')   {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:37:"
+";s:5:"param";a:5:{i:0;a:2:{i:0;s:5:"array";i:1;s:20:"record for the entry";}i:1;a:2:{i:0;s:7:"integer";i:1;s:24:"The current entry number";}i:2;a:2:{i:0;s:7:"integer";i:1;s:76:"The total number of entries. If equal to $a, a "bottom" element is returned.";}i:3;a:2:{i:0;s:7:"integer";i:1;s:50:"The number of sub-elements to the current element.";}i:4;a:2:{i:0;s:7:"boolean";i:1;s:67:"The element was expanded to render subelements if this flag is set.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:35:"Image tag with the plus/minus icon.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:29:"@see t3lib_pageTree::PMicon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:25:"t3lib_pageTree::PMicon() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:419;s:13:"content_lines";i:12;s:6:"atLine";i:369;}i:13;a:7:{s:6:"header";s:44:"function PM_ATagWrap($icon,$cmd,$bMark='')   {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:37:"
 
 Wrap the plus/minus icon in a link
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:43:"HTML string to wrap, probably an image tag.";}i:1;a:2:{i:0;s:6:"string";i:1;s:24:"Command for 'PM' get var";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:82:"If set, the link will have a anchor point (=$bMark) and a name attribute (=$bMark)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:25:"Link-wrapped input string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:203;s:13:"content_lines";i:8;s:6:"atLine";i:390;}i:15;a:7:{s:6:"header";s:33:"function wrapTitle($title,$row)   {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:29:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:43:"HTML string to wrap, probably an image tag.";}i:1;a:2:{i:0;s:6:"string";i:1;s:24:"Command for 'PM' get var";}i:2;a:2:{i:0;s:7:"boolean";i:1;s:82:"If set, the link will have a anchor point (=$bMark) and a name attribute (=$bMark)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:25:"Link-wrapped input string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:203;s:13:"content_lines";i:8;s:6:"atLine";i:391;}i:15;a:7:{s:6:"header";s:41:"function wrapTitle($title,$row,$bank=0)   {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:29:"
 
 Wrapping $title in a-tags.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:12:"Title string";}i:1;a:2:{i:0;s:6:"string";i:1;s:11:"Item record";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:155;s:13:"content_lines";i:4;s:6:"atLine";i:407;}i:17;a:7:{s:6:"header";s:31:"function wrapIcon($icon,$row)     {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:77:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:6:"string";i:1;s:12:"Title string";}i:1;a:2:{i:0;s:6:"string";i:1;s:11:"Item record";}i:2;a:2:{i:0;s:6:"[type]";i:1;s:10:"$bank: ...";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:211;s:13:"content_lines";i:4;s:6:"atLine";i:409;}i:17;a:7:{s:6:"header";s:31:"function wrapIcon($icon,$row)    {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:77:"
 
 Wrapping the image tag, $icon, for the row, $row (except for mount points)
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"The image tag for the icon";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The row for the current element";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"The processed icon input value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:589;s:13:"content_lines";i:13;s:6:"atLine";i:420;}i:19;a:7:{s:6:"header";s:40:"function addTagAttributes($icon,$attr)  {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:32:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:26:"The image tag for the icon";}i:1;a:2:{i:0;s:5:"array";i:1;s:31:"The row for the current element";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:31:"The processed icon input value.";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:22;s:13:"content_lines";i:3;s:6:"atLine";i:422;}i:19;a:7:{s:6:"header";s:40:"function addTagAttributes($icon,$attr)    {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:32:"
 
 Adds attributes to image tag.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"Icon image tag";}i:1;a:2:{i:0;s:6:"string";i:1;s:36:"Attributes to add, eg. ' border="0"'";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:48:"Image tag, modified with $attr attributes added.";}}s:7:"content";s:0:"";s:12:"content_size";i:65;s:13:"content_lines";i:3;s:6:"atLine";i:441;}i:21;a:7:{s:6:"header";s:30:"function wrapStop($str,$row)      {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:100:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:14:"Icon image tag";}i:1;a:2:{i:0;s:6:"string";i:1;s:36:"Attributes to add, eg. ' border="0"'";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:48:"Image tag, modified with $attr attributes added.";}}s:7:"content";s:0:"";s:12:"content_size";i:65;s:13:"content_lines";i:3;s:6:"atLine";i:433;}i:21;a:7:{s:6:"header";s:30:"function wrapStop($str,$row)      {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:100:"
 
 Adds a red "+" to the input string, $str, if the field "php_tree_stop" in the $row (pages) is set
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:44:"Input string, like a page title for the tree";}i:1;a:2:{i:0;s:5:"array";i:1;s:37:"record row with "php_tree_stop" field";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:15:"Modified string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:102;s:13:"content_lines";i:6;s:6:"atLine";i:453;}i:23;a:7:{s:6:"header";s:25:"function getCount($uid)  {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:59:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:44:"Input string, like a page title for the tree";}i:1;a:2:{i:0;s:5:"array";i:1;s:37:"record row with "php_tree_stop" field";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:15:"Modified string";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:102;s:13:"content_lines";i:6;s:6:"atLine";i:445;}i:23;a:7:{s:6:"header";s:25:"function getCount($uid)  {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:59:"
 
 Returns the number of records having the parent id, $uid
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:24:"id to count subitems for";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:477;s:13:"content_lines";i:14;s:6:"atLine";i:467;}i:25;a:7:{s:6:"header";s:38:"function addField($field,$noCheck=0) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:54:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:24:"id to count subitems for";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:477;s:13:"content_lines";i:14;s:6:"atLine";i:459;}i:25;a:7:{s:6:"header";s:38:"function addField($field,$noCheck=0) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:54:"
 
 Adds a fieldname to the internal array ->fieldArray
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Field name to";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:159:"If set, the fieldname will be set no matter what. Otherwise the field name must either be found as key in $TCA['pages']['columns'] or in the list ->defaultList";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:172;s:13:"content_lines";i:6;s:6:"atLine";i:489;}i:27;a:7:{s:6:"header";s:26:"function expandNext($id)        {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:151:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:6:"string";i:1;s:13:"Field name to";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:159:"If set, the fieldname will be set no matter what. Otherwise the field name must either be found as key in $TCA['pages']['columns'] or in the list ->defaultList";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:172;s:13:"content_lines";i:6;s:6:"atLine";i:481;}i:27;a:7:{s:6:"header";s:26:"function expandNext($id)        {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:151:"
 
 Returns true/false if the next level for $id should be expanded - based on data in $this->stored[][] and ->expandAll flag.
 Extending parent function
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:13:"record id/key";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:33:"@see t3lib_pageTree::expandNext()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:29:"t3lib_pageTree::expandNext() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:76;s:13:"content_lines";i:3;s:6:"atLine";i:505;}i:29;a:7:{s:6:"header";s:37:"function initializePositionSaving()     {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:88:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:13:"record id/key";}}s:6:"return";a:2:{i:0;s:7:"boolean";i:1;s:0:"";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:33:"@see t3lib_pageTree::expandNext()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:29:"t3lib_pageTree::expandNext() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:76;s:13:"content_lines";i:3;s:6:"atLine";i:497;}i:29;a:7:{s:6:"header";s:37:"function initializePositionSaving()     {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:88:"
 
 Get stored tree structure AND updating it if needed according to incoming PM GET var.
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:677;s:13:"content_lines";i:19;s:6:"atLine";i:515;}i:31;a:7:{s:6:"header";s:25:"function savePosition() {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:149:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:677;s:13:"content_lines";i:19;s:6:"atLine";i:507;}i:31;a:7:{s:6:"header";s:25:"function savePosition() {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:149:"
 
 Saves the content of ->stored (keeps track of expanded positions in the tree)
 $this->treeName will be used as key for BE_USER->uc[] to store it in
-";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:272;s:13:"content_lines";i:22;s:6:"atLine";i:542;}i:33;a:8:{s:6:"header";s:30:"function getRootRecord($uid) {";s:11:"parentClass";s:14:"t3lib_treeView";s:11:"sectionText";a:1:{i:0;s:55:"Functions that might be overwritten by extended classes";}s:4:"cDat";a:3:{s:4:"text";s:36:"
+";s:5:"param";a:0:{}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:272;s:13:"content_lines";i:22;s:6:"atLine";i:534;}i:33;a:8:{s:6:"header";s:30:"function getRootRecord($uid) {";s:11:"parentClass";s:14:"t3lib_treeView";s:11:"sectionText";a:1:{i:0;s:55:"Functions that might be overwritten by extended classes";}s:4:"cDat";a:3:{s:4:"text";s:36:"
 
 Returns root record for uid (<=0)
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:42:"uid, <= 0 (normally, this does not matter)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:62:"Array with title/uid keys with values of $this->title/0 (zero)";}}s:7:"content";s:0:"";s:12:"content_size";i:54;s:13:"content_lines";i:3;s:6:"atLine";i:571;}i:35;a:7:{s:6:"header";s:28:"function getRootIcon($rec) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:70:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:42:"uid, <= 0 (normally, this does not matter)";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:62:"Array with title/uid keys with values of $this->title/0 (zero)";}}s:7:"content";s:0:"";s:12:"content_size";i:54;s:13:"content_lines";i:3;s:6:"atLine";i:563;}i:35;a:7:{s:6:"header";s:28:"function getRootIcon($rec) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:70:"
 
 Returns the root icon for a tree/mountpoint (defaults to the globe)
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:16:"Record for root.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:15:"Icon image tag.";}}s:7:"content";s:0:"";s:12:"content_size";i:150;s:13:"content_lines";i:3;s:6:"atLine";i:581;}i:37;a:7:{s:6:"header";s:26:"function getRecord($uid) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:129:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:16:"Record for root.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:15:"Icon image tag.";}}s:7:"content";s:0:"";s:12:"content_size";i:150;s:13:"content_lines";i:3;s:6:"atLine";i:573;}i:37;a:7:{s:6:"header";s:26:"function getRecord($uid) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:129:"
 
 Returns the record for a uid.
 For tables: Looks up the record in the database.
 For arrays: Returns the fake record for uid id.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:14:"UID to look up";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:10:"The record";}}s:7:"content";s:0:"";s:12:"content_size";i:130;s:13:"content_lines";i:7;s:6:"atLine";i:593;}i:39;a:7:{s:6:"header";s:22:"function getId($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:44:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:14:"UID to look up";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:10:"The record";}}s:7:"content";s:0:"";s:12:"content_size";i:130;s:13:"content_lines";i:7;s:6:"atLine";i:585;}i:39;a:7:{s:6:"header";s:22:"function getId($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:44:"
 
 Returns the id from the record (typ. uid)
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:12:"Record array";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:22:"The "uid" field value.";}}s:7:"content";s:0:"";s:12:"content_size";i:27;s:13:"content_lines";i:3;s:6:"atLine";i:607;}i:41;a:7:{s:6:"header";s:30:"function getJumpToParm($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:36:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:12:"Record array";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:22:"The "uid" field value.";}}s:7:"content";s:0:"";s:12:"content_size";i:27;s:13:"content_lines";i:3;s:6:"atLine";i:599;}i:41;a:7:{s:6:"header";s:30:"function getJumpToParm($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:36:"
 
 Returns jump-url parameter value.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:17:"The record array.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:23:"The jump-url parameter.";}}s:7:"content";s:0:"";s:12:"content_size";i:42;s:13:"content_lines";i:3;s:6:"atLine";i:617;}i:43;a:7:{s:6:"header";s:24:"function getIcon($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:110:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:17:"The record array.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:23:"The jump-url parameter.";}}s:7:"content";s:0:"";s:12:"content_size";i:42;s:13:"content_lines";i:3;s:6:"atLine";i:609;}i:43;a:7:{s:6:"header";s:24:"function getIcon($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:110:"
 
 Get icon for the row.
 If $this->iconPath and $this->iconName is set, try to get icon based on those values.
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:9:"Item row.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:10:"Image tag.";}}s:7:"content";s:0:"";s:12:"content_size";i:332;s:13:"content_lines";i:9;s:6:"atLine";i:628;}i:45;a:7:{s:6:"header";s:41:"function getTitleStr($row,$titleLen=30)  {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:181:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:9:"Item row.";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:10:"Image tag.";}}s:7:"content";s:0:"";s:12:"content_size";i:332;s:13:"content_lines";i:9;s:6:"atLine";i:620;}i:45;a:7:{s:6:"header";s:41:"function getTitleStr($row,$titleLen=30)  {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:181:"
 
 Returns the title for the input record. If blank, a "no title" labele (localized) will be returned. 
 Do NOT htmlspecialchar the string from this function - has already been done.
-";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:65:"The input row array (where the key "title" is used for the title)";}i:1;a:2:{i:0;s:7:"integer";i:1;s:17:"Title length (30)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:10:"The title.";}}s:7:"content";s:0:"";s:12:"content_size";i:227;s:13:"content_lines";i:4;s:6:"atLine";i:646;}i:47;a:7:{s:6:"header";s:31:"function getTitleAttrib($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:5:{s:4:"text";s:52:"
+";s:5:"param";a:2:{i:0;a:2:{i:0;s:5:"array";i:1;s:65:"The input row array (where the key "title" is used for the title)";}i:1;a:2:{i:0;s:7:"integer";i:1;s:17:"Title length (30)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:10:"The title.";}}s:7:"content";s:0:"";s:12:"content_size";i:227;s:13:"content_lines";i:4;s:6:"atLine";i:638;}i:47;a:7:{s:6:"header";s:31:"function getTitleAttrib($row) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:5:{s:4:"text";s:52:"
 
 Returns the value for the image "title" attribute
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:65:"The input row array (where the key "title" is used for the title)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:52:"The attribute value (is htmlspecialchared() already)";}s:5:"other";a:1:{i:0;s:15:"@see wrapIcon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:11:"wrapIcon() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:192;s:13:"content_lines";i:23;s:6:"atLine";i:658;}i:49;a:8:{s:6:"header";s:69:"function getTree($uid, $depth=999, $depthData='',$blankLineCode='')    {";s:11:"parentClass";s:14:"t3lib_treeView";s:11:"sectionText";a:2:{i:0;s:13:"Data handling";i:1;s:29:"Works with records and arrays";}s:4:"cDat";a:3:{s:4:"text";s:32:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"array";i:1;s:65:"The input row array (where the key "title" is used for the title)";}}s:6:"return";a:2:{i:0;s:6:"string";i:1;s:52:"The attribute value (is htmlspecialchared() already)";}s:5:"other";a:1:{i:0;s:15:"@see wrapIcon()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:11:"wrapIcon() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:192;s:13:"content_lines";i:23;s:6:"atLine";i:650;}i:49;a:8:{s:6:"header";s:69:"function getTree($uid, $depth=999, $depthData='',$blankLineCode='')    {";s:11:"parentClass";s:14:"t3lib_treeView";s:11:"sectionText";a:2:{i:0;s:13:"Data handling";i:1;s:29:"Works with records and arrays";}s:4:"cDat";a:3:{s:4:"text";s:32:"
 
 Fetches the data for the tree
-";s:5:"param";a:4:{i:0;a:2:{i:0;s:7:"integer";i:1;s:48:"item id for which to select subitems (parent id)";}i:1;a:2:{i:0;s:7:"integer";i:1;s:29:"Max depth (recursivity limit)";}i:2;a:2:{i:0;s:6:"string";i:1;s:37:"HTML-code prefix for recursive calls.";}i:3;a:2:{i:0;s:6:"string";i:1;s:12:"? (internal)";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:31:"The count of items on the level";}}s:7:"content";s:0:"";s:12:"content_size";i:1906;s:13:"content_lines";i:68;s:6:"atLine";i:691;}i:51;a:7:{s:6:"header";s:33:"function getDataInit($parentId) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:234:"
+";s:5:"param";a:4:{i:0;a:2:{i:0;s:7:"integer";i:1;s:48:"item id for which to select subitems (parent id)";}i:1;a:2:{i:0;s:7:"integer";i:1;s:29:"Max depth (recursivity limit)";}i:2;a:2:{i:0;s:6:"string";i:1;s:37:"HTML-code prefix for recursive calls.";}i:3;a:2:{i:0;s:6:"string";i:1;s:12:"? (internal)";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:31:"The count of items on the level";}}s:7:"content";s:0:"";s:12:"content_size";i:1933;s:13:"content_lines";i:69;s:6:"atLine";i:683;}i:51;a:7:{s:6:"header";s:33:"function getDataInit($parentId) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:234:"
 
 Getting the tree data: Selecting/Initializing data pointer to items for a certain parent id. 
 For tables: This will make a database query to select all children to "parent"
 For arrays: This will return key to the ->dataLookup array
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:14:"parent item id";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:108:"data handle (Tables: An sql-resource, arrays: A parentId integer. -1 is returned if there were NO subLevel.)";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:500;s:13:"content_lines";i:20;s:6:"atLine";i:769;}i:53;a:7:{s:6:"header";s:29:"function getDataCount($res) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:55:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:7:"integer";i:1;s:14:"parent item id";}}s:6:"return";a:2:{i:0;s:5:"mixed";i:1;s:108:"data handle (Tables: An sql-resource, arrays: A parentId integer. -1 is returned if there were NO subLevel.)";}s:6:"access";s:7:"private";}s:7:"content";s:0:"";s:12:"content_size";i:500;s:13:"content_lines";i:20;s:6:"atLine";i:762;}i:53;a:7:{s:6:"header";s:29:"function getDataCount($res) {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:55:"
 
 Getting the tree data: Counting elements in resource
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:11:"data handle";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:15:"number of items";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:18:"@see getDataInit()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:14:"getDataInit() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:190;s:13:"content_lines";i:8;s:6:"atLine";i:798;}i:55;a:7:{s:6:"header";s:27:"function getDataNext($res){";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:36:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:11:"data handle";}}s:6:"return";a:2:{i:0;s:7:"integer";i:1;s:15:"number of items";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:18:"@see getDataInit()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:14:"getDataInit() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:190;s:13:"content_lines";i:8;s:6:"atLine";i:791;}i:55;a:7:{s:6:"header";s:27:"function getDataNext($res){";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:6:{s:4:"text";s:36:"
 
 Getting the tree data: next entry
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:11:"data handle";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:44:"item data array OR FALSE if end of elements.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:18:"@see getDataInit()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:14:"getDataInit() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:298;s:13:"content_lines";i:17;s:6:"atLine";i:815;}i:57;a:4:{s:6:"header";s:27:"function getDataFree($res){";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:43:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:11:"data handle";}}s:6:"return";a:2:{i:0;s:5:"array";i:1;s:44:"item data array OR FALSE if end of elements.";}s:6:"access";s:7:"private";s:5:"other";a:1:{i:0;s:18:"@see getDataInit()";}s:11:"other_index";a:1:{s:4:"@see";a:1:{i:0;s:14:"getDataInit() ";}}}s:7:"content";s:0:"";s:12:"content_size";i:298;s:13:"content_lines";i:17;s:6:"atLine";i:808;}i:57;a:4:{s:6:"header";s:27:"function getDataFree($res){";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:4:{s:4:"text";s:43:"
 
 Getting the tree data: frees data handle
-";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:11:"data handle";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:6:"atLine";i:840;}i:59;a:7:{s:6:"header";s:61:"function setDataFromArray(&$dataArr,$traverse=FALSE,$pid=0)     {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:348:"
+";s:5:"param";a:1:{i:0;a:2:{i:0;s:5:"mixed";i:1;s:11:"data handle";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}s:6:"access";s:7:"private";}s:6:"atLine";i:833;}i:59;a:7:{s:6:"header";s:61:"function setDataFromArray(&$dataArr,$traverse=FALSE,$pid=0)     {";s:11:"parentClass";s:14:"t3lib_treeView";s:4:"cDat";a:3:{s:4:"text";s:348:"
 
 Used to initialize class with an array to browse.
 The array inputted will be traversed and an internal index for lookup is created.
 The keys of the input array are perceived as "uid"s of records which means that keys GLOBALLY must be unique like uids are. 
 "uid" and "pid" "fakefields" are also set in each record.
 All other fields are optional.
-";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:51:"The input array, see examples below in this script.";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:24:"Internal, for recursion.";}i:2;a:2:{i:0;s:7:"integer";i:1;s:24:"Internal, for recursion.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1485;s:13:"content_lines";i:64;s:6:"atLine";i:860;}}}s:14:"MD5_76c71c3bfa";a:4:{s:8:"filename";s:30:"class.t3lib_tsfebeuserauth.php";s:8:"filesize";i:42407;s:6:"header";a:5:{s:4:"text";s:116:"
+";s:5:"param";a:3:{i:0;a:2:{i:0;s:5:"array";i:1;s:51:"The input array, see examples below in this script.";}i:1;a:2:{i:0;s:7:"boolean";i:1;s:24:"Internal, for recursion.";}i:2;a:2:{i:0;s:7:"integer";i:1;s:24:"Internal, for recursion.";}}s:6:"return";a:2:{i:0;s:4:"void";i:1;s:0:"";}}s:7:"content";s:0:"";s:12:"content_size";i:1485;s:13:"content_lines";i:64;s:6:"atLine";i:853;}}}s:14:"MD5_76c71c3bfa";a:4:{s:8:"filename";s:30:"class.t3lib_tsfebeuserauth.php";s:8:"filesize";i:42407;s:6:"header";a:5:{s:4:"text";s:116:"
 
 TYPO3 backend user authentication in the TSFE frontend.
 This includes mainly functions related to the Admin Panel
index 5b10c93..bff4eb9 100755 (executable)
@@ -332,7 +332,6 @@ TABLE#typo3-permissionList IMG { vertical-align: middle; }
 
 
 
-
 /*********************************************
  * VARIOUS STAND-ALONE classes:
  *********************************************/
index 69bfb3e..ef6fee7 100755 (executable)
@@ -406,7 +406,7 @@ class SC_db_layout {
                                                }
                                        } else document.location = URL;
                                }
-                       '.($this->popView ? t3lib_BEfunc::viewOnClick($this->id,'',t3lib_BEfunc::BEgetRootLine($this->id)) : '').'
+                       '.($this->popView ? t3lib_BEfunc::viewOnClick($this->id,$BACK_PATH,t3lib_BEfunc::BEgetRootLine($this->id)) : '').'
                        
                                function deleteRecord(table,id,url)     {       //
                                        if (confirm('.$LANG->JScharCode($LANG->getLL('deleteWarning')).'))      {       
index d1aea35..1437d9e 100755 (executable)
@@ -1693,7 +1693,7 @@ class tslib_cObj {
                                                if($image)      {
                                                        $fieldCode = str_replace('<img','<input type="image"'.$addParams.' name="'.$confData['fieldname'].'"' ,$image);
                                                } else {
-                                                       $fieldCode=sprintf('<input type="submit" name="%s" value="%s"'.$addParams.'>',
+                                                       $fieldCode=sprintf('<input type="submit" name="%s" value="%s"'.$addParams.' />',
                                                                $confData['fieldname'], htmlspecialchars($value));
                                                }
                                        break;
@@ -1805,9 +1805,17 @@ class tslib_cObj {
                        $GLOBALS['TSFE']->additionalHeaderData['JSFormValidate'] = '<script type="text/javascript" src="'.$GLOBALS['TSFE']->absRefPrefix.'t3lib/jsfunc.validateform.js"></script>';
                } else $validateForm='';
                
-
+                       // Create form tag:
+               $theTarget = ($theRedirect?$LD['target']:$LD_A['target']);
                $content = Array(
-                       '<form action="'.htmlspecialchars($action).'" name="'.$formname.'" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'" method="'.($conf['method']?$conf['method']:'post').'" target="'.($theRedirect?$LD['target']:$LD_A['target']).'"'.$validateForm.'>',
+                       '<form'.
+                               ' action="'.htmlspecialchars($action).'"'.
+                               ' name="'.$formname.'"'.
+                               ' enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'"'.
+                               ' method="'.($conf['method']?$conf['method']:'post').'"'.
+                               ($theTarget ? ' target="'.$theTarget.'"' : '').
+                               $validateForm.
+                               '>',
                        $hiddenfields.$content,
                        '</form>'
                );
@@ -2386,7 +2394,7 @@ class tslib_cObj {
                                } else {
                                        $target = ' target="thePicture"';
                                        if (isset($conf['target'])) {
-                                               $target= ($conf['target']) ? ' target="'.$conf['target'].'"' : '';
+                                               $target= $conf['target'] ? ' target="'.$conf['target'].'"' : '';
                                        }
                                        $a1='<a href="'.htmlspecialchars($url).'"'.$target.$GLOBALS['TSFE']->ATagParams.'>';
                                        $a2='</a>';
@@ -2842,6 +2850,10 @@ class tslib_cObj {
                                if ($conf['crop']){$content=$this->crop($content, $conf['crop']);}
                                if ($conf['stripHtml']){$content=strip_tags($content);}
                                if ($conf['htmlSpecialChars']){$content=htmlSpecialChars($content);}
+                               if ($conf['htmlSpecialChars']){
+                                       $content=htmlSpecialChars($content);
+                                       if ($conf['htmlSpecialChars.']['preserveEntities'])     $content = t3lib_div::deHSCentities($content);
+                               }
        
                                if ($conf['doubleBrTag']) {
                                        $content=ereg_replace("\r?\n[\t ]*\r?\n",$conf['doubleBrTag'],$content);
@@ -3126,7 +3138,7 @@ class tslib_cObj {
        function HTMLparser_TSbridge($theValue, $conf)  {
                $htmlParser = t3lib_div::makeInstance('t3lib_parsehtml');
                $htmlParserCfg =  $htmlParser->HTMLparserConfig($conf);
-               return $htmlParser->HTMLcleaner($theValue,$htmlParserCfg[0],$htmlParserCfg[1],$htmlParserCfg[2]);
+               return $htmlParser->HTMLcleaner($theValue,$htmlParserCfg[0],$htmlParserCfg[1],$htmlParserCfg[2],$htmlParserCfg[3]);
        }
 
        /**
@@ -3925,7 +3937,7 @@ class tslib_cObj {
                                        // Default align
                                if (!$attrib['align'] && $defaultAlign) $attrib['align']=$defaultAlign;
 
-                               $params = t3lib_div::implodeParams($attrib);
+                               $params = t3lib_div::implodeParams($attrib,1);
                                if ($conf['removeWrapping'])    {
                                        $str_content=$str_content;
                                } else {
@@ -3983,9 +3995,17 @@ class tslib_cObj {
                                }
                                $target = isset($conf['extTarget']) ? $conf['extTarget'] : $GLOBALS['TSFE']->extTarget;
                                if ($GLOBALS['TSFE']->config['config']['jumpurl_enable'])       {
-                                       $res = '<a href="'.htmlspecialchars($GLOBALS['TSFE']->absRefPrefix.$GLOBALS['TSFE']->config['mainScript'].$initP.'&jumpurl='.rawurlencode('http://'.$parts[0]).$GLOBALS['TSFE']->getMethodUrlIdToken).'" target="'.$target.'"'.$aTagParams.'>';
+                                       $res = '<a'.
+                                                       ' href="'.htmlspecialchars($GLOBALS['TSFE']->absRefPrefix.$GLOBALS['TSFE']->config['mainScript'].$initP.'&jumpurl='.rawurlencode('http://'.$parts[0]).$GLOBALS['TSFE']->getMethodUrlIdToken).'"'.
+                                                       ($target ? ' target="'.$target.'"' : '').
+                                                       $aTagParams.
+                                                       '>';
                                } else {
-                                       $res = '<a href="http://'.htmlspecialchars($parts[0]).'" target="'.$target.'"'.$aTagParams.'>';
+                                       $res = '<a'.
+                                                       ' href="http://'.htmlspecialchars($parts[0]).'"'.
+                                                       ($target ? ' target="'.$target.'"' : '').
+                                                       $aTagParams.
+                                                       '>';
                                }
                                if ($conf['ATagBeforeWrap'])    {
                                        $res= $res.$this->wrap($linktxt, $conf['wrap']).'</a>';
@@ -4513,7 +4533,7 @@ class tslib_cObj {
                                        }
                                        $this->lastTypoLinkTarget = $target;
                                        $finalTagParts['url']=$this->lastTypoLinkUrl;
-                                       $finalTagParts['targetParams']=' target="'.$target.'"';
+                                       $finalTagParts['targetParams'] = $target ? ' target="'.$target.'"' : '';
                                        $finalTagParts['TYPE']='url';
                                } elseif ($fileChar || $isLocalFile)    {       // file (internal)
                                        $splitLinkParam = explode('?',$link_param);
@@ -4528,7 +4548,7 @@ class tslib_cObj {
                                                $this->lastTypoLinkTarget = $target;
 
                                                $finalTagParts['url']=$this->lastTypoLinkUrl;
-                                               $finalTagParts['targetParams']=' target="'.$target.'"';
+                                               $finalTagParts['targetParams'] = $target ? ' target="'.$target.'"' : '';
                                                $finalTagParts['TYPE']='file';
                                        } else {
                                                $GLOBALS['TT']->setTSlogMessage("typolink(): File '".$splitLinkParam[0]."' did not exist, so '".$linktxt."' was not linked.",1);