Call Linker methods statically
[lhc/web/wiklou.git] / includes / WikiMap.php
index ec0a4ab..35587f2 100644 (file)
@@ -17,15 +17,14 @@ class WikiMap {
                $wgConf->loadFullData();
 
                list( $major, $minor ) = $wgConf->siteFromDB( $wikiID );
-               if( isset( $major ) ) {
-                       $server = $wgConf->get( 'wgServer', $wikiID, $major,
-                               array( 'lang' => $minor, 'site' => $major ) );
-                       $path = $wgConf->get( 'wgArticlePath', $wikiID, $major,
-                               array( 'lang' => $minor, 'site' => $major ) );
-                       return new WikiReference( $major, $minor, $server, $path );
-               } else {
+               if( $major === null ) {
                        return null;
                }
+               $server = $wgConf->get( 'wgCanonicalServer', $wikiID, $major,
+                       array( 'lang' => $minor, 'site' => $major ) );
+               $path = $wgConf->get( 'wgArticlePath', $wikiID, $major,
+                       array( 'lang' => $minor, 'site' => $major ) );
+               return new WikiReference( $major, $minor, $server, $path );
        }
        
        /**
@@ -129,11 +128,13 @@ class WikiReference {
         */
        public function getDisplayName() {
                $url = $this->getUrl( '' );
-               $url = preg_replace( '!^https?://!', '', $url );
-               $url = preg_replace( '!/index\.php(\?title=|/)$!', '/', $url );
-               $url = preg_replace( '!/wiki/$!', '/', $url );
-               $url = preg_replace( '!/$!', '', $url );
-               return $url;
+               $parsed = wfParseUrl( $url );
+               if ( $parsed ) {
+                       return $parsed['host'];
+               } else {
+                       // Invalid URL. There's no sane thing to do here, so just return it
+                       return $url;
+               }
        }
 
        /**