MediaWiki master
MediaWikiSite.php
Go to the documentation of this file.
1<?php
21namespace MediaWiki\Site;
22
24use RuntimeException;
25
35class MediaWikiSite extends Site {
37 public const PATH_FILE = 'file_path';
39 public const PATH_PAGE = 'page_path';
40
45 public function __construct( $type = self::TYPE_MEDIAWIKI ) {
46 parent::__construct( $type );
47 }
48
56 public function toDBKey( $title ) {
57 return str_replace( ' ', '_', $title );
58 }
59
85 public function normalizePageName( $pageName, $followRedirect = MediaWikiPageNameNormalizer::FOLLOW_REDIRECT ) {
86 if ( defined( 'MW_PHPUNIT_TEST' ) || defined( 'MW_DEV_ENV' ) ) {
87 // If the code is under test, don't call out to other sites, just
88 // normalize locally.
89 // Note: this may cause results to be inconsistent with the actual
90 // normalization used by the respective remote site!
91
92 $t = Title::newFromText( $pageName );
93 return $t->getPrefixedText();
94 } else {
95 static $mediaWikiPageNameNormalizer = null;
96 $mediaWikiPageNameNormalizer ??= new MediaWikiPageNameNormalizer();
97
98 return $mediaWikiPageNameNormalizer->normalizePageName(
99 $pageName,
100 $this->getFileUrl( 'api.php' ),
101 $followRedirect
102 );
103 }
104 }
105
116 public function getLinkPathType() {
117 return self::PATH_PAGE;
118 }
119
126 public function getRelativePagePath() {
127 return parse_url( $this->getPath( self::PATH_PAGE ), PHP_URL_PATH );
128 }
129
136 public function getRelativeFilePath() {
137 return parse_url( $this->getPath( self::PATH_FILE ), PHP_URL_PATH );
138 }
139
146 public function setPagePath( $path ) {
147 $this->setPath( self::PATH_PAGE, $path );
148 }
149
156 public function setFilePath( $path ) {
157 $this->setPath( self::PATH_FILE, $path );
158 }
159
173 public function getPageUrl( $pageName = false ) {
174 $url = $this->getLinkPath();
175
176 if ( $url === null ) {
177 return null;
178 }
179
180 if ( $pageName !== false ) {
181 $pageName = $this->toDBKey( trim( $pageName ) );
182 $url = str_replace( '$1', wfUrlencode( $pageName ), $url );
183 }
184
185 return $url;
186 }
187
200 public function getFileUrl( $path = false ) {
201 $filePath = $this->getPath( self::PATH_FILE );
202 if ( $filePath === null ) {
203 throw new RuntimeException( "getFileUrl called for {$this->getGlobalId()} while PATH_FILE is unset" );
204 }
205
206 if ( $path !== false ) {
207 $filePath = str_replace( '$1', $path, $filePath );
208 } else {
209 wfDeprecatedMsg( __METHOD__ . ': omitting $path is deprecated', '1.40' );
210 }
211
212 return $filePath;
213 }
214}
215
217class_alias( MediaWikiSite::class, 'MediaWikiSite' );
wfUrlencode( $s)
We want some things to be included as literal characters in our title URLs for prettiness,...
wfDeprecatedMsg( $msg, $version=false, $component=false, $callerOffset=2)
Log a deprecation warning with arbitrary message text.
Service for normalizing a page name via a MediaWiki action API.
Class representing a MediaWiki site.
setPagePath( $path)
Set the article path.
getRelativeFilePath()
Get the script script, as relative path only (without server).
__construct( $type=self::TYPE_MEDIAWIKI)
normalizePageName( $pageName, $followRedirect=MediaWikiPageNameNormalizer::FOLLOW_REDIRECT)
Get the normalized form of the given page title.
getLinkPathType()
Get the constant for getting or setting the script path.
getRelativePagePath()
Get the article path, as relative path only (without server).
toDBKey( $title)
Get the database form of the given title.
const PATH_FILE
The script path of a site, e.g.
setFilePath( $path)
Set the script path.
const PATH_PAGE
The article path of a site, e.g.
getFileUrl( $path=false)
Get the full URL to an entry point under a wiki's script path.
getPageUrl( $pageName=false)
Get the full URL for the given page on the site.
Represents a single site.
Definition Site.php:36
getLinkPath()
Returns the path used to construct links with or false if there is no such path.
Definition Site.php:310
setPath( $pathType, string $fullUrl)
Set the path used to construct links with.
Definition Site.php:559
getPath( $pathType)
Returns the path of the provided type or null if there is no such path.
Definition Site.php:572
Represents a title within MediaWiki.
Definition Title.php:78