[TASK] Unify backend: header/section
[Packages/TYPO3.CMS.git] / typo3 / sysext / indexed_search / class.lexer.php
index c7692aa..12746a8 100755 (executable)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2001-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 2001-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
 /**
  * Lexer for indexed_search
  *
- * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  * Parts provided by Martin Kutschker <Martin.T.Kutschker@blackbox.net>
  */
-/**
- * [CLASS/FUNCTION INDEX of SCRIPT]
- *
- *
- *
- *   73: class tx_indexedsearch_lexer
- *  104:     function tx_indexedsearch_lexer()
- *  115:     function split2Words($wordString)
- *
- *              SECTION: Helper functions
- *  178:     function addWords(&$words, &$wordString, $start, $len)
- *  239:     function get_word(&$str, $pos=0)
- *  264:     function utf8_is_letter(&$str, &$len, $pos=0)
- *  328:     function charType($cp)
- *  371:     function utf8_ord(&$str, &$len, $pos=0, $hex=false)
- *
- * TOTAL FUNCTIONS: 7
- * (This index is automatically created/updated by the extension "extdeveval")
- *
- */
 
 
 
@@ -66,7 +46,7 @@
  * Lexer class for indexed_search
  * A lexer splits the text into words
  *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage tx_indexedsearch
  */
@@ -76,7 +56,12 @@ class tx_indexedsearch_lexer {
        var $debug = FALSE;             // If set, the debugString is filled with HTML output highlighting search / non-search words (for backend display)
        var $debugString = '';
 
-       var $csObj;             // Charset class object , t3lib_cs
+       /**
+        * Charset class object
+        *
+        * @var t3lib_cs
+        */
+       var $csObj;
 
 
                // Configuration of the lexer:
@@ -102,8 +87,21 @@ class tx_indexedsearch_lexer {
         *
         * @return      void
         */
-       function tx_indexedsearch_lexer() {
-               $this->csObj = &t3lib_div::makeInstance('t3lib_cs');
+       function __construct() {
+               $this->csObj = t3lib_div::makeInstance('t3lib_cs');
+       }
+
+       /**
+        * Compatibility constructor.
+        *
+        * @deprecated since TYPO3 4.6 and will be removed in TYPO3 4.8. Use __construct() instead.
+        */
+       public function tx_indexedsearch_lexer() {
+               t3lib_div::logDeprecatedFunction();
+                       // Note: we cannot call $this->__construct() here because it would call the derived class constructor and cause recursion
+                       // This code uses official PHP behavior (http://www.php.net/manual/en/language.oop5.basic.php) when $this in the
+                       // statically called non-static method inherits $this from the caller's scope.
+               tx_indexedsearch_lexer::__construct();
        }
 
        /**
@@ -166,7 +164,7 @@ class tx_indexedsearch_lexer {
 
 
        /**
-        * Add word to word- array
+        * Add word to word-array
         * This function should be used to make sure CJK sequences are split up in the right way
         *
         * @param       array           Array of accumulated words
@@ -189,15 +187,15 @@ class tx_indexedsearch_lexer {
                        /*
                                DESCRIPTION OF (CJK) ALGORITHM
 
-                               Continuous letters and numbers make up words.  Spaces and symbols
-                               separate letters and numbers into words.  This is sufficient for
+                               Continuous letters and numbers make up words. Spaces and symbols
+                               separate letters and numbers into words. This is sufficient for
                                all western text.
 
                                CJK doesn't use spaces or separators to separate words, so the only
                                way to really find out what constitutes a word would be to have a
-                               dictionary and advanced heuristics.  Instead, we form pairs from
+                               dictionary and advanced heuristics. Instead, we form pairs from
                                consecutive characters, in such a way that searches will find only
-                               characters that appear more-or-less the right sequence.  For example:
+                               characters that appear more-or-less the right sequence. For example:
 
                                        ABCDE => AB BC CD DE
 
@@ -234,20 +232,20 @@ class tx_indexedsearch_lexer {
         *
         * @param       string          Input string (reference)
         * @param       integer         Starting position in input string
-        * @return      array           0: start, 1: len or false if no word has been found
+        * @return      array           0: start, 1: len or FALSE if no word has been found
         */
        function get_word(&$str, $pos=0)        {
 
                $len=0;
 
-                       // If return is true, a word was found starting at this position, so returning position and length:
+                       // If return is TRUE, a word was found starting at this position, so returning position and length:
                if ($this->utf8_is_letter($str, $len, $pos))    {
                        return array($pos,$len);
                }
 
-                       // If the return value was false it means a sequence of non-word chars were found (or blank string) - so we will start another search for the word:
+                       // If the return value was FALSE it means a sequence of non-word chars were found (or blank string) - so we will start another search for the word:
                $pos += $len;
-               if ($str{$pos} == '')   return false;   // check end of string before looking for word of course.
+               if ($str{$pos} == '')   return FALSE;   // check end of string before looking for word of course.
 
                $this->utf8_is_letter($str, $len, $pos);
                return array($pos,$len);
@@ -266,10 +264,10 @@ class tx_indexedsearch_lexer {
 
                $len = 0;
                $bc = 0;
-               $cType = $cType_prev = false; // Letter type
-               $letter = true; // looking for a letter?
+               $cType = $cType_prev = FALSE; // Letter type
+               $letter = TRUE; // looking for a letter?
 
-               if ($str{$pos} == '')   return false;   // Return false on end-of-string at this stage
+               if ($str{$pos} == '')   return FALSE;   // Return FALSE on end-of-string at this stage
 
                while(1) {
 
@@ -286,7 +284,7 @@ class tx_indexedsearch_lexer {
                                                                $len = $printJoinLgd;
                                                        }
                                                        #debug($cp);
-                                                       return true;
+                                                       return TRUE;
                                                } else {        // If a printJoin char is found, record the length if it has not been recorded already:
                                                        if (!$printJoinLgd)     $printJoinLgd = $len;
                                                }
@@ -295,7 +293,7 @@ class tx_indexedsearch_lexer {
                                        }
                                }
                                elseif (!$letter && $cType)     {       // end of non-word reached
-                                       return false;
+                                       return FALSE;
                                }
                        }
                        $len += $bc;    // add byte-length of last found character
@@ -313,11 +311,11 @@ class tx_indexedsearch_lexer {
                                continue;
                        }
 
-                               // Setting letter to false if the first char was not a letter!
-                       if (!$len)      $letter = false;
+                               // Setting letter to FALSE if the first char was not a letter!
+                       if (!$len)      $letter = FALSE;
                }
 
-               return false;
+               return FALSE;
        }
 
        /**
@@ -380,12 +378,15 @@ class tx_indexedsearch_lexer {
         * @param       boolean         If set, then a hex. number is returned
         * @return      integer         UNICODE codepoint
         */
-       function utf8_ord(&$str, &$len, $pos=0, $hex=false)     {
+       function utf8_ord(&$str, &$len, $pos=0, $hex=FALSE)     {
                $ord = ord($str{$pos});
                $len = 1;
 
                if ($ord > 0x80)        {
-                       for ($bc=-1, $mbs=$ord; $mbs & 0x80; $mbs = $mbs << 1)  $bc++;  // calculate number of extra bytes
+                       for ($bc = -1, $mbs = $ord; $mbs & 0x80; $mbs = $mbs << 1) {
+                                       // calculate number of extra bytes
+                               $bc++;
+                       }
                        $len += $bc;
 
                        $ord = $ord & ((1 << (6-$bc)) - 1);     // mask utf-8 lead-in bytes
@@ -398,7 +399,7 @@ class tx_indexedsearch_lexer {
 }
 
 
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/class.lexer.php'])    {
-    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/class.lexer.php']);
+if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/indexed_search/class.lexer.php'])) {
+       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/indexed_search/class.lexer.php']);
 }
 ?>
\ No newline at end of file