[TASK] Remove function index
[Packages/TYPO3.CMS.git] / typo3 / sysext / cms / tslib / class.tslib_search.php
index 92ff3e2..4e856c8 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 1999-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
  * Used to generate search queries for TypoScript.
  * The class is included from "class.tslib_pagegen.php" based on whether there has been detected content in the GPvar "sword"
  *
  * Used to generate search queries for TypoScript.
  * The class is included from "class.tslib_pagegen.php" based on whether there has been detected content in the GPvar "sword"
  *
- * $Id$
- * Revised for TYPO3 3.6 June/2003 by Kasper Skaarhoj
- *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
- * @author     Rene Fritz      <r.fritz@colorcube.de>
- */
-/**
- * [CLASS/FUNCTION INDEX of SCRIPT]
- *
- *
- *
- *   88: class tslib_search
- *  127:     function register_tables_and_columns($requestedCols,$allowedCols)
- *  168:     function explodeCols($in)
- *  193:     function register_and_explode_search_string($sword)
- *  226:     function split($origSword, $specchars='+-', $delchars='+.,-')
- *  269:     function quotemeta($str)
- *  285:     function build_search_query($endClause)
- *  371:     function build_search_query_for_searchwords()
- *  413:     function get_operator($operator)
- *  436:     function count_query()
- *  449:     function execute_query()
- *  462:     function get_searchwords()
- *  477:     function get_searchwordsArray()
- *
- * TOTAL FUNCTIONS: 12
- * (This index is automatically created/updated by the extension "extdeveval")
+ * Revised for TYPO3 3.6 June/2003 by Kasper Skårhøj
  *
  *
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
+ * @author     René Fritz     <r.fritz@colorcube.de>
  */
 
 
  */
 
 
@@ -80,7 +56,7 @@
 /**
  * Search class used for the content object SEARCHRESULT
  *
 /**
  * Search class used for the content object SEARCHRESULT
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage tslib
  * @see        tslib_cObj::SEARCHRESULT()
  * @package TYPO3
  * @subpackage tslib
  * @see        tslib_cObj::SEARCHRESULT()
@@ -168,12 +144,12 @@ class tslib_search {
        function explodeCols($in)       {
                $theArray = explode(':',$in);
                $out = Array();
        function explodeCols($in)       {
                $theArray = explode(':',$in);
                $out = Array();
-               while(list(,$val)=each($theArray))      {
+               foreach ($theArray as $val) {
                        $val=trim($val);
                        $parts = explode('.',$val);
                        if ($parts[0] && $parts[1])     {
                                $subparts = explode('-',$parts[1]);
                        $val=trim($val);
                        $parts = explode('.',$val);
                        if ($parts[0] && $parts[1])     {
                                $subparts = explode('-',$parts[1]);
-                               while(list(,$piece)=each($subparts))    {
+                               foreach ($subparts as $piece) {
                                        $piece=trim($piece);
                                        if ($piece)             $out[]=$parts[0].'.'.$piece;
                                }
                                        $piece=trim($piece);
                                        if ($piece)             $out[]=$parts[0].'.'.$piece;
                                }
@@ -198,8 +174,7 @@ class tslib_search {
                        if (is_array($components))      {
                                $i=0;
                                $lastoper = '';
                        if (is_array($components))      {
                                $i=0;
                                $lastoper = '';
-                               reset($components);
-                               while (list($key,$val) = each ($components))    {
+                               foreach ($components as $key => $val) {
                                        $operator=$this->get_operator($val);
                                        if ($operator)  {
                                                $lastoper = $operator;
                                        $operator=$this->get_operator($val);
                                        if ($operator)  {
                                                $lastoper = $operator;
@@ -225,15 +200,15 @@ class tslib_search {
         */
        function split($origSword, $specchars='+-', $delchars='+.,-')   {
                $sword = $origSword;
         */
        function split($origSword, $specchars='+-', $delchars='+.,-')   {
                $sword = $origSword;
-               $specs = '['.$this->quotemeta($specchars).']';
+               $specs = '[' . preg_quote($specchars, '/') . ']';
 
 
-                       // As long as $sword is true (that means $sword MUST be reduced little by little until its empty inside the loop!)
+                       // As long as $sword is TRUE (that means $sword MUST be reduced little by little until its empty inside the loop!)
                while ($sword)  {
                        if (preg_match('/^"/',$sword))  {               // There was a double-quote and we will then look for the ending quote.
                                $sword = preg_replace('/^"/','',$sword);                // Removes first double-quote
                                preg_match('/^[^"]*/',$sword,$reg);  // Removes everything till next double-quote
                                $value[] = $reg[0];  // reg[0] is the value, should not be trimmed
                while ($sword)  {
                        if (preg_match('/^"/',$sword))  {               // There was a double-quote and we will then look for the ending quote.
                                $sword = preg_replace('/^"/','',$sword);                // Removes first double-quote
                                preg_match('/^[^"]*/',$sword,$reg);  // Removes everything till next double-quote
                                $value[] = $reg[0];  // reg[0] is the value, should not be trimmed
-                               $sword = preg_replace('/^'.$this->quotemeta($reg[0]).'/','',$sword);
+                               $sword = preg_replace('/^' . preg_quote($reg[0], '/') . '/', '', $sword);
                                $sword = trim(preg_replace('/^"/','',$sword));          // Removes last double-quote
                        } elseif (preg_match('/^'.$specs.'/',$sword,$reg)) {
                                $value[] = $reg[0];
                                $sword = trim(preg_replace('/^"/','',$sword));          // Removes last double-quote
                        } elseif (preg_match('/^'.$specs.'/',$sword,$reg)) {
                                $value[] = $reg[0];
@@ -248,10 +223,10 @@ class tslib_search {
                                $sword = implode(' ',$a_sword); // re-build $sword
                        } else {
                                        // There are no double-quotes around the value. Looking for next (space) or special char.
                                $sword = implode(' ',$a_sword); // re-build $sword
                        } else {
                                        // There are no double-quotes around the value. Looking for next (space) or special char.
-                               preg_match('/^[^ '.$this->quotemeta($specchars).']*/',$sword,$reg);
+                               preg_match('/^[^ ' . preg_quote($specchars, '/') . ']*/', $sword, $reg);
                                $word = rtrim(trim($reg[0]), $delchars);                // Delete $delchars at end of string
                                $value[] = $word;
                                $word = rtrim(trim($reg[0]), $delchars);                // Delete $delchars at end of string
                                $value[] = $word;
-                               $sword = trim(preg_replace('/^'.$this->quotemeta($reg[0]).'/','',$sword));
+                               $sword = trim(preg_replace('/^' . preg_quote($reg[0], '/') . '/', '', $sword));
                        }
                }
 
                        }
                }
 
@@ -262,10 +237,13 @@ class tslib_search {
         * Local version of quotemeta. This is the same as the PHP function
         * but the vertical line, |, and minus, -, is also escaped with a slash.
         *
         * Local version of quotemeta. This is the same as the PHP function
         * but the vertical line, |, and minus, -, is also escaped with a slash.
         *
+        * @deprecated This function is deprecated since TYPO3 4.6 and will be removed in TYPO3 4.8. Please, use preg_quote() instead.
         * @param       string          String to pass through quotemeta()
         * @return      string          Return value
         */
         * @param       string          String to pass through quotemeta()
         * @return      string          Return value
         */
-       function quotemeta($str)        {
+       function quotemeta($str) {
+               t3lib_div::logDeprecatedFunction();
+
                $str = str_replace('|','\|',quotemeta($str));
                #$str = str_replace('-','\-',$str);             // Breaks "-" which should NOT have a slash before it inside of [ ] in a regex.
                return $str;
                $str = str_replace('|','\|',quotemeta($str));
                #$str = str_replace('-','\-',$str);             // Breaks "-" which should NOT have a slash before it inside of [ ] in a regex.
                return $str;
@@ -277,7 +255,7 @@ class tslib_search {
         * Sets $this->queryParts
         *
         * @param       string          $endClause is some extra conditions that the search must match.
         * Sets $this->queryParts
         *
         * @param       string          $endClause is some extra conditions that the search must match.
-        * @return      boolean         Returns true no matter what - sweet isn't it!
+        * @return      boolean         Returns TRUE no matter what - sweet isn't it!
         * @access private
         * @see tslib_cObj::SEARCHRESULT()
         */
         * @access private
         * @see tslib_cObj::SEARCHRESULT()
         */
@@ -412,11 +390,10 @@ class tslib_search {
        function get_operator($operator)        {
                $operator = trim($operator);
                $op_array = $this->operator_translate_table;
        function get_operator($operator)        {
                $operator = trim($operator);
                $op_array = $this->operator_translate_table;
-               reset ($op_array);
                if ($this->operator_translate_table_caseinsensitive)    {
                        $operator = strtolower($operator);      // case-conversion is charset insensitive, but it doesn't spoil anything if input string AND operator table is already converted
                }
                if ($this->operator_translate_table_caseinsensitive)    {
                        $operator = strtolower($operator);      // case-conversion is charset insensitive, but it doesn't spoil anything if input string AND operator table is already converted
                }
-               while (list($key,$val) = each($op_array))       {
+               foreach ($op_array as $key => $val) {
                        $item = $op_array[$key][0];
                        if ($this->operator_translate_table_caseinsensitive)    {
                                $item = strtolower($item);      // See note above.
                        $item = $op_array[$key][0];
                        if ($this->operator_translate_table_caseinsensitive)    {
                                $item = strtolower($item);      // See note above.
@@ -430,7 +407,7 @@ class tslib_search {
        /**
         * Counts the results and sets the result in $this->res_count
         *
        /**
         * Counts the results and sets the result in $this->res_count
         *
-        * @return      boolean         True, if $this->query was found
+        * @return      boolean         TRUE, if $this->query was found
         */
        function count_query() {
                if (is_array($this->queryParts))        {
         */
        function count_query() {
                if (is_array($this->queryParts))        {
@@ -443,7 +420,7 @@ class tslib_search {
        /**
         * Executes the search, sets result pointer in $this->result
         *
        /**
         * Executes the search, sets result pointer in $this->result
         *
-        * @return      boolean         True, if $this->query was set and query performed
+        * @return      boolean         TRUE, if $this->query was set and query performed
         */
        function execute_query() {
                if (is_array($this->queryParts))        {
         */
        function execute_query() {
                if (is_array($this->queryParts))        {
@@ -486,8 +463,8 @@ class tslib_search {
 
 
 
 
 
 
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/class.tslib_search.php'])   {
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/class.tslib_search.php']);
+if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_search.php'])) {
+       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_search.php']);
 }
 
 ?>
\ No newline at end of file
 }
 
 ?>
\ No newline at end of file