MediaWiki  master
MediaWikiSite.php
Go to the documentation of this file.
1 <?php
2 
4 
38 class MediaWikiSite extends Site {
39  const PATH_FILE = 'file_path';
40  const PATH_PAGE = 'page_path';
41 
47  public function __construct( $type = self::TYPE_MEDIAWIKI ) {
48  parent::__construct( $type );
49  }
50 
60  public function toDBKey( $title ) {
61  return str_replace( ' ', '_', $title );
62  }
63 
88  public function normalizePageName( $pageName ) {
89  if ( defined( 'MW_PHPUNIT_TEST' ) ) {
90  // If the code is under test, don't call out to other sites, just
91  // normalize locally.
92  // Note: this may cause results to be inconsistent with the actual
93  // normalization used by the respective remote site!
94 
95  $t = Title::newFromText( $pageName );
96  return $t->getPrefixedText();
97  } else {
98  static $mediaWikiPageNameNormalizer = null;
99 
100  if ( $mediaWikiPageNameNormalizer === null ) {
101  $mediaWikiPageNameNormalizer = new MediaWikiPageNameNormalizer();
102  }
103 
104  return $mediaWikiPageNameNormalizer->normalizePageName(
105  $pageName,
106  $this->getFileUrl( 'api.php' )
107  );
108  }
109  }
110 
119  public function getLinkPathType() {
120  return self::PATH_PAGE;
121  }
122 
130  public function getRelativePagePath() {
131  return parse_url( $this->getPath( self::PATH_PAGE ), PHP_URL_PATH );
132  }
133 
141  public function getRelativeFilePath() {
142  return parse_url( $this->getPath( self::PATH_FILE ), PHP_URL_PATH );
143  }
144 
152  public function setPagePath( $path ) {
153  $this->setPath( self::PATH_PAGE, $path );
154  }
155 
163  public function setFilePath( $path ) {
164  $this->setPath( self::PATH_FILE, $path );
165  }
166 
181  public function getPageUrl( $pageName = false ) {
182  $url = $this->getLinkPath();
183 
184  if ( $url === null ) {
185  return null;
186  }
187 
188  if ( $pageName !== false ) {
189  $pageName = $this->toDBKey( trim( $pageName ) );
190  $url = str_replace( '$1', wfUrlencode( $pageName ), $url );
191  }
192 
193  return $url;
194  }
195 
207  public function getFileUrl( $path = false ) {
208  $filePath = $this->getPath( self::PATH_FILE );
209 
210  if ( $filePath !== false ) {
211  $filePath = str_replace( '$1', $path, $filePath );
212  }
213 
214  return $filePath;
215  }
216 }
getRelativePagePath()
Returns the relative page path.
getFileUrl( $path=false)
Returns the full file path (ie site url + relative file path).
setPagePath( $path)
Sets the relative page path.
setPath( $pathType, $fullUrl)
Sets the path used to construct links with.
Definition: Site.php:588
wfUrlencode( $s)
We want some things to be included as literal characters in our title URLs for prettiness, which urlencode encodes by default.
getRelativeFilePath()
Returns the relative file path.
normalizePageName( $pageName)
Returns the normalized form of the given page title, using the normalization rules of the given site...
Service for normalizing a page name using a MediaWiki api.
getPath( $pathType)
Returns the path of the provided type or false if there is no such path.
Definition: Site.php:609
string $type
Definition: Site.php:63
getLinkPath()
Returns the path used to construct links with or false if there is no such path.
Definition: Site.php:334
Definition: Site.php:29
toDBKey( $title)
Returns the database form of the given title.
getPageUrl( $pageName=false)
setFilePath( $path)
Sets the relative file path.
static newFromText( $text, $defaultNamespace=NS_MAIN)
Create a new Title from text, such as what one would find in a link.
Definition: Title.php:317
__construct( $type=self::TYPE_MEDIAWIKI)