use Liuggio\StatsdClient\Sender\SocketSender;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\Session\SessionManager;
+use MediaWiki\MediaWikiServices;
use Wikimedia\ScopedCallback;
+use Wikimedia\Rdbms\DBReplicationWaitError;
// Hide compatibility functions from Doxygen
/// @cond
/**
* Merge arrays in the style of getUserPermissionsErrors, with duplicate removal
* e.g.
- * wfMergeErrorArrays(
- * [ [ 'x' ] ],
- * [ [ 'x', '2' ] ],
- * [ [ 'x' ] ],
- * [ [ 'y' ] ]
- * );
+ * wfMergeErrorArrays(
+ * [ [ 'x' ] ],
+ * [ [ 'x', '2' ] ],
+ * [ [ 'x' ] ],
+ * [ [ 'y' ] ]
+ * );
* returns:
- * [
- * [ 'x', '2' ],
- * [ 'x' ],
- * [ 'y' ]
- * ]
+ * [
+ * [ 'x', '2' ],
+ * [ 'x' ],
+ * [ 'y' ]
+ * ]
*
* @param array $array1,...
* @return array
$profiler->logData();
$config = $context->getConfig();
- if ( $config->get( 'StatsdServer' ) ) {
+ $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
+ if ( $config->get( 'StatsdServer' ) && $stats->hasData() ) {
try {
$statsdServer = explode( ':', $config->get( 'StatsdServer' ) );
$statsdHost = $statsdServer[0];
$statsdSender = new SocketSender( $statsdHost, $statsdPort );
$statsdClient = new SamplingStatsdClient( $statsdSender, true, false );
$statsdClient->setSamplingRates( $config->get( 'StatsdSamplingRates' ) );
- $statsdClient->send( $context->getStats()->getBuffer() );
+ $statsdClient->send( $stats->getData() );
} catch ( Exception $ex ) {
MWExceptionHandler::logException( $ex );
}
* @return void
*/
function wfIncrStats( $key, $count = 1 ) {
- $stats = RequestContext::getMain()->getStats();
+ $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
$stats->updateCount( $key, $count );
}
* @return bool
*/
function wfReadOnly() {
- return wfReadOnlyReason() !== false;
+ return MediaWikiServices::getInstance()->getReadOnlyMode()
+ ->isReadOnly();
}
/**
* @return string|bool String when in read-only mode; false otherwise
*/
function wfReadOnlyReason() {
- $readOnly = wfConfiguredReadOnlyReason();
- if ( $readOnly !== false ) {
- return $readOnly;
- }
-
- static $lbReadOnly = null;
- if ( $lbReadOnly === null ) {
- // Callers use this method to be aware that data presented to a user
- // may be very stale and thus allowing submissions can be problematic.
- $lbReadOnly = wfGetLB()->getReadOnlyReason();
- }
-
- return $lbReadOnly;
+ return MediaWikiServices::getInstance()->getReadOnlyMode()
+ ->getReason();
}
/**
* @since 1.27
*/
function wfConfiguredReadOnlyReason() {
- global $wgReadOnly, $wgReadOnlyFile;
-
- if ( $wgReadOnly === null ) {
- // Set $wgReadOnly for faster access next time
- if ( is_file( $wgReadOnlyFile ) && filesize( $wgReadOnlyFile ) > 0 ) {
- $wgReadOnly = file_get_contents( $wgReadOnlyFile );
- } else {
- $wgReadOnly = false;
- }
- }
-
- return $wgReadOnly;
+ return MediaWikiServices::getInstance()->getConfiguredReadOnlyMode()
+ ->getReason();
}
/**
function wfHostname() {
static $host;
if ( is_null( $host ) ) {
-
# Hostname overriding
global $wgOverrideHostname;
if ( $wgOverrideHostname !== false ) {
$wgOut->sendCacheControl();
}
+ MediaWiki\HeaderCallback::warnIfHeadersSent();
header( 'Content-type: text/html; charset=utf-8' );
print '<!DOCTYPE html>' .
'<html><head><title>' .
* @return string
*/
function wfEscapeShellArg( /*...*/ ) {
- wfInitShellLocale();
-
$args = func_get_args();
if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
// If only one argument has been passed, and that argument is an array,
$includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr'];
$profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller();
- wfInitShellLocale();
-
$envcmd = '';
foreach ( $environ as $k => $v ) {
if ( wfIsWindows() ) {
}
/**
- * Workaround for https://bugs.php.net/bug.php?id=45132
- * escapeshellarg() destroys non-ASCII characters if LANG is not a UTF-8 locale
+ * Formerly set the locale for locale-sensitive operations
+ *
+ * This is now done in Setup.php.
+ *
+ * @deprecated since 1.30, no longer needed
+ * @see $wgShellLocale
*/
function wfInitShellLocale() {
- static $done = false;
- if ( $done ) {
- return;
- }
- $done = true;
- global $wgShellLocale;
- putenv( "LC_CTYPE=$wgShellLocale" );
- setlocale( LC_CTYPE, $wgShellLocale );
}
/**
* @param string $script MediaWiki cli script path
* @param array $parameters Arguments and options to the script
* @param array $options Associative array of options:
- * 'php': The path to the php executable
- * 'wrapper': Path to a PHP wrapper to handle the maintenance script
+ * 'php': The path to the php executable
+ * 'wrapper': Path to a PHP wrapper to handle the maintenance script
* @return string
*/
function wfShellWikiCmd( $script, array $parameters = [], array $options = [] ) {
/**
* Make a cache key for the local wiki.
*
+ * @deprecated since 1.30 Call makeKey on a BagOStuff instance
* @param string $args,...
* @return string
*/
* instead. Must have a prefix as otherwise keys that use a database name
* in the first segment will clash with wfMemcKey/wfForeignMemcKey.
*
+ * @deprecated since 1.30 Call makeGlobalKey on a BagOStuff instance
* @since 1.26
* @param string $args,...
* @return string
* @todo Replace calls to wfGetDB with calls to LoadBalancer::getConnection()
* on an injected instance of LoadBalancer.
*
- * @return Database
+ * @return \Wikimedia\Rdbms\Database
*/
function wfGetDB( $db, $groups = [], $wiki = false ) {
return wfGetLB( $wiki )->getConnection( $db, $groups, $wiki );
*/
function wfGetLB( $wiki = false ) {
if ( $wiki === false ) {
- return \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancer();
+ return MediaWikiServices::getInstance()->getDBLoadBalancer();
} else {
- $factory = \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $factory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
return $factory->getMainLB( $wiki );
}
}
* @return \Wikimedia\Rdbms\LBFactory
*/
function wfGetLBFactory() {
- return \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ return MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
}
/**
}
$cache = ObjectCache::getLocalServerInstance( 'hash' );
- $key = wfMemcKey( 'bad-image-list', ( $blacklist === null ) ? 'default' : md5( $blacklist ) );
+ $key = $cache->makeKey(
+ 'bad-image-list', ( $blacklist === null ) ? 'default' : md5( $blacklist )
+ );
$badImages = $cache->get( $key );
if ( $badImages === false ) { // cache miss