wiki.techinc.nl/includes/filerepo/ForeignDBRepo.php
Gergő Tisza 8073d4f226 Propagate the favicon information to getInfo() for local repos
This is needed by MultimediaViewer to show a relevant icon next
to the local and foreign db repo link in the description area

The setting ends up in configuration for foreign DB, because the
favicon value is stored in the configuration of a wiki, not in its
database.

Change-Id: I3d0599c1afa13e1d8540ff3c8bc34129a55792c5
2014-01-17 11:31:16 +01:00

139 lines
3.3 KiB
PHP

<?php
/**
* A foreign repository with an accessible MediaWiki database.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @ingroup FileRepo
*/
/**
* A foreign repository with an accessible MediaWiki database
*
* @ingroup FileRepo
*/
class ForeignDBRepo extends LocalRepo {
/** @var string */
protected $dbType;
/** @var string */
protected $dbServer;
/** @var string */
protected $dbUser;
/** @var string */
protected $dbPassword;
/** @var string */
protected $dbName;
/** @var string */
protected $dbFlags;
/** @var string */
protected $tablePrefix;
/** @var bool */
protected $hasSharedCache;
# Other stuff
protected $dbConn;
protected $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
/**
* @param array|null $info
*/
function __construct( $info ) {
parent::__construct( $info );
$this->dbType = $info['dbType'];
$this->dbServer = $info['dbServer'];
$this->dbUser = $info['dbUser'];
$this->dbPassword = $info['dbPassword'];
$this->dbName = $info['dbName'];
$this->dbFlags = $info['dbFlags'];
$this->tablePrefix = $info['tablePrefix'];
$this->hasSharedCache = $info['hasSharedCache'];
}
/**
* @return DatabaseBase
*/
function getMasterDB() {
if ( !isset( $this->dbConn ) ) {
$this->dbConn = DatabaseBase::factory( $this->dbType,
array(
'host' => $this->dbServer,
'user' => $this->dbUser,
'password' => $this->dbPassword,
'dbname' => $this->dbName,
'flags' => $this->dbFlags,
'tablePrefix' => $this->tablePrefix,
'foreign' => true,
)
);
}
return $this->dbConn;
}
/**
* @return DatabaseBase
*/
function getSlaveDB() {
return $this->getMasterDB();
}
/**
* @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.
* 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;
}
}
protected function assertWritableRepo() {
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();
}
}