Page MenuHomeWickedGov Phorge

GlobalPreferencesConnectionProvider.php
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

GlobalPreferencesConnectionProvider.php

<?php
namespace GlobalPreferences\Services;
use MediaWiki\Config\ServiceOptions;
use Wikimedia\Rdbms\IConnectionProvider;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\IReadableDatabase;
/**
* A service used to fetch a database connection to the GlobalPreferences database.
*/
class GlobalPreferencesConnectionProvider {
public const CONSTRUCTOR_OPTIONS = [
'GlobalPreferencesDB',
'SharedDB',
];
public function __construct(
private readonly ServiceOptions $options,
private readonly IConnectionProvider $dbProvider,
) {
$options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS );
}
/**
* @return false|string The domain ID of the GlobalPreferences database
*/
private function getDomainId() {
$globalPreferencesDB = (string)$this->options->get( 'GlobalPreferencesDB' );
$sharedDB = (string)$this->options->get( 'SharedDB' );
if ( $globalPreferencesDB ) {
return $globalPreferencesDB;
} elseif ( $sharedDB ) {
return $sharedDB;
}
// local wiki
return false;
}
/**
* Get a replica GlobalPreferences database connection.
*
* @since 1.44
*
* @return IReadableDatabase
*/
public function getReplicaDatabase(): IReadableDatabase {
return $this->dbProvider->getReplicaDatabase( $this->getDomainId() );
}
/**
* Get a primary GlobalPreferences database connection.
*
* @since 1.44
*
* @return IDatabase
* @internal You should probably be using the API or special page to update a user's global preference value.
*/
public function getPrimaryDatabase(): IDatabase {
return $this->dbProvider->getPrimaryDatabase( $this->getDomainId() );
}
}

File Metadata

Mime Type
text/x-php
Expires
Oct 4 2026, 05:19 (5 w, 19 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
5c/dc/437f8240e5c789e11d55b5c7185c
Default Alt Text
GlobalPreferencesConnectionProvider.php (1 KB)

Event Timeline