]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - includes/filerepo/ForeignDBRepo.php
MediaWiki 1.17.4
[autoinstallsdev/mediawiki.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::newFromType( $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          */
65         function getSharedCacheKey( /*...*/ ) {
66                 if ( $this->hasSharedCache() ) {
67                         $args = func_get_args();
68                         array_unshift( $args, $this->dbName, $this->tablePrefix );
69                         return call_user_func_array( 'wfForeignMemcKey', $args );
70                 } else {
71                         return false;
72                 }
73         }
74
75         function store( $srcPath, $dstZone, $dstRel, $flags = 0 ) {
76                 throw new MWException( get_class($this) . ': write operations are not supported' );
77         }
78         function publish( $srcPath, $dstRel, $archiveRel, $flags = 0 ) {
79                 throw new MWException( get_class($this) . ': write operations are not supported' );
80         }
81         function deleteBatch( $sourceDestPairs ) {
82                 throw new MWException( get_class($this) . ': write operations are not supported' );
83         }
84 }