X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=includes%2FGlobalFunctions.php;h=d636b4439739bbe210b8b2cdfe08aeff496dcae3;hb=c510db2665c0f580d636f4c3aab72ac20722262b;hp=e9c8b858e2249a0911ac8a9387532231bc577ba0;hpb=30caa2a8b992a66f3ec0727198162ccd260f2298;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index e9c8b858e2..d636b44397 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -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 @@ -305,8 +296,7 @@ function wfUrlencode( $s ) { */ function wfDebug( $text, $logonly = false ) { global $wgOut, $wgDebugLogFile, $wgDebugComments, $wgProfileOnly, $wgDebugRawPage; - global $wgDebugLogPrefix, $wgShowDebug, $wgCommandLineMode, $wgDebugToCommandLine; - static $recursion = 0; + global $wgDebugLogPrefix, $wgShowDebug; 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 ( !StubObject::isRealObject( $wgOut ) ) { - if ( $recursion ) { - return; - } - $recursion++; - $wgOut->_unstub(); - $recursion--; + if ( isset( $wgOut ) && StubObject::isRealObject( $wgOut ) ) { + // add the message and any cached messages to the output + array_map( array( $wgOut, 'debug' ), $cache ); + $cache = array(); } - - // 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 @@ -615,6 +595,26 @@ function wfMessage( $key /*...*/) { return new Message( $key, $params ); } +/** + * This function accepts multiple message keys and returns a message instance + * for the first message which is non-empty. If all messages are empty then an + * instance of the first message key is returned. + * Varargs: message keys + * @return \type{Message} + * @since 1.18 + */ +function wfMessageFallback( /*...*/ ) { + $keys = func_get_args(); + $first = $keys[0]; + foreach ( $keys as $key ) { + if ( wfEmptyMsg( $key ) ) { + continue; + } + return wfMessage( $key ); + } + return wfMessage( $first ); +} + /** * Get a message from anywhere, for the current user language. * @@ -1296,30 +1296,6 @@ function wfEscapeWikiText( $text ) { return $text; } -/** - * @todo document - */ -function wfQuotedPrintable( $string, $charset = '' ) { - # Probably incomplete; see RFC 2045 - if( empty( $charset ) ) { - global $wgInputEncoding; - $charset = $wgInputEncoding; - } - $charset = strtoupper( $charset ); - $charset = str_replace( 'ISO-8859', 'ISO8859', $charset ); // ? - - $illegal = '\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff='; - $replace = $illegal . '\t ?_'; - if( !preg_match( "/[$illegal]/", $string ) ) { - return $string; - } - $out = "=?$charset?Q?"; - $out .= preg_replace( "/([$replace])/e", 'sprintf("=%02X",ord("$1"))', $string ); - $out .= '?='; - return $out; -} - - /** * @todo document * @return float @@ -1331,10 +1307,11 @@ function wfTime() { /** * Sets dest to source and returns the original value of dest * If source is NULL, it just returns the value, it doesn't set the variable + * If force is true, it will set the value even if source is NULL */ -function wfSetVar( &$dest, $source ) { +function wfSetVar( &$dest, $source, $force = false ) { $temp = $dest; - if ( !is_null( $source ) ) { + if ( !is_null( $source ) || $force ) { $dest = $source; } return $temp; @@ -1486,8 +1463,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 = ''; @@ -1988,7 +1969,7 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) { $da = array(); $strtime = ''; - if ( $ts === 0 ) { + if ( !$ts ) { // We want to catch 0, '', null... but not date strings starting with a letter. $uts = time(); $strtime = "@$uts"; } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) { @@ -2019,7 +2000,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 @@ -2028,9 +2009,9 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) { # asctime $strtime = $ts; } else { - # Bogus value; fall back to the epoch... - wfDebug("wfTimestamp() fed bogus time value: $outputtype; $ts\n"); - + # Bogus value... + wfDebug("wfTimestamp() fed bogus time value: TYPE=$outputtype; VALUE=$ts\n"); + return false; } @@ -2065,12 +2046,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 ) ) { @@ -2240,7 +2221,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__ ); @@ -2551,7 +2532,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 @@ -2860,9 +2841,10 @@ function wfMakeUrlIndex( $url ) { /** * Do any deferred updates and clear the list * - * @param $commit Boolean: commit after every update to prevent lock contention + * @param $commit String: set to 'commit' to commit after every update to + * prevent lock contention */ -function wfDoUpdates( $commit = false ) { +function wfDoUpdates( $commit = '' ) { global $wgDeferredUpdateList; wfProfileIn( __METHOD__ ); @@ -2873,14 +2855,15 @@ function wfDoUpdates( $commit = false ) { return; } - if ( $commit ) { + $doCommit = $commit == 'commit'; + if ( $doCommit ) { $dbw = wfGetDB( DB_MASTER ); } foreach ( $wgDeferredUpdateList as $update ) { $update->doUpdate(); - if ( $commit && $dbw->trxLevel() ) { + if ( $doCommit && $dbw->trxLevel() ) { $dbw->commit(); } } @@ -3191,6 +3174,7 @@ function wfGetLB( $wiki = false ) { /** * Get the load balancer factory object + * @return LBFactory */ function &wfGetLBFactory() { return LBFactory::singleton(); @@ -3290,9 +3274,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__ ); } /** @@ -3411,8 +3396,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;