Followup r71751: change strict comparison to loose per CR, and add a comment explaini...
[lhc/web/wiklou.git] / includes / GlobalFunctions.php
index aad2da9..e94ac72 100644 (file)
@@ -224,15 +224,6 @@ function wfArrayDiff2_cmp( $a, $b ) {
        }
 }
 
-/**
- * Seed Mersenne Twister
- * No-op for compatibility; only necessary in PHP < 4.2.0
- * @deprecated. Remove in 1.18
- */
-function wfSeedRandom() {
-       wfDeprecated(__FUNCTION__);
-}
-
 /**
  * Get a random decimal value between 0 and 1, in a way
  * not likely to give duplicate values for any realistic
@@ -306,7 +297,6 @@ function wfUrlencode( $s ) {
 function wfDebug( $text, $logonly = false ) {
        global $wgOut, $wgDebugLogFile, $wgDebugComments, $wgProfileOnly, $wgDebugRawPage;
        global $wgDebugLogPrefix, $wgShowDebug;
-       static $recursion = 0;
 
        static $cache = array(); // Cache of unoutputted messages
        $text = wfDebugTimer() . $text;
@@ -319,21 +309,11 @@ function wfDebug( $text, $logonly = false ) {
        if ( ( $wgDebugComments || $wgShowDebug ) && !$logonly ) {
                $cache[] = $text;
 
-               if ( !isset( $wgOut ) ) {
-                       return;
+               if ( isset( $wgOut ) && StubObject::isRealObject( $wgOut ) ) {
+                       // add the message and any cached messages to the output
+                       array_map( array( $wgOut, 'debug' ), $cache );
+                       $cache = array();
                }
-               if ( !StubObject::isRealObject( $wgOut ) ) {
-                       if ( $recursion ) {
-                               return;
-                       }
-                       $recursion++;
-                       $wgOut->_unstub();
-                       $recursion--;
-               }
-
-               // add the message and possible cached ones to the output
-               array_map( array( $wgOut, 'debug' ), $cache );
-               $cache = array();
        }
        if ( $wgDebugLogFile != '' && !$wgProfileOnly ) {
                # Strip unprintables; they can switch terminal modes when binary data
@@ -1462,8 +1442,12 @@ function wfEscapeShellArg( ) {
                }
 
                if ( wfIsWindows() ) {
-                       // Escaping for an MSVC-style command line parser
-                       // Ref: http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
+                       // Escaping for an MSVC-style command line parser and CMD.EXE
+                       // Refs:
+                       //  * http://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
+                       //  * http://technet.microsoft.com/en-us/library/cc723564.aspx
+                       //  * Bug #13518
+                       //  * CR r63214
                        // Double the backslashes before any double quotes. Escape the double quotes.
                        $tokens = preg_split( '/(\\\\*")/', $arg, -1, PREG_SPLIT_DELIM_CAPTURE );
                        $arg = '';
@@ -1964,7 +1948,7 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
        $da = array();
        $strtime = '';
 
-       if ( $ts === 0 ) {
+       if ( $ts == 0 ) { // This intentionally catches $ts === '' too, so DON'T change this to ===
                $uts = time();
                $strtime = "@$uts";
        } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
@@ -1995,7 +1979,7 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
                                                        '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' .  # dd Mon yyyy
                                                        '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
                # TS_RFC2822, accepting a trailing comment. See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
-               # The regex is a superset of rfc2822 for readability 
+               # The regex is a superset of rfc2822 for readability
                $strtime = strtok( $ts, ';' );
        } elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) {
                # TS_RFC850
@@ -2005,8 +1989,8 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
                $strtime = $ts;
        } else {
                # Bogus value; fall back to the epoch...
-               wfDebug("wfTimestamp() fed bogus time value: $outputtype; $ts\n");
-               
+               wfDebug("wfTimestamp() fed bogus time value: TYPE=$outputtype; VALUE=$ts\n");
+
                return false;
        }
 
@@ -2041,12 +2025,12 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
                } else {
                        return false;
                }
-               
+
                if ( !$d ) {
                        wfDebug("wfTimestamp() fed bogus time value: $outputtype; $ts\n");
                        return false;
                }
-               
+
                $output = $d->format( $formats[$outputtype] );
        } else {
                if ( count( $da ) ) {
@@ -2216,7 +2200,7 @@ function wfGetSiteNotice() {
 
 /**
  * BC wrapper for MimeMagic::singleton()
- * @deprecated No longer needed as of 1.17 (r68836).
+ * @deprecated No longer needed as of 1.17 (r68836). Remove in 1.19.
  */
 function &wfGetMimeMagic() {
        wfDeprecated( __FUNCTION__ );
@@ -2527,7 +2511,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = array() ) {
                         * Note however that the quote isn't listed there, but is needed, and the parentheses
                         * are listed there but doesn't appear to need it.
                         */
-                       $envcmd .= "set $k=" . preg_replace( '/([&|()<>^"])/', '^\\1', $v ) . ' && ';
+                       $envcmd .= "set $k=" . preg_replace( '/([&|()<>^"])/', '^\\1', $v ) . '&& ';
                } else {
                        /* Assume this is a POSIX shell, thus required to accept variable assignments before the command
                         * http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_01
@@ -3268,9 +3252,10 @@ function wfBoolToStr( $value ) {
 
 /**
  * Load an extension messages file
- * @deprecated in 1.16 (warnings in 1.18, removed in ?)
+ * @deprecated in 1.16, warnings in 1.18, remove in 1.20
  */
 function wfLoadExtensionMessages( $extensionName, $langcode = false ) {
+       wfDeprecated( __FUNCTION__ );
 }
 
 /**
@@ -3389,8 +3374,8 @@ function wfWaitForSlaves( $maxLag, $wiki = false ) {
 }
 
 /**
- * Output some plain text in command-line mode or in the installer (updaters.inc).
- * Do not use it in any other context, its behaviour is subject to change.
+ * Used to be used for outputting text in the installer/updater
+ * @deprecated Warnings in 1.19, removal in 1.20
  */
 function wfOut( $s ) {
        global $wgCommandLineMode;