Bug 35034 - moved autocomment-prefix between the prefix and the arrow. Follow up...
[lhc/web/wiklou.git] / includes / Fallback.php
index 422ea8a..b517cd1 100644 (file)
  * Fallback functions for PHP installed without mbstring support
  */
 class Fallback {
-       
-       public static function fallback_iconv( $from, $to, $string ) {
+
+       /**
+        * @param $from
+        * @param $to
+        * @param $string
+        * @return string
+        */
+       public static function iconv( $from, $to, $string ) {
                if ( substr( $to, -8 ) == '//IGNORE' ) {
                        $to = substr( $to, 0, strlen( $to ) - 8 );
                }
@@ -37,8 +43,8 @@ class Fallback {
                        return utf8_encode( $string );
                }
                return $string;
-       }       
-       
+       }
+
        /**
         * Fallback implementation for mb_substr, hardcoded to UTF-8.
         * Attempts to be at least _moderately_ efficient; best optimized
@@ -48,35 +54,46 @@ class Fallback {
         * Larger offsets are still fairly efficient for Latin text, but
         * can be up to 100x slower than native if the text is heavily
         * multibyte and we have to slog through a few hundred kb.
+        *
+        * @param $str
+        * @param $start
+        * @param $count string
+        *
+        * @return string
         */
-       public static function fallback_mb_substr( $str, $start, $count='end' ) {
+       public static function mb_substr( $str, $start, $count = 'end' ) {
                if( $start != 0 ) {
-                       $split = self::fallback_mb_substr_split_unicode( $str, intval( $start ) );
+                       $split = self::mb_substr_split_unicode( $str, intval( $start ) );
                        $str = substr( $str, $split );
                }
-       
+
                if( $count !== 'end' ) {
-                       $split = self::fallback_mb_substr_split_unicode( $str, intval( $count ) );
+                       $split = self::mb_substr_split_unicode( $str, intval( $count ) );
                        $str = substr( $str, 0, $split );
                }
-       
+
                return $str;
        }
-       
-       public static function fallback_mb_substr_split_unicode( $str, $splitPos ) {
+
+       /**
+        * @param $str
+        * @param $splitPos
+        * @return int
+        */
+       public static function mb_substr_split_unicode( $str, $splitPos ) {
                if( $splitPos == 0 ) {
                        return 0;
                }
-       
+
                $byteLen = strlen( $str );
-       
+
                if( $splitPos > 0 ) {
                        if( $splitPos > 256 ) {
                                // Optimize large string offsets by skipping ahead N bytes.
                                // This will cut out most of our slow time on Latin-based text,
                                // and 1/2 to 1/3 on East European and Asian scripts.
                                $bytePos = $splitPos;
-                               while ( $bytePos < $byteLen && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0" ) {
+                               while ( $bytePos < $byteLen && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
                                        ++$bytePos;
                                }
                                $charPos = mb_strlen( substr( $str, 0, $bytePos ) );
@@ -84,11 +101,11 @@ class Fallback {
                                $charPos = 0;
                                $bytePos = 0;
                        }
-       
+
                        while( $charPos++ < $splitPos ) {
                                ++$bytePos;
                                // Move past any tail bytes
-                               while ( $bytePos < $byteLen && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0" ) {
+                               while ( $bytePos < $byteLen && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
                                        ++$bytePos;
                                }
                        }
@@ -99,38 +116,38 @@ class Fallback {
                        while( $bytePos > 0 && $charPos-- >= $splitPosX ) {
                                --$bytePos;
                                // Move past any tail bytes
-                               while ( $bytePos > 0 && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0" ) {
+                               while ( $bytePos > 0 && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
                                        --$bytePos;
                                }
                        }
                }
-       
+
                return $bytePos;
        }
-       
+
        /**
         * Fallback implementation of mb_strlen, hardcoded to UTF-8.
         * @param string $str
         * @param string $enc optional encoding; ignored
         * @return int
         */
-       public static function fallback_mb_strlen( $str, $enc = '' ) {
+       public static function mb_strlen( $str, $enc = '' ) {
                $counts = count_chars( $str );
                $total = 0;
-       
+
                // Count ASCII bytes
                for( $i = 0; $i < 0x80; $i++ ) {
                        $total += $counts[$i];
                }
-       
+
                // Count multibyte sequence heads
                for( $i = 0xc0; $i < 0xff; $i++ ) {
                        $total += $counts[$i];
                }
                return $total;
        }
-       
-       
+
+
        /**
         * Fallback implementation of mb_strpos, hardcoded to UTF-8.
         * @param $haystack String
@@ -139,19 +156,19 @@ class Fallback {
         * @param $encoding String: optional encoding; ignored
         * @return int
         */
-       public static function fallback_mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
+       public static function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
                $needle = preg_quote( $needle, '/' );
-       
+
                $ar = array();
                preg_match( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
-       
+
                if( isset( $ar[0][1] ) ) {
                        return $ar[0][1];
                } else {
                        return false;
                }
-       }       
-       
+       }
+
        /**
         * Fallback implementation of mb_strrpos, hardcoded to UTF-8.
         * @param $haystack String
@@ -160,12 +177,12 @@ class Fallback {
         * @param $encoding String: optional encoding; ignored
         * @return int
         */
-       public static function fallback_mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
+       public static function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
                $needle = preg_quote( $needle, '/' );
-       
+
                $ar = array();
                preg_match_all( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
-       
+
                if( isset( $ar[0] ) && count( $ar[0] ) > 0 &&
                        isset( $ar[0][count( $ar[0] ) - 1][1] ) ) {
                        return $ar[0][count( $ar[0] ) - 1][1];
@@ -173,5 +190,22 @@ class Fallback {
                        return false;
                }
        }
-               
-}
\ No newline at end of file
+
+       /**
+        * Fallback implementation of stream_resolve_include_path()
+        * Native stream_resolve_include_path is available for PHP 5 >= 5.3.2
+        * @param $filename String
+        * @return String
+        */
+       public static function stream_resolve_include_path( $filename ) {
+               $pathArray = explode( PATH_SEPARATOR, get_include_path() );
+               foreach ( $pathArray as $path ) {
+                       $fullFilename = $path . DIRECTORY_SEPARATOR . $filename;
+                       if ( file_exists( $fullFilename ) ) {
+                               return $fullFilename;
+                       }
+               }
+               return false;
+       }
+
+}