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
$statsdSender = new SocketSender( $statsdHost, $statsdPort );
$statsdClient = new SamplingStatsdClient( $statsdSender, true, false );
$statsdClient->setSamplingRates( $config->get( 'StatsdSamplingRates' ) );
- $statsdClient->send( $context->getStats()->getBuffer() );
+ $statsdClient->send(
+ MediaWikiServices::getInstance()->getStatsdDataFactory()->getBuffer()
+ );
} 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 \MediaWiki\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 \MediaWiki\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 \MediaWiki\MediaWikiServices::getInstance()->getConfiguredReadOnlyMode()
+ ->getReason();
}
/**
function wfHostname() {
static $host;
if ( is_null( $host ) ) {
-
# Hostname overriding
global $wgOverrideHostname;
if ( $wgOverrideHostname !== false ) {
}
/**
- * Workaround for https://bugs.php.net/bug.php?id=45132
- * escapeshellarg() destroys non-ASCII characters if LANG is not a UTF-8 locale
+ * Set the locale for locale-sensitive operations
+ *
+ * Sets LC_ALL to a known value to work around issues like the following:
+ * - https://bugs.php.net/bug.php?id=45132 escapeshellarg() destroys non-ASCII
+ * characters if LANG is not a UTF-8 locale
+ * - T107128 Scribunto string comparison works case insensitive while the
+ * standard Lua case sensitive
+ *
+ * @see $wgShellLocale
*/
function wfInitShellLocale() {
static $done = false;
}
$done = true;
global $wgShellLocale;
- putenv( "LC_CTYPE=$wgShellLocale" );
- setlocale( LC_CTYPE, $wgShellLocale );
+ putenv( "LC_ALL=$wgShellLocale" );
+ setlocale( LC_ALL, $wgShellLocale );
}
/**
* @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 );