MediaWiki  1.34.0
ForeignDBRepo.php
Go to the documentation of this file.
1 <?php
26 
32 class ForeignDBRepo extends LocalRepo {
34  protected $dbType;
35 
37  protected $dbServer;
38 
40  protected $dbUser;
41 
43  protected $dbPassword;
44 
46  protected $dbName;
47 
49  protected $dbFlags;
50 
52  protected $tablePrefix;
53 
55  protected $hasSharedCache;
56 
58  protected $dbConn;
59 
61  protected $fileFactory = [ ForeignDBFile::class, 'newFromTitle' ];
63  protected $fileFromRowFactory = [ ForeignDBFile::class, 'newFromRow' ];
64 
68  function __construct( $info ) {
69  parent::__construct( $info );
70  $this->dbType = $info['dbType'];
71  $this->dbServer = $info['dbServer'];
72  $this->dbUser = $info['dbUser'];
73  $this->dbPassword = $info['dbPassword'];
74  $this->dbName = $info['dbName'];
75  $this->dbFlags = $info['dbFlags'];
76  $this->tablePrefix = $info['tablePrefix'];
77  $this->hasSharedCache = $info['hasSharedCache'];
78  }
79 
83  function getMasterDB() {
84  if ( !isset( $this->dbConn ) ) {
85  $func = $this->getDBFactory();
86  $this->dbConn = $func( DB_MASTER );
87  }
88 
89  return $this->dbConn;
90  }
91 
95  function getReplicaDB() {
96  return $this->getMasterDB();
97  }
98 
102  protected function getDBFactory() {
104  $params = [
105  'host' => $this->dbServer,
106  'user' => $this->dbUser,
107  'password' => $this->dbPassword,
108  'dbname' => $this->dbName,
109  'flags' => $this->dbFlags,
110  'tablePrefix' => $this->tablePrefix
111  ];
112 
113  return function ( $index ) use ( $type, $params ) {
114  return Database::factory( $type, $params );
115  };
116  }
117 
121  function hasSharedCache() {
122  return $this->hasSharedCache;
123  }
124 
131  function getSharedCacheKey( /*...*/ ) {
132  if ( $this->hasSharedCache() ) {
133  $args = func_get_args();
134 
135  return wfForeignMemcKey( $this->dbName, $this->tablePrefix, ...$args );
136  } else {
137  return false;
138  }
139  }
140 
141  protected function assertWritableRepo() {
142  throw new MWException( static::class . ': write operations are not supported.' );
143  }
144 
151  function getInfo() {
152  return FileRepo::getInfo();
153  }
154 }
ForeignDBRepo\$dbUser
string $dbUser
Definition: ForeignDBRepo.php:40
Wikimedia\Rdbms\Database
Relational database abstraction object.
Definition: Database.php:49
ForeignDBRepo\getDBFactory
getDBFactory()
Definition: ForeignDBRepo.php:102
ForeignDBRepo\getInfo
getInfo()
Return information about the repository.
Definition: ForeignDBRepo.php:151
ForeignDBRepo\$hasSharedCache
bool $hasSharedCache
Definition: ForeignDBRepo.php:55
ForeignDBRepo\$dbName
string $dbName
Definition: ForeignDBRepo.php:46
FileRepo\getInfo
getInfo()
Return information about the repository.
Definition: FileRepo.php:1919
ForeignDBRepo\getReplicaDB
getReplicaDB()
Definition: ForeignDBRepo.php:95
ForeignDBRepo\assertWritableRepo
assertWritableRepo()
Throw an exception if this repo is read-only by design.
Definition: ForeignDBRepo.php:141
ForeignDBRepo\$fileFactory
callable $fileFactory
Definition: ForeignDBRepo.php:61
Wikimedia\Rdbms\IDatabase
Basic database interface for live and lazy-loaded relation database handles.
Definition: IDatabase.php:38
ForeignDBRepo\$dbServer
string $dbServer
Definition: ForeignDBRepo.php:37
ForeignDBRepo\$dbConn
IDatabase $dbConn
Definition: ForeignDBRepo.php:58
MWException
MediaWiki exception.
Definition: MWException.php:26
ForeignDBRepo\$dbPassword
string $dbPassword
Definition: ForeignDBRepo.php:43
DB_MASTER
const DB_MASTER
Definition: defines.php:26
ForeignDBRepo\$tablePrefix
string $tablePrefix
Definition: ForeignDBRepo.php:52
wfForeignMemcKey
wfForeignMemcKey( $db, $prefix,... $args)
Make a cache key for a foreign DB.
Definition: GlobalFunctions.php:2513
ForeignDBRepo\hasSharedCache
hasSharedCache()
Definition: ForeignDBRepo.php:121
ForeignDBRepo
A foreign repository with an accessible MediaWiki database.
Definition: ForeignDBRepo.php:32
ForeignDBRepo\getMasterDB
getMasterDB()
Definition: ForeignDBRepo.php:83
ForeignDBRepo\getSharedCacheKey
getSharedCacheKey()
Get a key on the primary cache for this repository.
Definition: ForeignDBRepo.php:131
$args
if( $line===false) $args
Definition: cdb.php:64
ForeignDBRepo\$dbType
string $dbType
Definition: ForeignDBRepo.php:34
ForeignDBRepo\$dbFlags
string $dbFlags
Definition: ForeignDBRepo.php:49
ForeignDBRepo\__construct
__construct( $info)
Definition: ForeignDBRepo.php:68
ForeignDBRepo\$fileFromRowFactory
callable $fileFromRowFactory
Definition: ForeignDBRepo.php:63
LocalRepo
A repository that stores files in the local filesystem and registers them in the wiki's own database.
Definition: LocalRepo.php:37
$type
$type
Definition: testCompression.php:48