[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * A foreign repository with an accessible MediaWiki database. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * http://www.gnu.org/copyleft/gpl.html 19 * 20 * @file 21 * @ingroup FileRepo 22 */ 23 24 /** 25 * A foreign repository with an accessible MediaWiki database 26 * 27 * @ingroup FileRepo 28 */ 29 class ForeignDBRepo extends LocalRepo { 30 /** @var string */ 31 protected $dbType; 32 33 /** @var string */ 34 protected $dbServer; 35 36 /** @var string */ 37 protected $dbUser; 38 39 /** @var string */ 40 protected $dbPassword; 41 42 /** @var string */ 43 protected $dbName; 44 45 /** @var string */ 46 protected $dbFlags; 47 48 /** @var string */ 49 protected $tablePrefix; 50 51 /** @var bool */ 52 protected $hasSharedCache; 53 54 # Other stuff 55 protected $dbConn; 56 protected $fileFactory = array( 'ForeignDBFile', 'newFromTitle' ); 57 protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' ); 58 59 /** 60 * @param array|null $info 61 */ 62 function __construct( $info ) { 63 parent::__construct( $info ); 64 $this->dbType = $info['dbType']; 65 $this->dbServer = $info['dbServer']; 66 $this->dbUser = $info['dbUser']; 67 $this->dbPassword = $info['dbPassword']; 68 $this->dbName = $info['dbName']; 69 $this->dbFlags = $info['dbFlags']; 70 $this->tablePrefix = $info['tablePrefix']; 71 $this->hasSharedCache = $info['hasSharedCache']; 72 } 73 74 /** 75 * @return DatabaseBase 76 */ 77 function getMasterDB() { 78 if ( !isset( $this->dbConn ) ) { 79 $this->dbConn = DatabaseBase::factory( $this->dbType, 80 array( 81 'host' => $this->dbServer, 82 'user' => $this->dbUser, 83 'password' => $this->dbPassword, 84 'dbname' => $this->dbName, 85 'flags' => $this->dbFlags, 86 'tablePrefix' => $this->tablePrefix, 87 'foreign' => true, 88 ) 89 ); 90 } 91 92 return $this->dbConn; 93 } 94 95 /** 96 * @return DatabaseBase 97 */ 98 function getSlaveDB() { 99 return $this->getMasterDB(); 100 } 101 102 /** 103 * @return bool 104 */ 105 function hasSharedCache() { 106 return $this->hasSharedCache; 107 } 108 109 /** 110 * Get a key on the primary cache for this repository. 111 * Returns false if the repository's cache is not accessible at this site. 112 * The parameters are the parts of the key, as for wfMemcKey(). 113 * @return bool|mixed 114 */ 115 function getSharedCacheKey( /*...*/ ) { 116 if ( $this->hasSharedCache() ) { 117 $args = func_get_args(); 118 array_unshift( $args, $this->dbName, $this->tablePrefix ); 119 120 return call_user_func_array( 'wfForeignMemcKey', $args ); 121 } else { 122 return false; 123 } 124 } 125 126 protected function assertWritableRepo() { 127 throw new MWException( get_class( $this ) . ': write operations are not supported.' ); 128 } 129 130 /** 131 * Return information about the repository. 132 * 133 * @return array 134 * @since 1.22 135 */ 136 function getInfo() { 137 return FileRepo::getInfo(); 138 } 139 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |