[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/filerepo/ -> ForeignDBViaLBRepo.php (source)

   1  <?php
   2  /**
   3   * A foreign repository with a MediaWiki database accessible via the configured LBFactory.
   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 a MediaWiki database accessible via the configured LBFactory
  26   *
  27   * @ingroup FileRepo
  28   */
  29  class ForeignDBViaLBRepo extends LocalRepo {
  30      /** @var string */
  31      protected $wiki;
  32  
  33      /** @var string */
  34      protected $dbName;
  35  
  36      /** @var string */
  37      protected $tablePrefix;
  38  
  39      /** @var array */
  40      protected $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
  41  
  42      /** @var array */
  43      protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
  44  
  45      /**
  46       * @param array|null $info
  47       */
  48  	function __construct( $info ) {
  49          parent::__construct( $info );
  50          $this->wiki = $info['wiki'];
  51          list( $this->dbName, $this->tablePrefix ) = wfSplitWikiID( $this->wiki );
  52          $this->hasSharedCache = $info['hasSharedCache'];
  53      }
  54  
  55      /**
  56       * @return DatabaseBase
  57       */
  58  	function getMasterDB() {
  59          return wfGetDB( DB_MASTER, array(), $this->wiki );
  60      }
  61  
  62      /**
  63       * @return DatabaseBase
  64       */
  65  	function getSlaveDB() {
  66          return wfGetDB( DB_SLAVE, array(), $this->wiki );
  67      }
  68  
  69  	function hasSharedCache() {
  70          return $this->hasSharedCache;
  71      }
  72  
  73      /**
  74       * Get a key on the primary cache for this repository.
  75       * Returns false if the repository's cache is not accessible at this site.
  76       * The parameters are the parts of the key, as for wfMemcKey().
  77       * @return bool|string
  78       */
  79  	function getSharedCacheKey( /*...*/ ) {
  80          if ( $this->hasSharedCache() ) {
  81              $args = func_get_args();
  82              array_unshift( $args, $this->wiki );
  83  
  84              return implode( ':', $args );
  85          } else {
  86              return false;
  87          }
  88      }
  89  
  90  	protected function assertWritableRepo() {
  91          throw new MWException( get_class( $this ) . ': write operations are not supported.' );
  92      }
  93  
  94  	public function getInfo() {
  95          return FileRepo::getInfo();
  96      }
  97  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1