46 private $interwikiMap;
50 array $interwikiMap =
null
52 $this->siteLookup = $siteLookup;
53 $this->interwikiMap = $interwikiMap;
64 return array_key_exists( $prefix, $this->getInterwikiMap() );
74 public function fetch( $prefix ) {
75 if ( $prefix ==
'' ) {
84 return $this->interwikiMap[$prefix];
95 foreach ( $this->getInterwikiMap() as $interwikiId => $interwiki ) {
96 if ( $local ===
null || $interwiki->isLocal() === $local ) {
98 'iw_prefix' => $interwikiId,
99 'iw_url' => $interwiki->getURL(),
100 'iw_api' => $interwiki->getAPI(),
101 'iw_wikiid' => $interwiki->getWikiID(),
102 'iw_local' => $interwiki->isLocal(),
103 'iw_trans' => $interwiki->isTranscludable(),
116 if ( !isset( $this->interwikiMap[$prefix] ) ) {
119 $globalId = $this->interwikiMap[$prefix]->getWikiID();
120 unset( $this->interwikiMap[$prefix] );
123 $site = $this->siteLookup->getSites()->getSite( $globalId );
124 $interwikis = $this->getSiteInterwikis( $site );
125 $this->interwikiMap = array_merge( $this->interwikiMap, [ $interwikis[$prefix] ] );
131 private function loadInterwikiMap() {
133 $siteList = $this->siteLookup->getSites();
134 foreach ( $siteList as $site ) {
135 $interwikis = $this->getSiteInterwikis( $site );
136 $interwikiMap = array_merge( $interwikiMap, $interwikis );
138 $this->interwikiMap = $interwikiMap;
146 private function getInterwikiMap() {
147 if ( $this->interwikiMap ===
null ) {
148 $this->loadInterwikiMap();
150 return $this->interwikiMap;
159 private function getSiteInterwikis(
Site $site ) {
162 $path = $site->getFileUrl(
'api.php' );
Value object for representing interwiki records.
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)
Returns the full URL for the given page on the site.
getInterwikiIds()
Returns the interwiki link identifiers that can be used for this site.