mediawiki-extensions-Echo/includes/EchoDbFactory.php
bsitu 2be8a547a0 Add external db support to Echo
Change-Id: I84b0d904795d858d88d8e52c22f00d81c0e81303
2013-04-09 17:59:17 -07:00

57 lines
1.2 KiB
PHP

<?php
/**
* Database factory class, this will determine whether to use the main database
* or an external database defined in configuration file
*/
class MWEchoDbFactory {
/**
* Database loadbalancer
*/
private static $lb;
/**
* Database cache
*/
private static $cache = array();
/**
* Internal function for getting database loadbalancer, Echo database
* can reside on extension1 db
*
* @param $wiki string The wiki ID, or false for the current wiki
*/
private static function initLB( $wiki ) {
if ( self::$lb === null ) {
global $wgEchoCluster;
// Use the external db defined for Echo
if ( $wgEchoCluster ) {
self::$lb = wfGetLBFactory()->getExternalLB( $wgEchoCluster );
} else {
self::$lb = wfGetLB( $wiki );
}
}
}
/**
* Wrapper function for wfGetDB
*
* @param $db int Index of the connection to get
* @param $groups mixed Query groups.
* @param $wiki string The wiki ID, or false for the current wiki
* @return DatabaseBase
*/
public static function getDB( $db, $groups = array(), $wiki = false ) {
if ( !isset( self::$cache[$db] ) ) {
self::initLB( $wiki );
self::$cache[$db] = self::$lb->getConnection( $db, $groups, $wiki );
}
return self::$cache[$db];
}
}