More return documentation
[lhc/web/wiklou.git] / includes / filerepo / ForeignDBRepo.php
1 <?php
2 /**
3 * A foreign repository with an accessible MediaWiki database
4 *
5 * @file
6 * @ingroup FileRepo
7 */
8
9 /**
10 * A foreign repository with an accessible MediaWiki database
11 *
12 * @ingroup FileRepo
13 */
14 class ForeignDBRepo extends LocalRepo {
15 # Settings
16 var $dbType, $dbServer, $dbUser, $dbPassword, $dbName, $dbFlags,
17 $tablePrefix, $hasSharedCache;
18
19 # Other stuff
20 var $dbConn;
21 var $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
22 var $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
23
24 function __construct( $info ) {
25 parent::__construct( $info );
26 $this->dbType = $info['dbType'];
27 $this->dbServer = $info['dbServer'];
28 $this->dbUser = $info['dbUser'];
29 $this->dbPassword = $info['dbPassword'];
30 $this->dbName = $info['dbName'];
31 $this->dbFlags = $info['dbFlags'];
32 $this->tablePrefix = $info['tablePrefix'];
33 $this->hasSharedCache = $info['hasSharedCache'];
34 }
35
36 function getMasterDB() {
37 if ( !isset( $this->dbConn ) ) {
38 $this->dbConn = DatabaseBase::factory( $this->dbType,
39 array(
40 'host' => $this->dbServer,
41 'user' => $this->dbUser,
42 'password' => $this->dbPassword,
43 'dbname' => $this->dbName,
44 'flags' => $this->dbFlags,
45 'tablePrefix' => $this->tablePrefix
46 )
47 );
48 }
49 return $this->dbConn;
50 }
51
52 function getSlaveDB() {
53 return $this->getMasterDB();
54 }
55
56 function hasSharedCache() {
57 return $this->hasSharedCache;
58 }
59
60 /**
61 * Get a key on the primary cache for this repository.
62 * Returns false if the repository's cache is not accessible at this site.
63 * The parameters are the parts of the key, as for wfMemcKey().
64 * @return bool|mixed
65 */
66 function getSharedCacheKey( /*...*/ ) {
67 if ( $this->hasSharedCache() ) {
68 $args = func_get_args();
69 array_unshift( $args, $this->dbName, $this->tablePrefix );
70 return call_user_func_array( 'wfForeignMemcKey', $args );
71 } else {
72 return false;
73 }
74 }
75
76 function store( $srcPath, $dstZone, $dstRel, $flags = 0 ) {
77 throw new MWException( get_class($this) . ': write operations are not supported' );
78 }
79 function publish( $srcPath, $dstRel, $archiveRel, $flags = 0 ) {
80 throw new MWException( get_class($this) . ': write operations are not supported' );
81 }
82 function deleteBatch( $sourceDestPairs ) {
83 throw new MWException( get_class($this) . ': write operations are not supported' );
84 }
85 }