*** empty log message ***
authorKasper Skårhøj <kasper@typo3.org>
Mon, 22 Mar 2004 15:16:37 +0000 (15:16 +0000)
committerKasper Skårhøj <kasper@typo3.org>
Mon, 22 Mar 2004 15:16:37 +0000 (15:16 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@138 709f56b5-9817-0410-a4d7-c38de5d9e867

42 files changed:
t3lib/class.t3lib_admin.php
t3lib/class.t3lib_arraybrowser.php
t3lib/class.t3lib_basicfilefunc.php
t3lib/class.t3lib_bedisplaylog.php
t3lib/class.t3lib_befunc.php
t3lib/class.t3lib_beuserauth.php
t3lib/class.t3lib_browsetree.php
t3lib/class.t3lib_clipboard.php
t3lib/class.t3lib_cs.php
t3lib/class.t3lib_diff.php
t3lib/class.t3lib_div.php
t3lib/class.t3lib_dmailer.php
t3lib/class.t3lib_exec.php
t3lib/class.t3lib_extfilefunc.php
t3lib/class.t3lib_extmgm.php
t3lib/class.t3lib_extobjbase.php
t3lib/class.t3lib_foldertree.php
t3lib/class.t3lib_formmail.php
t3lib/class.t3lib_fullsearch.php
t3lib/class.t3lib_htmlmail.php
t3lib/class.t3lib_iconworks.php
t3lib/class.t3lib_install.php
t3lib/class.t3lib_loaddbgroup.php
t3lib/class.t3lib_loadmodules.php
t3lib/class.t3lib_matchcondition.php
t3lib/class.t3lib_modsettings.php
t3lib/class.t3lib_page.php
t3lib/class.t3lib_pagetree.php
t3lib/class.t3lib_parsehtml.php
t3lib/class.t3lib_parsehtml_proc.php
t3lib/class.t3lib_positionmap.php
t3lib/class.t3lib_querygenerator.php
t3lib/class.t3lib_readmail.php
t3lib/class.t3lib_recordlist.php
t3lib/class.t3lib_scbase.php
t3lib/class.t3lib_stdgraphic.php
t3lib/class.t3lib_superadmin.php
t3lib/gfx/clear_all_cache.gif
t3lib/gfx/clear_cache_files_in_typo3c.gif
t3lib/gfx/loginbox_image_360rc1.jpg [new file with mode: 0755]
t3lib/gfx/loginbox_image_360rc2.jpg [new file with mode: 0755]
t3lib/stddb/tables.sql

index cb3d69c..90e5c0c 100644 (file)
  *
  *   90: class t3lib_admin 
  *  116:     function genTree($theID, $depthData)      
- *  150:     function lostRecords($pid_list)   
- *  179:     function fixLostRecord($table,$uid)       
- *  197:     function countRecords($pid_list)  
- *  227:     function getGroupFields($mode)    
- *  261:     function getFileFields($uploadfolder)     
- *  284:     function getDBFields($theSearchTable)     
- *  312:     function selectNonEmptyRecordsWithFkeys($fkey_arrays)     
- *  387:     function testFileRefs ()  
- *  438:     function testDBRefs($theArray)    
- *  477:     function whereIsRecordReferenced($searchTable,$id)        
- *  511:     function whereIsFileReferenced($uploadfolder,$filename)   
+ *  156:     function lostRecords($pid_list)   
+ *  187:     function fixLostRecord($table,$uid)       
+ *  208:     function countRecords($pid_list)  
+ *  236:     function getGroupFields($mode)    
+ *  270:     function getFileFields($uploadfolder)     
+ *  293:     function getDBFields($theSearchTable)     
+ *  321:     function selectNonEmptyRecordsWithFkeys($fkey_arrays)     
+ *  394:     function testFileRefs ()  
+ *  445:     function testDBRefs($theArray)    
+ *  483:     function whereIsRecordReferenced($searchTable,$id)        
+ *  520:     function whereIsFileReferenced($uploadfolder,$filename)   
  *
  * TOTAL FUNCTIONS: 12
  * (This index is automatically created/updated by the extension "extdeveval")
@@ -78,9 +78,9 @@
 
 /**
  * This class holds functions used by the TYPO3 backend to check the integrity of the database (The DBint module, 'lowlevel' extension)
- * 
+ *
  * Depends on:         Depends on loaddbgroup from t3lib/
- * 
+ *
  * @todo       Need to really extend this class when the tcemain library has been updated and the whole API is better defined. There are some known bugs in this library. Further it would be nice with a facility to not only analyze but also clean up!
  * @see SC_mod_tools_dbint_index::func_relations(), SC_mod_tools_dbint_index::func_records()
  * @author     Kasper Skaarhoj <kasper@typo3.com>
@@ -108,16 +108,22 @@ class t3lib_admin {
 
        /**
         * Generates a list of Page-uid's that corresponds to the tables in the tree. This list should ideally include all records in the pages-table.
-        * 
+        *
         * @param       integer         a pid (page-record id) from which to start making the tree
         * @param       string          HTML-code (image-tags) used when this function calls itself recursively.
-        * @return      integer         Number of mysql_num_rows (most recent query)
+        * @return      integer         Number of $GLOBALS['TYPO3_DB']->sql_num_rows (most recent query)
         */
        function genTree($theID, $depthData)    {
-               $res = mysql(TYPO3_db, 'SELECT uid,title,doktype,deleted'.(t3lib_extMgm::isLoaded('cms')?',hidden':'').' FROM pages WHERE pid="'.$theID.'" '.((!$this->genTree_includeDeleted)?'AND NOT deleted':'').$this->perms_clause.' ORDER BY sorting');
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                                       'uid,title,doktype,deleted'.(t3lib_extMgm::isLoaded('cms')?',hidden':''), 
+                                       'pages', 
+                                       'pid='.intval($theID).' '.((!$this->genTree_includeDeleted)?'AND NOT deleted':'').$this->perms_clause, 
+                                       '', 
+                                       'sorting'
+                               );
                $a=0;
-               $c=mysql_num_rows($res);
-               while ($row = mysql_fetch_assoc($res))  {
+               $c = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
+               while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))      {
                        $a++;
                        $newID =$row['uid'];
                        if ($this->genTree_makeHTML)    {       
@@ -138,14 +144,14 @@ class t3lib_admin {
                        
                        $this->genTree($newID,$this->genTree_HTML ? $depthData.'<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.$LN.'.gif','width="18" height="16"').' align="top" alt="" />'  : '');
                }
-               return (mysql_num_rows($res));
+               return $GLOBALS['TYPO3_DB']->sql_num_rows($res);
        }
        
        /**
         * Fills $this->lRecords with the records from all tc-tables that are not attached to a PID in the pid-list.
-        * 
+        *
         * @param       string          list of pid's (page-record uid's). This list is probably made by genTree()
-        * @return      void            
+        * @return      void
         */
        function lostRecords($pid_list) {
                global $TCA;
@@ -154,11 +160,13 @@ class t3lib_admin {
                if ($pid_list)  {
                        while (list($table)=each($TCA)) {
                                t3lib_div::loadTCA($table);
-                               $query = 'SELECT uid,pid,'.$TCA[$table]['ctrl']['label'].' FROM '.$table.' WHERE pid NOT IN ('.$pid_list.')';
-                               $garbage = mysql(TYPO3_db,$query);
-                               echo mysql_error();
+                               $garbage = $GLOBALS['TYPO3_DB']->exec_SELECTquery (
+                                                               'uid,pid,'.$TCA[$table]['ctrl']['label'], 
+                                                               $table, 
+                                                               'pid NOT IN ('.$pid_list.')'
+                                                       );
                                $lostIdList=Array();
-                               while ($row = mysql_fetch_assoc($garbage))      {
+                               while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($garbage))  {
                                        $this->lRecords[$table][$row['uid']]=Array('uid'=>$row['uid'], 'pid'=>$row['pid'], 'title'=> strip_tags($row[$TCA[$table]['ctrl']['label']]) );
                                        $lostIdList[]=$row['uid'];
                                }
@@ -171,26 +179,29 @@ class t3lib_admin {
 
        /**
         * Fixes lost record from $table with uid $uid by setting the PID to zero. If there is a disabled column for the record that will be set as well.
-        * 
+        *
         * @param       string          Database tablename
         * @param       integer         The uid of the record which will have the PID value set to 0 (zero)
         * @return      boolean         True if done.
         */
        function fixLostRecord($table,$uid)     {
                if ($table && $GLOBALS['TCA'][$table] && $uid && is_array($this->lRecords[$table][$uid]) && $GLOBALS['BE_USER']->user['admin']) {
-                       $extra='';
+
+                       $updateFields = array();
+                       $updateFields['pid'] = 0;
                        if ($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'])       {       // If possible a lost record restored is hidden as default
-                               $extra.=','.$GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'].'=1';
+                               $updateFields[$GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']] = 1;
                        }
-                       $fixQuery = 'UPDATE '.$table.' SET pid=0'.$extra.' WHERE uid="'.$uid.'"';
-                       $fixQ = mysql(TYPO3_db,$fixQuery);
-                       return true;
-               } else return false;
+
+                       $GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($uid), $updateFields);
+
+                       return TRUE;
+               } else return FALSE;
        }
 
        /**
         * Counts records from $TCA-tables that ARE attached to an existing page.
-        * 
+        *
         * @param       string          list of pid's (page-record uid's). This list is probably made by genTree()
         * @return      array           an array with the number of records from all $TCA-tables that are attached to a PID in the pid-list.
         */
@@ -202,15 +213,13 @@ class t3lib_admin {
                if ($pid_list)  {
                        while (list($table)=each($TCA)) {
                                t3lib_div::loadTCA($table);
-                               $query = 'SELECT count(*) FROM '.$table.' WHERE pid IN ('.$pid_list.')';
-                               $count = mysql(TYPO3_db,$query);
-                               if ($row = mysql_fetch_row($count))     {
+                               $count = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', $table, 'pid IN ('.$pid_list.')');
+                               if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_row($count)) {
                                        $list[$table]=$row[0];
                                }
 
-                               $query = 'SELECT count(*) FROM '.$table.' WHERE pid IN ('.$pid_list.')'.t3lib_BEfunc::deleteClause($table);
-                               $count = mysql(TYPO3_db,$query);
-                               if ($row = mysql_fetch_row($count))     {
+                               $count = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', $table, 'pid IN ('.$pid_list.')'.t3lib_BEfunc::deleteClause($table));
+                               if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_row($count)) {
                                        $list_n[$table]=$row[0];
                                }
                        }
@@ -220,7 +229,7 @@ class t3lib_admin {
 
        /**
         * Finding relations in database based on type 'group' (files or database-uid's in a list)
-        * 
+        *
         * @param       string          $mode = file, $mode = db, $mode = '' (all...)
         * @return      array           An array with all fields listed that somehow are references to other records (foreign-keys) or files
         */
@@ -254,7 +263,7 @@ class t3lib_admin {
 
        /**
         * Finds all fields that hold filenames from uploadfolder
-        * 
+        *
         * @param       string          Path to uploadfolder
         * @return      array           An array with all fields listed that have references to files in the $uploadfolder
         */
@@ -277,9 +286,9 @@ class t3lib_admin {
 
        /**
         * Returns an array with arrays of table/field pairs which are allowed to hold references to the input table name - according to $TCA
-        * 
+        *
         * @param       string          Table name
-        * @return      array           
+        * @return      array
         */
        function getDBFields($theSearchTable)   {
                global $TCA;
@@ -304,9 +313,9 @@ class t3lib_admin {
 
        /**
         * This selects non-empty-records from the tables/fields in the fkey_array generated by getGroupFields()
-        * 
+        *
         * @param       array           Array with tables/fields generated by getGroupFields()
-        * @return      void            
+        * @return      void
         * @see getGroupFields()
         */
        function selectNonEmptyRecordsWithFkeys($fkey_arrays)   {
@@ -318,10 +327,8 @@ class t3lib_admin {
                                        t3lib_div::loadTCA($table);
                                        $fieldArr = explode(',',$field_list);
                                        $cl_fl = implode ('!="" OR ',$fieldArr). '!=""';
-                                       $query = 'SELECT uid,'.$field_list.' FROM '.$table.' WHERE '.$cl_fl;
-                                       $mres = mysql(TYPO3_db,$query);
-                                       echo mysql_error();
-                                       while ($row=mysql_fetch_assoc($mres))   {
+                                       $mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,'.$field_list, $table, $cl_fl);
+                                       while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres))     {
                                                reset($fieldArr);
                                                while (list(,$field)=each($fieldArr))   {
                                                        if (trim($row[$field]))         {
@@ -381,7 +388,7 @@ class t3lib_admin {
 
        /**
         * Depends on selectNonEmpty.... to be executed first!!
-        * 
+        *
         * @return      array           Report over files; keys are "moreReferences", "noReferences", "noFile", "error"
         */
        function testFileRefs ()        {
@@ -431,7 +438,7 @@ class t3lib_admin {
 
        /**
         * Depends on selectNonEmpty.... to be executed first!!
-        * 
+        *
         * @param       array           Table with key/value pairs being table names and arrays with uid numbers
         * @return      string          HTML Error message
         */
@@ -446,9 +453,8 @@ class t3lib_admin {
                                }
                                $theList = implode($idlist,',');
                                if ($theList)   {
-                                       $query='SELECT uid FROM '.$table.' WHERE uid IN ('.$theList.') '.t3lib_BEfunc::deleteClause($table);
-                                       $mres = mysql(TYPO3_db,$query);
-                                       while($row=mysql_fetch_assoc($mres))    {
+                                       $mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', $table, 'uid IN ('.$theList.')'.t3lib_BEfunc::deleteClause($table));
+                                       while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres))      {
                                                if (isset($dbArr[$row['uid']])) {
                                                        unset ($dbArr[$row['uid']]);
                                                } else {
@@ -469,7 +475,7 @@ class t3lib_admin {
 
        /**
         * Finding all references to record based on table/uid
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Uid of database record
         * @return      array           Array with other arrays containing information about where references was found
@@ -481,9 +487,12 @@ class t3lib_admin {
                while (list(,$info)=each($fileFields))  {
                        $table=$info[0];        $field=$info[1];
                        t3lib_div::loadTCA($table);
-                       $query = 'SELECT uid,pid,'.$TCA[$table]['ctrl']['label'].','.$field.' FROM '.$table.' WHERE '.$field.' LIKE "%'.addSlashes($id).'%"';
-                       $mres = mysql(TYPO3_db,$query);
-                       while ($row = mysql_fetch_assoc($mres)) {
+                       $mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                                                       'uid,pid,'.$TCA[$table]['ctrl']['label'].','.$field, 
+                                                       $table, 
+                                                       $field.' LIKE "%'.$GLOBALS['TYPO3_DB']->quoteStr($id, $table).'%"'
+                                               );
+                       while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres))     {
                                        // Now this is the field, where the reference COULD come from. But we're not garanteed, so we must carefully examine the data.
                                $fieldConf = $TCA[$table]['columns'][$field]['config'];
                                $allowedTables = ($fieldConf['type']=='group') ? $fieldConf['allowed'] : $fieldConf['foreign_table'];
@@ -503,7 +512,7 @@ class t3lib_admin {
 
        /**
         * Finding all references to file based on uploadfolder / filename
-        * 
+        *
         * @param       string          Upload folder where file is found
         * @param       string          Filename to search for
         * @return      array           Array with other arrays containing information about where references was found
@@ -514,9 +523,12 @@ class t3lib_admin {
                $theRecordList=Array(); 
                while (list(,$info)=each($fileFields))  {
                        $table=$info[0];        $field=$info[1];
-                       $query = 'SELECT uid,pid,'.$TCA[$table]['ctrl']['label'].','.$field.' FROM '.$table.' WHERE '.$field.' LIKE "%'.addSlashes($filename).'%"';
-                       $mres = mysql(TYPO3_db,$query);
-                       while ($row = mysql_fetch_assoc($mres)) {
+                       $mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                                                       'uid,pid,'.$TCA[$table]['ctrl']['label'].','.$field, 
+                                                       $table, 
+                                                       $field.' LIKE "%'.$GLOBALS['TYPO3_DB']->quoteStr($filename, $table).'%"'
+                                               );
+                       while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres))     {
                                // Now this is the field, where the reference COULD come from. But we're not garanteed, so we must carefully examine the data.
                                $tempArr = explode(',',trim($row[$field]));
                                while (list(,$file)=each($tempArr))     {
index 825625c..6c7c82a 100644 (file)
@@ -66,7 +66,7 @@
 /**
  * Class for displaying an array as a tree
  * See the extension 'lowlevel' /config (Backend module 'Tools > Configuration')
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -81,7 +81,7 @@ class t3lib_arrayBrowser      {
        /**
         * Make browsable tree
         * Before calling this function you may want to set some of the internal vars like depthKeys, regexMode and fixedLgd. For examples see SC_mod_tools_config_index::main()
-        * 
+        *
         * @param       array           The array to display
         * @param       string          Key-position id. Build up during recursive calls - [key1].[key2].[key3] - an so on.
         * @param       string          Depth-data - basically a prefix for the icons. For calling this function from outside, let it stay blank.
@@ -144,12 +144,12 @@ class t3lib_arrayBrowser  {
 
        /**
         * Creates an array with "depthKeys" which will expand the array to show the search results
-        * 
+        *
         * @param       array           The array to search for the value
         * @param       string          Depth string - blank for first call (will build up during recursive calling creating an id of the position: [key1].[key2].[key3]
         * @param       string          The string to search for
         * @param       array           Key array, for first call pass empty array
-        * @return      array           
+        * @return      array
         */
        function getSearchKeys($keyArr, $depth_in, $searchString, $keyArray)            {
                reset($keyArr);
@@ -178,7 +178,7 @@ class t3lib_arrayBrowser    {
 
        /**
         * Fixed length function
-        * 
+        *
         * @param       string          String to process
         * @param       integer         Max number of chars
         * @return      string          Processed string
@@ -194,7 +194,7 @@ class t3lib_arrayBrowser    {
 
        /**
         * Function modifying the depthKey array
-        * 
+        *
         * @param       array           Array with instructions to open/close nodes.
         * @param       array           Input depth_key array
         * @return      array           Output depth_key array with entries added/removed based on $arr
index e5d9138..1423352 100644 (file)
@@ -71,7 +71,7 @@
 
 /**
  * Contains functions for management, validation etc of files in TYPO3, using the concepts of web- and ftp-space. Please see the comment for the init() function
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -101,7 +101,7 @@ class t3lib_basicFileFunctions      {
        /**
         * Constructor
         * This function should be called to initialise the internal arrays $this->mounts and $this->f_ext
-        * 
+        *
         *  A typical example of the array $mounts is this:
         *              $mounts[xx][path] = (..a mounted path..)
         *      the 'xx'-keys is just numerical from zero. There are also a [name] and [type] value that just denotes the mountname and type. Not used for athentication here.
@@ -109,7 +109,7 @@ class t3lib_basicFileFunctions      {
         *      The mountpaths are with a trailing '/'. $thePath must be with a trailing '/' also!
         *      As you can see, $this->mounts is very critical! This is the array that decides where the user will be allowed to copy files!!
         *  Typically the global var $WEBMOUNTS would be passed along as $mounts
-        * 
+        *
         *      A typical example of the array $f_ext is this:
         *              $f_ext['webspace']['allow']='';
         *              $f_ext['webspace']['deny']='php3,php';
@@ -120,13 +120,13 @@ class t3lib_basicFileFunctions    {
         *      You list extensions comma-separated. If the value is a '*' every extension is allowed
         *      The list is case-insensitive when used in this class (see init())
         *  Typically TYPO3_CONF_VARS['BE']['fileExtensions'] would be passed along as $f_ext.
-        * 
+        *
         *  Example:
         *      $basicff->init($GLOBALS['FILEMOUNTS'],$TYPO3_CONF_VARS['BE']['fileExtensions']);
-        * 
+        *
         * @param       array           Contains the paths of the file mounts for the current BE user. Normally $GLOBALS['FILEMOUNTS'] is passed. This variable is set during backend user initialization; $FILEMOUNTS = $BE_USER->returnFilemounts(); (see typo3/init.php)
         * @param       array           Array with information about allowed and denied file extensions. Typically passed: $TYPO3_CONF_VARS['BE']['fileExtensions']
-        * @return      void            
+        * @return      void
         * @see typo3/init.php, t3lib_userAuthGroup::returnFilemounts()
         */
        function init($mounts, $f_ext)  {
@@ -142,7 +142,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Returns an array with a whole lot of fileinformation.
-        * 
+        *
         * @param       string          Filepath to existing file. Should probably be absolute. Filefunctions are performed on this value.
         * @return      array           Information about the file in the filepath
         */
@@ -161,7 +161,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Checks if a $iconkey (fileextension) is allowed according to $this->f_ext.
-        * 
+        *
         * @param       string          The extension to check, eg. "php" or "html" etc.
         * @param       string          Either "webspage" or "ftpspace" - points to a key in $this->f_ext
         * @return      boolean         True if file extension is allowed.
@@ -187,9 +187,9 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Returns true if you can operate of ANY file ('*') in the space $theDest is in ('webspace' / 'ftpspace')
-        * 
+        *
         * @param       string          Absolute path
-        * @return      boolean         
+        * @return      boolean
         */
        function checkIfFullAccess($theDest)    {
                $type = $this->is_webpath($theDest)?'webspace':'ftpspace';
@@ -201,9 +201,9 @@ class t3lib_basicFileFunctions      {
        /**
         * Checks if $this->webPath (should be TYPO3_DOCUMENT_ROOT) is in the first part of $path
         * Returns true also if $this->init is not set or if $path is empty...
-        * 
+        *
         * @param       string          Absolute path to check
-        * @return      boolean         
+        * @return      boolean
         */
        function is_webpath($path)      {               
                if ($this->isInit)      {
@@ -219,7 +219,7 @@ class t3lib_basicFileFunctions      {
        /**
         * If the filename is given, check it against the TYPO3_CONF_VARS[BE][fileDenyPattern] +
         * Checks if the $ext fileextension is allowed in the path $theDest (this is based on whether $theDest is below the $this->webPath)
-        * 
+        *
         * @param       string          File extension, eg. "php" or "html"
         * @param       string          Absolute path for which to test
         * @param       string          Filename to check against TYPO3_CONF_VARS[BE][fileDenyPattern]
@@ -231,9 +231,9 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Returns true if the input filename string is shorter than $this->maxInputNameLen.
-        * 
+        *
         * @param       string          Filename, eg "somefile.html"
-        * @return      boolean         
+        * @return      boolean
         */
        function checkFileNameLen($fileName)    {
                return strlen($fileName) <= $this->maxInputNameLen;
@@ -241,7 +241,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Cleans $theDir for slashes in the end of the string and returns the new path, if it exists on the server.
-        * 
+        *
         * @param       string          Directory path to check
         * @return      string          Returns the cleaned up directory name if OK, otherwise false.
         */
@@ -257,7 +257,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Wrapper for t3lib_div::validPathStr()
-        * 
+        *
         * @param       string          Filepath to evaluate
         * @return      boolean         True, if no '//', '..' or '\' is in the $theFile
         * @see t3lib_div::validPathStr()
@@ -270,7 +270,7 @@ class t3lib_basicFileFunctions      {
         * Returns the destination path/filename of a unique filename/foldername in that path.
         * If $theFile exists in $theDest (directory) the file have numbers appended up to $this->maxNumber. Hereafter a unique string will be appended.
         * This function is used by fx. TCEmain when files are attached to records and needs to be uniquely named in the uploads/* folders
-        * 
+        *
         * @param       string          The input filename to check
         * @param       string          The directory for which to return a unique filename for $theFile. $theDest MUST be a valid directory. Should be absolute.
         * @param       boolean         If set the filename is returned with the path prepended without checking whether it already existed!
@@ -315,7 +315,7 @@ class t3lib_basicFileFunctions      {
        /**
         * Checks if $thePath is a path under one of the paths in $this->mounts
         * See comment in the header of this class.
-        * 
+        *
         * @param       string          $thePath MUST HAVE a trailing '/' in order to match correctly with the mounts
         * @return      string          The key to the first mount found, otherwise nothing is returned.
         * @see init()
@@ -334,7 +334,7 @@ class t3lib_basicFileFunctions      {
        /**
         * Removes filemount part of a path, thus blinding the position.
         * Takes a path, $thePath, and removes the part of the path which equals the filemount.
-        * 
+        *
         * @param       string          $thePath is a path which MUST be found within one of the internally set filemounts, $this->mounts
         * @return      string          The processed input path
         */
@@ -351,7 +351,7 @@ class t3lib_basicFileFunctions      {
        /**
         * Find temporary folder
         * Finds the first $this->tempFN ('_temp_' usually) -folder in the internal array of filemounts, $this->mounts
-        * 
+        *
         * @return      string          Returns the path if found, otherwise nothing if error.
         */
        function findTempFolder()       {
@@ -379,7 +379,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Removes all dots, slashes and spaces after a path...
-        * 
+        *
         * @param       string          Input string
         * @return      string          Output string
         */
@@ -389,7 +389,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Converts any double slashes (//) to a single slash (/)
-        * 
+        *
         * @param       string          Input value
         * @return      string          Returns the converted string
         */
@@ -399,7 +399,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Returns a string which has a slash '/' appended if it doesn't already have that slash
-        * 
+        *
         * @param       string          Input string
         * @return      string          Output string with a slash in the end (if not already there)
         */
@@ -412,7 +412,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Returns a string where any character not matching [.a-zA-Z0-9_-] is substituted by '_'
-        * 
+        *
         * @param       string          Input string, typically the body of a filename
         * @return      string          Output string with any characters not matching [.a-zA-Z0-9_-] is substituted by '_'
         */
@@ -423,7 +423,7 @@ class t3lib_basicFileFunctions      {
 
        /**
         * Formats an integer, $sizeInBytes, to Mb or Kb or just bytes
-        * 
+        *
         * @param       integer         Bytes to be formated
         * @return      string          Formatted with M,K or &nbsp;&nbsp; appended.
         */
index 956afe7..707ff1b 100644 (file)
  *  146:     function getTypeLabel($code)      
  *  160:     function getActionLabel($code)    
  *  178:     function getDetails($code,$text,$data,$sys_log_uid=0)     
- *  211:     function reset()  
- *  225:     function getErrorFormatting($sign)        
- *  235:     function formatDetailsForList($row)       
- *  252:     function stripPath($inArr)        
+ *  210:     function reset()  
+ *  224:     function getErrorFormatting($sign)        
+ *  234:     function formatDetailsForList($row)       
+ *  251:     function stripPath($inArr)        
  *
  * TOTAL FUNCTIONS: 10
  * (This index is automatically created/updated by the extension "extdeveval")
@@ -72,7 +72,7 @@
 /**
  * This class holds some functions used to display the sys_log table-content.
  * Used in the status-scripts and the log-module.
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -94,8 +94,8 @@ class t3lib_BEDisplayLog {
 
        /**
         * Initialize the log table array with header labels.
-        * 
-        * @return      array           
+        *
+        * @return      array
         */
        function initArray()    {
                $codeArr=Array();
@@ -110,7 +110,7 @@ class t3lib_BEDisplayLog {
 
        /**
         * Get time label for log listing
-        * 
+        *
         * @param       integer         Timestamp to display
         * @return      string          If the timestamp was also shown last time, then "." is returned. Otherwise the new timestamp formatted with ->doc->formatTime()
         */
@@ -125,7 +125,7 @@ class t3lib_BEDisplayLog {
 
        /**
         * Get user name label for log listing
-        * 
+        *
         * @param       integer         be_user uid
         * @return      string          If username is different from last username then the username, otherwise "."
         */
@@ -139,7 +139,7 @@ class t3lib_BEDisplayLog {
 
        /**
         * Get type label for log listing
-        * 
+        *
         * @param       string          Key for the type label in locallang
         * @return      string          If labe is different from last type label then the label is returned, otherwise "."
         */
@@ -153,7 +153,7 @@ class t3lib_BEDisplayLog {
 
        /**
         * Get action label for log listing
-        * 
+        *
         * @param       string          Key for the action label in locallang
         * @return      string          If labe is different from last action label then the label is returned, otherwise "."
         */
@@ -167,7 +167,7 @@ class t3lib_BEDisplayLog {
 
        /**
         * Get details for the log entry
-        * 
+        *
         * @param       string          Suffix to "msg_" to get label from locallang.
         * @param       string          Details text
         * @param       array           Data array
@@ -180,9 +180,9 @@ class t3lib_BEDisplayLog {
                if (is_array($data))    {
                        if ($this->detailsOn)   {
                                if (is_object($GLOBALS['LANG']))        {
-                                       $label=$GLOBALS['LANG']->getLL('msg_'.$code);
+                                       $label = $GLOBALS['LANG']->getLL('msg_'.$code);
                                } else {
-                                       list($label)=explode(',',$text);
+                                       list($label) = explode(',',$text);
                                }
                                if ($label)     {$text=$label;}
                                $text = sprintf($text, htmlspecialchars($data[0]),htmlspecialchars($data[1]),htmlspecialchars($data[2]),htmlspecialchars($data[3]),htmlspecialchars($data[4]));
@@ -192,9 +192,8 @@ class t3lib_BEDisplayLog {
                }
                
                        // Finding the history for the record
-               $query='SELECT uid,fieldlist FROM sys_history WHERE sys_log_uid='.intval($sys_log_uid);
-               $res = mysql(TYPO3_db,$query);
-               $newRow = mysql_fetch_assoc($res);
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,fieldlist', 'sys_history', 'sys_log_uid='.intval($sys_log_uid));
+               $newRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
                if (is_array($newRow))  {
                        $text.=' Changes in fields: <em>'.$newRow['fieldlist'].'</em>.';
                        $text.=' <a href="'.htmlspecialchars($GLOBALS['BACK_PATH'].'show_rechis.php?sh_uid='.$newRow['uid'].'&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'"><b>->His</b></a>';
@@ -205,8 +204,8 @@ class t3lib_BEDisplayLog {
 
        /**
         * Reset all internal "last..." variables to blank string.
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function reset()        {
                $this->lastTimeLabel='';
@@ -217,7 +216,7 @@ class t3lib_BEDisplayLog {
 
        /**
         * Formats input string in red-colored font tags
-        * 
+        *
         * @param       string          Input value
         * @return      string          Input wrapped in red font-tag and bold
         * @obsolete
@@ -228,7 +227,7 @@ class t3lib_BEDisplayLog {
 
        /**
         * Formatting details text for the sys_log row inputted
-        * 
+        *
         * @param       array           sys_log row
         * @return      string          Details string
         */
@@ -244,9 +243,9 @@ class t3lib_BEDisplayLog {
        /**
         * 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
-        * 
+        *
         * @param       array           Array of file paths
-        * @return      array           
+        * @return      array
         * @see formatDetailsForList()
         */
        function stripPath($inArr)      {
index dd6c524..dded52a 100755 (executable)
  *
  *
  *
- *  158: class t3lib_BEfunc    
+ *  160: class t3lib_BEfunc    
  *
  *              SECTION: SQL-related, selecting records, searching
- *  179:     function deleteClause($table)     
- *  203:     function getRecord($table,$uid,$fields='*',$where='')     
+ *  181:     function deleteClause($table)     
+ *  205:     function getRecord($table,$uid,$fields='*',$where='')     
  *  228:     function getRecordRaw($table,$where='',$fields='*')       
- *  249:     function getRecordsByField($theTable,$theField,$theValue,$endClause='')   
- *  272:     function searchQuery($searchWords,$fields)        
- *  294:     function listQuery($field,$value) 
- *  309:     function splitTable_Uid($str)     
- *  325:     function getSQLselectableList ($in_list,$tablename,$default_tablename)    
- *  354:     function BEenableFields($table,$inv=0)    
- *  398:     function mm_query($select,$local_table,$mm_table,$foreign_table,$endClause='')    
- *  415:     function DBcompileInsert($table,$fields_values,$slash=1)  
- *  434:     function DBcompileUpdate($table,$where,$fields_values,$slash=1)   
+ *  251:     function getRecordsByField($theTable,$theField,$theValue,$whereClause='',$groupBy='',$orderBy='',$limit='')       
+ *  284:     function searchQuery($searchWords,$fields,$table='')      
+ *  300:     function listQuery($field,$value) 
+ *  313:     function splitTable_Uid($str)     
+ *  329:     function getSQLselectableList ($in_list,$tablename,$default_tablename)    
+ *  358:     function BEenableFields($table,$inv=0)    
+ *
+ *              SECTION: SQL-related, DEPRECIATED functions
+ *  422:     function mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause='',$groupBy='',$orderBy='',$limit='')        
+ *  444:     function DBcompileInsert($table,$fields_values)   
+ *  458:     function DBcompileUpdate($table,$where,$fields_values)    
  *
  *              SECTION: Page tree, TCA related
- *  473:     function BEgetRootLine ($uid,$clause='')  
- *  520:     function getRecordPath($uid,$clause,$titleLimit)  
- *  547:     function getExcludeFields()       
- *  580:     function readPageAccess($id,$perms_clause)        
- *  610:     function getTCAtypes($table,$rec,$useFieldNameAsKey=0)    
- *  656:     function getTCAtypeValue($table,$rec)     
- *  679:     function getSpecConfParts($str)   
- *  704:     function getSpecConfParametersFromArray($pArr)    
- *  729:     function getFlexFormDS($conf,$row,$table) 
+ *  488:     function BEgetRootLine ($uid,$clause='')  
+ *  539:     function getRecordPath($uid,$clause,$titleLimit)  
+ *  564:     function getExcludeFields()       
+ *  599:     function readPageAccess($id,$perms_clause)        
+ *  629:     function getTCAtypes($table,$rec,$useFieldNameAsKey=0)    
+ *  675:     function getTCAtypeValue($table,$rec)     
+ *  698:     function getSpecConfParts($str)   
+ *  723:     function getSpecConfParametersFromArray($pArr)    
+ *  748:     function getFlexFormDS($conf,$row,$table) 
  *
  *              SECTION: Caching related
- *  833:     function storeHash($hash,$data,$ident)    
- *  849:     function getHash($hash,$expTime)  
+ *  853:     function storeHash($hash,$data,$ident)    
+ *  874:     function getHash($hash,$expTime)  
  *
  *              SECTION: TypoScript related
- *  886:     function getPagesTSconfig($id,$rootLine='',$returnPartArray=0)    
- *  937:     function updatePagesTSconfig($id,$pageTS,$TSconfPrefix,$impParams='')     
- *  992:     function implodeTSParams($p,$k='')        
+ *  911:     function getPagesTSconfig($id,$rootLine='',$returnPartArray=0)    
+ *  962:     function updatePagesTSconfig($id,$pageTS,$TSconfPrefix,$impParams='')     
+ * 1018:     function implodeTSParams($p,$k='')        
  *
  *              SECTION: Users / Groups related
- * 1030:     function getUserNames($fields='username,usergroup,usergroup_cached_list,uid',$where='')   
- * 1050:     function getGroupNames($fields='title,uid',$where='')     
- * 1069:     function getListGroupNames($fields='title,uid')   
- * 1089:     function blindUserNames($usernames,$groupArray,$excludeBlindedFlag=0)     
- * 1123:     function blindGroupNames($groups,$groupArray,$excludeBlindedFlag=0)       
+ * 1056:     function getUserNames($fields='username,usergroup,usergroup_cached_list,uid',$where='')   
+ * 1075:     function getGroupNames($fields='title,uid', $where='')    
+ * 1093:     function getListGroupNames($fields='title,uid')   
+ * 1113:     function blindUserNames($usernames,$groupArray,$excludeBlindedFlag=0)     
+ * 1147:     function blindGroupNames($groups,$groupArray,$excludeBlindedFlag=0)       
  *
  *              SECTION: Output related
- * 1167:     function daysUntil($tstamp)       
- * 1180:     function date($tstamp)    
- * 1192:     function datetime($value) 
- * 1205:     function time($value)     
- * 1222:     function calcAge ($seconds,$labels)       
- * 1249:     function dateTimeAge($tstamp,$prefix=1,$date='')  
- * 1268:     function titleAttrib($content='',$hsc=0)  
- * 1280:     function titleAltAttrib($content) 
- * 1305:     function thumbCode($row,$table,$field,$backPath,$thumbScript='',$uploaddir='',$abs=0,$tparams='',$size='')        
- * 1374:     function getThumbNail($thumbScript,$theFile,$tparams='',$size='') 
- * 1392:     function titleAttribForPages($row,$perms_clause='',$includeAttrib=1)      
- * 1447:     function getRecordIconAltText($row,$table='pages')        
- * 1482:     function getLabelFromItemlist($table,$col,$key)   
- * 1509:     function getItemLabel($table,$col,$printAllWrap='')       
- * 1535:     function getRecordTitle($table,$row,$prep=0)      
- * 1571:     function getProcessedValue($table,$col,$value,$fixed_lgd_chars=0,$defaultPassthrough=0)   
- * 1666:     function getProcessedValueExtra($table,$fN,$fV,$fixed_lgd_chars=0)        
- * 1691:     function getFileIcon($ext)        
- * 1706:     function getCommonSelectFields($table,$prefix)    
- * 1733:     function makeConfigForm($configArray,$defaults,$dataPrefix)       
+ * 1191:     function daysUntil($tstamp)       
+ * 1204:     function date($tstamp)    
+ * 1216:     function datetime($value) 
+ * 1229:     function time($value)     
+ * 1246:     function calcAge ($seconds,$labels)       
+ * 1273:     function dateTimeAge($tstamp,$prefix=1,$date='')  
+ * 1292:     function titleAttrib($content='',$hsc=0)  
+ * 1304:     function titleAltAttrib($content) 
+ * 1329:     function thumbCode($row,$table,$field,$backPath,$thumbScript='',$uploaddir='',$abs=0,$tparams='',$size='')        
+ * 1398:     function getThumbNail($thumbScript,$theFile,$tparams='',$size='') 
+ * 1416:     function titleAttribForPages($row,$perms_clause='',$includeAttrib=1)      
+ * 1471:     function getRecordIconAltText($row,$table='pages')        
+ * 1506:     function getLabelFromItemlist($table,$col,$key)   
+ * 1533:     function getItemLabel($table,$col,$printAllWrap='')       
+ * 1559:     function getRecordTitle($table,$row,$prep=0)      
+ * 1596:     function getProcessedValue($table,$col,$value,$fixed_lgd_chars=0,$defaultPassthrough=0)   
+ * 1691:     function getProcessedValueExtra($table,$fN,$fV,$fixed_lgd_chars=0)        
+ * 1716:     function getFileIcon($ext)        
+ * 1731:     function getCommonSelectFields($table,$prefix)    
+ * 1758:     function makeConfigForm($configArray,$defaults,$dataPrefix)       
  *
  *              SECTION: Backend Modules API functions
- * 1810:     function helpTextIcon($table,$field,$BACK_PATH,$force=0)  
- * 1832:     function helpText($table,$field,$BACK_PATH)       
- * 1853:     function editOnClick($params,$backPath='',$requestUri='') 
- * 1870:     function viewOnClick($id,$backPath='',$rootLine='',$anchor='',$altUrl='') 
- * 1897:     function getModTSconfig($id,$TSref)       
- * 1919:     function getFuncMenu($id,$elementName,$currentValue,$menuItems,$script='',$addparams='')  
- * 1949:     function getFuncCheck($id,$elementName,$currentValue,$script='',$addparams='',$tagParams='')      
- * 1970:     function getFuncInput($id,$elementName,$currentValue,$size=10,$script="",$addparams="")   
- * 1987:     function unsetMenuItems($modTSconfig,$itemArray,$TSref)   
- * 2011:     function getSetUpdateSignal($set='')      
- * 2061:     function getModuleData($MOD_MENU, $CHANGED_SETTINGS, $modName, $type='', $dontValidateList='', $setDefaultList='')        
+ * 1835:     function helpTextIcon($table,$field,$BACK_PATH,$force=0)  
+ * 1857:     function helpText($table,$field,$BACK_PATH)       
+ * 1878:     function editOnClick($params,$backPath='',$requestUri='') 
+ * 1895:     function viewOnClick($id,$backPath='',$rootLine='',$anchor='',$altUrl='') 
+ * 1922:     function getModTSconfig($id,$TSref)       
+ * 1944:     function getFuncMenu($id,$elementName,$currentValue,$menuItems,$script='',$addparams='')  
+ * 1974:     function getFuncCheck($id,$elementName,$currentValue,$script='',$addparams='',$tagParams='')      
+ * 1995:     function getFuncInput($id,$elementName,$currentValue,$size=10,$script="",$addparams="")   
+ * 2012:     function unsetMenuItems($modTSconfig,$itemArray,$TSref)   
+ * 2036:     function getSetUpdateSignal($set='')      
+ * 2087:     function getModuleData($MOD_MENU, $CHANGED_SETTINGS, $modName, $type='', $dontValidateList='', $setDefaultList='')        
  *
  *              SECTION: Core
- * 2138:     function lockRecords($table='',$uid=0,$pid=0)     
- * 2169:     function isRecordLocked($table,$uid)      
- * 2208:     function foreign_table_where_query($fieldValue,$field='',$TSconfig=array(),$prefix='')    
- * 2261:     function getTCEFORM_TSconfig($table,$row) 
- * 2309:     function getTSconfig_pidValue($table,$uid,$pid)   
- * 2338:     function getPidForModTSconfig($table,$uid,$pid)   
- * 2355:     function getTSCpid($table,$uid,$pid)      
- * 2372:     function firstDomainRecord($rootLine)     
- * 2395:     function getDomainStartPage($domain, $path='')    
- * 2428:     function RTEsetup($RTEprop,$table,$field,$type='')        
- * 2449:     function isModuleSetInTBE_MODULES($modName)       
+ * 2164:     function lockRecords($table='',$uid=0,$pid=0)     
+ * 2194:     function isRecordLocked($table,$uid)      
+ * 2235:     function exec_foreign_table_where_query($fieldValue,$field='',$TSconfig=array(),$prefix='')       
+ * 2317:     function getTCEFORM_TSconfig($table,$row) 
+ * 2365:     function getTSconfig_pidValue($table,$uid,$pid)   
+ * 2394:     function getPidForModTSconfig($table,$uid,$pid)   
+ * 2411:     function getTSCpid($table,$uid,$pid)      
+ * 2428:     function firstDomainRecord($rootLine)     
+ * 2451:     function getDomainStartPage($domain, $path='')    
+ * 2482:     function RTEsetup($RTEprop,$table,$field,$type='')        
+ * 2503:     function isModuleSetInTBE_MODULES($modName)       
  *
  *              SECTION: Miscellaneous
- * 2499:     function typo3PrintError ($header,$text,$js='',$head=1)   
- * 2546:     function getPathType_web_nonweb($path)    
- * 2559:     function ADMCMD_previewCmds($pageinfo)    
- * 2582:     function processParams($params)   
- * 2609:     function getListOfBackendModules($name,$perms_clause,$backPath='',$script='index.php')    
+ * 2553:     function typo3PrintError ($header,$text,$js='',$head=1)   
+ * 2600:     function getPathType_web_nonweb($path)    
+ * 2613:     function ADMCMD_previewCmds($pageinfo)    
+ * 2636:     function processParams($params)   
+ * 2663:     function getListOfBackendModules($name,$perms_clause,$backPath='',$script='index.php')    
  *
  * TOTAL FUNCTIONS: 78
  * (This index is automatically created/updated by the extension "extdeveval")
 /**
  * Standard functions available for the TYPO3 backend.
  * Don't instantiate - call functions with "t3lib_BEfunc::" prefixed the function name.
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -170,9 +172,9 @@ class t3lib_BEfunc  {
         * Returns the WHERE clause " AND NOT [tablename].[deleted-field]" if a deleted-field is configured in $TCA for the tablename, $table
         * This function should ALWAYS be called in the backend for selection on tables which are configured in TCA since it will ensure consistent selection of records, even if they are marked deleted (in which case the system must always treat them as non-existent!)
         * In the frontend a function, ->enableFields(), is known to filter hidden-field, start- and endtime and fe_groups as well. But that is a job of the frontend, not the backend. If you need filtering on those fields as well in the backend you can use ->BEenableFields() though.
-        * 
+        *
         * Usage: 80
-        * 
+        *
         * @param       string          Table name present in $TCA
         * @return      string          WHERE clause for filtering out deleted records, eg " AND NOT tablename.deleted"
         */
@@ -191,9 +193,9 @@ class t3lib_BEfunc  {
         * Additional WHERE clauses can be added by $where (fx. ' AND blabla=1')
         * Will automatically check if records has been deleted and if so, not return anything.
         * $table must be found in $TCA
-        * 
+        *
         * Usage: 168
-        * 
+        *
         * @param       string          Table name present in $TCA
         * @param       integer         UID of record
         * @param       string          List of fields to select
@@ -202,10 +204,8 @@ class t3lib_BEfunc {
         */
        function getRecord($table,$uid,$fields='*',$where='')   {
                if ($GLOBALS['TCA'][$table])    {
-                       $del=t3lib_BEfunc::deleteClause($table);
-                       $query='SELECT '.$fields.' FROM '.$table.' WHERE uid='.intval($uid).$del.$where;
-                       $res = mysql(TYPO3_db, $query);
-                       if ($row = mysql_fetch_assoc($res))     {
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'uid='.intval($uid).t3lib_BEfunc::deleteClause($table).$where);
+                       if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                return $row;
                        }
                }
@@ -217,18 +217,17 @@ class t3lib_BEfunc        {
         * $table does NOT need to be configured in $TCA
         * The query used is simply this:
         * $query='SELECT '.$fields.' FROM '.$table.' WHERE '.$where;
-        * 
+        *
         * Usage: 5 (ext: sys_todos)
-        * 
+        *
         * @param       string          Table name (not necessarily in TCA)
         * @param       string          WHERE clause
         * @param       string          $fields is a list of fields to select, default is '*'
         * @return      array           First row found, if any
         */
        function getRecordRaw($table,$where='',$fields='*')     {
-               $query='SELECT '.$fields.' FROM '.$table.' WHERE '.$where;
-               $res = mysql(TYPO3_db, $query);
-               if ($row = mysql_fetch_assoc($res))     {
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, $where);
+               if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                        return $row;
                }
        }
@@ -237,86 +236,91 @@ class t3lib_BEfunc        {
         * Returns records from table, $theTable, where a field ($theField) equals the value, $theValue
         * The records are returned in an array
         * If no records were selected, the function returns nothing
-        * 
+        *
         * Usage: 8
-        * 
+        *
         * @param       string          Table name present in $TCA
         * @param       string          Field to select on
         * @param       string          Value that $theField must match
-        * @param       string          $endClause is a string prepended to the SQL-statement. Can be additional where clauses, a "LIMIT" clause or whatever.
-        * @return      array           Multidimensional array with selected records
+        * @param       string          Optional additional WHERE clauses put in the end of the query. DO NOT PUT IN GROUP BY, ORDER BY or LIMIT!
+        * @param       string          Optional GROUP BY field(s), if none, supply blank string.
+        * @param       string          Optional ORDER BY field(s), if none, supply blank string.
+        * @param       string          Optional LIMIT value ([begin,]max), if none, supply blank string.
+        * @return      mixed           Multidimensional array with selected records (if any is selected)
         */
-       function getRecordsByField($theTable,$theField,$theValue,$endClause='') {
+       function getRecordsByField($theTable,$theField,$theValue,$whereClause='',$groupBy='',$orderBy='',$limit='')     {
                global $TCA;
                if (is_array($TCA[$theTable])) {
-                       $del=t3lib_BEfunc::deleteClause($theTable);
-                       $query = 'SELECT * FROM '.$theTable.' WHERE '.$theField.'="'.addslashes($theValue).'"'.$del.' '.$endClause;
-                       $res = mysql(TYPO3_db, $query);
-                       $rows=array();
-                       while($row = mysql_fetch_assoc($res))   {
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                                               '*', 
+                                               $theTable, 
+                                               $theField.'="'.$GLOBALS['TYPO3_DB']->quoteStr($theValue, $theTable).'"'.
+                                                       t3lib_BEfunc::deleteClause($theTable).' '.
+                                                       $whereClause,   // whereClauseMightContainGroupOrderBy
+                                               $groupBy,
+                                               $orderBy,
+                                               $limit
+                                       );
+                       $rows = array();
+                       while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
                                $rows[] = $row;
                        }
+                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
                        if (count($rows))       return $rows;
                }
        }
 
        /**
         * Returns a WHERE clause which will make an AND search for the words in the $searchWords array in any of the fields in array $fields.
-        * 
+        *
         * Usage: 1 (class t3lib_fullsearch)
-        * 
+        *
         * @param       array           Array of search words
         * @param       array           Array of fields
+        * @param       string          Table in which we are searching (for DBAL detection of quoteStr() method)
         * @return      string          WHERE clause for search
+        * @depreciated         Use $GLOBALS['TYPO3_DB']->searchQuery() directly!
         */
-       function searchQuery($searchWords,$fields)      {
-               reset($searchWords);
-               $queryParts=array();
-               while(list(,$sw)=each($searchWords))    {
-                       $like=' LIKE "%'.addslashes($sw).'%"';
-                       $queryParts[] = implode($like.' OR ',$fields).$like;
-               }
-               $query = '('.implode(') AND (',$queryParts).')';
-               return $query ;
+       function searchQuery($searchWords,$fields,$table='')    {
+               return $GLOBALS['TYPO3_DB']->searchQuery($searchWords,$fields,$table);
        }
 
        /**
         * Returns a WHERE clause that can find a value ($value) in a list field ($field)
         * For instance a record in the database might contain a list of numbers, "34,234,5" (with no spaces between). This query would be able to select that record based on the value "34", "234" or "5" regardless of their positioni in the list (left, middle or right).
         * Is nice to look up list-relations to records or files in TYPO3 database tables.
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       string          Table field name
         * @param       string          Value to find in list
         * @return      string          WHERE clause for a query
+        * @depreciated         Use $GLOBALS['TYPO3_DB']->listQuery() directly!
         */
        function listQuery($field,$value)       {
-               $command=addslashes($value);
-               $where='('.$field.' LIKE "%,'.$command.',%" OR '.$field.' LIKE "'.$command.',%" OR '.$field.' LIKE "%,'.$command.'" OR '.$field.'="'.$command.'")';
-               return $where;
+               return $GLOBALS['TYPO3_DB']->listQuery($field,$value,'');
        }       
 
        /**
         * Makes an backwards explode on the $str and returns an array with ($table,$uid).
         * Example: tt_content_45       =>      array('tt_content',45)
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       string          [tablename]_[uid] string to explode
-        * @return      array           
+        * @return      array
         */
        function splitTable_Uid($str)   {
-               list($uid,$table)=explode('_',strrev($str),2);
+               list($uid,$table) = explode('_',strrev($str),2);
                return array(strrev($table),strrev($uid));
        }
 
        /**
         * Returns a list of pure integers based on $in_list being a list of records with table-names prepended.
         * Ex: $in_list = "pages_4,tt_content_12,45" would result in a return value of "4,45" if $tablename is "pages" and $default_tablename is 'pages' as well.
-        * 
+        *
         * Usage: 1 (t3lib_userauthgroup)
-        * 
+        *
         * @param       string          Input list
         * @param       string          Table name from which ids is returned
         * @param       string          $default_tablename denotes what table the number '45' is from (if nothing is prepended on the value)
@@ -344,9 +348,9 @@ class t3lib_BEfunc  {
         * Notice that "fe_groups" is not selected for - only disabled, starttime and endtime.
         * Notice that deleted-fields are NOT filtered - you must ALSO call deleteClause in addition.
         * $GLOBALS["SIM_EXEC_TIME"] is used for date.
-        * 
+        *
         * Usage: 5
-        * 
+        *
         * @param       string          $table is the table from which to return enableFields WHERE clause. Table name must have a 'ctrl' section in $TCA.
         * @param       boolean         $inv means that the query will select all records NOT VISIBLE records (inverted selection)
         * @return      string          WHERE clause part
@@ -379,69 +383,80 @@ class t3lib_BEfunc        {
                return $outQ;
        }
 
+       
+
+
+
+
+
+
+
+
+       /*******************************************
+        *
+        * SQL-related, DEPRECIATED functions
+        * (use t3lib_DB functions instead)
+        *
+        *******************************************/
+
+       
        /**
         * Returns a SELECT query, selecting fields ($select) from two/three tables joined
         * $local_table and $mm_table is mandatory. $foreign_table is optional.
         * The JOIN is done with [$local_table].uid <--> [$mm_table].uid_local  / [$mm_table].uid_foreign <--> [$foreign_table].uid
-        * $endClause is additional WHERE clauses / LIMIT / GROUP / ORDER BY
         * The function is very useful for selecting MM-relations between tables adhering to the MM-format used by TCE (TYPO3 Core Engine). See the section on $TCA in Inside TYPO3 for more details.
-        * 
-        * Usage: 12 (spec. ext. sys_action, sys_messages, sys_todos)
-        * 
+        * DEPRECIATED - Use $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query() instead since that will return the result pointer while this returns the query. Using this function may make your application less fitted for DBAL later.
+        *
         * @param       string          Field list for SELECT
         * @param       string          Tablename, local table
         * @param       string          Tablename, relation table
         * @param       string          Tablename, foreign table
-        * @param       string          Additional WHERE clause
+        * @param       string          Optional additional WHERE clauses put in the end of the query. DO NOT PUT IN GROUP BY, ORDER BY or LIMIT!
+        * @param       string          Optional GROUP BY field(s), if none, supply blank string.
+        * @param       string          Optional ORDER BY field(s), if none, supply blank string.
+        * @param       string          Optional LIMIT value ([begin,]max), if none, supply blank string.
         * @return      string          Full SQL query
-        */
-       function mm_query($select,$local_table,$mm_table,$foreign_table,$endClause='')  {
-               $query = 'SELECT '.$select.'
-                       FROM '.$local_table.','.$mm_table.($foreign_table?','.$foreign_table:'').'
-                       WHERE '.$local_table.'.uid='.$mm_table.'.uid_local'.($foreign_table?' AND '.$foreign_table.'.uid='.$mm_table.'.uid_foreign ':' ').$endClause;
+        * @depreciated
+        * @see t3lib_DB::exec_SELECT_mm_query()
+        */
+       function mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause='',$groupBy='',$orderBy='',$limit='')      {
+               $query = $GLOBALS['TYPO3_DB']->SELECTquery(
+                                       $select, 
+                                       $local_table.','.$mm_table.($foreign_table?','.$foreign_table:''), 
+                                       $local_table.'.uid='.$mm_table.'.uid_local'.($foreign_table?' AND '.$foreign_table.'.uid='.$mm_table.'.uid_foreign':'').' '.
+                                               $whereClause,   // whereClauseMightContainGroupOrderBy
+                                       $groupBy,
+                                       $orderBy,
+                                       $limit
+                               );
                return $query;
        }
 
        /**
         * Creates an INSERT SQL-statement for $table from the array with field/value pairs $fields_values.
-        * 
-        * Usage: 12
-        * 
+        * DEPRECIATED - $GLOBALS['TYPO3_DB']->INSERTquery() directly instead! But better yet, use $GLOBALS['TYPO3_DB']->exec_INSERTquery()
+        *
         * @param       string          Table name
         * @param       array           Field values as key=>value pairs.
-        * @param       boolean         Set $slash=1 if values should be addslashes()'ed (default). YOU SHOULD ALWAYS USE THIS!
         * @return      string          Full SQL query for INSERT
+        * @depreciated
         */
-       function DBcompileInsert($table,$fields_values,$slash=1)        {
-               if (is_array($fields_values))   {
-                       if ($slash)     {$fields_values = t3lib_div::slashArray($fields_values, 'add');}
-                       $query = 'INSERT INTO '.$table.' ('.implode(',',array_keys($fields_values)).') VALUES ("'.implode('","',$fields_values).'")';
-                       return $query;
-               }
+       function DBcompileInsert($table,$fields_values) {
+               return $GLOBALS['TYPO3_DB']->INSERTquery($table, $fields_values);
        }
 
        /**
         * Creates an UPDATE SQL-statement for $table where $where-clause (typ. 'uid=...') from the array with field/value pairs $fields_values.
-        * 
-        * Usage: 15
-        * 
+        * DEPRECIATED - $GLOBALS['TYPO3_DB']->UPDATEquery() directly instead! But better yet, use $GLOBALS['TYPO3_DB']->exec_UPDATEquery()
+        *
         * @param       string          Database tablename
         * @param       string          WHERE clause, eg. "uid=1"
         * @param       array           Field values as key=>value pairs.
-        * @param       boolean         Set $slash=1 if values should be addslashes()'ed (default)
         * @return      string          Full SQL query for UPDATE
+        * @depreciated
         */
-       function DBcompileUpdate($table,$where,$fields_values,$slash=1) {
-               if (is_array($fields_values))   {
-                       if ($slash)     {$fields_values = t3lib_div::slashArray($fields_values, 'add');}
-                       $nArr=array();
-                       reset($fields_values);
-                       while(list($k,$v)=each($fields_values)) {
-                               $nArr[]=$k.'="'.$v.'"';
-                       }
-                       $query = 'UPDATE '.$table.' SET '.implode(',',$nArr).' WHERE '.$where;
-                       return $query;
-               }
+       function DBcompileUpdate($table,$where,$fields_values)  {
+               return $GLOBALS['TYPO3_DB']->UPDATEquery($table, $where, $fields_values);
        }
 
 
@@ -463,9 +478,9 @@ class t3lib_BEfunc  {
         * Returns what is called the 'RootLine'. That is an array with information about the page records from a page id ($uid) and back to the root.
         * By default deleted pages are filtered.
         * This RootLine will follow the tree all the way to the root. This is opposite to another kind of root line known from the frontend where the rootline stops when a root-template is found.
-        * 
+        *
         * Usage: 13
-        * 
+        *
         * @param       integer         Page id for which to create the root line.
         * @param       string          $clause can be used to select other criteria. It would typically be where-clauses that stops the proces if we meet a page, the user has no reading access to.
         * @return      array           Root line array, all the way to the page tree root (or as far as $clause allows!)
@@ -476,13 +491,17 @@ class t3lib_BEfunc        {
                $output=Array();
                while ($uid!=0 && $loopCheck>0) {
                        $loopCheck--;
-                       $query = 'SELECT pid,uid,title,TSconfig,is_siteroot,storage_pid from pages WHERE uid='.intval($uid).' '.t3lib_BEfunc::deleteClause('pages').' '.$clause;
-                       $res = mysql(TYPO3_db, $query);  
-                       if (mysql_error())      {
-                               debug($query,1);
-                               debug(mysql_error(),1);
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                                                       'pid,uid,title,TSconfig,is_siteroot,storage_pid', 
+                                                       'pages', 
+                                                       'uid='.intval($uid).' '.
+                                                               t3lib_BEfunc::deleteClause('pages').' '.
+                                                               $clause         // whereClauseMightContainGroupOrderBy 
+                                               );
+                       if ($GLOBALS['TYPO3_DB']->sql_error())  {
+                               debug($GLOBALS['TYPO3_DB']->sql_error(),1);
                        }
-                       if ($row = mysql_fetch_assoc($res))     {
+                       if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                $uid = $row['pid'];
                                $theRowArray[]=$row;
                        } else {
@@ -495,11 +514,11 @@ class t3lib_BEfunc        {
                        $c=count($theRowArray);
                        while(list($key,$val)=each($theRowArray))       {
                                $c--;
-                               $output[$c]['uid']=$val['uid'];
-                               $output[$c]['title']=$val['title'];
-                               $output[$c]['TSconfig']=$val['TSconfig'];
-                               $output[$c]['is_siteroot']=$val['is_siteroot'];
-                               $output[$c]['storage_pid']=$val['storage_pid'];
+                               $output[$c]['uid'] = $val['uid'];
+                               $output[$c]['title'] = $val['title'];
+                               $output[$c]['TSconfig'] = $val['TSconfig'];
+                               $output[$c]['is_siteroot'] = $val['is_siteroot'];
+                               $output[$c]['storage_pid'] = $val['storage_pid'];
                        }
                }
                return $output;
@@ -509,9 +528,9 @@ class t3lib_BEfunc  {
         * Returns the path (visually) of a page $uid, fx. "/First page/Second page/Another subpage"
         * Each part of the path will be limited to $titleLimit characters
         * Deleted pages are filtered out.
-        * 
+        *
         * Usage: 23
-        * 
+        *
         * @param       integer         Page uid for which to create record path
         * @param       string          $clause is additional where clauses, eg. "
         * @param       integer         Title limit
@@ -523,10 +542,8 @@ class t3lib_BEfunc {
                $output='/';
                while ($uid!=0 && $loopCheck>0) {
                        $loopCheck--;
-                       $query='SELECT pid, title FROM pages WHERE uid='.intval($uid).t3lib_BEfunc::deleteClause('pages').' AND '.$clause;
-                       $res = mysql(TYPO3_db, $query);
-                       echo mysql_error();
-                       if ($row = mysql_fetch_assoc($res))     {
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('pid,title', 'pages', 'uid='.intval($uid).t3lib_BEfunc::deleteClause('pages').' AND '.$clause);
+                       if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                $uid = $row['pid'];
                                $output='/'.t3lib_div::fixed_lgd(strip_tags($row['title']),$titleLimit).$output;
                        } else {
@@ -539,9 +556,9 @@ class t3lib_BEfunc  {
        /**
         * Returns an array with the exclude-fields as defined in TCA
         * Used for listing the exclude-fields in be_groups forms
-        * 
+        *
         * Usage: 2 (t3lib_tceforms + t3lib_transferdata)
-        * 
+        *
         * @return      array           Array of arrays with excludeFields (fieldname, table:fieldname) from all TCA entries
         */
        function getExcludeFields()     {
@@ -572,9 +589,9 @@ class t3lib_BEfunc  {
         * Returns a page record (of page with $id) with an extra field "_thePath" set to the record path IF the WHERE clause, $perms_clause, selects the record.
         * If $id is zero a pseudo root-page with "_thePath" set is returned IF the current BE_USER is admin.
         * In any case ->isInWebMount must return true for the user (regardless of $perms_clause)
-        * 
+        *
         * Usage: 21
-        * 
+        *
         * @param       integer         Page uid for which to check read-access
         * @param       string          $perms_clause is typically a value generated with $BE_USER->getPagePermsClause(1);
         * @return      array           Returns page record if OK, otherwise false.
@@ -601,13 +618,13 @@ class t3lib_BEfunc        {
 
        /**
         * Returns the "types" configuration parsed into an array for the record, $rec, from table, $table
-        * 
+        *
         * Usage: 6
-        * 
+        *
         * @param       string          Table name (present in TCA)
         * @param       array           Record from $table
         * @param       boolean         If $useFieldNameAsKey is set, then the fieldname is associative keys in the return array, otherwise just numeric keys.
-        * @return      array           
+        * @return      array
         */
        function getTCAtypes($table,$rec,$useFieldNameAsKey=0)  {
                global $TCA;
@@ -647,9 +664,9 @@ class t3lib_BEfunc  {
         * Returns the "type" value of $rec from $table which can be used to look up the correct "types" rendering section in $TCA
         * If no "type" field is configured in the "ctrl"-section of the $TCA for the table, zero is used.
         * If zero is not an index in the "types" section of $TCA for the table, then the $fieldValue returned will default to 1 (no matter if that is an index or not)
-        * 
+        *
         * Usage: 7
-        * 
+        *
         * @param       string          Table name present in TCA
         * @param       array           Record from $table
         * @return      string          Field value
@@ -672,36 +689,36 @@ class t3lib_BEfunc        {
         * Parses a part of the field lists in the "types"-section of $TCA arrays, namely the "special configuration" at index 3 (position 4)
         * Elements are splitted by ":" and within those parts, parameters are splitted by "|".
         * Everything is returned in an array and you should rather see it visually than listen to me anymore now...  Check out example in Inside TYPO3
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       string          Content from the "types" configuration of TCA (the special configuration) - see description of function
-        * @return      array           
+        * @return      array
         */
        function getSpecConfParts($str) {
                if (trim($str)) {
-                       $specConfParts=explode(':',$str);
+                       $specConfParts = explode(':',$str);
                        reset($specConfParts);
-                       while(list($k2,$v2)=each($specConfParts))       {
+                       while(list($k2,$v2) = each($specConfParts))     {
                                if (ereg('(.*)\[(.*)\]',$v2,$reg))      {
                                        unset($specConfParts[$k2]);
-                                       $specConfParts[$reg[1]]=array(
+                                       $specConfParts[$reg[1]] = array(
                                                'parameters'=>explode('|',$reg[2])
                                        );
                                }
                        }
-               } else {$specConfParts=array();}
+               } else { $specConfParts = array(); }
                return $specConfParts;
        }
 
        /**
         * Takes an array of "[key]=[value]" strings and returns an array with the keys set as keys pointing to the value.
         * Better see it in action! Find example in Inside TYPO3
-        * 
+        *
         * Usage: 6
-        * 
+        *
         * @param       array           Array of "[key]=[value]" strings to convert.
-        * @return      array           
+        * @return      array
         */
        function getSpecConfParametersFromArray($pArr)  {
                $out=array();
@@ -721,7 +738,7 @@ class t3lib_BEfunc  {
 
        /**
         * Finds the Data Structure for a FlexForm field
-        * 
+        *
         * @param       array           Field config array
         * @param       array           Record data
         * @param       string          The table name
@@ -766,12 +783,13 @@ class t3lib_BEfunc        {
                                $uidAcc=array();        // Used to avoid looping, if any should happen.
                                $subFieldPointer = $conf['ds_pointerField_searchParent_subField'];
                                while(!$srcPointer)             {
-                                       $query = 'SELECT uid,'.$ds_pointerField.','.$ds_searchParentField.($subFieldPointer?','.$subFieldPointer:'').' 
-                                                               FROM '.$table.' WHERE uid='.intval($rr[$ds_searchParentField]).
-                                                               t3lib_BEfunc::deleteClause($table);
-                                       $res = mysql(TYPO3_db,$query);
-                                       $rr = mysql_fetch_assoc($res);
-                                       if (!is_array($rr) || isset($uidAcc[$rr['uid']]))       break;  // break if no result from MySQL or if looping...
+                                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                                                                       'uid,'.$ds_pointerField.','.$ds_searchParentField.($subFieldPointer?','.$subFieldPointer:''), 
+                                                                       $table, 
+                                                                       'uid='.intval($rr[$ds_searchParentField]).t3lib_BEfunc::deleteClause($table)
+                                                               );
+                                       $rr = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
+                                       if (!is_array($rr) || isset($uidAcc[$rr['uid']]))       break;  // break if no result from SQL db or if looping...
                                        $uidAcc[$rr['uid']]=1;
                                        
                                        $srcPointer = ($subFieldPointer && $rr[$subFieldPointer]) ? $rr[$subFieldPointer] : $rr[$ds_pointerField];
@@ -824,29 +842,34 @@ class t3lib_BEfunc        {
        /**
         * Stores the string value $data in the 'cache_hash' table with the hash key, $hash, and visual/symbolic identification, $ident
         * IDENTICAL to the function by same name found in t3lib_page:
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          Hash key, 32 bytes hex
         * @param       string          $data must be serialized before function call
         * @param       string          Visual/symbolic identification (informational only)
-        * @return      void            
+        * @return      void
         */
        function storeHash($hash,$data,$ident)  {
-                       // $ident is just a textual identification in order to inform about the content! May be 20 characters long.
-               $res = mysql (TYPO3_db, 'DELETE FROM cache_hash WHERE hash = "'.$hash.'"');
-               $res = mysql (TYPO3_db, 'INSERT INTO cache_hash (hash, content, ident, tstamp) VALUES ("'.$hash.'","'.addSlashes($data).'","'.addSlashes($ident).'","'.time().'")');
+               $insertFields = array(
+                       'hash' => $hash, 
+                       'content' => $data, 
+                       'ident' => $ident, 
+                       'tstamp' => time()
+               );
+               $GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_hash', 'hash="'.$GLOBALS['TYPO3_DB']->quoteStr($hash, 'cache_hash').'"');
+               $GLOBALS['TYPO3_DB']->exec_INSERTquery('cache_hash', $insertFields);
        }
 
        /**
         * Retrieves the string content stored with hash key, $hash, in cache_hash
         * IDENTICAL to the function by same name found in t3lib_page:
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          Hash key, 32 bytes hex
         * @param       integer         $expTime represents the expire time in seconds. For instance a value of 3600 would allow cached content within the last hour, otherwise nothing is returned.
-        * @return      string          
+        * @return      string
         */
        function getHash($hash,$expTime)        {
                        // if expTime is not set, the hash will never expire
@@ -854,8 +877,8 @@ class t3lib_BEfunc  {
                if ($expTime)   {
                        $whereAdd = ' AND tstamp > '.(time()-$expTime);
                }
-               $res = mysql (TYPO3_db, 'SELECT content FROM cache_hash WHERE hash = "'.$hash.'"'.$whereAdd);
-               if ($row=mysql_fetch_assoc($res))       {
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('content', 'cache_hash', 'hash="'.$GLOBALS['TYPO3_DB']->quoteStr($hash, 'cache_hash').'"'.$whereAdd);
+               if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                        return $row['content'];
                }
        }
@@ -876,9 +899,9 @@ class t3lib_BEfunc  {
        /**
         * Returns the Page TSconfig for page with id, $id
         * Requires class "t3lib_TSparser"
-        * 
+        *
         * Usage: 26 (spec. in ext info_pagetsconfig)
-        * 
+        *
         * @param       integer         Page uid for which to create Page TSconfig
         * @param       array           If $rootLine is an array, that is used as rootline, otherwise rootline is just calculated
         * @param       boolean         If $returnPartArray is set, then the array with accumulated Page TSconfig is returned non-parsed. Otherwise the output will be parsed by the TypoScript parser.
@@ -922,17 +945,17 @@ class t3lib_BEfunc        {
         * Updates Page TSconfig for a page with $id
         * The function seems to take $pageTS as an array with properties and compare the values with those that already exists for the "object string", $TSconfPrefix, for the page, then sets those values which were not present.
         * $impParams can be supplied as already known Page TSconfig, otherwise it's calculated.
-        * 
+        *
         * THIS DOES NOT CHECK ANY PERMISSIONS. SHOULD IT?
         * More documentation is needed.
-        * 
+        *
         * Usage: 1 (ext. direct_mail)
-        * 
+        *
         * @param       integer         Page id
         * @param       array           Page TS array to write
         * @param       string          Prefix for object paths
         * @param       array           [Description needed.]
-        * @return      void            
+        * @return      void
         * @internal
         * @see implodeTSParams(), getPagesTSconfig()
         */
@@ -974,19 +997,20 @@ class t3lib_BEfunc        {
                                        }
                                }
                                $TSlines = array_reverse($TSlines);
+
                                        // store those changes
                                $TSconf = implode(chr(10),$TSlines);
-                               $q=t3lib_befunc::DBcompileUpdate('pages','uid='.$id,array('TSconfig'=>$TSconf));
-                               $res=mysql(TYPO3_db,$q);
+                               
+                               $GLOBALS['TYPO3_DB']->exec_UPDATEquery('pages', 'uid='.intval($id), array('TSconfig' => $TSconf));
                        }
                }
        }
 
        /**
         * Implodes a multi dimensional TypoScript array, $p, into a one-dimentional array (return value)
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       array           TypoScript structure
         * @param       string          Prefix string
         * @return      array           Imploded TypoScript objectstring/values
@@ -1022,19 +1046,18 @@ class t3lib_BEfunc      {
        /**
         * Returns an array with be_users records of all user NOT DELETED sorted by their username
         * Keys in the array is the be_users uid
-        * 
+        *
         * Usage: 14 (spec. ext. "beuser" and module "web_perm")
-        * 
+        *
         * @param       string          Optional $fields list (default: username,usergroup,usergroup_cached_list,uid) can be used to set the selected fields
         * @param       string          Optional $where clause (fx. "AND username='pete'") can be used to limit query
-        * @return      array           
+        * @return      array
         */
        function getUserNames($fields='username,usergroup,usergroup_cached_list,uid',$where='') {
                $be_user_Array=Array();
-               $query = 'SELECT '.$fields.' FROM be_users WHERE pid=0 '.$where.t3lib_BEfunc::deleteClause('be_users').' ORDER BY username'; 
-               $res = mysql(TYPO3_db,$query);
-               echo mysql_error();
-               while($row=mysql_fetch_assoc($res))     {
+
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, 'be_users', 'pid=0 '.$where.t3lib_BEfunc::deleteClause('be_users'), '', 'username'); 
+               while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
                        $be_user_Array[$row['uid']]=$row;
                }
                return $be_user_Array;
@@ -1042,19 +1065,18 @@ class t3lib_BEfunc      {
 
        /**
         * Returns an array with be_groups records (title, uid) of all groups NOT DELETED sorted by their title
-        * 
+        *
         * Usage: 8 (spec. ext. "beuser" and module "web_perm")
-        * 
+        *
         * @param       string          Field list
         * @param       string          WHERE clause
-        * @return      array           
+        * @return      array
         */
-       function getGroupNames($fields='title,uid',$where='')   {
-               $be_group_Array=Array();
-               $query = 'SELECT title,uid FROM be_groups WHERE pid=0 '.$where.t3lib_BEfunc::deleteClause('be_groups').' ORDER BY title'; 
-               $res = mysql(TYPO3_db,$query);
-               while($row=mysql_fetch_assoc($res))     {
-                       $be_group_Array[$row['uid']]=$row;
+       function getGroupNames($fields='title,uid', $where='')  {
+               $be_group_Array = Array();
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, 'be_groups', 'pid=0 '.$where.t3lib_BEfunc::deleteClause('be_groups'), '', 'title'); 
+               while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
+                       $be_group_Array[$row['uid']] = $row;
                }
                return $be_group_Array;
        }
@@ -1062,11 +1084,11 @@ class t3lib_BEfunc      {
        /**
         * Returns an array with be_groups records (like ->getGroupNames) but:
         * - if the current BE_USER is admin, then all groups are returned, otherwise only groups that the current user is member of (usergroup_cached_list) will be returned.
-        * 
+        *
         * Usage: 2 (module "web_perm" and ext. taskcenter)
-        * 
+        *
         * @param       string          Field list; $fields specify the fields selected (default: title,uid)
-        * @return      array           
+        * @return      array
         */
        function getListGroupNames($fields='title,uid') {
                $exQ=' AND hide_in_lists=0';
@@ -1080,9 +1102,9 @@ class t3lib_BEfunc        {
         * Returns the array $usernames with the names of all users NOT IN $groupArray changed to the uid (hides the usernames!).
         * If $excludeBlindedFlag is set, then these records are unset from the array $usernames
         * Takes $usernames (array made by t3lib_BEfunc::getUserNames()) and a $groupArray (array with the groups a certain user is member of) as input
-        * 
+        *
         * Usage: 8
-        * 
+        *
         * @param       array           User names
         * @param       array           Group names
         * @param       boolean         If $excludeBlindedFlag is set, then these records are unset from the array $usernames
@@ -1114,13 +1136,13 @@ class t3lib_BEfunc      {
 
        /**
         * Corresponds to blindUserNames but works for groups instead
-        * 
+        *
         * Usage: 2 (module web_perm)
-        * 
+        *
         * @param       array           Group names
         * @param       array           Group names (reference)
         * @param       boolean         If $excludeBlindedFlag is set, then these records are unset from the array $usernames
-        * @return      array           
+        * @return      array
         */
        function blindGroupNames($groups,$groupArray,$excludeBlindedFlag=0)     {
                if (is_array($groups) && is_array($groupArray)) {
@@ -1160,11 +1182,11 @@ class t3lib_BEfunc      {
         
        /**
         * Returns the difference in days between input $tstamp and $EXEC_TIME
-        * 
+        *
         * Usage: 2 (class t3lib_BEfunc)
-        * 
+        *
         * @param       integer         Time stamp, seconds
-        * @return      integer         
+        * @return      integer
         */
        function daysUntil($tstamp)     {
                $delta_t = $tstamp-$GLOBALS['EXEC_TIME'];
@@ -1173,9 +1195,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns $tstamp formatted as "ddmmyy" (According to $TYPO3_CONF_VARS['SYS']['ddmmyy'])
-        * 
+        *
         * Usage: 11
-        * 
+        *
         * @param       integer         Time stamp, seconds
         * @return      string          Formatted time
         */
@@ -1185,9 +1207,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns $tstamp formatted as "ddmmyy hhmm" (According to $TYPO3_CONF_VARS['SYS']['ddmmyy'] AND $TYPO3_CONF_VARS['SYS']['hhmm'])
-        * 
+        *
         * Usage: 28
-        * 
+        *
         * @param       integer         Time stamp, seconds
         * @return      string          Formatted time
         */
@@ -1198,9 +1220,9 @@ class t3lib_BEfunc        {
        /**
         * Returns $value (in seconds) formatted as hh:mm:ss
         * For instance $value = 3600 + 60*2 + 3 should return "01:02:03"
-        * 
+        *
         * Usage: 1 (class t3lib_BEfunc)
-        * 
+        *
         * @param       integer         Time stamp, seconds
         * @return      string          Formatted time
         */
@@ -1214,9 +1236,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns the "age" of the number of $seconds inputted.
-        * 
+        *
         * Usage: 15
-        * 
+        *
         * @param       integer         $seconds could be the difference of a certain timestamp and time()
         * @param       string          $labels should be something like ' min| hrs| days| yrs'. This value is typically delivered by this function call: $GLOBALS["LANG"]->sL("LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears")
         * @return      string          Formatted time
@@ -1240,13 +1262,13 @@ class t3lib_BEfunc      {
        /**
         * Returns a formatted timestamp if $tstamp is set.
         * The date/datetime will be followed by the age in parenthesis.
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       integer         Time stamp, seconds
         * @param       integer         1/-1 depending on polarity of age.
         * @param       string          $date=="date" will yield "dd:mm:yy" formatting, otherwise "dd:mm:yy hh:mm"
-        * @return      string          
+        * @return      string
         */
        function dateTimeAge($tstamp,$prefix=1,$date='')        {
                return $tstamp ? 
@@ -1259,12 +1281,12 @@ class t3lib_BEfunc      {
         * If no $content is given only the attribute name is returned.
         * The returned attribute with content will have a leading space char.
         * Warning: Be careful to submit empty $content var - that will return just the attribute name!
-        * 
+        *
         * Usage: 203
-        * 
+        *
         * @param       string          String to set as title-attribute. If no $content is given only the attribute name is returned.
         * @param       boolean         If $hsc is set, then content of the attribute is htmlspecialchar()'ed (which is good for XHTML and other reasons...)
-        * @return      string          
+        * @return      string
         * @depreciated         The idea made sense with older browsers, but now all browsers should support the "title" attribute - so just hardcode the title attribute instead!
         */
        function titleAttrib($content='',$hsc=0)        {
@@ -1275,9 +1297,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns alt="" and title="" attributes with the value of $content.
-        * 
+        *
         * @param       string          Value for 'alt' and 'title' attributes (will be htmlspecialchars()'ed before output)
-        * @return      string          
+        * @return      string
         */
        function titleAltAttrib($content)       {
                $out='';
@@ -1290,9 +1312,9 @@ class t3lib_BEfunc        {
         * Returns a linked image-tag for thumbnail(s) from a database row with a list of image files in a field
         * All $TYPO3_CONF_VARS['GFX']['imagefile_ext'] extension are made to thumbnails + ttf file (renders font-example)
         * Thumbsnails are linked to the show_item.php script which will display further details.
-        * 
+        *
         * Usage: 7
-        * 
+        *
         * @param       array           $row is the database row from the table, $table.
         * @param       string          Table name for $row (present in TCA)
         * @param       string          $field is pointing to the field with the list of image files
@@ -1364,9 +1386,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns single image tag to thumbnail
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       string          $thumbScript must point to "thumbs.php" relative to the script position
         * @param       string          $theFile must be the proper reference to the file thumbs.php should show
         * @param       string          $tparams are additional attributes for the image tag
@@ -1383,13 +1405,13 @@ class t3lib_BEfunc      {
        
        /**
         * Returns title-attribute information for a page-record informing about id, alias, doktype, hidden, starttime, endtime, fe_group etc.
-        * 
+        *
         * Usage: 8
-        * 
+        *
         * @param       array           Input must be a page row ($row) with the proper fields set (be sure - send the full range of fields for the table)
         * @param       string          $perms_clause is used to get the record path of the shortcut page, if any (and doktype==4)
         * @param       boolean         If $includeAttrib is set, then the 'title=""' attribute is wrapped about the return value, which is in any case htmlspecialchar()'ed already
-        * @return      string          
+        * @return      string
         */
        function titleAttribForPages($row,$perms_clause='',$includeAttrib=1)    {
                global $TCA,$LANG;
@@ -1439,12 +1461,12 @@ class t3lib_BEfunc      {
         * Returns title-attribute information for ANY record (from a table defined in TCA of course)
         * The included information depends on features of the table, but if hidden, starttime, endtime and fe_group fields are configured for, information about the record status in regard to these features are is included.
         * "pages" table can be used as well and will return the result of ->titleAttribForPages() for that page.
-        * 
+        *
         * Usage: 10
-        * 
+        *
         * @param       array           Table row; $row is a row from the table, $table
         * @param       string          Table name
-        * @return      string          
+        * @return      string
         */
        function getRecordIconAltText($row,$table='pages')      {
                if ($table=='pages')    {
@@ -1473,9 +1495,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns the label of the first found entry in an "items" array from $TCA (tablename=$table/fieldname=$col) where the value is $key
-        * 
+        *
         * Usage: 9
-        * 
+        *
         * @param       string          Table name, present in $TCA
         * @param       string          Field name, present in $TCA
         * @param       string          items-array value to match
@@ -1500,13 +1522,13 @@ class t3lib_BEfunc      {
        /**
         * Returns the label-value for fieldname $col in table, $table
         * If $printAllWrap is set (to a "wrap") then it's wrapped around the $col value IF THE COLUMN $col DID NOT EXIST in TCA!, eg. $printAllWrap='<b>|</b>' and the fieldname was 'not_found_field' then the return value would be '<b>not_found_field</b>'
-        * 
+        *
         * Usage: 17
-        * 
+        *
         * @param       string          Table name, present in $TCA
         * @param       string          Field name
         * @param       string          Wrap value - set function description
-        * @return      string          
+        * @return      string
         */
        function getItemLabel($table,$col,$printAllWrap='')     {
                global $TCA;
@@ -1515,7 +1537,7 @@ class t3lib_BEfunc        {
                        // Check if column exists
                if (is_array($TCA[$table]) && is_array($TCA[$table]['columns'][$col]))  {
                                // Re
-                       return stripslashes($TCA[$table]['columns'][$col]['label']);
+                       return $TCA[$table]['columns'][$col]['label'];
                }
                if ($printAllWrap)      {
                        $parts = explode('|',$printAllWrap);
@@ -1526,13 +1548,13 @@ class t3lib_BEfunc      {
        /**
         * Returns the "title"-value in record, $row, from table, $table
         * The field(s) from which the value is taken is determined by the "ctrl"-entries 'label', 'label_alt' and 'label_alt_force'
-        * 
+        *
         * Usage: 26
-        * 
+        *
         * @param       string          Table name, present in TCA
         * @param       array           Row from table
         * @param       boolean         If set, result is prepared for output: The output is cropped to a limited lenght (depending on BE_USER->uc['titleLen']) and if no value is found for the title, '<em>[No title]</em>' is returned (localized). Further, the output is htmlspecialchars()'ed
-        * @return      string          
+        * @return      string
         */
        function getRecordTitle($table,$row,$prep=0)    {
                global $TCA;
@@ -1549,7 +1571,7 @@ class t3lib_BEfunc        {
                                if ($TCA[$table]['ctrl']['label_alt_force'])    $t=implode(', ',$tA);
                        }
                        if ($prep)      {
-                               $t=htmlspecialchars(t3lib_div::fixed_lgd($t,$GLOBALS['BE_USER']->uc['titleLen']));
+                               $t = htmlspecialchars(t3lib_div::fixed_lgd($t,$GLOBALS['BE_USER']->uc['titleLen']));
                                if (!strcmp(trim($t),''))       $t='<em>['.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.no_title',1).']</em>';
                        }
                        return $t;
@@ -1560,15 +1582,16 @@ class t3lib_BEfunc      {
         * Returns a human readable output of a value from a record
         * For instance a database record relation would be looked up to display the title-value of that record. A checkbox with a "1" value would be "Yes", etc.
         * $table/$col is tablename and fieldname
-        * 
+        * REMEMBER to pass the output through htmlspecialchars() if you output it to the browser! (To protect it from XSS attacks and be XHTML compliant)
+        *
         * Usage: 24
-        * 
+        *
         * @param       string          Table name, present in TCA
         * @param       string          Field name, present in TCA
         * @param       string          $value is the value of that field from a selected record
         * @param       integer         $fixed_lgd_chars is the max amount of characters the value may occupy
         * @param       boolean         $defaultPassthrough flag means that values for columns that has no conversion will just be pass through directly (otherwise cropped to 200 chars or returned as "N/A")
-        * @return      string          
+        * @return      string
         */
        function getProcessedValue($table,$col,$value,$fixed_lgd_chars=0,$defaultPassthrough=0) {
                global $TCA;
@@ -1655,14 +1678,14 @@ class t3lib_BEfunc      {
 
        /**
         * Same as ->getProcessedValue() but will go easy on fields like "tstamp" and "pid" which are not configured in TCA - they will be formatted by this function instead.
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          Table name, present in TCA
         * @param       string          Field name
         * @param       string          Field value
         * @param       integer         $fixed_lgd_chars is the max amount of characters the value may occupy
-        * @return      string          
+        * @return      string
         * @see getProcessedValue()
         */
        function getProcessedValueExtra($table,$fN,$fV,$fixed_lgd_chars=0)      {
@@ -1673,7 +1696,7 @@ class t3lib_BEfunc        {
                                if ($fN==$TCA[$table]['ctrl']['tstamp'] || $fN==$TCA[$table]['ctrl']['crdate']) {
                                        $fVnew = t3lib_BEfunc::datetime($fV);
                                } elseif ($fN=='pid'){
-                                       $fVnew = t3lib_BEfunc::getRecordPath ($fV,'1',20);      // Fetches the path with no regard to the users permissions to select pages.
+                                       $fVnew = t3lib_BEfunc::getRecordPath($fV,'1',20);       // Fetches the path with no regard to the users permissions to select pages.
                                } else {
                                        $fVnew = $fV;
                                }
@@ -1684,9 +1707,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns file icon name (from $FILEICONS) for the fileextension $ext
-        * 
+        *
         * Usage: 10
-        * 
+        *
         * @param       string          File extension, lowercase
         * @return      string          File icon filename
         */
@@ -1698,9 +1721,9 @@ class t3lib_BEfunc        {
         * Returns fields for a table, $table, which would typically be interesting to select
         * This includes uid, the fields defined for title, icon-field.
         * Returned as a list ready for query ($prefix can be set to eg. "pages." if you are selecting from the pages table and want the table name prefixed)
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       string          Table name, present in TCA
         * @param       string          Table prefix
         * @return      string          List of fields.
@@ -1724,9 +1747,9 @@ class t3lib_BEfunc        {
         * Makes a form for configuration of some values based on configuration found in the array $configArray, with default values from $defaults and a data-prefix $dataPrefix
         * <form>-tags must be supplied separately
         * Needs more documentation and examples, in particular syntax for configuration array. See Inside TYPO3. That's were you can expect to find example, if anywhere.
-        * 
+        *
         * Usage: 1 (ext. direct_mail)
-        * 
+        *
         * @param       array           Field configuration code.
         * @param       array           Defaults
         * @param       string          Prefix for formfields
@@ -1800,9 +1823,9 @@ class t3lib_BEfunc        {
        /**
         * Returns help-text icon if configured for.
         * TCA_DESCR must be loaded prior to this function and $BE_USER must have 'edit_showFieldHelp' set to 'icon', otherwise nothing is returned
-        * 
+        *
         * Usage: 6
-        * 
+        *
         * @param       string          Table name
         * @param       string          Field name
         * @param       string          Back path
@@ -1823,9 +1846,9 @@ class t3lib_BEfunc        {
         * Returns CSH help text (description), if configured for.
         * TCA_DESCR must be loaded prior to this function and $BE_USER must have "edit_showFieldHelp" set to "text", otherwise nothing is returned
         * Will automatically call t3lib_BEfunc::helpTextIcon() to get the icon for the text.
-        * 
+        *
         * Usage: 10
-        * 
+        *
         * @param       string          Table name
         * @param       string          Field name
         * @param       string          Back path
@@ -1844,13 +1867,13 @@ class t3lib_BEfunc      {
        /**
         * Returns a JavaScript string (for an onClick handler) which will load the alt_doc.php script that shows the form for editing of the record(s) you have send as params.
         * REMEMBER to always htmlspecialchar() content in href-properties to ampersands get converted to entities (XHTML requirement and XSS precaution)
-        * 
+        *
         * Usage: 35
-        * 
+        *
         * @param       string          $params is parameters sent along to alt_doc.php. This requires a much more details description which you must seek in Inside TYPO3s documentation of the alt_doc.php API. And example could be '&edit[pages][123]=edit' which will show edit form for page record 123.
         * @param       string          $backPath must point back to the TYPO3_mainDir directory (where alt_doc.php is)
         * @param       string          $requestUri is an optional returnUrl you can set - automatically set to REQUEST_URI.
-        * @return      string          
+        * @return      string
         */
        function editOnClick($params,$backPath='',$requestUri='')       {
                $retUrl = 'returnUrl='.($requestUri==-1?"'+T3_THIS_LOCATION+'":rawurlencode($requestUri?$requestUri:t3lib_div::getIndpEnv('REQUEST_URI')));
@@ -1859,15 +1882,15 @@ class t3lib_BEfunc      {
 
        /**
         * Returns a JavaScript string for viewing the page id, $id
-        * 
+        *
         * Usage: 8
-        * 
+        *
         * @param       integer         $id is page id
         * @param       string          $backpath must point back to TYPO3_mainDir (where the site is assumed to be one level above)
         * @param       array           If root line is supplied the function will look for the first found domain record and use that URL instead (if found)
         * @param       string          $anchor is optional anchor to the URL
         * @param       string          $altUrl is an alternative URL which - if set - will make all other parameters ignored: The function will just return the window.open command wrapped around this URL!
-        * @return      string          
+        * @return      string
         */
        function viewOnClick($id,$backPath='',$rootLine='',$anchor='',$altUrl='')       {
                if ($altUrl)    {
@@ -1889,12 +1912,12 @@ class t3lib_BEfunc      {
        /**
         * Returns the merged User/Page TSconfig for page id, $id.
         * Please read details about module programming elsewhere!
-        * 
+        *
         * Usage: 15
-        * 
+        *
         * @param       integer         Page uid
         * @param       string          $TSref is an object string which determines the path of the TSconfig to return.
-        * @return      array           
+        * @return      array
         */
        function getModTSconfig($id,$TSref)     {
                $pageTS_modOptions = $GLOBALS['BE_USER']->getTSConfig($TSref,t3lib_BEfunc::getPagesTSconfig($id));
@@ -1907,9 +1930,9 @@ class t3lib_BEfunc        {
         * Returns a selector box "function menu" for a module
         * Requires the JS function jumpToUrl() to be available
         * See Inside TYPO3 for details about how to use / make Function menus
-        * 
+        *
         * Usage: 50
-        * 
+        *
         * @param       string          $id is the "&id=" parameter value to be sent to the module
         * @param       string          $elementName it the form elements name, probably something like "SET[...]"
         * @param       string          $currentValue is the value to be selected currently.
@@ -1936,9 +1959,9 @@ class t3lib_BEfunc        {
        /**
         * Checkbox function menu.
         * Works like ->getFuncMenu() but takes no $menuItem array since this is a simple checkbox.
-        * 
+        *
         * Usage: 34
-        * 
+        *
         * @param       string          $id is the "&id=" parameter value to be sent to the module
         * @param       string          $elementName it the form elements name, probably something like "SET[...]"
         * @param       string          $currentValue is the value to be selected currently.
@@ -1957,9 +1980,9 @@ class t3lib_BEfunc        {
        /**
         * Input field function menu
         * Works like ->getFuncMenu() / ->getFuncCheck() but displays a input field instead which updates the script "onchange"
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       string          $id is the "&id=" parameter value to be sent to the module
         * @param       string          $elementName it the form elements name, probably something like "SET[...]"
         * @param       string          $currentValue is the value to be selected currently.
@@ -1978,9 +2001,9 @@ class t3lib_BEfunc        {
        /**
         * Removes menu items from $itemArray if they are configured to be removed by TSconfig for the module ($modTSconfig)
         * See Inside TYPO3 about how to program modules and use this API.
-        * 
+        *
         * Usage: 4
-        * 
+        *
         * @param       array           Module TS config array
         * @param       array           Array of items from which to remove items.
         * @param       string          $TSref points to the "object string" in $modTSconfig
@@ -2004,9 +2027,9 @@ class t3lib_BEfunc        {
         * Call to update the page tree frame (or something else..?) after
         * t3lib_BEfunc::getSetUpdateSignal('updatePageTree') -> will set the page tree to be updated.
         * t3lib_BEfunc::getSetUpdateSignal() -> will return some JavaScript that does the update (called in the typo3/template.php file, end() function)
-        * 
+        *
         * Usage: 11
-        * 
+        *
         * @param       string          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.
         * @return      string          HTML code (<script> section)
         */
@@ -2052,7 +2075,7 @@ class t3lib_BEfunc        {
         * 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
-        * 
+        *
         * @param       array           MOD_MENU is an array that defines the options in menus.
         * @param       array           CHANGED_SETTINGS represents the array used when passing values to the script from the menus.
         * @param       string          modName is the name of this module. Used to get the correct module data.
@@ -2128,55 +2151,56 @@ class t3lib_BEfunc      {
        /**
         * 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
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Record uid
         * @param       integer         Record pid
-        * @return      void            
+        * @return      void
         * @internal
         * @see t3lib_transferData::lockRecord(), alt_doc.php, db_layout.php, db_list.php, wizard_rte.php
         */
        function lockRecords($table='',$uid=0,$pid=0)   {
                $user_id = intval($GLOBALS['BE_USER']->user['uid']);
                if ($table && $uid)     {
-                       $fields_values=array(
-                               'userid'=>$user_id,
-                               'tstamp'=>$GLOBALS['EXEC_TIME'],
-                               'record_table'=>$table,
-                               'record_uid'=>$uid,
-                               'username'=>$GLOBALS['BE_USER']->user['username'],
-                               'record_pid'=>$pid
+                       $fields_values = array(
+                               'userid' => $user_id,
+                               'tstamp' => $GLOBALS['EXEC_TIME'],
+                               'record_table' => $table,
+                               'record_uid' => $uid,
+                               'username' => $GLOBALS['BE_USER']->user['username'],
+                               'record_pid' => $pid
                        );
-                       $query=t3lib_BEfunc::DBcompileInsert('sys_lockedrecords',$fields_values);
+                       
+                       $GLOBALS['TYPO3_DB']->exec_INSERTquery('sys_lockedrecords', $fields_values);
                } else {
-                       $query='DELETE FROM sys_lockedrecords WHERE userid='.$user_id;
+                       $GLOBALS['TYPO3_DB']->exec_DELETEquery('sys_lockedrecords', 'userid='.intval($user_id));
                }
-
-               $res = mysql(TYPO3_db,$query);
        }
 
        /**
         * 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
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Record uid
-        * @return      array           
+        * @return      array
         * @internal
         * @see class.db_layout.inc, alt_db_navframe.php, alt_doc.php, db_layout.php
         */
        function isRecordLocked($table,$uid)    {
                global $LOCKED_RECORDS;
                if (!is_array($LOCKED_RECORDS)) {
-                       $query='SELECT * FROM sys_lockedrecords WHERE '.
-                               'sys_lockedrecords.userid!='.intval($GLOBALS['BE_USER']->user['uid']).
-                               ' AND sys_lockedrecords.tstamp > '.($GLOBALS['EXEC_TIME']-2*3600);
-                       $res = mysql(TYPO3_db,$query);
-                       while($row=mysql_fetch_assoc($res))     {
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
+                                                       '*', 
+                                                       'sys_lockedrecords', 
+                                                       'sys_lockedrecords.userid!='.intval($GLOBALS['BE_USER']->user['uid']).' 
+                                                               AND sys_lockedrecords.tstamp > '.($GLOBALS['EXEC_TIME']-2*3600)
+                                               );
+                       while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
                                $LOCKED_RECORDS[$row['record_table'].':'.$row['record_uid']]=$row;
                                $LOCKED_RECORDS[$row['record_table'].':'.$row['record_uid']]['msg']=sprintf(
                                        $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.lockedRecord'),
@@ -2197,9 +2221,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns select statement for MM relations (as used by TCEFORMs etc)
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       array           Configuration array for the field, taken from $TCA
         * @param       string          Field name
         * @param       array           TSconfig array from which to get further configuration settings for the field name
@@ -2208,7 +2232,7 @@ class t3lib_BEfunc        {
         * @internal
         * @see t3lib_transferData::renderRecord(), t3lib_TCEforms::foreignTable()
         */
-       function foreign_table_where_query($fieldValue,$field='',$TSconfig=array(),$prefix='')  {
+       function exec_foreign_table_where_query($fieldValue,$field='',$TSconfig=array(),$prefix='')     {
                global $TCA;
                $foreign_table = $fieldValue['config'][$prefix.'foreign_table'];
                $rootLevel = $TCA[$foreign_table]['ctrl']['rootLevel'];
@@ -2231,34 +2255,63 @@ class t3lib_BEfunc      {
                $fTWHERE = str_replace('###STORAGE_PID###',intval($TSconfig['_STORAGE_PID']),$fTWHERE);
                $fTWHERE = str_replace('###SITEROOT###',intval($TSconfig['_SITEROOT']),$fTWHERE);
                $fTWHERE = str_replace('###PAGE_TSCONFIG_ID###',intval($TSconfig[$field]['PAGE_TSCONFIG_ID']),$fTWHERE);
-               $fTWHERE = str_replace('###PAGE_TSCONFIG_IDLIST###',implode(',',t3lib_div::intExplode(',',$TSconfig[$field]['PAGE_TSCONFIG_IDLIST'])),$fTWHERE);
-               $fTWHERE = str_replace('###PAGE_TSCONFIG_STR###',addslashes($TSconfig[$field]['PAGE_TSCONFIG_STR']),$fTWHERE);
-               
+               $fTWHERE = str_replace('###PAGE_TSCONFIG_IDLIST###',$GLOBALS['TYPO3_DB']->cleanIntList($TSconfig[$field]['PAGE_TSCONFIG_IDLIST']),$fTWHERE);
+               $fTWHERE = str_replace('###PAGE_TSCONFIG_STR###',$GLOBALS['TYPO3_DB']->quoteStr($TSconfig[$field]['PAGE_TSCONFIG_STR'], $foreign_table),$fTWHERE);
                
                        // rootLevel = -1 is not handled 'properly' here - it goes as if it was rootLevel = 1 (that is pid=0)
+               $wgolParts = $GLOBALS['TYPO3_DB']->splitGroupOrderLimit($fTWHERE);
                if ($rootLevel) {
-                       $query = 'SELECT '.t3lib_BEfunc::getCommonSelectFields($foreign_table,$foreign_table.'.').' FROM '.$foreign_table.' WHERE '.$foreign_table.'.pid=0 '.t3lib_BEfunc::deleteClause($foreign_table).' '.$fTWHERE;
+                       $queryParts = array(
+                               'SELECT' => t3lib_BEfunc::getCommonSelectFields($foreign_table,$foreign_table.'.'), 
+                               'FROM' => $foreign_table, 
+                               'WHERE' => $foreign_table.'.pid=0 '.
+                                                       t3lib_BEfunc::deleteClause($foreign_table).' '.
+                                                       $wgolParts['WHERE'],
+                               'GROUPBY' => $wgolParts['GROUPBY'],
+                               'ORDERBY' => $wgolParts['ORDERBY'],
+                               'LIMIT' => $wgolParts['LIMIT']
+                       );
                } else {
                        $pageClause = $GLOBALS['BE_USER']->getPagePermsClause(1);
                        if ($foreign_table!='pages')    {
-                               $query = 'SELECT '.t3lib_BEfunc::getCommonSelectFields($foreign_table,$foreign_table.'.').' FROM '.$foreign_table.',pages WHERE pages.uid='.$foreign_table.'.pid AND NOT pages.deleted '.t3lib_BEfunc::deleteClause($foreign_table).' AND '.$pageClause.' '.$fTWHERE;
+                               $queryParts = array(
+                                       'SELECT' => t3lib_BEfunc::getCommonSelectFields($foreign_table,$foreign_table.'.'), 
+                                       'FROM' => $foreign_table.',pages', 
+                                       'WHERE' => 'pages.uid='.$foreign_table.'.pid 
+                                                               AND NOT pages.deleted '.
+                                                               t3lib_BEfunc::deleteClause($foreign_table).
+                                                               ' AND '.$pageClause.' '.
+                                                               $wgolParts['WHERE'],
+                                       'GROUPBY' => $wgolParts['GROUPBY'],
+                                       'ORDERBY' => $wgolParts['ORDERBY'],
+                                       'LIMIT' => $wgolParts['LIMIT']
+                               );
                        } else {
-                               $query = 'SELECT '.t3lib_BEfunc::getCommonSelectFields($foreign_table,$foreign_table.'.').' FROM pages WHERE NOT pages.deleted AND '.$pageClause.' '.$fTWHERE;
+                               $queryParts = array(
+                                       'SELECT' => t3lib_BEfunc::getCommonSelectFields($foreign_table,$foreign_table.'.'), 
+                                       'FROM' => 'pages', 
+                                       'WHERE' => 'NOT pages.deleted 
+                                                               AND '.$pageClause.' '.
+                                                               $wgolParts['WHERE'],
+                                       'GROUPBY' => $wgolParts['GROUPBY'],
+                                       'ORDERBY' => $wgolParts['ORDERBY'],
+                                       'LIMIT' => $wgolParts['LIMIT']
+                               );
                        }
                }
-//     debug(array($query));
-               return $query;
+
+               return $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts);
        }
 
        /**
         * Returns TSConfig for the TCEFORM object in Page TSconfig.
         * Used in TCEFORMs
-        * 
+        *
         * Usage: 4
-        * 
+        *
         * @param       string          Table name present in TCA
         * @param       array           Row from table
-        * @return      array           
+        * @return      array
         * @see t3lib_transferData::renderRecord(), t3lib_TCEforms::setTSconfig(), SC_wizard_list::main(), SC_wizard_add::main()
         */
        function getTCEFORM_TSconfig($table,$row) {
@@ -2299,13 +2352,13 @@ class t3lib_BEfunc      {
 
        /**
         * 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
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Record uid
         * @param       integer         Record pid
-        * @return      integer         
+        * @return      integer
         * @internal
         * @see t3lib_TCEmain::copyRecord(), getTSCpid()
         */
@@ -2328,13 +2381,13 @@ class t3lib_BEfunc      {
 
        /**
         * Return $uid if $table is pages and $uid is integer - otherwise the $pid
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Record uid
         * @param       integer         Record pid
-        * @return      integer         
+        * @return      integer
         * @internal
         * @see t3lib_TCEforms::getTSCpid()
         */
@@ -2345,13 +2398,13 @@ class t3lib_BEfunc      {
 
        /**
         * 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
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Record uid
         * @param       integer         Record pid
-        * @return      integer         
+        * @return      integer
         * @internal
         * @see t3lib_TCEmain::setHistory(), t3lib_TCEmain::process_datamap()
         */
@@ -2366,9 +2419,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns first found domain record "domainName" (without trailing slash) if found in the input $rootLine
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       array           Root line array
         * @return      string          Domain name, if found.
         */
@@ -2376,7 +2429,7 @@ class t3lib_BEfunc        {
                if (t3lib_extMgm::isLoaded('cms'))      {
                        reset($rootLine);
                        while(list(,$row)=each($rootLine))      {
-                               $dRec = t3lib_BEfunc::getRecordsByField('sys_domain','pid',$row['uid'],' AND redirectTo="" AND hidden=0 ORDER BY sorting');
+                               $dRec = t3lib_BEfunc::getRecordsByField('sys_domain','pid',$row['uid'],' AND redirectTo="" AND hidden=0', '', 'sorting');
                                if (is_array($dRec))    {
                                        reset($dRec);
                                        $dRecord = current($dRec);
@@ -2388,9 +2441,9 @@ class t3lib_BEfunc        {
 
        /**
         * Returns the sys_domain record for $domain, optionally with $path appended.
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          Domain name
         * @param       string          Appended path
         * @return      array           Domain record, if found
@@ -2404,23 +2457,21 @@ class t3lib_BEfunc      {
                                // stuff:
                        $domain.=$path;
                        
-                       $query = 'SELECT sys_domain.*'.
-                               'FROM pages,sys_domain where pages.uid=sys_domain.pid 
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('sys_domain.*', 'pages,sys_domain', '
+                               pages.uid=sys_domain.pid 
                                AND NOT sys_domain.hidden 
-                               AND (sys_domain.domainName="'.addSlashes($domain).'" or sys_domain.domainName="'.addSlashes($domain.'/').'") '.
-                               t3lib_BEfunc::deleteClause('pages').
-                               ' LIMIT 1';
-                       $res = mysql(TYPO3_db, $query);
-                       echo mysql_error();
-                       return mysql_fetch_assoc($res);
+                               AND (sys_domain.domainName="'.$GLOBALS['TYPO3_DB']->quoteStr($domain, 'sys_domain').'" or sys_domain.domainName="'.$GLOBALS['TYPO3_DB']->quoteStr($domain.'/', 'sys_domain').'")'.
+                               t3lib_BEfunc::deleteClause('pages'),
+                               '', '', '1');
+                       return $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
                }
        }
 
        /**
         * Returns overlayered RTE setup from an array with TSconfig. Used in TCEforms and TCEmain
-        * 
+        *
         * Usage: 8
-        * 
+        *
         * @param       array           The properties of Page TSconfig in the key "RTE."
         * @param       string          Table name
         * @param       string          Field name
@@ -2443,11 +2494,11 @@ class t3lib_BEfunc      {
 
        /**
         * Returns true if $modName is set and is found as a main- or submodule in $TBE_MODULES array
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       string          Module name
-        * @return      boolean         
+        * @return      boolean
         */
        function isModuleSetInTBE_MODULES($modName)     {
                reset($GLOBALS['TBE_MODULES']);
@@ -2490,14 +2541,14 @@ class t3lib_BEfunc      {
 
        /**
         * Print error message with header, text etc.
-        * 
+        *
         * Usage: 19
-        * 
+        *
         * @param       string          Header string
         * @param       string          Content string
         * @param       boolean         Will return an alert() with the content of header and text.
         * @param       boolean         Print header.
-        * @return      void            
+        * @return      void
         */
        function typo3PrintError ($header,$text,$js='',$head=1) {
                // This prints out a TYPO3 error message.
@@ -2540,11 +2591,11 @@ class t3lib_BEfunc      {
 
        /**
         * Returns "web" if the $path (absolute) is within the DOCUMENT ROOT - and thereby qualifies as a "web" folder.
-        * 
+        *
         * Usage: 4
-        * 
+        *
         * @param       string          Path to evaluate
-        * @return      boolean         
+        * @return      boolean
         */
        function getPathType_web_nonweb($path)  {
                return t3lib_div::isFirstPartOfStr($path,t3lib_div::getIndpEnv('TYPO3_DOCUMENT_ROOT')) ? 'web' : '';
@@ -2552,9 +2603,9 @@ class t3lib_BEfunc        {
 
        /**
         * Creates ADMCMD parameters for the "viewpage" extension / "cms" frontend
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       array           Page record
         * @return      string          Query-parameters
         * @internal
@@ -2576,11 +2627,11 @@ class t3lib_BEfunc      {
         * 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
-        * 
+        *
         * @param       string          String of parameters on multiple lines to parse into key-value pairs (see function description)
-        * @return      array           
+        * @return      array
         */
        function processParams($params) {
                $paramArr=array();
@@ -2597,10 +2648,10 @@ class t3lib_BEfunc      {
 
        /**
         * Returns "list of backend modules". Most likely this will be obsolete soon / removed. Don't use.
-        * 
+        *
         * Usage: 3
-        * 
-        * @param       string          Module names list
+        *
+        * @param       array           Module names in array. Must be "addslashes()"ed
         * @param       string          Perms clause for SQL query
         * @param       string          Backpath
         * @param       string          The URL/script to jump to (used in A tag)
@@ -2610,12 +2661,12 @@ class t3lib_BEfunc      {
         * @obsolete
         */
        function getListOfBackendModules($name,$perms_clause,$backPath='',$script='index.php')  {
-               $query = 'SELECT * FROM pages where doktype!=255 AND module IN ("'.$name.'") AND'.$perms_clause.t3lib_BEfunc::deleteClause('pages');
-               $res = mysql(TYPO3_db,$query);
-               if (!mysql_num_rows($res))      return false;
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages', 'doktype!=255 AND module IN ("'.implode('","',$name).'") AND'.$perms_clause.t3lib_BEfunc::deleteClause('pages'));
+               if (!$GLOBALS['TYPO3_DB']->sql_num_rows($res))  return false;
+
                $out='';
                $theRows=array();
-               while($row=mysql_fetch_assoc($res))     {
+               while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
                        $theRows[]=$row;
                        $out.='<span class="nobr"><a href="'.htmlspecialchars($script.'?id='.$row['uid']).'">'.
                                        t3lib_iconWorks::getIconImage('pages',$row,$backPath,'title="'.htmlspecialchars(t3lib_BEfunc::getRecordPath($row['uid'],$perms_clause,20)).'" align="top"').
@@ -2625,4 +2676,4 @@ class t3lib_BEfunc        {
                return array('rows'=>$theRows,'list'=>$out);
        }       
 }
-?>
\ No newline at end of file
+?>
index aa8d630..54eb5b2 100644 (file)
  *
  *
  *   75: class t3lib_beUserAuth extends t3lib_userAuthGroup 
- *  150:     function trackBeUser($flag)       
- *  163:     function checkLockToIP()  
- *  183:     function backendCheckLogin()      
- *  208:     function backendSetUC()   
- *  243:     function overrideUC()     
- *  253:     function resetUC()        
- *  266:     function emailAtLogin()   
- *  318:     function veriCode()       
+ *  151:     function trackBeUser($flag)       
+ *  169:     function checkLockToIP()  
+ *  189:     function backendCheckLogin()      
+ *  219:     function backendSetUC()   
+ *  254:     function overrideUC()     
+ *  264:     function resetUC()        
+ *  277:     function emailAtLogin()   
+ *  329:     function veriCode()       
  *
  * TOTAL FUNCTIONS: 8
  * (This index is automatically created/updated by the extension "extdeveval")
 
 /**
  * TYPO3 user authentication, backend
- * Could technically have been the same class as t3lib_userauthgroup since these two are always used together and only together. 
+ * Could technically have been the same class as t3lib_userauthgroup since these two are always used together and only together.
  * t3lib_userauthgroup contains most of the functions used for checking permissions, authenticating users, setting up the user etc. This class is most interesting in terms of an API for user from outside.
  * This class contains the configuration of the database fields used plus some functions for the authentication process of backend users.
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -143,21 +143,26 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
        /**
         * If flag is set and the extensions 'beuser_tracking' is loaded, this will insert a table row with the REQUEST_URI of current script - thus tracking the scripts the backend users uses...
         * This function works ONLY with the "beuser_tracking" extension and is depreciated since it does nothing useful.
-        * 
+        *
         * @param       boolean         Activate insertion of the URL.
-        * @return      void            
+        * @return      void
         * @access private
         */
        function trackBeUser($flag)     {
                if ($flag && t3lib_extMgm::isLoaded('beuser_tracking')) {
-                       $query = 'INSERT INTO sys_trackbeuser (userid,tstamp,script) VALUES ('.$this->user['uid'].','.time().',"'.addslashes(t3lib_div::getIndpEnv('REQUEST_URI')).'")';
-                       $res = mysql(TYPO3_db,$query);
+                       $insertFields = array(
+                               'userid' => intval($this->user['uid']),
+                               'tstamp' => time(),
+                               'script' => t3lib_div::getIndpEnv('REQUEST_URI')
+                       );
+                       
+                       $GLOBALS['TYPO3_DB']->exec_INSERTquery('sys_trackbeuser', $insertFields);
                }
        }
 
        /**
         * If TYPO3_CONF_VARS['BE']['enabledBeUserIPLock'] is enabled and an IP-list is found in the User TSconfig objString "options.lockToIP", then make an IP comparison with REMOTE_ADDR and return the outcome (true/false)
-        * 
+        *
         * @return      boolean         True, if IP address validates OK (or no check is done at all)
         * @access private
         */
@@ -178,8 +183,8 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
         * Check if user is logged in and if so, call ->fetchGroupData() to load group information and access lists of all kind, further check IP, set the ->uc array and send login-notification email if required.
         * If no user is logged in the default behaviour is to exit with an error message, but this will happen ONLY if the constant TYPO3_PROCEED_IF_NO_USER is set true.
         * This function is called right after ->start() in fx. init.php
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function backendCheckLogin()    {
                if (!$this->user['uid'])        {
@@ -207,8 +212,8 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
        /**
         * Initialize the internal ->uc array for the backend user
         * Will make the overrides if necessary, and write the UC back to the be_users record if changes has happend
-        * 
-        * @return      void            
+        *
+        * @return      void
         * @internal
         */
        function backendSetUC() {
@@ -240,10 +245,10 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
        }
 
        /**
-        * Override: Call this function every time the uc is updated. 
+        * Override: Call this function every time the uc is updated.
         * That is 1) by reverting to default values, 2) in the setup-module, 3) userTS changes (userauthgroup)
-        * 
-        * @return      void            
+        *
+        * @return      void
         * @internal
         */
        function overrideUC()   {
@@ -252,8 +257,8 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
 
        /**
         * Clears the user[uc] and ->uc to blank strings. Then calls ->backendSetUC() to fill it again with reset contents
-        * 
-        * @return      void            
+        *
+        * @return      void
         * @internal
         */
        function resetUC()      {
@@ -265,8 +270,8 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
        /**
         * Will send an email notification to warning_email_address/the login users email address when a login session is just started.
         * Depends on various parameters whether mails are send and to whom.
-        * 
-        * @return      void            
+        *
+        * @return      void
         * @access private
         */
        function emailAtLogin() {
@@ -316,10 +321,10 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
        }
 
        /**
-        * VeriCode returns 10 first chars of a md5 hash of the session cookie AND the encryptionKey from TYPO3_CONF_VARS. 
+        * 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...
-        * 
-        * @return      string          
+        *
+        * @return      string
         */
        function veriCode()     {
                return substr(md5($this->id.$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']),0,10);
index f625719..4616e91 100755 (executable)
  *
  *
  *
- *   73: class t3lib_browseTree extends t3lib_treeView 
- *   82:     function init($clause='') 
- *  105:     function getTitleAttrib($row) 
+ *   74: class t3lib_browseTree extends t3lib_treeView 
+ *   83:     function init($clause='') 
+ *  106:     function getTitleAttrib($row) 
+ *  118:     function wrapIcon($icon,$row)     
  *
- * TOTAL FUNCTIONS: 2
+ * TOTAL FUNCTIONS: 3
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
@@ -63,7 +64,7 @@ require_once (PATH_t3lib.'class.t3lib_treeview.php');
 
 /**
  * Extension class for the t3lib_treeView class, specially made for browsing pages
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @coauthor   René Fritz <r.fritz@colorcube.de>
  * @see t3lib_treeView, t3lib_pageTree
@@ -75,13 +76,13 @@ class t3lib_browseTree extends t3lib_treeView {
        /**
         * Initialize, setting what is necessary for browsing pages.
         * Using the current user.
-        * 
+        *
         * @param       string          Additional clause for selecting pages.
-        * @return      void            
+        * @return      void
         */
        function init($clause='')       {
                        // This is very important for making trees of pages: Filtering out deleted pages, pages with no access to and sorting them correctly:
-               parent::init(' AND NOT deleted AND '.$GLOBALS['BE_USER']->getPagePermsClause(1).' '.$clause.' ORDER BY sorting');
+               parent::init(' AND '.$GLOBALS['BE_USER']->getPagePermsClause(1).' '.$clause, 'sorting');
 
                $this->table='pages';
                $this->treeName='browsePages';
@@ -98,9 +99,9 @@ class t3lib_browseTree extends t3lib_treeView {
        /**
         * Creates title attribute content for pages.
         * Uses API function in t3lib_BEfunc which will retrieve lots of useful information for pages.
-        * 
+        *
         * @param       array           The table row.
-        * @return      string          
+        * @return      string
         */
        function getTitleAttrib($row) {
                return t3lib_BEfunc::titleAttribForPages($row,'1=1 '.$this->clause,0);
@@ -108,7 +109,7 @@ class t3lib_browseTree extends t3lib_treeView {
        
        /**
         * Wrapping the image tag, $icon, for the row, $row (except for mount points)
-        * 
+        *
         * @param       string          The image tag for the icon
         * @param       array           The row for the current element
         * @return      string          The processed icon input value.
index b76c5ae..925f81f 100755 (executable)
@@ -82,7 +82,7 @@
 
 /**
  * TYPO3 clipboard for records and files
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -120,8 +120,8 @@ class t3lib_clipboard {
 
        /**
         * Initialize the clipboard from the be_user session
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function initializeClipboard()  {
                global $BE_USER;
@@ -149,8 +149,8 @@ class t3lib_clipboard {
        /**
         * Call this method after initialization if you want to lock the clipboard to operate on the normal pad only. Trying to switch pad through ->setCmd will not work
         * This is used by the clickmenu since it only allows operation on single elements at a time (that is the "normal" pad)
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function lockToNormal() {
                $this->lockToNormal=1;
@@ -161,13 +161,13 @@ class t3lib_clipboard {
         * The array $cmd may hold various keys which notes some action to take.
         * Normally perform only one action at a time.
         * In scripts like db_list.php / file_list.php the GET-var CB is used to control the clipboard.
-        * 
+        *
         *              Selecting / Deselecting elements
         *              Array $cmd['el'] has keys = element-ident, value = element value (see description of clipData array in header)
         *              Selecting elements for 'copy' should be done by simultaneously setting setCopyMode.
-        * 
+        *
         * @param       array           Array of actions, see function description
-        * @return      void            
+        * @return      void
         */
        function setCmd($cmd)   {
                if (is_array($cmd['el']))       {
@@ -212,9 +212,9 @@ class t3lib_clipboard {
        
        /**
         * Setting the current pad on clipboard
-        * 
+        *
         * @param       string          Key in the array $this->clipData
-        * @return      void            
+        * @return      void
         */
        function setCurrentPad($padIdent)       {
                        // Change clipboard pad (if not locked to normal)
@@ -226,10 +226,10 @@ class t3lib_clipboard {
        }
 
        /**
-        * Call this after initialization and setCmd in order to save the clipboard to the user session. 
+        * Call this after initialization and setCmd in order to save the clipboard to the user session.
         * The function will check if the internal flag ->changed has been set and if so, save the clipboard. Else not.
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function endClipboard() {
                if ($this->changed)     $this->saveClipboard();
@@ -238,7 +238,7 @@ class t3lib_clipboard {
 
        /**
         * Cleans up an incoming element array $CBarr (Array selecting/deselecting elements)
-        * 
+        *
         * @param       array           Element array from outside ("key" => "selected/deselected")
         * @param       string          $table is the 'table which is allowed'. Must be set.
         * @param       boolean         $removeDeselected can be set in order to remove entries which are marked for deselection.
@@ -259,7 +259,7 @@ class t3lib_clipboard {
 
        /**
         * Reports if the current pad has elements (does not check file/DB type OR if file/DBrecord exists or not. Only counting array)
-        * 
+        *
         * @return      boolean         True if elements exist.
         */
        function isElements()   {
@@ -268,7 +268,7 @@ class t3lib_clipboard {
 
        /**
         * Prints the clipboard
-        * 
+        *
         * @return      string          HTML output
         */
        function printClipboard()       {
@@ -355,7 +355,7 @@ class t3lib_clipboard {
 
        /**
         * Print the content on a pad. Called from ->printClipboard()
-        * 
+        *
         * @param       string          Pad reference
         * @return      array           Array with table rows for the clipboard.
         * @access private
@@ -429,7 +429,7 @@ class t3lib_clipboard {
 
        /**
         * Wraps title of pad in bold-tags and maybe the number of elements if any.
-        * 
+        *
         * @param       string          String (already htmlspecialchars()'ed)
         * @param       string          Pad reference
         * @return      string          HTML output (htmlspecialchar'ed content inside of tags.)
@@ -445,11 +445,11 @@ class t3lib_clipboard {
 
        /**
         * Wraps the title of the items listed in link-tags. The items will link to the page/folder where they originate from
-        * 
+        *
         * @param       string          Title of element - must be htmlspecialchar'ed on beforehand.
         * @param       mixed           If array, a record is expected. If string, its a path
         * @param       string          Table name
-        * @return      string          
+        * @return      string
         */
        function linkItemText($str,$rec,$table='')      {
                if (is_array($rec) && $table)   {       
@@ -471,10 +471,10 @@ class t3lib_clipboard {
        /**
         * Verifies if the item $table/$uid is on the current pad.
         * If the pad is "normal", the mode value is returned if the element existed. Thus you'll know if the item was copy or cut moded...
-        * 
+        *
         * @param       string          Table name, (_FILE for files...)
         * @param       integer         Element uid (path for files)
-        * @return      string          
+        * @return      string
         */
        function isSelected($table,$uid)        {
                $k=$table.'|'.$uid;
@@ -485,7 +485,7 @@ class t3lib_clipboard {
         * Returns item record $table,$uid if selected on current clipboard
         * If table and uid is blank, the first element is returned.
         * Makes sense only for DB records - not files!
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Element uid
         * @return      array           Element record with extra field _RECORD_TITLE set to the title of the record...
@@ -505,7 +505,7 @@ class t3lib_clipboard {
 
        /**
         * Returns the select-url for database elements
-        * 
+        *
         * @param       string          Table name
         * @param       integer         Uid of record
         * @param       boolean         If set, copymode will be enabled
@@ -522,7 +522,7 @@ class t3lib_clipboard {
 
        /**
         * Returns the select-url for files
-        * 
+        *
         * @param       string          Filepath
         * @param       boolean         If set, copymode will be enabled
         * @param       boolean         If set, the link will deselect, otherwise select.
@@ -540,11 +540,11 @@ class t3lib_clipboard {
         * pasteUrl of the element (database and file)
         * For the meaning of $table and $uid, please read from ->makePasteCmdArray!!!
         * The URL will point to tce_file or tce_db depending in $table
-        * 
+        *
         * @param       string          Tablename (_FILE for files)
         * @param       mixed           "destination": can be positive or negative indicating how the paste is done (paste into / paste after)
         * @param       boolean         If set, then the redirect URL will point back to the current script, but with CB reset.
-        * @return      string          
+        * @return      string
         */
        function pasteUrl($table,$uid,$setRedirect=1)   {
                $rU = $this->backPath.($table=='_FILE'?'tce_file.php':'tce_db.php').'?'.
@@ -558,10 +558,10 @@ class t3lib_clipboard {
        
        /**
         * deleteUrl for current pad
-        * 
+        *
         * @param       boolean         If set, then the redirect URL will point back to the current script, but with CB reset.
         * @param       boolean         If set, then the URL will link to the tce_file.php script in the typo3/ dir.
-        * @return      string          
+        * @return      string
         */
        function deleteUrl($setRedirect=1,$file=0)      {
                $rU = $this->backPath.($file?'tce_file.php':'tce_db.php').'?'.
@@ -577,7 +577,7 @@ class t3lib_clipboard {
         * editUrl of all current elements
         * ONLY database
         * Links to alt_doc.php
-        * 
+        *
         * @return      string          The URL to alt_doc.php with parameters.
         */
        function editUrl()      {
@@ -596,7 +596,7 @@ class t3lib_clipboard {
        /**
         * Returns the remove-url (file and db)
         * for file $table='_FILE' and $uid = shortmd5 hash of path
-        * 
+        *
         * @param       string          Tablename
         * @param       string          uid integer/shortmd5 hash
         * @return      string          URL
@@ -606,10 +606,10 @@ class t3lib_clipboard {
        }
 
        /**
-        * This traverses the elements on the current clipboard pane 
+        * This traverses the elements on the current clipboard pane
         * and unsets elements which does not exist anymore or are disabled.
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function cleanCurrent() {
                if (is_array($this->clipData[$this->current]['el']))    {
@@ -633,7 +633,7 @@ class t3lib_clipboard {
 
        /**
         * Counts the number of elements from the table $matchTable. If $matchTable is blank, all tables (except '_FILE' of course) is counted.
-        * 
+        *
         * @param       string          Table to match/count for.
         * @param       string          $pad can optionally be used to set another pad than the current.
         * @return      array           Array with keys from the CB.
@@ -663,7 +663,7 @@ class t3lib_clipboard {
        
        /**
         * Returns confirm JavaScript message
-        * 
+        *
         * @param       string          Table name
         * @param       mixed           For records its an array, for files its a string (path)
         * @param       string          Type-code
@@ -709,9 +709,9 @@ class t3lib_clipboard {
 
        /**
         * Removes element on clipboard
-        * 
+        *
         * @param       string          Key of element in ->clipData array
-        * @return      void            
+        * @return      void
         */
        function removeElement($el)     {
                unset($this->clipData[$this->current]['el'][$el]);
@@ -721,8 +721,8 @@ class t3lib_clipboard {
        /**
         * Saves the clipboard, no questions asked.
         * Use ->endClipboard normally (as it checks if changes has been done so saving is necessary)
-        * 
-        * @return      void            
+        *
+        * @return      void
         * @access private
         */
        function saveClipboard()        {
@@ -732,7 +732,7 @@ class t3lib_clipboard {
 
        /**
         * Returns the current mode, 'copy' or 'cut'
-        * 
+        *
         * @return      string          "copy" or "cut"
         */
        function currentMode()  {
@@ -741,10 +741,10 @@ class t3lib_clipboard {
 
        /**
         * Clipboard label - getting from "EXT:lang/locallang_core.php:"
-        * 
+        *
         * @param       string          Label Key
         * @param       string          Alternative key to "labels"
-        * @return      string          
+        * @return      string
         */
        function clLabel($key,$Akey='labels')   {
                return htmlspecialchars($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:'.$Akey.'.'.$key));
@@ -771,18 +771,18 @@ class t3lib_clipboard {
         ****************************************/
         
        /**
-        * Applies the proper paste configuration in the $cmd array send to tce_db.php. 
+        * Applies the proper paste configuration in the $cmd array send to tce_db.php.
         * $ref is the target, see description below.
         * The current pad is pasted
-        * 
-        *              $ref: [tablename]:[paste-uid]. 
-        *              tablename is the name of the table from which elements *on the current clipboard* is pasted with the 'pid' paste-uid. 
+        *
+        *              $ref: [tablename]:[paste-uid].
+        *              tablename is the name of the table from which elements *on the current clipboard* is pasted with the 'pid' paste-uid.
         *              No tablename means that all items on the clipboard (non-files) are pasted. This requires paste-uid to be positive though.
         *              so 'tt_content:-3'      means 'paste tt_content elements on the clipboard to AFTER tt_content:3 record
         *              'tt_content:30' means 'paste tt_content elements on the clipboard into page with id 30
         *              ':30'   means 'paste ALL database elements on the clipboard into page with id 30
         *              ':-30'  not valid.
-        * 
+        *
         * @param       string          [tablename]:[paste-uid], see description
         * @param       array           Command-array
         * @return      array           Modified Command-array
@@ -812,7 +812,7 @@ class t3lib_clipboard {
        
        /**
         * Delete record entries in CMD array
-        * 
+        *
         * @param       array           Command-array
         * @return      array           Modified Command-array
         */
@@ -852,9 +852,9 @@ class t3lib_clipboard {
         ****************************************/
         
        /**
-        * Applies the proper paste configuration in the $file array send to tce_file.php. 
+        * Applies the proper paste configuration in the $file array send to tce_file.php.
         * The current pad is pasted
-        * 
+        *
         * @param       string          Reference to element (splitted by "|")
         * @param       array           Command-array
         * @return      array           Modified Command-array
@@ -877,7 +877,7 @@ class t3lib_clipboard {
        
        /**
         * Delete files in CMD array
-        * 
+        *
         * @param       array           Command-array
         * @return      array           Modified Command-array
         */
index 234cbb6..1193d27 100755 (executable)
  *
  *
  *  104: class t3lib_cs 
- *  196:     function parse_charset($charset)  
- *  213:     function conv($str,$fromCS,$toCS,$useEntityForNoChar=0)   
- *  247:     function utf8_encode($str,$charset)       
- *  288:     function utf8_decode($str,$charset,$useEntityForNoChar=0) 
- *  336:     function utf8_to_entities($str)   
- *  369:     function entities_to_utf8($str,$alsoStdHtmlEnt=0) 
- *  400:     function utf8_to_numberarray($str,$convEntities=0,$retChar=0)     
- *  441:     function initCharset($charset)    
- *  512:     function UnumberToChar($cbyte)    
- *  556:     function utf8CharToUnumber($str,$hex=0)   
- *  585:     function utf8_strtrunc($str,$len) 
- *  625:     function utf_strlen($str) 
- *  638:     function utf_substr($str,$start,$len=0)   
- *  652:     function utf_strpos($haystack,$needle,$offset=0)  
- *  665:     function utf_strrpos($haystack,$needle,$offset=0) 
+ *  233:     function parse_charset($charset)  
+ *  250:     function conv($str,$fromCS,$toCS,$useEntityForNoChar=0)   
+ *  284:     function utf8_encode($str,$charset)       
+ *  325:     function utf8_decode($str,$charset,$useEntityForNoChar=0) 
+ *  373:     function utf8_to_entities($str)   
+ *  406:     function entities_to_utf8($str,$alsoStdHtmlEnt=0) 
+ *  437:     function utf8_to_numberarray($str,$convEntities=0,$retChar=0)     
+ *  478:     function initCharset($charset)    
+ *  549:     function UnumberToChar($cbyte)    
+ *  593:     function utf8CharToUnumber($str,$hex=0)   
+ *  622:     function utf8_strtrunc($str,$len) 
+ *  662:     function utf_strlen($str) 
+ *  675:     function utf_substr($str,$start,$len=0)   
+ *  689:     function utf_strpos($haystack,$needle,$offset=0)  
+ *  702:     function utf_strrpos($haystack,$needle,$offset=0) 
  *
  * TOTAL FUNCTIONS: 15
  * (This index is automatically created/updated by the extension "extdeveval")
@@ -95,7 +95,7 @@
  */
 /**
  * Class for conversion between charsets.
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @author     Martin Kutschker <martin.t.kutschker@blackbox.net>
  * @package TYPO3
@@ -225,7 +225,7 @@ class t3lib_cs {
 
        /**
         * Normalize - changes input character set to lowercase letters.
-        * 
+        *
         * @param       string          Input charset
         * @return      string          Normalized charset
         * @author      Martin Kutschker <martin.t.kutschker@blackbox.net>
@@ -240,7 +240,7 @@ class t3lib_cs {
 
        /**
         * Convert from one charset to another charset.
-        * 
+        *
         * @param       string          Input string
         * @param       string          From charset (the current charset of the string)
         * @param       string          To charset (the output charset wanted)
@@ -276,7 +276,7 @@ class t3lib_cs {
 
        /**
         * Converts $str from $charset to UTF-8
-        * 
+        *
         * @param       string          String in local charset to convert to UTF-8
         * @param       string          Charset, lowercase. Must be found in csconvtbl/ folder.
         * @return      string          Output string, converted to UTF-8
@@ -316,7 +316,7 @@ class t3lib_cs {
 
        /**
         * Converts $str from UTF-8 to $charset
-        * 
+        *
         * @param       string          String in UTF-8 to convert to local charset
         * @param       string          Charset, lowercase. Must be found in csconvtbl/ folder.
         * @param       boolean         If set, then characters that are not available in the destination character set will be encoded as numeric entities
@@ -366,7 +366,7 @@ class t3lib_cs {
 
        /**
         * Converts all chars > 127 to numeric entities.
-        * 
+        *
         * @param       string          Input string
         * @return      string          Output string
         */
@@ -398,7 +398,7 @@ class t3lib_cs {
        
        /**
         * Converts numeric entities (UNICODE, eg. decimal (&#1234;) or hexadecimal (&#x1b;)) to UTF-8 multibyte chars
-        * 
+        *
         * @param       string          Input string, UTF-8
         * @param       boolean         If set, then all string-HTML entities (like &amp; or &pound; will be converted as well)
         * @return      string          Output string
@@ -428,7 +428,7 @@ class t3lib_cs {
        
        /**
         * Converts all chars in the input UTF-8 string into integer numbers returned in an array
-        * 
+        *
         * @param       string          Input string, UTF-8
         * @param       boolean         If set, then all HTML entities (like &amp; or &pound; or &#123; or &#x3f5d;) will be detected as characters.
         * @param       boolean         If set, then instead of integer numbers the real UTF-8 char is returned.
@@ -468,9 +468,9 @@ class t3lib_cs {
        /**
         * This will initialize a charset for use if it's defined in the PATH_t3lib.'csconvtbl/' folder
         * This function is automatically called by the conversion functions
-        * 
+        *
         * PLEASE SEE: http://www.unicode.org/Public/MAPPINGS/
-        * 
+        *
         * @param       string          The charset to be initialized. Use lowercase charset always (the charset must match exactly with a filename in csconvtbl/ folder ([charset].tbl)
         * @return      integer         Returns '1' if already loaded. Returns FALSE if charset conversion table was not found. Returns '2' if the charset conversion table was found and parsed.
         * @access private
@@ -531,9 +531,9 @@ class t3lib_cs {
        /**
         * Converts a UNICODE number to a UTF-8 multibyte character
         * Algorithm based on script found at From: http://czyborra.com/utf/
-        * 
-        * The binary representation of the character's integer value is thus simply spread across the bytes and the number of high bits set in the lead byte announces the number of bytes in the multibyte sequence: 
-        * 
+        *
+        * The binary representation of the character's integer value is thus simply spread across the bytes and the number of high bits set in the lead byte announces the number of bytes in the multibyte sequence:
+        *
         *  bytes | bits | representation
         *      1 |    7 | 0vvvvvvv
         *      2 |   11 | 110vvvvv 10vvvvvv
@@ -541,7 +541,7 @@ class t3lib_cs {
         *      4 |   21 | 11110vvv 10vvvvvv 10vvvvvv 10vvvvvv
         *      5 |   26 | 111110vv 10vvvvvv 10vvvvvv 10vvvvvv 10vvvvvv
         *      6 |   31 | 1111110v 10vvvvvv 10vvvvvv 10vvvvvv 10vvvvvv 10vvvvvv
-        * 
+        *
         * @param       integer         UNICODE integer
         * @return      string          UTF-8 multibyte character string
         * @see utf8CharToUnumber()
@@ -584,7 +584,7 @@ class t3lib_cs {
        
        /**
         * Converts a UTF-8 Multibyte character to a UNICODE number
-        * 
+        *
         * @param       string          UTF-8 multibyte character string
         * @param       boolean         If set, then a hex. number is returned.
         * @return      integer         UNICODE integer
@@ -612,7 +612,7 @@ class t3lib_cs {
 
        /**
         * Truncates a string in UTF-8 short at a given byte length
-        * 
+        *
         * @param       string          UTF-8 multibyte character string
         * @param       integer         the byte length
         * @return      string          the shortened string
index 8c1c3af..e53ca6b 100755 (executable)
  *
  *
  *   67: class t3lib_diff 
- *   85:     function makeDiffDisplay($str1,$str2)     
- *  159:     function getDiff($str1,$str2)     
- *  186:     function addClearBuffer($clearBuffer,$last=0)     
- *  202:     function explodeStringIntoWords($str)     
- *  223:     function tagSpace($str,$rev=0)    
+ *   86:     function makeDiffDisplay($str1,$str2)     
+ *  160:     function getDiff($str1,$str2)     
+ *  187:     function addClearBuffer($clearBuffer,$last=0)     
+ *  203:     function explodeStringIntoWords($str)     
+ *  224:     function tagSpace($str,$rev=0)    
  *
  * TOTAL FUNCTIONS: 5
  * (This index is automatically created/updated by the extension "extdeveval")
@@ -59,7 +59,7 @@
 /**
  * This class has functions which generates a difference output of a content string
  * Currently works only with LINUX/UNIX
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -78,7 +78,7 @@ class t3lib_diff {
        
        /**
         * This will produce a color-marked-up diff output in HTML from the input strings.
-        * 
+        *
         * @param       string          String 1
         * @param       string          String 2
         * @return      string          Formatted output.
@@ -151,7 +151,7 @@ class t3lib_diff {
        /**
         * Produce a diff (with the "diff" application on unix) between two strings
         * The function will write the two input strings to temporary files, then execute the diff program, delete the temp files and return the result.
-        * 
+        *
         * @param       string          String 1
         * @param       string          String 2
         * @return      array           The result from the exec() function call.
@@ -178,7 +178,7 @@ class t3lib_diff {
        
        /**
         * Will bring down the length of strings to < 150 chars if they were longer than 200 chars. This done by preserving the 70 first and last chars and concatenate those strings with "..." and a number indicating the string length
-        * 
+        *
         * @param       string          The input string.
         * @param       boolean         If set, it indicates that the string should just end with ... (thus no "complete" ending)
         * @return      string          Processed string.
@@ -195,7 +195,7 @@ class t3lib_diff {
        /**
         * Explodes the input string into words.
         * This is done by splitting first by lines, then by space char. Each word will be in stored as a value in an array. Lines will be indicated by two subsequent empty values.
-        * 
+        *
         * @param       string          The string input
         * @return      array           Array with words.
         * @access private
@@ -215,7 +215,7 @@ class t3lib_diff {
 
        /**
         * Adds a space character before and after HTML tags (more precisely any found < or >)
-        * 
+        *
         * @param       string          String to process
         * @param       boolean         If set, the < > searched for will be &lt; and &gt;
         * @return      string          Processed string
index 32afd84..6b9c7cf 100755 (executable)
@@ -1,7 +1,7 @@
 <?php
 /***************************************************************
 *  Copyright notice
-*  
+*
 *  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
 *  All rights reserved
 *
@@ -31,7 +31,7 @@
  * Revised for TYPO3 3.6 July/2003 by Kasper Skaarhoj
  * XHTML compliant
  * Usage counts are based on search 22/2 2003 through whole source including tslib/
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  */
 /**
  *
  *  202: class t3lib_div 
  *
- *              SECTION: IO Variables
- *  224:     function _GP($var)        
- *  238:     function _GET($var='')    
- *  252:     function _POST($var='')   
- *  264:     function _GETset($inputGet)       
- *  282:     function GPvar($var,$strip=0)     
- *  299:     function setGPvars($list,$strip=0)        
- *  316:     function GParrayMerged($var)      
+ *              SECTION: GET/POST Variables
+ *  231:     function _GP($var)        
+ *  245:     function _GET($var='')    
+ *  259:     function _POST($var='')   
+ *  272:     function _GETset($inputGet,$key='')       
+ *  296:     function GPvar($var,$strip=0)     
+ *  313:     function setGPvars($list,$strip=0)        
+ *  330:     function GParrayMerged($var)      
  *
  *              SECTION: IMAGE FUNCTIONS
- *  361:     function gif_compress($theFile, $type)    
- *  389:     function png_to_gif_by_imagemagick($theFile)      
- *  413:     function read_png_gif($theFile,$output_png=0)     
+ *  375:     function gif_compress($theFile, $type)    
+ *  403:     function png_to_gif_by_imagemagick($theFile)      
+ *  427:     function read_png_gif($theFile,$output_png=0)     
  *
  *              SECTION: STRING FUNCTIONS
- *  462:     function fixed_lgd($string,$chars,$preStr='...')  
- *  484:     function fixed_lgd_pre($string,$chars)    
- *  498:     function breakTextForEmail($str,$implChar="\n",$charWidth=76)     
- *  518:     function breakLinesForEmail($str,$implChar="\n",$charWidth=76)    
- *  554:     function cmpIP($baseIP, $list)    
- *  601:     function inList($in_list,$item)   
- *  614:     function rmFromList($element,$list)       
- *  633:     function intInRange($theInt,$min,$max=2000000000,$zeroValue=0)    
- *  650:     function intval_positive($theInt) 
- *  664:     function int_from_ver($verNumberStr)      
- *  677:     function md5int($str)     
- *  689:     function uniqueList($in_list)     
- *  702:     function split_fileref($fileref)  
- *  739:     function dirname($path)   
- *  756:     function modifyHTMLColor($color,$R,$G,$B) 
- *  777:     function modifyHTMLColorAll($color,$all)  
- *  789:     function rm_endcomma($string)     
- *  802:     function danish_strtoupper($string)       
- *  817:     function convUmlauts($str)        
- *  832:     function shortMD5($input, $len=10)        
- *  844:     function testInt($var)    
- *  857:     function isFirstPartOfStr($str,$partStr)  
- *  874:     function formatSize($sizeInBytes,$labels='')      
- *  910:     function convertMicrotime($microtime)     
- *  924:     function splitCalc($string,$operators)    
- *  946:     function calcPriority($string)    
- *  986:     function calcParenthesis($string) 
- * 1013:     function htmlspecialchars_decode($value)  
- * 1027:     function deHSCentities($str)      
- * 1040:     function slashJS($string,$extended=0,$char="'")   
- * 1054:     function rawUrlEncodeJS($str)     
- * 1065:     function rawUrlEncodeFP($str)     
- * 1077:     function validEmail($email)       
- * 1093:     function formatForTextarea($content)      
+ *  476:     function fixed_lgd($string,$chars,$preStr='...')  
+ *  498:     function fixed_lgd_pre($string,$chars)    
+ *  512:     function breakTextForEmail($str,$implChar="\n",$charWidth=76)     
+ *  532:     function breakLinesForEmail($str,$implChar="\n",$charWidth=76)    
+ *  568:     function cmpIP($baseIP, $list)    
+ *  615:     function inList($in_list,$item)   
+ *  628:     function rmFromList($element,$list)       
+ *  647:     function intInRange($theInt,$min,$max=2000000000,$zeroValue=0)    
+ *  664:     function intval_positive($theInt) 
+ *  678:     function int_from_ver($verNumberStr)      
+ *  691:     function md5int($str)     
+ *  703:     function uniqueList($in_list)     
+ *  716:     function split_fileref($fileref)  
+ *  753:     function dirname($path)   
+ *  770:     function modifyHTMLColor($color,$R,$G,$B) 
+ *  791:     function modifyHTMLColorAll($color,$all)  
+ *  803:     function rm_endcomma($string)     
+ *  816:     function danish_strtoupper($string)       
+ *  831:     function convUmlauts($str)        
+ *  846:     function shortMD5($input, $len=10)        
+ *  858:     function testInt($var)    
+ *  871:     function isFirstPartOfStr($str,$partStr)  
+ *  888:     function formatSize($sizeInBytes,$labels='')      
+ *  924:     function convertMicrotime($microtime)     
+ *  938:     function splitCalc($string,$operators)    
+ *  960:     function calcPriority($string)    
+ * 1000:     function calcParenthesis($string) 
+ * 1027:     function htmlspecialchars_decode($value)  
+ * 1041:     function deHSCentities($str)      
+ * 1054:     function slashJS($string,$extended=0,$char="'")   
+ * 1068:     function rawUrlEncodeJS($str)     
+ * 1079:     function rawUrlEncodeFP($str)     
+ * 1091:     function validEmail($email)       
+ * 1107:     function formatForTextarea($content)      
  *
  *              SECTION: ARRAY FUNCTIONS
- * 1125:     function inArray($in_array,$item) 
- * 1143:     function intExplode($delim, $string)      
- * 1163:     function revExplode($delim, $string, $count=0)    
- * 1184:     function trimExplode($delim, $string, $onlyNonEmptyValues=0)      
- * 1209:     function uniqueArray($valueArray) 
- * 1232:     function removeArrayEntryByValue($array,$cmpValue)        
- * 1261:     function implodeArrayForUrl($name,$theArray,$str='',$skipBlank=0,$rawurlencodeParamName=0)        
- * 1289:     function compileSelectedGetVarsFromArray($varList,$getArray,$GPvarAlt=1)  
- * 1313:     function addSlashesOnArray(&$theArray)    
- * 1338:     function stripSlashesOnArray(&$theArray)  
- * 1361:     function slashArray($arr,$cmd)    
- * 1378:     function array_merge_recursive_overrule ($arr0,$arr1,$notAddKeys=0) 
- * 1408:     function array_merge($arr1,$arr2) 
- * 1422:     function csvValues($row,$delim=',',$quote='"')    
+ * 1139:     function inArray($in_array,$item) 
+ * 1157:     function intExplode($delim, $string)      
+ * 1177:     function revExplode($delim, $string, $count=0)    
+ * 1198:     function trimExplode($delim, $string, $onlyNonEmptyValues=0)      
+ * 1223:     function uniqueArray($valueArray) 
+ * 1246:     function removeArrayEntryByValue($array,$cmpValue)        
+ * 1275:     function implodeArrayForUrl($name,$theArray,$str='',$skipBlank=0,$rawurlencodeParamName=0)        
+ * 1302:     function compileSelectedGetVarsFromArray($varList,$getArray,$GPvarAlt=1)  
+ * 1326:     function addSlashesOnArray(&$theArray)    
+ * 1351:     function stripSlashesOnArray(&$theArray)  
+ * 1374:     function slashArray($arr,$cmd)    
+ * 1391:     function array_merge_recursive_overrule ($arr0,$arr1,$notAddKeys=0) 
+ * 1421:     function array_merge($arr1,$arr2) 
+ * 1435:     function csvValues($row,$delim=',',$quote='"')    
  *
  *              SECTION: HTML/XML PROCESSING
- * 1465:     function get_tag_attributes($tag) 
- * 1503:     function split_tag_attributes($tag)       
- * 1538:     function implodeParams($arr,$xhtmlSafe=FALSE,$dontOmitBlankAttribs=FALSE) 
- * 1566:     function wrapJS($string, $linebreak=TRUE) 
- * 1595:     function xml2tree($string,$depth=999) 
- * 1678:     function array2xml($array,$NSprefix='',$level=0,$docTag='phparray',$spaceInd=0)   
- * 1736:     function xml2array($string,$NSprefix='') 
- * 1795:     function xmlRecompileFromStructValArray($vals)    
- * 1838:     function xmlGetHeaderAttribs($xmlData)    
+ * 1478:     function get_tag_attributes($tag) 
+ * 1516:     function split_tag_attributes($tag)       
+ * 1551:     function implodeParams($arr,$xhtmlSafe=FALSE,$dontOmitBlankAttribs=FALSE) 
+ * 1579:     function wrapJS($string, $linebreak=TRUE) 
+ * 1608:     function xml2tree($string,$depth=999) 
+ * 1693:     function array2xml($array,$NSprefix='',$level=0,$docTag='phparray',$spaceInd=0, $options=array(),$parentTagName='')       
+ * 1775:     function xml2array($string,$NSprefix='') 
+ * 1862:     function xmlRecompileFromStructValArray($vals)    
+ * 1905:     function xmlGetHeaderAttribs($xmlData)    
  *
  *              SECTION: FILES FUNCTIONS
- * 1871:     function getURL($url)     
- * 1914:     function writeFile($file,$content)        
- * 1937:     function get_dirs($path)  
- * 1963:     function getFilesInDir($path,$extensionList='',$prependPath=0,$order='')  
- * 2008:     function getAllFilesAndFoldersInPath($fileArr,$path,$extList='',$regDirs=0,$recursivityLevels=99) 
- * 2030:     function removePrefixPathFromList($fileArr,$prefixToRemove)       
- * 2048:     function fixWindowsFilePath($theFile)     
- * 2058:     function resolveBackPath($pathStr)        
- * 2086:     function locationHeaderUrl($path) 
+ * 1938:     function getURL($url)     
+ * 1981:     function writeFile($file,$content)        
+ * 2004:     function get_dirs($path)  
+ * 2030:     function getFilesInDir($path,$extensionList='',$prependPath=0,$order='')  
+ * 2075:     function getAllFilesAndFoldersInPath($fileArr,$path,$extList='',$regDirs=0,$recursivityLevels=99) 
+ * 2097:     function removePrefixPathFromList($fileArr,$prefixToRemove)       
+ * 2114:     function fixWindowsFilePath($theFile)     
+ * 2124:     function resolveBackPath($pathStr)        
+ * 2152:     function locationHeaderUrl($path) 
  *
  *              SECTION: DEBUG helper FUNCTIONS
- * 2126:     function debug_ordvalue($string,$characters=100)  
- * 2143:     function view_array($array_in)    
- * 2171:     function print_array($array_in)   
- * 2187:     function debug($var="",$brOrHeader=0)     
+ * 2192:     function debug_ordvalue($string,$characters=100)  
+ * 2209:     function view_array($array_in)    
+ * 2237:     function print_array($array_in)   
+ * 2253:     function debug($var="",$brOrHeader=0)     
  *
  *              SECTION: SYSTEM INFORMATION
- * 2256:     function getThisUrl()     
- * 2273:     function linkThisScript($getParams=array())       
- * 2295:     function linkThisUrl($url,$getParams=array())     
- * 2315:     function getIndpEnv($getEnvName)  
- * 2499:     function milliseconds()   
- * 2512:     function clientInfo($useragent='')        
+ * 2322:     function getThisUrl()     
+ * 2339:     function linkThisScript($getParams=array())       
+ * 2363:     function linkThisUrl($url,$getParams=array())     
+ * 2385:     function getIndpEnv($getEnvName)  
+ * 2569:     function milliseconds()   
+ * 2582:     function clientInfo($useragent='')        
  *
  *              SECTION: TYPO3 SPECIFIC FUNCTIONS
- * 2601:     function getFileAbsFileName($filename,$onlyRelative=1,$relToTYPO3_mainDir=0)      
- * 2637:     function validPathStr($theFile)   
- * 2649:     function isAbsPath($path) 
- * 2661:     function isAllowedAbsPath($path)  
- * 2679:     function verifyFilenameAgainstDenyPattern($filename)      
- * 2697:     function upload_copy_move($source,$destination)   
- * 2725:     function upload_to_tempfile($uploadedFileName)    
- * 2742:     function unlink_tempfile($uploadedTempFileName)   
- * 2757:     function tempnam($filePrefix)     
- * 2770:     function stdAuthCode($uid_or_record,$fields='')   
- * 2804:     function loadTCA($table)  
- * 2823:     function resolveSheetDefInDS($dataStructArray,$sheet='sDEF')      
- * 2851:     function resolveAllSheetsInDS($dataStructArray)   
- * 2880:     function callUserFunction($funcName,&$params,&$ref,$checkPrefix='user_',$silent=0)        
- * 2920:     function makeInstance($className) 
- * 2938:     function makeInstanceService($serviceType, $serviceSubType='', $excludeServiceKeys='')    
- * 2977:     function makeInstanceClassName($className)        
- * 2997:     function plainMailEncoded($email,$subject,$message,$headers='',$enc='',$charset='ISO-8859-1',$dontEncodeSubject=0)        
- * 3044:     function quoted_printable($string,$maxlen=76)     
- * 3087:     function substUrlsInPlainText($message,$urlmode='76',$index_script_url='')        
- * 3122:     function makeRedirectUrl($inUrl,$l=0,$index_script_url='')        
- * 3145:     function freetypeDpiComp($font_size)      
+ * 2671:     function getFileAbsFileName($filename,$onlyRelative=1,$relToTYPO3_mainDir=0)      
+ * 2707:     function validPathStr($theFile)   
+ * 2719:     function isAbsPath($path) 
+ * 2731:     function isAllowedAbsPath($path)  
+ * 2749:     function verifyFilenameAgainstDenyPattern($filename)      
+ * 2767:     function upload_copy_move($source,$destination)   
+ * 2795:     function upload_to_tempfile($uploadedFileName)    
+ * 2812:     function unlink_tempfile($uploadedTempFileName)   
+ * 2827:     function tempnam($filePrefix)     
+ * 2840:     function stdAuthCode($uid_or_record,$fields='')   
+ * 2874:     function loadTCA($table)  
+ * 2893:     function resolveSheetDefInDS($dataStructArray,$sheet='sDEF')      
+ * 2921:     function resolveAllSheetsInDS($dataStructArray)   
+ * 2950:     function callUserFunction($funcName,&$params,&$ref,$checkPrefix='user_',$silent=0)        
+ * 3053:     function makeInstanceService($serviceType, $serviceSubType='', $excludeServiceKeys='')    
+ * 3092:     function makeInstanceClassName($className)        
+ * 3112:     function plainMailEncoded($email,$subject,$message,$headers='',$enc='',$charset='ISO-8859-1',$dontEncodeSubject=0)        
+ * 3159:     function quoted_printable($string,$maxlen=76)     
+ * 3202:     function substUrlsInPlainText($message,$urlmode='76',$index_script_url='')        
+ * 3237:     function makeRedirectUrl($inUrl,$l=0,$index_script_url='')        
+ * 3265:     function freetypeDpiComp($font_size)      
+ * 3284:     function devLog($msg, $extKey, $severity=0, $dataVar=FALSE)       
  *
  * TOTAL FUNCTIONS: 108
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
+
 
 
 
  * However a section of functions requires certain TYPO3 features available
  * See comments in the source.
  * You are encouraged to use this library in your own scripts!
- * 
- * USE: 
+ *
+ * USE:
  * The class is intended to be used without creating an instance of it.
  * So: Don't instantiate - call functions with "t3lib_div::" prefixed the function name.
  * So use t3lib_div::[method-name] to refer to the functions, eg. 't3lib_div::milliseconds()'
- * 
+ *
  * @author     Kasper Skaarhoj <kasper@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
@@ -207,16 +207,23 @@ class t3lib_div {
 
        /*************************
         *
-        * IO Variables
+        * GET/POST Variables
+        *
+        * Background:
+        * Input GET/POST variables in PHP may have their quotes escaped with "\" or not depending on configuration.
+        * TYPO3 has always converted quotes to BE escaped if the configuration told that they would not be so.
+        * But the clean solution is that quotes are never escaped and that is what the functions below offers.
+        * Eventually TYPO3 should provide this in the global space as well.
+        * In the transitional phase (or forever..?) we need to encourage EVERY to read and write GET/POST vars through the API functions below.
         *
         *************************/
 
-
        /**
         * Returns the 'GLOBAL' value of incoming data from POST or GET, with priority to POST (that is equalent to 'GP' order)
         * Strips slashes from all output, both strings and arrays.
         * This function substitutes t3lib_div::GPvar()
-        * 
+        * To enhancement security in your scripts, please consider using t3lib_div::_GET or t3lib_div::_POST if you already know by which method your data is arriving to the scripts!
+        *
         * @param       string          GET/POST var to return
         * @return      mixed           POST var named $var and if not set, the GET var of the same name.
         * @see GPvar()
@@ -230,7 +237,7 @@ class t3lib_div {
        /**
         * Returns the global GET array (or value from) normalized to contain un-escaped values.
         * ALWAYS use this API function to acquire the GET variables!
-        * 
+        *
         * @param       string          Optional pointer to value in GET array (basically name of GET var)
         * @return      mixed           If $var is set it returns the value of $HTTP_GET_VARS[$var]. If $var is blank or zero, returns $HTTP_GET_VARS itself. In any case *slashes are stipped from the output!*
         * @see _POST(), _GP(), _GETset()
@@ -244,7 +251,7 @@ class t3lib_div {
        /**
         * Returns the global POST array (or value from) normalized to contain un-escaped values.
         * ALWAYS use this API function to acquire the POST variables!
-        * 
+        *
         * @param       string          Optional pointer to value in POST array (basically name of POST var)
         * @return      mixed           If $var is set it returns the value of $HTTP_POST_VARS[$var]. If $var is blank or zero, returns $HTTP_POST_VARS itself. In any case *slashes are stipped from the output!*
         * @see _GET(), _GP()
@@ -257,17 +264,18 @@ class t3lib_div {
 
        /**
         * Writes input value to $HTTP_GET_VARS / $_GET
-        * 
+        *
         * @param       array           Array to write to $HTTP_GET_VARS / $_GET. Values should NOT be escaped at input time (but will be escaped before writing according to TYPO3 standards).
         * @param       string          Alternative key; If set, this will not set the WHOLE GET array, but only the key in it specified by this value!
-        * @return      void            
+        * @return      void
         */
        function _GETset($inputGet,$key='')     {
-               if (!strcmp($key,''))   {
+                       // ADDS slashes since TYPO3 standard currently is that slashes MUST be applied (regardless of magic_quotes setting).
+               if (strcmp($key,''))    {
                        if (is_array($inputGet))        { t3lib_div::addSlashesOnArray($inputGet); } else { $inputGet = addslashes($inputGet); }
                        $GLOBALS['HTTP_GET_VARS'][$key] = $_GET[$key] = $inputGet;
-               } else {
-                       t3lib_div::addSlashesOnArray($inputGet);        // ADDS slashes since TYPO3 standard currently is that slashes MUST be applied (regardless of magic_quotes setting).
+               } elseif (is_array($inputGet)){
+                       t3lib_div::addSlashesOnArray($inputGet);
                        $GLOBALS['HTTP_GET_VARS'] = $_GET = $inputGet;
                }
        }
@@ -276,9 +284,9 @@ class t3lib_div {
         * GET/POST variable
         * Returns the 'GLOBAL' value of incoming data from POST or GET, with priority to POST (that is equalent to 'GP' order)
         * Strips slashes of string-outputs, but not arrays UNLESS $strip is set. If $strip is set all output will have escaped characters unescaped.
-        * 
+        *
         * Usage: 686
-        * 
+        *
         * @param       string          GET/POST var to return
         * @param       boolean         If set, values are stripped of return values that are *arrays!* - string/integer values returned are always strip-slashed()
         * @return      mixed           POST var named $var and if not set, the GET var of the same name.
@@ -287,19 +295,19 @@ class t3lib_div {
         */
        function GPvar($var,$strip=0)   {
                $value = isset($GLOBALS['HTTP_POST_VARS'][$var]) ? $GLOBALS['HTTP_POST_VARS'][$var] : $GLOBALS['HTTP_GET_VARS'][$var];
-               if (isset($value) && is_string($value)) {$value=stripslashes($value);}  // Originally check '&& get_magic_quotes_gpc() ' but the values of HTTP_GET_VARS are always slashed regardless of get_magic_quotes_gpc() because HTTP_POST/GET_VARS are run through addSlashesOnArray in the very beginning of index_ts.php eg.
-               if ($strip && isset($value) && is_array($value)) {t3lib_div::stripSlashesOnArray($value);}
+               if (isset($value) && is_string($value)) { $value = stripslashes($value); }      // Originally check '&& get_magic_quotes_gpc() ' but the values of HTTP_GET_VARS are always slashed regardless of get_magic_quotes_gpc() because HTTP_POST/GET_VARS are run through addSlashesOnArray in the very beginning of index_ts.php eg.
+               if ($strip && isset($value) && is_array($value)) { t3lib_div::stripSlashesOnArray($value); }
                return $value;
        }
 
        /**
         * Sets global variables from HTTP_POST_VARS or HTTP_GET_VARS
-        * 
+        *
         * Usage: 9
-        * 
+        *
         * @param       string          List of GET/POST var keys to set globally
         * @param       boolean         If set, values are passed through stripslashes()
-        * @return      void            
+        * @return      void
         * @depreciated
         */
        function setGPvars($list,$strip=0)      {
@@ -311,9 +319,9 @@ class t3lib_div {
 
        /**
         * Returns the GET/POST global arrays merged with POST taking precedence.
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       string          Key (variable name) from GET or POST vars
         * @return      array           Returns the GET vars merged recursively onto the POST vars.
         * @ignore
@@ -327,13 +335,13 @@ class t3lib_div {
                return $mergedA;
        }
 
-       
-       
-       
-       
-       
-       
-       
+
+
+
+
+
+
+
 
 
        /*************************
@@ -341,24 +349,24 @@ class t3lib_div {
         * IMAGE FUNCTIONS
         *
         *************************/
-       
-       
+
+
        /**
         * Compressing a GIF file if not already LZW compressed
         * This function is a workaround for the fact that ImageMagick and/or GD does not compress GIF-files to their minimun size (that is RLE or no compression used)
-        * 
+        *
         *              The function takes a file-reference, $theFile, and saves it again through GD or ImageMagick in order to compress the file
         *              GIF:
         *              If $type is not set, the compression is done with ImageMagick (provided that $GLOBALS['TYPO3_CONF_VARS']['GFX']['im_path_lzw'] is pointing to the path of a lzw-enabled version of 'convert') else with GD (should be RLE-enabled!)
         *              If $type is set to either 'IM' or 'GD' the compression is done with ImageMagick and GD respectively
         *              PNG:
         *              No changes.
-        * 
+        *
         *              $theFile is expected to be a valid GIF-file!
         *              The function returns a code for the operation.
-        * 
+        *
         * Usage: 11
-        * 
+        *
         * @param       string          Filepath
         * @param       string          See description of function
         * @return      string          Returns "GD" if GD was used, otherwise "IM" if ImageMagick was used. If nothing done at all, it returns empty string.
@@ -383,11 +391,11 @@ class t3lib_div {
 
        /**
         * Converts a png file to gif
-        * 
+        *
         * This converts a png file to gif IF the FLAG $GLOBALS['TYPO3_CONF_VARS']['FE']['png_to_gif'] is set true.
-        * 
+        *
         * Usage: 5
-        * 
+        *
         * @param       string          $theFile        the filename with path
         * @return      string          new filename
         * @internal
@@ -410,7 +418,7 @@ class t3lib_div {
         * Returns filename of the png/gif version of the input file (which can be png or gif).
         * If input file type does not match the wanted output type a conversion is made and temp-filename returned.
         * Usage: 1
-        * 
+        *
         * @param       string          Filepath of image file
         * @param       boolean         If set, then input file is converted to PNG, otherwise to GIF
         * @return      string          If the new image file exists, it's filepath is returned
@@ -456,9 +464,9 @@ class t3lib_div {
         * Truncate string
         * Returns a new string of max. $chars length.
         * If the string is longer, it will be truncated and appended with '...'.
-        * 
+        *
         * Usage: 119
-        * 
+        *
         * @param       string          $string         string to truncate
         * @param       integer         $chars  must be an integer of at least 4
         * @param       string          String to append to the the output if it is truncated, default is '...'
@@ -479,9 +487,9 @@ class t3lib_div {
         * Returns a new string of max. $chars length.
         * If the string is longer, it will be truncated and prepended with '...'.
         * This works like fixed_lgd, but is truncated in the start of the string instead of the end
-        * 
+        *
         * Usage: 19
-        * 
+        *
         * @param       string          $string         string to truncate
         * @param       integer         $chars  must be an integer of at least 4
         * @return      string          new string
@@ -493,13 +501,13 @@ class t3lib_div {
 
        /**
         * Breaks up the text for emails
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       string          The string to break up
         * @param       string          The string to implode the broken lines with (default/typically \n)
         * @param       integer         The line length
-        * @return      string          
+        * @return      string
         */
        function breakTextForEmail($str,$implChar="\n",$charWidth=76)   {
                $lines = explode(chr(10),$str);
@@ -512,13 +520,13 @@ class t3lib_div {
 
        /**
         * Breaks up a single line of text for emails
-        * 
+        *
         * Usage: 3
-        * 
+        *
         * @param       string          The string to break up
         * @param       string          The string to implode the broken lines with (default/typically \n)
         * @param       integer         The line length
-        * @return      string          
+        * @return      string
         * @see breakTextForEmail()
         */
        function breakLinesForEmail($str,$implChar="\n",$charWidth=76)  {
@@ -546,13 +554,13 @@ class t3lib_div {
                        if (!trim(substr($str,$p,$l)))  break;  // added...
                }
                return implode($implChar,$lines);
-       }       
+       }
 
        /**
         * Match IP number with list of numbers with wildcard
-        * 
+        *
         * Usage: 8
-        * 
+        *
         * @param       string          $baseIP is the current remote IP address for instance, typ. REMOTE_ADDR
         * @param       string          $list is a comma-list of IP-addresses to match with. *-wildcard allowed instead of number, plus leaving out parts in the IP number is accepted as wildcard (eg. 192.168.*.* equals 192.168)
         * @return      boolean         True if an IP-mask from $list matches $baseIP
@@ -564,7 +572,7 @@ class t3lib_div {
                        reset($values);
                        while(list(,$test)=each($values))       {
                                list($test,$mask) = explode('/',$test);
-                               
+
                                if(intval($mask)) {
                                                // "192.168.3.0/24"
                                        $lnet=ip2long($test);
@@ -574,7 +582,7 @@ class t3lib_div {
                                        $binip=str_pad( decbin($lip),32,"0","STR_PAD_LEFT" );
                                        $firstip=substr($binip,0,$mask);
                                        $yes=(strcmp($firstpart,$firstip)==0);
-                                       
+
                                } else {
                                                // "192.168.*.*"
                                        $IPparts = explode('.',$test);
@@ -595,11 +603,11 @@ class t3lib_div {
 
        /**
         * Check for item in list
-        * 
+        *
         * Check if an item exists in a comma-separated list of items.
-        * 
+        *
         * Usage: 166
-        * 
+        *
         * @param       string          $in_list        comma-separated list of items (string)
         * @param       string          $item   item to check for
         * @return      boolean         true if $item is in $in_list
@@ -610,9 +618,9 @@ class t3lib_div {
 
        /**
         * Removes an item from a comma-separated list of items.
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       string          $element        element to remove
         * @param       string          $list   comma-separated list of items (string)
         * @return      string          new comma-separated list of items
@@ -627,9 +635,9 @@ class t3lib_div {
 
        /**
         * Forces the integer $theInt into the boundaries of $min and $max. If the $theInt is 'false' then the $zeroValue is applied.
-        * 
+        *
         * Usage: 226
-        * 
+        *
         * @param       integer         Input value
         * @param       integer         Lower limit
         * @param       integer         Higher limit
@@ -647,11 +655,11 @@ class t3lib_div {
 
        /**
         * Returns the $integer if greater than zero, otherwise returns zero.
-        * 
+        *
         * Usage: 1
-        * 
+        *
         * @param       integer         Integer string to process
-        * @return      integer         
+        * @return      integer
         */
        function intval_positive($theInt)       {
                $theInt = intval($theInt);
@@ -661,9 +669,9 @@ class t3lib_div {
 
        /**
         * Returns an integer from a three part version number, eg '4.12.3' -> 4012003
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          Version number on format x.x.x
         * @return      integer         Integer version of version number (where each part can count to 999)
         */
@@ -674,21 +682,21 @@ class t3lib_div {
 
        /**
         * Makes a positive integer hash out of the first 7 chars from the md5 hash of the input
-        * 
+        *
         * Usage: 0
-        * 
+        *
         * @param       string          String to md5-hash
         * @return      integer         Returns 28bit integer-hash
         */
        function md5int($str)   {
                return hexdec(substr(md5($str),0,7));
        }
-       
+
        /**
         * Takes a comma-separated list and removes all duplicates
-        * 
+        *
         * Usage: 16
-        * 
+        *
         * @param       string          $in_list is a comma-separated list of values.
         * @return      string          Returns the list without any duplicates of values, space around values are trimmed
         */
@@ -699,9 +707,9 @@ class t3lib_div {
 
        /**
         * Splits a reference to a file in 5 parts
-        * 
+        *
         * Usage: 43
-        * 
+        *
         * @param       string          Filename/filepath to be analysed
         * @return      array           Contains keys [path], [file], [filebody], [fileext], [realFileext]
         */
@@ -722,15 +730,15 @@ class t3lib_div {
                        $info['filebody'] = $info['file'];
                        $info['fileext'] = '';
                }
-               reset($info);   
+               reset($info);
                return $info;
        }
-       
+
        /**
         * Returns the directory part of a path without trailing slash
         * If there is no dir-part, then an empty string is returned.
         * Behaviour:
-        * 
+        *
         * '/dir1/dir2/script.php' => '/dir1/dir2'
         * '/dir1/' => '/dir1'
         * 'dir1/script.php' => 'dir1'
@@ -738,7 +746,7 @@ class t3lib_div {
         * '/script.php' => ''
         * '' => ''
         * Usage: 5
-        * 
+        *
         * @param       string          Directory name / path
         * @return      string          Processed input value. See function description.
         */
@@ -749,9 +757,9 @@ class t3lib_div {
 
        /**
         * Modifies a HTML Hex color by adding/subtracting $R,$G and $B integers
-        * 
+        *
         * Usage: 37
-        * 
+        *
         * @param       string          A hexadecimal color code, #xxxxxx
         * @param       integer         Offset value 0-255
         * @param       integer         Offset value 0-255
@@ -772,9 +780,9 @@ class t3lib_div {
 
        /**
         * Modifies a HTML Hex color by adding/subtracting $all integer from all R/G/B channels
-        * 
+        *
         * Usage: 4
-        * 
+        *
         * @param       string          A hexadecimal color code, #xxxxxx
         * @param       integer         Offset value 0-255 for all three channels.
         * @return      string          A hexadecimal color code, #xxxxxx, modified according to input vars
@@ -786,11 +794,11 @@ class t3lib_div {
 
        /**
         * Removes comma (if present) in the end of string
-        * 
+        *
         * Usage: 4
-        * 
+        *
         * @param       string          String from which the comma in the end (if any) will be removed.
-        * @return      string          
+        * @return      string
         */
        function rm_endcomma($string)   {
                return ereg_replace(',$','',$string);
@@ -800,9 +808,9 @@ class t3lib_div {
         * strtoupper which converts danish (and other characters) characters as well
         * (Depreciated, use PHP function with locale settings instead or for HTML output, wrap your content in <span class="uppercase">...</span>)
         * Usage: 4
-        * 
+        *
         * @param       string          String to process
-        * @return      string          
+        * @return      string
         * @ignore
         */
        function danish_strtoupper($string)     {
@@ -814,11 +822,11 @@ class t3lib_div {
         * Change umlaut characters to plain ASCII with normally two character target
         * Only known characters will be converted, so don't expect a result for any character.
         * Works only for western europe single-byte charsets!
-        * 
+        *
         * ä => ae, Ö => Oe
-        * 
+        *
         * @param       string          String to convert.
-        * @return      string          
+        * @return      string
         */
        function convUmlauts($str)      {
                $pat  = array ( '/ä/',  '/Ä/',  '/ö/',  '/Ö/',  '/ü/',  '/Ü/',  '/ß/',  '/å/',  '/Å/',  '/ø/',  '/Ø/',  '/æ/',  '/Æ/'   );
@@ -828,9 +836,9 @@ class t3lib_div {
 
        /**
         * Returns the first 10 positions of the MD5-hash               (changed from 6 to 10 recently)
-        * 
+        *
         * Usage: 43
-        * 
+        *
         * @param       string          Input string to be md5-hashed
         * @param       integer         The string-length of the output
         * @return      string          Substring of the resulting md5-hash, being $len chars long (from beginning)
@@ -841,9 +849,9 @@ class t3lib_div {
 
        /**
         * Tests if the input is an integer.
-        * 
+        *
         * Usage: 74
-        * 
+        *
         * @param       mixed           Any input variable to test.
         * @return      boolean         Returns true if string is an integer
         */
@@ -853,9 +861,9 @@ class t3lib_div {
 
        /**
         * Returns true if the first part of $str matches the string $partStr
-        * 
+        *
         * Usage: 58
-        * 
+        *
         * @param       string          Full string to check
         * @param       string          Reference string which must be found as the "first part" of the full string
         * @return      boolean         True if $partStr was found to be equal to the first part of $str
@@ -870,23 +878,23 @@ class t3lib_div {
 
        /**
         * Formats the input integer $sizeInBytes as bytes/kilobytes/megabytes (-/K/M)
-        * 
+        *
         * Usage: 54
-        * 
+        *
         * @param       integer         Number of bytes to format.
         * @param       string          Labels for bytes, kilo, mega and giga separated by vertical bar (|) and possibly encapsulated in "". Eg: " | K| M| G" (which is the default value)
         * @return      string          Formatted representation of the byte number, for output.
         */
        function formatSize($sizeInBytes,$labels='')    {
-       
+
                        // Set labels:
                if (strlen($labels) == 0) {
                    $labels = ' | K| M| G';
-               } else { 
+               } else {
                    $labels = str_replace('"','',$labels);
                }
                $labelArr = explode('|',$labels);
-               
+
                        // Find size:
                if ($sizeInBytes>900)   {
                        if ($sizeInBytes>900000000)     {       // GB
@@ -907,9 +915,9 @@ class t3lib_div {
 
        /**
         * Returns microtime input to milliseconds
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          Microtime
         * @return      integer         Microtime input string converted to an integer (milliseconds)
         */
@@ -921,7 +929,7 @@ class t3lib_div {
        /**
         * This splits a string by the chars in $operators (typical /+-*) and returns an array with them in
         * Usage: 2
-        * 
+        *
         * @param       string          Input string, eg "123 + 456 / 789 - 4"
         * @param       string          Operators to split by, typically "/+-*"
         * @return      array           Array with operators and operands separated.
@@ -944,7 +952,7 @@ class t3lib_div {
        /**
         * Calculates the input by +,-,*,/,%,^ with priority to + and -
         * Usage: 1
-        * 
+        *
         * @param       string          Input string, eg "123 + 456 / 789 - 4"
         * @return      integer         Calculated value. Or error string.
         * @see calcParenthesis()
@@ -956,11 +964,11 @@ class t3lib_div {
                $regex = '(['.$qm.'])(['.$qm.']?[0-9\.]*)';
                        // split the expression here:
                preg_match_all('/'.$regex.'/',$string,$reg);
-               
+
                reset($reg[2]);
                $number=0;
                $Msign='+';
-               $err='';        
+               $err='';
                $buffer=doubleval(current($reg[2]));
                next($reg[2]);  // Advance pointer
                while(list($k,$v)=each($reg[2]))        {
@@ -984,7 +992,7 @@ class t3lib_div {
        /**
         * Calculates the input with parenthesis levels
         * Usage: 2
-        * 
+        *
         * @param       string          Input string, eg "(123 + 456) / 789 - 4"
         * @return      integer         Calculated value. Or error string.
         * @see calcPriority(), tslib_cObj::stdWrap()
@@ -1010,9 +1018,9 @@ class t3lib_div {
 
        /**
         * Inverse version of htmlspecialchars()
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          Value where &gt;, &lt;, &quot; and &amp; should be converted to regular chars.
         * @return      string          Converted result.
         */
@@ -1026,18 +1034,18 @@ class t3lib_div {
 
        /**
         * Re-converts HTML entities if they have been converted by htmlspecialchars()
-        * 
+        *
         * @param       string          String which contains eg. "&amp;amp;" which should stay "&amp;". Or "&amp;#1234;" to "&#1234;". Or "&amp;#x1b;" to "&#x1b;"
         * @return      string          Converted result.
         */
        function deHSCentities($str)    {
                return ereg_replace('&amp;([#[:alnum:]]*;)','&\1',$str);
        }
-       
+
        /**
         * This function is used to escape any ' -characters when transferring text to JavaScript!
         * Usage: 6
-        * 
+        *
         * @param       string          String to escape
         * @param       boolean         If set, also backslashes are escaped.
         * @param       string          The character to escape, default is ' (single-quote)
@@ -1046,37 +1054,37 @@ class t3lib_div {
        function slashJS($string,$extended=0,$char="'") {
                if ($extended)  {$string = str_replace ("\\", "\\\\", $string);}
                return str_replace ($char, "\\".$char, $string);
-       }       
+       }
 
        /**
         * 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
-        * 
+        *
         * @param       string          String to raw-url-encode with spaces preserved
         * @return      string          Rawurlencoded result of input string, but with all %20 (space chars) converted to real spaces.
         */
        function rawUrlEncodeJS($str)   {
                return str_replace('%20',' ',rawurlencode($str));
        }
-       
+
        /**
         * rawurlencode which preserves "/" chars
         * Usefull when filepaths should keep the "/" chars, but have all other special chars encoded.
-        * 
+        *
         * @param       string          Input string
         * @return      string          Output string
         */
        function rawUrlEncodeFP($str)   {
                return str_replace('%2F','/',rawurlencode($str));
        }
-       
+
        /**
         * Checking syntax of input email address
-        * 
+        *
         * Usage: 4
-        * 
+        *
         * @param       string          Input string to evaluate
         * @return      boolean         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.
         */
@@ -1090,9 +1098,9 @@ class t3lib_div {
         * 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
-        * 
+        *
         * @param       string          Input string to be formatted.
         * @return      string          Formatted for <textarea>-tags
         */
@@ -1101,13 +1109,13 @@ class t3lib_div {
        }
 
 
-       
-       
-       
-       
-       
-       
-       
+
+
+
+
+
+
+
 
 
 
@@ -1120,9 +1128,9 @@ class t3lib_div {
        /**
         * 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
-        * 
+        *
         * @param       array           $in_array               one-dimensional array of items
         * @param       string          $item   item to check for
         * @return      boolean         true if $item is in the one-dimensional array $in_array
@@ -1139,9 +1147,9 @@ class t3lib_div {
        /**
         * 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
-        * 
+        *
         * @param       string          Delimiter string to explode with
         * @param       string          The string to explode
         * @return      array           Exploded values, all converted to integers
@@ -1158,9 +1166,9 @@ class t3lib_div {
        /**
         * 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
-        * 
+        *
         * @param       string          Delimiter string to explode with
         * @param       string          The string to explode
         * @param       integer         Number of array entries
@@ -1179,9 +1187,9 @@ class t3lib_div {
        /**
         * Explodes a string and trims all values for whitespace in the ends.
         * If $onlyNonEmptyValues is set, then all blank ('') values are removed.
-        * 
+        *
         * Usage: 239
-        * 
+        *
         * @param       string          Delimiter string to explode with
         * @param       string          The string to explode
         * @param       boolean         If set, all empty values (='') will NOT be set in output
@@ -1206,9 +1214,9 @@ class t3lib_div {
         * Values are trimmed
         * (Depreciated, use PHP function array_unique instead)
         * Usage: 2
-        * 
+        *
         * @param       array           Array of values to make unique
-        * @return      array           
+        * @return      array
         * @ignore
         * @depreciated
         */
@@ -1228,9 +1236,9 @@ class t3lib_div {
 
        /**
         * Removes the value $cmpValue from the $array if found there. Returns the modified array
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       array           Array containing the values
         * @param       string          Value to search for and if found remove array entry where found.
         * @return      array           Output array with entries removed if search string is found
@@ -1254,9 +1262,9 @@ class t3lib_div {
 
        /**
         * Implodes a multidim-array into GET-parameters (eg. &param[key][key2]=value2&param[key][key3]=value3)
-        * 
+        *
         * Usage: 24
-        * 
+        *
         * @param       string          Name prefix for entries. Set to blank if you wish none.
         * @param       array           The (multidim) array to implode
         * @param       boolean         If set, all values that are blank (='') will NOT be imploded
@@ -1264,17 +1272,16 @@ class t3lib_div {
         * @param       boolean         If set, the param name itselt (for example "param[key][key2]") would be rawurlencoded as well.
         * @return      string          Imploded result, fx. &param[key][key2]=value2&param[key][key3]=value3
         */
-       function implodeArrayForUrl($name,$theArray,$str='',$skipBlank=0,$rawurlencodeParamName=0)      {       
+       function implodeArrayForUrl($name,$theArray,$str='',$skipBlank=0,$rawurlencodeParamName=0)      {
                if (is_array($theArray))        {
-                       reset($theArray);
-                       while(list($Akey,$AVal)=each($theArray))        {
+                       foreach($theArray as $Akey => $AVal)    {
                                $thisKeyName = $name ? $name.'['.$Akey.']' : $Akey;
                                if (is_array($AVal))    {
-                                       $str=t3lib_div::implodeArrayForUrl($thisKeyName,$AVal,$str,$skipBlank,$rawurlencodeParamName);
+                                       $str = t3lib_div::implodeArrayForUrl($thisKeyName,$AVal,$str,$skipBlank,$rawurlencodeParamName);
                                } else {
                                        if (!$skipBlank || strcmp($AVal,''))    {
                                                $str.='&'.($rawurlencodeParamName ? rawurlencode($thisKeyName) : $thisKeyName).
-                                                       '='.rawurlencode(stripslashes($AVal));  // strips slashes because HTTP_POST_VARS / GET_VARS input is with slashes...
+                                                       '='.rawurlencode($AVal);        // strips slashes because HTTP_POST_VARS / GET_VARS input is with slashes...
                                        }
                                }
                        }
@@ -1286,7 +1293,7 @@ class t3lib_div {
         * Returns an array with selected keys from incoming data.
         * (Better read source code if you want to find out...)
         * Usage: 3
-        * 
+        *
         * @param       string          List of variable/key names
         * @param       array           Array from where to get values based on the keys in $varList
         * @param       boolean         If set, then t3lib_div::_GP() is used to fetch the value if not found (isset) in the $getArray
@@ -1303,18 +1310,18 @@ class t3lib_div {
                        }
                }
                return $outArr;
-       }       
+       }
 
        /**
         * AddSlash array
         * This function traverses a multidimentional array and adds slashes to the values.
         * NOTE that the input array is and argument by reference.!!
         * Twin-function to stripSlashesOnArray
-        * 
+        *
         * Usage: 6
-        * 
+        *
         * @param       array           Multidimensional input array, (REFERENCE!)
-        * @return      array           
+        * @return      array
         */
        function addSlashesOnArray(&$theArray)  {
                if (is_array($theArray))        {
@@ -1335,11 +1342,11 @@ class t3lib_div {
         * This function traverses a multidimentional array and strips slashes to the values.
         * NOTE that the input array is and argument by reference.!!
         * Twin-function to addSlashesOnArray
-        * 
+        *
         * Usage: 7
-        * 
+        *
         * @param       array           Multidimensional input array, (REFERENCE!)
-        * @return      array           
+        * @return      array
         */
        function stripSlashesOnArray(&$theArray)        {
                if (is_array($theArray))        {
@@ -1357,12 +1364,12 @@ class t3lib_div {
 
        /**
         * Either slashes ($cmd=add) or strips ($cmd=strip) array $arr depending on $cmd
-        * 
+        *
         * Usage: 6
-        * 
+        *
         * @param       array           Multidimensional input array
         * @param       string          "add" or "strip", depending on usage you wish.
-        * @return      array           
+        * @return      array
         */
        function slashArray($arr,$cmd)  {
                if ($cmd=='strip')      t3lib_div::stripSlashesOnArray($arr);
@@ -1373,9 +1380,9 @@ class t3lib_div {
        /**
         * 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
-        * 
+        *
         * @param       array           First array
         * @param       array           Second array, overruling the first array
         * @param       boolean         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.
@@ -1401,12 +1408,12 @@ class t3lib_div {
                reset($arr0);
                return $arr0;
        }
-       
+
        /**
         * An array_merge function where the keys are NOT renumbered as they happen to be with the real php-array_merge function
-        * 
+        *
         * Usage: 27
-        * 
+        *
         * @param       array           First array
         * @param       array           Second array
         * @return      array           Merged result.
@@ -1414,12 +1421,12 @@ class t3lib_div {
        function array_merge($arr1,$arr2)       {
                return $arr2+$arr1;
        }
-       
+
        /**
         * Takes a row and returns a CSV string of the values with $delim (default is ,) and $quote (default is ") as separator chars.
-        * 
+        *
         * Usage: 5
-        * 
+        *
         * @param       array           Input array of values
         * @param       string          Delimited, default is comman
         * @param       string          Quote-character to wrap around the values.
@@ -1438,7 +1445,7 @@ class t3lib_div {
        }
 
 
-       
+
 
 
 
@@ -1462,9 +1469,9 @@ class t3lib_div {
         * $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
-        * 
+        *
         * @param       string          HTML-tag string (or attributes only)
         * @return      array           Array with the attribute values.
         */
@@ -1499,9 +1506,9 @@ class t3lib_div {
        /**
         * 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
-        * 
+        *
         * @param       string          HTML-tag string (or attributes only)
         * @return      array           Array with the attribute values.
         * @internal
@@ -1533,9 +1540,9 @@ class t3lib_div {
 
        /**
         * Implodes attributes in the array $arr for an attribute list in eg. and HTML tag (with quotes)
-        * 
+        *
         * Usage: 10
-        * 
+        *
         * @param       array           Array with attribute key/value pairs, eg. "bgcolor"=>"red", "border"=>0
         * @param       boolean         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!
         * @param       boolean         If true, don't check if values are blank. Default is to omit attributes with blank values.
@@ -1557,12 +1564,12 @@ class t3lib_div {
                        return implode(' ',$list);
                }
        }
-       
+
        /**
         * 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.
-        * 
+        *
         * @param       string          JavaScript code
         * @param       boolean         Wrap script element in linebreaks? Default is TRUE.
         * @return      string          The wrapped JS code, ready to put into a XHTML page
@@ -1592,7 +1599,7 @@ class t3lib_div {
 
        /**
         * Parses XML input into a PHP array with associative keys
-        * 
+        *
         * @param       string          XML data input
         * @param       integer         Number of element levels to resolve the XML into an array. Any further structure will be set as XML.
         * @return      mixed           The array with the parsed structure unless the XML parser returns with an error in which case the error message string is returned.
@@ -1602,7 +1609,7 @@ class t3lib_div {
                $parser = xml_parser_create();
                $vals = array();
                $index = array();
-               
+
                xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
                xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 0);
                xml_parse_into_struct($parser, $string, $vals, $index);
@@ -1613,7 +1620,7 @@ class t3lib_div {
                $stack = array( array() );
                $stacktop = 0;
                $startPoint=0;
-               
+
                unset($tagi);
                foreach($vals as $key => $val) {
                        $type = $val['type'];
@@ -1627,13 +1634,13 @@ class t3lib_div {
                                }
 
                                $tagi = array('tag' => $val['tag']);
-                       
-                               if(isset($val['attributes']))  $tagi['attrs'] = $val['attributes'];      
+
+                               if(isset($val['attributes']))  $tagi['attrs'] = $val['attributes'];
                                if(isset($val['value']))        $tagi['values'][] = $val['value'];
                        }
                                // finish tag:
                        if ($type=='complete' || $type=='close')        {
-                               $oldtagi = $tagi; 
+                               $oldtagi = $tagi;
                                $tagi = $stack[--$stacktop];
                                $oldtag = $oldtagi['tag'];
                                unset($oldtagi['tag']);
@@ -1651,7 +1658,7 @@ class t3lib_div {
                                                $oldtagi['XMLvalue']=$oldtagi['values'][0];
                                        }
                                }
-                               
+
                                $tagi['ch'][$oldtag][] = $oldtagi;
                                unset($oldtagi);
                        }
@@ -1661,90 +1668,117 @@ class t3lib_div {
                        }
                }
                return $tagi['ch'];
-       }       
+       }
 
        /**
-        * Converts a PHP array into an XML file.
-        * The XML output is optimized for readability since associative keys are used as fieldnames. 
-        * This also means that only alphanumeric characters are allowed in the tag names AND only keys NOT starting with numbers (so watch your usage of keys!)
-        * Numeric keys are converted to "n"+int (which means you should not use this kind of associative key otherwise)
+        * Converts a PHP array into an XML string.
+        * The XML output is optimized for readability since associative keys are used as tagnames.
+        * This also means that only alphanumeric characters are allowed in the tag names AND only keys NOT starting with numbers (so watch your usage of keys!). However there are options you can set to avoid this problem.
+        * Numeric keys are stored with the default tagname "numIndex" but can be overridden to other formats)
         * The function handles input values from the PHP array in a binary-safe way; All characters below 32 (except 9,10,13) will trigger the content to be converted to a base64-string
-        * The PHP variable type of the data is NOT preserved; integers will become strings, but arrays will stay arrays of course.
+        * The PHP variable type of the data is IS preserved as long as the types are strings, arrays, integers and booleans. Strings are the default type unless the "type" attribute is set.
         * 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...
-        * 
+        *
         * @param       array           The input PHP array with any kind of data; text, binary, integers. Not objects though.
         * @param       string          tag-prefix, eg. a namespace prefix like "T3:"
         * @param       integer         Current recursion level. Don't change, stay at zero!
         * @param       string          Alternative document tag. Default is "phparray".
         * @param       integer         If set, the number of spaces corresponding to this number is used for indenting, otherwise a single chr(9) (TAB) is used
+        * @param       array           Options for the compilation. Key "useNindex" => 0/1 (boolean: whether to use "n0, n1, n2" for num. indexes); Key "useIndexTagForNum" => "[tag for numerical indexes]"; Key "useIndexTagForAssoc" => "[tag for associative indexes"; Key "parentTagMap" => array('parentTag' => 'thisLevelTag')
+        * @param       string          Parent tag name. Don't touch.
         * @return      string          An XML string made from the input content in the array.
         * @see xml2array()
         */
-       function array2xml($array,$NSprefix='',$level=0,$docTag='phparray',$spaceInd=0) {
+       function array2xml($array,$NSprefix='',$level=0,$docTag='phparray',$spaceInd=0, $options=array(),$parentTagName='')     {
                        // The list of byte values which will trigger binary-safe storage. If any value has one of these char values in it, it will be encoded in base64
                $binaryChars = chr(0).chr(1).chr(2).chr(3).chr(4).chr(5).chr(6).chr(7).chr(8).
                                                chr(11).chr(12).chr(14).chr(15).chr(16).chr(17).chr(18).chr(19).
                                                chr(20).chr(21).chr(22).chr(23).chr(24).chr(25).chr(26).chr(27).chr(28).chr(29).
                                                chr(30).chr(31);
+                       // Set indenting mode:
                $indentChar = $spaceInd ? ' ' : chr(9);
                $indentN = $spaceInd>0 ? $spaceInd : 1;
-               
-                       // Init output variable
+
+                       // Init output variable:
                $output='';
+
                        // Traverse the input array
                foreach($array as $k=>$v)       {
-                       $attr='';
+                       $attr = '';
+                       $tagName = $k;
+
+                               // Construct the tag name.
+                       if (!strcmp(intval($tagName),$tagName)) {       // If integer...;
+                               if ($options['useNindex']) {    // If numeric key, prefix "n"
+                                       $tagName = 'n'.$tagName;
+                               } else {        // Use special tag for num. keys:
+                                       $attr.=' index="'.$tagName.'"';
+                                       $tagName = $options['useIndexTagForNum'] ? $options['useIndexTagForNum'] : 'numIndex';
+                               }
+                       } elseif($options['useIndexTagForAssoc']) {             // Use tag for all associative keys:
+                               $attr.=' index="'.htmlspecialchars($tagName).'"';
+                               $tagName = $options['useIndexTagForAssoc'];
+                       } elseif(isset($options['parentTagMap'][$parentTagName])) {             // Use tag based on parent tag name:
+                               $attr.=' index="'.htmlspecialchars($tagName).'"';
+                               $tagName = (string)$options['parentTagMap'][$parentTagName];
+                       }
+
+                               // The tag name is cleaned up so only alphanumeric chars (plus - and _) are in there and not longer than 100 chars either.
+                       $tagName = substr(ereg_replace('[^[:alnum:]_-]','',$tagName),0,100);
+
                                // If the value is an array then we will call this function recursively:
                        if (is_array($v))       {
                                // Sub elements:
-                               $content = chr(10).t3lib_div::array2xml($v,$NSprefix,$level+1,'',$spaceInd).
+                               $content = chr(10).t3lib_div::array2xml($v,$NSprefix,$level+1,'',$spaceInd,$options,$tagName).
                                                        str_pad('',($level+1)*$indentN,$indentChar);
+                               $attr.=' type="array"';
                        } else {        // Just a value:
+
                                        // Look for binary chars:
-                               if (strspn($v,$binaryChars))    {
+                               if (strcspn($v,$binaryChars) != strlen($v))     {       // Go for base64 encoding if the initial segment NOT matching any binary char has the same length as the whole string!
                                                // If the value contained binary chars then we base64-encode it an set an attribute to notify this situation:
                                        $content = chr(10).chunk_split(base64_encode($v));
-                                       $attr=' base64="1"';
+                                       $attr.=' base64="1"';
                                } else {
                                                // Otherwise, just htmlspecialchar the stuff:
                                        $content = htmlspecialchars($v);
+                                       $dType = gettype($v);
+                                       if ($dType!='string')   { $attr.=' type="'.$dType.'"'; }
                                }
                        }
-                               // Construct the tag name. If numeric key, prefix "n". Further the tag name is cleaned up so only alphanumeric chars (plus - and _) are in there and not longer than 100 chars either.
-                       if (!strcmp(intval($k),$k))     $k='n'.$k;
-                       $kn = substr(ereg_replace('[^[:alnum:]_-]','',$k),0,100);
 
                                // Add the element to the output string:
-                       $output.=str_pad('',($level+1)*$indentN,$indentChar).'<'.$NSprefix.$kn.$attr.'>'.$content.'</'.$NSprefix.$kn.'>'.chr(10);
+                       $output.=str_pad('',($level+1)*$indentN,$indentChar).'<'.$NSprefix.$tagName.$attr.'>'.$content.'</'.$NSprefix.$tagName.'>'.chr(10);
                }
 
                        // If we are at the outer-most level, then we finally wrap it all in the document tags and return that as the value:
                if (!$level)    {
-                       $output = 
+                       $output =
                                '<'.$docTag.'>'.chr(10).
                                $output.
                                '</'.$docTag.'>';
                }
-               
+
                return $output;
        }
-       
+
        /**
-        * Converts an XML file to a PHP array.
-        * This is the inverse function of array2xml()
-        * 
+        * Converts an XML string to a PHP array.
+        * This is the reverse function of array2xml()
+        *
         * @param       string          XML content to convert into an array
         * @param       string          The tag-prefix resolve, eg. a namespace like "T3:"
         * @return      mixed           If the parsing had errors, a string with the error message is returned. Otherwise an array with the content.
         * @see array2xml()
         */
        function xml2array($string,$NSprefix='') {
+
                        // Create parser:
                $parser = xml_parser_create();
                $vals = array();
                $index = array();
-               
+
                xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
                xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 0);
                xml_parse_into_struct($parser, $string, $vals, $index);
@@ -1758,52 +1792,79 @@ class t3lib_div {
                $stacktop = 0;
                $current=array();
                $tagName='';
-               
+
                        // Traverse the parsed XML structure:
                foreach($vals as $key => $val) {
 
-                       if ($val['type']=='open') {             // If open tag it means there is an array stored in sub-elements. Therefore increase the stackpointer and reset the accumulation array:
-                               $stack[$stacktop++] = $current;
-                               $current=array();
-       
-                       } elseif ($val['type']=='complete' || $val['type']=='close')    {       // If the tag is "complete" then it's a value and we just have to get it. If the tag is "close" then it is an array which is closing and we decrese the stack pointer.
-                                       // First, process the tag-name (which is used in both cases, whether "complete" or "close")
-                               $tagName = $val['tag'];
-                                       // Test for name space:
-                               $tagName = ($NSprefix && substr($tagName,0,strlen($NSprefix))==$NSprefix) ? substr($tagName,strlen($NSprefix)) : $tagName;
-                                       // Test for numeric tag:
-                               $testNtag = substr($tagName,1); // Closing tag.
-                               $tagName = (substr($tagName,0,1)=='n' && !strcmp(intval($testNtag),$testNtag)) ? intval($testNtag) : $tagName;
-
-
-                               if ($val['type']=='complete')   {       // If "complete", then its a value. If the attribute "base64" is set, then decode the value, otherwise just set it.
-                                       if ($val['attributes']['base64'])       {
-                                               $current[$tagName] = base64_decode($val['value']);
-                                       } else $current[$tagName] = $val['value'];
-                               } else {        // Implicit "close": Manage the stack...
+                               // First, process the tag-name (which is used in both cases, whether "complete" or "close")
+                       $tagName = $val['tag'];
+
+                               // Test for name space:
+                       $tagName = ($NSprefix && substr($tagName,0,strlen($NSprefix))==$NSprefix) ? substr($tagName,strlen($NSprefix)) : $tagName;
+
+                               // Test for numeric tag, encoded on the form "nXXX":
+                       $testNtag = substr($tagName,1); // Closing tag.
+                       $tagName = (substr($tagName,0,1)=='n' && !strcmp(intval($testNtag),$testNtag)) ? intval($testNtag) : $tagName;
+
+                               // Test for alternative index value:
+                       if (strlen($val['attributes']['index']))        { $tagName = $val['attributes']['index']; }
+
+                               // Setting tag-values, manage stack:
+                       switch($val['type'])    {
+                               case 'open':            // If open tag it means there is an array stored in sub-elements. Therefore increase the stackpointer and reset the accumulation array:
+                                       $current[$tagName] = array();   // Setting blank place holder
+                                       $stack[$stacktop++] = $current;
+                                       $current = array();
+                               break;
+                               case 'close':   // If the tag is "close" then it is an array which is closing and we decrease the stack pointer.
                                        $oldCurrent = $current;
                                        $current = $stack[--$stacktop];
-                                       $current[$tagName]=$oldCurrent;
+                                       end($current);  // Going to the end of array to get placeholder key, key($current), and fill in array next:
+                                       $current[key($current)] = $oldCurrent;
                                        unset($oldCurrent);
-                               }
+                               break;
+                               case 'complete':        // If "complete", then it's a value. If the attribute "base64" is set, then decode the value, otherwise just set it.
+                                       if ($val['attributes']['base64'])       {
+                                               $current[$tagName] = base64_decode($val['value']);
+                                       } else {
+                                               $current[$tagName] = (string)$val['value']; // Had to cast it as a string - otherwise it would be evaluate false if tested with isset()!!
+
+                                                       // Cast type:
+                                               switch((string)$val['attributes']['type'])      {
+                                                       case 'integer':
+                                                               $current[$tagName] = (integer)$current[$tagName];
+                                                       break;
+                                                       case 'double':
+                                                               $current[$tagName] = (double)$current[$tagName];
+                                                       break;
+                                                       case 'boolean':
+                                                               $current[$tagName] = (bool)$current[$tagName];
+                                                       break;
+                                                       case 'array':
+                                                               $current[$tagName] = array();   // MUST be an empty array since it is processed as a value; Empty arrays would end up here because they would have no tags inside...
+                                                       break;
+                                               }
+                                       }
+                               break;
                        }
                }
+
                        // Finally return the content of the document tag.
                return $current[$tagName];
-       }       
-       
+       }
+
        /**
         * This implodes an array of XML parts (made with xml_parse_into_struct()) into XML again.
-        * 
+        *
         * @param       array           A array of XML parts, see xml2tree
         * @return      string          Re-compiled XML data.
         */
        function xmlRecompileFromStructValArray($vals)  {
                $XMLcontent='';
-               
+
                foreach($vals as $val) {
                        $type = $val['type'];
-                       
+
                                // open tag:
                        if ($type=='open' || $type=='complete') {
                                $XMLcontent.='<'.$val['tag'];
@@ -1831,13 +1892,13 @@ class t3lib_div {
                                $XMLcontent.=htmlspecialchars($val['value']);
                        }
                }
-               
+
                return $XMLcontent;
        }
-       
+
        /**
         * Extract the encoding scheme as found in the first line of an XML document (typically)
-        * 
+        *
         * @param       string          XML data
         * @return      string          Encoding scheme (lowercase), if found.
         */
@@ -1849,16 +1910,16 @@ class t3lib_div {
                }
        }
 
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
+
+
+
+
+
+
+
+
+
+
        /*************************
         *
         * FILES FUNCTIONS
@@ -1868,15 +1929,15 @@ 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
-        * 
+        *
         * @param       string          Filepath/URL to read
         * @return      string          The content from the resource given as input.
         */
        function getURL($url)   {
                $content = '';
-               
+
                        // (Proxy support implemented by Arco <arco@appeltaart.mine.nu>)
                if((substr($url,0,7)=='http://') && ($GLOBALS['TYPO3_CONF_VARS']['SYS']['curlUse']=='1'))       {
                        //external URL without error checking.
@@ -1884,10 +1945,10 @@ class t3lib_div {
                        curl_setopt ($ch,CURLOPT_URL, $url);
                        curl_setopt ($ch,CURLOPT_HEADER, 0);
                        curl_setopt ($ch,CURLOPT_RETURNTRANSFER, 1);
-                       
+
                        if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['curlProxyServer']) {
                                curl_setopt ($ch, CURLOPT_PROXY, $GLOBALS['TYPO3_CONF_VARS']['SYS']['curlProxyServer']);
-                               
+
                                // I don't know if it will be needed
                                if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['curlProxyTunnel']) {
                                        curl_setopt ($ch, CURLOPT_HTTPPROXYTUNNEL, $GLOBALS['TYPO3_CONF_VARS']['SYS']['curlProxyTunnel'] );
@@ -1897,8 +1958,8 @@ class t3lib_div {
                                }
                        }
                        $content=curl_exec ($ch);
-                       curl_close ($ch);           
-                       return $content;   
+                       curl_close ($ch);
+                       return $content;
                } elseif($fd = fopen($url,'rb'))    {
                        while (!feof($fd))      {
                                $content.=fread($fd, 5000);
@@ -1910,9 +1971,9 @@ class t3lib_div {
 
        /**
         * Writes $content to the file $file
-        * 
+        *
         * Usage: 31
-        * 
+        *
         * @param       string          Filepath to write to
         * @param       string          Content to write
         * @return      boolean         True if the file was successfully opened and written to.
@@ -1921,12 +1982,12 @@ class t3lib_div {
                if($fd = fopen($file,'wb'))     {
                        fwrite( $fd, $content);
                        fclose( $fd );
-                       
+
                                // Setting file system mode of file:
-                       if (@is_file($file) && TYPO3_OS!='WIN') { 
-                               @chmod ($file, octdec($GLOBALS['TYPO3_CONF_VARS']['BE']['fileCreateMask'])); 
+                       if (@is_file($file) && TYPO3_OS!='WIN') {
+                               @chmod ($file, octdec($GLOBALS['TYPO3_CONF_VARS']['BE']['fileCreateMask']));
                        }
-                       
+
                        return true;
                }
        }
@@ -1934,9 +1995,9 @@ class t3lib_div {
        /**
         * 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
-        * 
+        *
         * @param       string          Path to list directories from
         * @return      array           Returns an array with the directory entries as values. If no path, the return value is nothing.
         */
@@ -1957,9 +2018,9 @@ class t3lib_div {
 
        /**
         * Returns an array with the names of files in a specific path
-        * 
+        *
         * Usage: 17
-        * 
+        *
         * @param       string          $path: Is the path to the file
         * @param       string          $extensionList is the comma list of extensions to read only (blank = all)
         * @param       boolean         If set, then the path is prepended the filenames. Otherwise only the filenames are returned in the array
@@ -1975,7 +2036,7 @@ class t3lib_div {
                        $d = @dir($path);
                        if (is_object($d))      {
                                while($entry=$d->read()) {
-                                       if (@is_file($path.'/'.$entry)) {       
+                                       if (@is_file($path.'/'.$entry)) {
                                                $fI = pathinfo($entry);
                                                $key = md5($path.'/'.$entry);
                                                if (!$extensionList || t3lib_div::inList($extensionList,strtolower($fI['extension'])))  {
@@ -2003,7 +2064,7 @@ class t3lib_div {
 
        /**
         * Recursively gather all files and folders of a path.
-        * 
+        *
         * @param       array           $fileArr: Empty input array (will have files added to it)
         * @param       string          $path: The path to read recursively from (absolute)
         * @param       string          $extList: Comma list of file extensions: Only files with extensions in this list (if applicable) will be selected.
@@ -2013,8 +2074,8 @@ class t3lib_div {
         */
        function getAllFilesAndFoldersInPath($fileArr,$path,$extList='',$regDirs=0,$recursivityLevels=99)       {
                if ($regDirs)   $fileArr[]=$path;
-               $fileArr=array_merge($fileArr,t3lib_div::getFilesInDir($path,$extList,1,1));
-               
+               $fileArr = array_merge($fileArr,t3lib_div::getFilesInDir($path,$extList,1,1));
+
                $dirs = t3lib_div::get_dirs($path);
                if (is_array($dirs) && $recursivityLevels>0)    {
                        foreach ($dirs as $subdirs)     {
@@ -2028,16 +2089,15 @@ class t3lib_div {
 
        /**
         * Removes the absolute part of all files/folders in fileArr
-        * 
+        *
         * @param       array           $fileArr: The file array to remove the prefix from
         * @param       string          $prefixToRemove: The prefix path to remove (if found as first part of string!)
         * @return      array           The input $fileArr processed.
         */
        function removePrefixPathFromList($fileArr,$prefixToRemove)     {
-               reset($fileArr);
-               while(list($k,$absFileRef)=each($fileArr))      {
+               foreach($fileArr as $k => $absFileRef)  {
                        if(t3lib_div::isFirstPartOfStr($absFileRef,$prefixToRemove))    {
-                               $fileArr[$k]=substr($absFileRef,strlen($prefixToRemove));
+                               $fileArr[$k] = substr($absFileRef,strlen($prefixToRemove));
                        } else return 'ERROR: One or more of the files was NOT prefixed with the prefix-path!';
                }
                return $fileArr;
@@ -2045,21 +2105,21 @@ class t3lib_div {
 
        /**
         * Fixes a path for windows-backslashes and reduces double-slashes to single slashes
-        * 
+        *
         * Usage: 2
-        * 
+        *
         * @param       string          File path to process
-        * @return      string          
+        * @return      string
         */
        function fixWindowsFilePath($theFile)   {
                return str_replace('//','/', str_replace('\\','/', $theFile));
        }
-       
+
        /**
         * Resolves "../" sections in the input path string
-        * 
+        *
         * @param       string          File path in which "/../" is resolved
-        * @return      string          
+        * @return      string
         */
        function resolveBackPath($pathStr)      {
                $parts = explode('/',$pathStr);
@@ -2083,11 +2143,11 @@ class t3lib_div {
         * - If already having a scheme, nothing is prepended
         * - If having REQUEST_URI slash '/', then prefixing 'http://[host]' (relative to host)
         * - Otherwise prefixed with TYPO3_REQUEST_DIR (relative to current dir / TYPO3_REQUEST_DIR)
-        * 
+        *
         * Usage: 31
-        * 
+        *
         * @param       string          URL / path to prepend full URL addressing to.
-        * @return      string          
+        * @return      string
         */
        function locationHeaderUrl($path)       {
                $uI = parse_url($path);
@@ -2095,25 +2155,25 @@ class t3lib_div {
                        $path = t3lib_div::getIndpEnv('TYPO3_REQUEST_HOST').$path;
                } elseif (!$uI['scheme'])       { // No scheme either
                        $path = t3lib_div::getIndpEnv('TYPO3_REQUEST_DIR').$path;
-               } 
+               }
                return $path;
-       }       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
+       }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
        /*************************
         *
         * DEBUG helper FUNCTIONS
@@ -2123,7 +2183,7 @@ class t3lib_div {
        /**
         * Returns a string with a list of ascii-values for the first $characters characters in $string
         * Usage: 5
-        * 
+        *
         * @param       string          String to show ASCII value for
         * @param       integer         Number of characters to show
         * @return      string          The string with ASCII values in separated by a space char.
@@ -2142,7 +2202,7 @@ class t3lib_div {
         * use t3lib_div::print_array() in order to print an array
         * Returns false if $array_in is not an array
         * Usage: 27
-        * 
+        *
         * @param       array           Array to view
         * @return      string          HTML output
         */
@@ -2168,9 +2228,9 @@ class t3lib_div {
        /**
         * Prints an array
         * Usage: 28
-        * 
+        *
         * @param       array           Array to print visually (in a table).
-        * @return      void            
+        * @return      void
         * @internal
         * @see view_array()
         */
@@ -2183,12 +2243,12 @@ class t3lib_div {
         * Prints $var in bold between two vertical lines
         * If not $var the word 'debug' is printed
         * If $var is an array, the array is printed by t3lib_div::print_array()
-        * 
+        *
         * Usage: 8
-        * 
+        *
         * @param       mixed           Variable to print
         * @param       mixed           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.
-        * @return      void            
+        * @return      void
         */
        function debug($var="",$brOrHeader=0)   {
                if ($brOrHeader && !t3lib_div::testInt($brOrHeader)) {
@@ -2215,33 +2275,33 @@ class t3lib_div {
                        for($a=0;$a<intval($brOrHeader);$a++){echo '<br />';}
                }
        }
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
 
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
@@ -2249,15 +2309,15 @@ class t3lib_div {
 
        /*************************
         *
-        * SYSTEM INFORMATION   
+        * SYSTEM INFORMATION
         *
         *************************/
-       
+
        /**
         * Returns the HOST+DIR-PATH of the current script (The URL, but without 'http://' and without script-filename)
         * Usage: 1
-        * 
-        * @return      string          
+        *
+        * @return      string
         */
        function getThisUrl()   {
                $p=parse_url(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT'));            // Url of this script
@@ -2270,13 +2330,13 @@ class t3lib_div {
         * 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
-        * 
+        *
         * @param       array           Array of GET parameters to include
-        * @return      string          
+        * @return      string
         */
-       function linkThisScript($getParams=array())     {       
+       function linkThisScript($getParams=array())     {
                $parts = t3lib_div::getIndpEnv('SCRIPT_NAME');
                $params = t3lib_div::_GET();
 
@@ -2295,7 +2355,7 @@ class t3lib_div {
         * 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
-        * 
+        *
         * @param       string          URL string
         * @param       array           Array of key/value pairs for get parameters to add/overrule with. Can be multidimensional.
         * @return      string          Output URL with added getParams.
@@ -2305,24 +2365,26 @@ class t3lib_div {
                if ($parts['query'])    {
                        parse_str($parts['query'],$getP);
                } else $getP=array();
+
                $getP=t3lib_div::array_merge_recursive_overrule($getP,$getParams);
                $uP = explode('?',$url);
                $outurl = $uP[0].'?'.t3lib_div::implodeArrayForUrl('',$getP);
+
                return $outurl;
        }
 
        /**
         * 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
-        * 
+        *
         * @param       string          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
         * @return      string          Value based on the input key, independent of server/os environment.
         */
        function getIndpEnv($getEnvName)        {
                global $HTTP_SERVER_VARS;
-               /* 
+               /*
                        Conventions:
                        output from parse_url():
                        URL:    http://username:password@192.168.1.4:8080/typo3/32/temp/phpcheck/index.php/arg1/arg2/arg3/?arg1,arg2,arg3&p1=parameter1&p2[key]=value#link1
@@ -2334,12 +2396,12 @@ class t3lib_div {
                            [path] => '/typo3/32/temp/phpcheck/index.php/arg1/arg2/arg3/'
                            [query] => 'arg1,arg2,arg3&p1=parameter1&p2[key]=value'
                            [fragment] => 'link1'
-                               
+
                                Further definition: [path_script] = '/typo3/32/temp/phpcheck/index.php'
                                                                        [path_dir] = '/typo3/32/temp/phpcheck/'
                                                                        [path_info] = '/arg1/arg2/arg3/'
                                                                        [path] = [path_script/path_dir][path_info]
-                                                                               
+
 
                        Keys supported:
 
@@ -2357,30 +2419,30 @@ class t3lib_div {
                                REMOTE_HOST             =       (client host)
                                HTTP_USER_AGENT =       (client user agent)
                                HTTP_ACCEPT_LANGUAGE    = (client accept language)
-       
+
                        SERVER____:
                                SCRIPT_FILENAME =