Merge "Put skin classes in the Autoloader"
[lhc/web/wiklou.git] / includes / GlobalFunctions.php
index 7aec2e2..ba9bf74 100644 (file)
@@ -30,7 +30,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 /**
  * Compatibility functions
  *
- * We support PHP 5.2.3 and up.
+ * We support PHP 5.3.2 and up.
  * Re-implementations of newer functions or functions in non-standard
  * PHP extensions may be included here.
  */
@@ -1831,7 +1831,7 @@ function wfDebugBacktrace( $limit = 0 ) {
        }
 
        if ( $limit && version_compare( PHP_VERSION, '5.4.0', '>=' ) ) {
-               return array_slice( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit ), 1 );
+               return array_slice( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit + 1 ), 1 );
        } else {
                return array_slice( debug_backtrace(), 1 );
        }
@@ -1890,12 +1890,15 @@ function wfBacktrace() {
 
 /**
  * Get the name of the function which called this function
+ * wfGetCaller( 1 ) is the function with the wfGetCaller() call (ie. __FUNCTION__)
+ * wfGetCaller( 2 ) [default] is the caller of the function running wfGetCaller()
+ * wfGetCaller( 3 ) is the parent of that.
  *
  * @param $level Int
  * @return Bool|string
  */
 function wfGetCaller( $level = 2 ) {
-       $backtrace = wfDebugBacktrace( $level );
+       $backtrace = wfDebugBacktrace( $level + 1 );
        if ( isset( $backtrace[$level] ) ) {
                return wfFormatStackFrame( $backtrace[$level] );
        } else {
@@ -2198,13 +2201,7 @@ function wfResetOutputBuffers( $resetGzipEncoding = true ) {
                        if( $status['name'] == 'ob_gzhandler' ) {
                                // Reset the 'Content-Encoding' field set by this handler
                                // so we can start fresh.
-                               if ( function_exists( 'header_remove' ) ) {
-                                       // Available since PHP 5.3.0
-                                       header_remove( 'Content-Encoding' );
-                               } else {
-                                       // We need to provide a valid content-coding. See bug 28069
-                                       header( 'Content-Encoding: identity' );
-                               }
+                               header_remove( 'Content-Encoding' );
                                break;
                        }
                }
@@ -2613,11 +2610,10 @@ function swap( &$x, &$y ) {
 }
 
 /**
- * Tries to get the system directory for temporary files. The TMPDIR, TMP, and
- * TEMP environment variables are then checked in sequence, and if none are set
- * try sys_get_temp_dir() for PHP >= 5.2.1. All else fails, return /tmp for Unix
- * or C:\Windows\Temp for Windows and hope for the best.
- * It is common to call it with tempnam().
+ * Tries to get the system directory for temporary files. First
+ * $wgTmpDirectory is checked, and then the TMPDIR, TMP, and TEMP
+ * environment variables are then checked in sequence, and if none are
+ * set try sys_get_temp_dir().
  *
  * NOTE: When possible, use instead the tmpfile() function to create
  * temporary files to avoid race conditions on file creation, etc.
@@ -2625,17 +2621,20 @@ function swap( &$x, &$y ) {
  * @return String
  */
 function wfTempDir() {
-       foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
-               $tmp = getenv( $var );
+       global $wgTmpDirectory;
+
+       if ( $wgTmpDirectory !== false ) {
+               return $wgTmpDirectory;
+       }
+
+       $tmpDir = array_map( "getenv", array( 'TMPDIR', 'TMP', 'TEMP' ) );
+
+       foreach( $tmpDir as $tmp ) {
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }
        }
-       if( function_exists( 'sys_get_temp_dir' ) ) {
-               return sys_get_temp_dir();
-       }
-       # Usual defaults
-       return wfIsWindows() ? 'C:\Windows\Temp' : '/tmp';
+       return sys_get_temp_dir();
 }
 
 /**