MediaWiki  master
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 
132  function getSharedCacheKey( ...$args ) {
133  if ( $this->hasSharedCache() ) {
134  return wfForeignMemcKey( $this->dbName, $this->tablePrefix, ...$args );
135  } else {
136  return false;
137  }
138  }
139 
140  protected function assertWritableRepo() {
141  throw new MWException( static::class . ': write operations are not supported.' );
142  }
143 
150  function getInfo() {
151  return FileRepo::getInfo();
152  }
153 }
A foreign repository with an accessible MediaWiki database.
string $tablePrefix
wfForeignMemcKey( $db, $prefix,... $args)
Make a cache key for a foreign DB.
getInfo()
Return information about the repository.
A repository that stores files in the local filesystem and registers them in the wiki&#39;s own database...
Definition: LocalRepo.php:37
const DB_MASTER
Definition: defines.php:26
getSharedCacheKey(... $args)
Get a key on the primary cache for this repository.
if( $line===false) $args
Definition: cdb.php:64
IDatabase $dbConn
getInfo()
Return information about the repository.
Definition: FileRepo.php:1921
__construct( $info)
string $dbPassword
callable $fileFactory
callable $fileFromRowFactory