44 private $interwikiMap;
48 array $interwikiMap =
null
50 $this->siteLookup = $siteLookup;
51 $this->interwikiMap = $interwikiMap;
62 return array_key_exists( $prefix, $this->getInterwikiMap() );
72 public function fetch( $prefix ) {
73 if ( $prefix ==
'' ) {
82 return $this->interwikiMap[$prefix];
93 foreach ( $this->getInterwikiMap() as $interwikiId => $interwiki ) {
94 if ( $local ===
null || $interwiki->isLocal() === $local ) {
96 'iw_prefix' => $interwikiId,
97 'iw_url' => $interwiki->getURL(),
98 'iw_api' => $interwiki->getAPI(),
99 'iw_wikiid' => $interwiki->getWikiID(),
100 'iw_local' => $interwiki->isLocal(),
101 'iw_trans' => $interwiki->isTranscludable(),
114 if ( !isset( $this->interwikiMap[$prefix] ) ) {
117 $globalId = $this->interwikiMap[$prefix]->getWikiID();
118 unset( $this->interwikiMap[$prefix] );
121 $site = $this->siteLookup->getSites()->getSite( $globalId );
122 $interwikis = $this->getSiteInterwikis( $site );
123 $this->interwikiMap = array_merge( $this->interwikiMap, [ $interwikis[$prefix] ] );
129 private function loadInterwikiMap() {
131 $siteList = $this->siteLookup->getSites();
132 foreach ( $siteList as $site ) {
133 $interwikis = $this->getSiteInterwikis( $site );
134 $interwikiMap = array_merge( $interwikiMap, $interwikis );
136 $this->interwikiMap = $interwikiMap;
144 private function getInterwikiMap() {
145 if ( $this->interwikiMap ===
null ) {
146 $this->loadInterwikiMap();
148 return $this->interwikiMap;
157 private function getSiteInterwikis(
Site $site ) {
160 $path = $site->getFileUrl(
'api.php' );
An interwiki record value object.
Represents a single site.
getSource()
Returns the source of the site data (ie 'local', 'wikidata', 'my-magical-repo').
getGlobalId()
Returns the global site identifier (ie enwiktionary).
getPageUrl( $pageName=false)
Get the full URL for the given page on the site.
getInterwikiIds()
Returns the interwiki link identifiers that can be used for this site.
Interface to retreive Site objects, for implementation by service classes.