X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/includes/filerepo/ForeignDBRepo.php diff --git a/includes/filerepo/ForeignDBRepo.php b/includes/filerepo/ForeignDBRepo.php index a756703f..bce3005c 100644 --- a/includes/filerepo/ForeignDBRepo.php +++ b/includes/filerepo/ForeignDBRepo.php @@ -1,26 +1,70 @@ dbType = $info['dbType']; @@ -33,52 +77,80 @@ class ForeignDBRepo extends LocalRepo { $this->hasSharedCache = $info['hasSharedCache']; } + /** + * @return IDatabase + */ function getMasterDB() { if ( !isset( $this->dbConn ) ) { - $this->dbConn = DatabaseBase::newFromType( $this->dbType, - array( - 'host' => $this->dbServer, - 'user' => $this->dbUser, - 'password' => $this->dbPassword, - 'dbname' => $this->dbName, - 'flags' => $this->dbFlags, - 'tableprefix' => $this->tablePrefix - ) - ); + $func = $this->getDBFactory(); + $this->dbConn = $func( DB_MASTER ); } + return $this->dbConn; } - function getSlaveDB() { + /** + * @return IDatabase + */ + function getReplicaDB() { return $this->getMasterDB(); } + /** + * @return Closure + */ + protected function getDBFactory() { + $type = $this->dbType; + $params = [ + 'host' => $this->dbServer, + 'user' => $this->dbUser, + 'password' => $this->dbPassword, + 'dbname' => $this->dbName, + 'flags' => $this->dbFlags, + 'tablePrefix' => $this->tablePrefix, + 'foreign' => true, + ]; + + return function ( $index ) use ( $type, $params ) { + return Database::factory( $type, $params ); + }; + } + + /** + * @return bool + */ function hasSharedCache() { return $this->hasSharedCache; } /** * Get a key on the primary cache for this repository. - * Returns false if the repository's cache is not accessible at this site. + * Returns false if the repository's cache is not accessible at this site. * The parameters are the parts of the key, as for wfMemcKey(). + * @return bool|mixed */ function getSharedCacheKey( /*...*/ ) { if ( $this->hasSharedCache() ) { $args = func_get_args(); array_unshift( $args, $this->dbName, $this->tablePrefix ); + return call_user_func_array( 'wfForeignMemcKey', $args ); } else { return false; } } - function store( $srcPath, $dstZone, $dstRel, $flags = 0 ) { - throw new MWException( get_class($this) . ': write operations are not supported' ); + protected function assertWritableRepo() { + throw new MWException( static::class . ': write operations are not supported.' ); } - function publish( $srcPath, $dstRel, $archiveRel, $flags = 0 ) { - throw new MWException( get_class($this) . ': write operations are not supported' ); - } - function deleteBatch( $sourceDestPairs ) { - throw new MWException( get_class($this) . ': write operations are not supported' ); + + /** + * Return information about the repository. + * + * @return array + * @since 1.22 + */ + function getInfo() { + return FileRepo::getInfo(); } }