Fixed bug #7896: Hide the page browser if not enough entries are available (Thanks...
[Packages/TYPO3.CMS.git] / typo3 / sysext / cms / tslib / class.tslib_pibase.php
old mode 100755 (executable)
new mode 100644 (file)
index 0b86f50..86ebca3
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -209,7 +209,7 @@ class tslib_pibase {
 
                        // Setting piVars:
                if ($this->prefixId)    {
-                       $this->piVars = t3lib_div::GParrayMerged($this->prefixId);
+                       $this->piVars = t3lib_div::_GPmerged($this->prefixId);
 
                                // cHash mode check
                                // IMPORTANT FOR CACHED PLUGINS (USER cObject): As soon as you generate cached plugin output which depends on parameters (eg. seeing the details of a news item) you MUST check if a cHash value is set.
@@ -393,7 +393,7 @@ class tslib_pibase {
         * @return      string          The processed input string, modified IF a <a> tag was found
         */
        function pi_openAtagHrefInJSwindow($str,$winName='',$winParams='width=670,height=500,status=0,menubar=0,scrollbars=1,resizable=1')      {
-               if (eregi('(.*)(<a[^>]*>)(.*)',$str,$match))    {
+               if (preg_match('/(.*)(<a[^>]*>)(.*)/i',$str,$match))    {
                        $aTagContent = t3lib_div::get_tag_attributes($match[2]);
                        $match[2]='<a href="#" onclick="'.
                                htmlspecialchars('vHWin=window.open(\''.$GLOBALS['TSFE']->baseUrlWrap($aTagContent['href']).'\',\''.($winName?$winName:md5($aTagContent['href'])).'\',\''.$winParams.'\');vHWin.focus();return false;').
@@ -443,9 +443,10 @@ class tslib_pibase {
         * @param       array           Array with elements to overwrite the default $wrapper-array.
         * @param       string          varname for the pointer.
         * @param       boolean         enable htmlspecialchars() for the pi_getLL function (set this to FALSE if you want f.e use images instead of text for links like 'previous' and 'next').
-        * @return      string          Output HTML-Table, wrapped in <div>-tags with a class attribute (if $wrapArr is not passed,
+        * @param   boolean     forces the output of the page browser if you set this option to "true" (otherwise it's only drawn if enough entries are available)
+        * @return      string          Output HTML-Table, wrapped in <div>-tags with a class attribute (if $wrapArr is not passed,
         */
-       function pi_list_browseresults($showResultCount=1, $tableParams='', $wrapArr=array(), $pointerName='pointer', $hscText=TRUE)    {
+       function pi_list_browseresults($showResultCount=1, $tableParams='', $wrapArr=array(), $pointerName='pointer', $hscText=TRUE, $forceOutput=FALSE) {
 
                // example $wrapArr-array how it could be traversed from an extension
                /* $wrapArr = array(
@@ -466,6 +467,10 @@ class tslib_pibase {
                $maxPages = t3lib_div::intInRange($this->internal['maxPages'],1,100);
                $pi_isOnlyFields = $this->pi_isOnlyFields($this->pi_isOnlyFields);
 
+               if (!$forceOutput && $count <= $results_at_a_time) {
+                       return '';
+               }
+
                        // $showResultCount determines how the results of the pagerowser will be shown.
                        // If set to 0: only the result-browser will be shown
                        //                       1: (default) the text "Displaying results..." and the result-browser will be shown.
@@ -548,7 +553,7 @@ class tslib_pibase {
                                }
                        }
                        if ($pointer<$totalPages-1 || $showFirstLast)   {
-                               if ($pointer==$totalPages-1) { // Link to next page
+                               if ($pointer>=$totalPages-1) { // Link to next page
                                        $links[]=$this->cObj->wrap($this->pi_getLL('pi_list_browseresults_next','Next >',$hscText),$wrapper['disabledLinkWrap']);
                                } else {
                                        $links[]=$this->cObj->wrap($this->pi_linkTP_keepPIvars($this->pi_getLL('pi_list_browseresults_next','Next >',$hscText),array($pointerName => $pointer+1),$pi_isOnlyFields),$wrapper['inactiveLinkWrap']);
@@ -640,8 +645,7 @@ class tslib_pibase {
         */
        function pi_list_modeSelector($items=array(),$tableParams='')   {
                $cells=array();
-               reset($items);
-               while(list($k,$v)=each($items)) {
+               foreach ($items as $k => $v) {
                        $cells[]='
                                        <td'.($this->piVars['mode']==$k?$this->pi_classParam('modeSelector-SCell'):'').'><p>'.
                                $this->pi_linkTP_keepPIvars(htmlspecialchars($v),array('mode'=>$k),$this->pi_isOnlyFields($this->pi_isOnlyFields)).
@@ -785,11 +789,13 @@ class tslib_pibase {
         * @param       string          $data: CSS data
         * @param       string          If $selector is set to any CSS selector, eg 'P' or 'H1' or 'TABLE' then the style $data will regard those HTML-elements only
         * @return      void
-        * @deprecated since TYPO3 3.6 - I think this function should not be used (and probably isn't used anywhere). It was a part of a concept which was left behind quite quickly.
+        * @deprecated since TYPO3 3.6, this function will be removed in TYPO3 4.5, I think this function should not be used (and probably isn't used anywhere). It was a part of a concept which was left behind quite quickly.
         * @obsolete
         * @private
         */
        function pi_setClassStyle($class,$data,$selector='')    {
+               t3lib_div::logDeprecatedFunction();
+
                $GLOBALS['TSFE']->setCSS($this->pi_getClassName($class).($selector?' '.$selector:''),'.'.$this->pi_getClassName($class).($selector?' '.$selector:'').' {'.$data.'}');
        }
 
@@ -971,7 +977,7 @@ class tslib_pibase {
         */
        function pi_loadLL()    {
                if (!$this->LOCAL_LANG_loaded && $this->scriptRelPath)  {
-                       $basePath = t3lib_extMgm::extPath($this->extKey).dirname($this->scriptRelPath).'/locallang.php';
+                       $basePath = 'EXT:' . $this->extKey . '/' . dirname($this->scriptRelPath) . '/locallang.xml';
 
                                // Read the strings in the required charset (since TYPO3 4.2)
                        $this->LOCAL_LANG = t3lib_div::readLLfile($basePath,$this->LLkey,$GLOBALS['TSFE']->renderCharset);
@@ -981,9 +987,9 @@ class tslib_pibase {
                        }
 
                                // Overlaying labels from TypoScript (including fictitious language keys for non-system languages!):
-                       if (is_array($this->conf['_LOCAL_LANG.']))      {
-                               reset($this->conf['_LOCAL_LANG.']);
-                               while(list($k,$lA)=each($this->conf['_LOCAL_LANG.']))   {
+                       $confLL = $this->conf['_LOCAL_LANG.'];
+                       if (is_array($confLL)) {
+                               foreach ($confLL as $k => $lA) {
                                        if (is_array($lA))      {
                                                $k = substr($k,0,-1);
                                                foreach($lA as $llK => $llV)    {
@@ -1043,7 +1049,7 @@ class tslib_pibase {
         * @param       boolean         If set, the function will return the query not as a string but array with the various parts.
         * @return      mixed           The query build.
         * @access private
-        * @deprecated since TYPO3 3.6 - Use pi_exec_query() instead!
+        * @deprecated since TYPO3 3.6, this function will be removed in TYPO3 4.5, use pi_exec_query() instead!
         */
        function pi_list_query($table,$count=0,$addWhere='',$mm_cat='',$groupBy='',$orderBy='',$query='',$returnQueryArray=FALSE)       {
 
@@ -1066,7 +1072,7 @@ class tslib_pibase {
                }
 
                        // Split the "FROM ... WHERE" string so we get the WHERE part and TABLE names separated...:
-               list($TABLENAMES,$WHERE) = spliti('WHERE', trim($query), 2);
+               list($TABLENAMES, $WHERE) = preg_split('/WHERE/i', trim($query), 2);
                $TABLENAMES = trim(substr(trim($TABLENAMES),5));
                $WHERE = trim($WHERE);
 
@@ -1196,7 +1202,7 @@ class tslib_pibase {
        function pi_prependFieldsWithTable($table,$fieldList)   {
                $list=t3lib_div::trimExplode(',',$fieldList,1);
                $return=array();
-               while(list(,$listItem)=each($list))     {
+               foreach ($list as $listItem) {
                        $return[]=$table.'.'.$listItem;
                }
                return implode(',',$return);
@@ -1262,7 +1268,7 @@ class tslib_pibase {
 
                $fList = t3lib_div::trimExplode(',',$fList,1);
                $tempPiVars = $this->piVars;
-               while(list(,$k)=each($fList))   {
+               foreach ($fList as $k) {
                        if (!t3lib_div::testInt($tempPiVars[$k]) || $tempPiVars[$k]<$lowerThan)         unset($tempPiVars[$k]);
                }
                if (!count($tempPiVars))        return 1;
@@ -1279,8 +1285,7 @@ class tslib_pibase {
         */
        function pi_autoCache($inArray) {
                if (is_array($inArray)) {
-                       reset($inArray);
-                       while(list($fN,$fV)=each($inArray))     {
+                       foreach ($inArray as $fN => $fV) {
                                if (!strcmp($inArray[$fN],''))  {
                                        unset($inArray[$fN]);
                                } elseif (is_array($this->pi_autoCacheFields[$fN]))     {