X-Git-Url: http://git.cyclocoop.org/%7B%7B%20url_for%28%27admin_vote_del%27%2C%20idvote=vote.voteid%29%20%7D%7D?a=blobdiff_plain;f=includes%2FWikiMap.php;h=f2641f40f4a2738947f2e9fc3e4a27e2cec6f4cf;hb=72304b95297e8cb4b2627d947ae5440c667ac879;hp=8b000f2063b283aef4b28664211f498c9b922ff1;hpb=3f815798a15af8ca73198b9b5d7af1b29e703a41;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/WikiMap.php b/includes/WikiMap.php index 8b000f2063..f2641f40f4 100644 --- a/includes/WikiMap.php +++ b/includes/WikiMap.php @@ -221,19 +221,29 @@ class WikiMap { * @since 1.30 */ public static function getWikiFromUrl( $url ) { + global $wgCanonicalServer; + + if ( strpos( $url, "$wgCanonicalServer/" ) === 0 ) { + // Optimisation: Handle the the common case. + // (Duplicates self::getCanonicalServerInfoForAllWikis) + return self::getWikiIdFromDbDomain( self::getCurrentWikiDbDomain() ); + } + $urlPartsCheck = wfParseUrl( $url ); if ( $urlPartsCheck === false ) { return false; } - $urlPartsCheck = array_intersect_key( $urlPartsCheck, [ 'host' => 1, 'port' => 1 ] ); + static $relevantKeys = [ 'host' => 1, 'port' => 1 ]; + $urlPartsCheck = array_intersect_key( $urlPartsCheck, $relevantKeys ); + foreach ( self::getCanonicalServerInfoForAllWikis() as $wikiId => $info ) { $urlParts = $info['parts']; if ( $urlParts === false ) { continue; // sanity } - $urlParts = array_intersect_key( $urlParts, [ 'host' => 1, 'port' => 1 ] ); + $urlParts = array_intersect_key( $urlParts, $relevantKeys ); if ( $urlParts == $urlPartsCheck ) { return $wikiId; } @@ -276,15 +286,6 @@ class WikiMap { : (string)$domain->getDatabase(); } - /** - * @param string $domain - * @return string - * @deprecated Since 1.33; use getWikiIdFromDbDomain() - */ - public static function getWikiIdFromDomain( $domain ) { - return self::getWikiIdFromDbDomain( $domain ); - } - /** * @return DatabaseDomain Database domain of the current wiki * @since 1.33 @@ -301,7 +302,7 @@ class WikiMap { * @since 1.33 */ public static function isCurrentWikiDbDomain( $domain ) { - return self::getCurrentWikiDbDomain()->equals( DatabaseDomain::newFromId( $domain ) ); + return self::getCurrentWikiDbDomain()->equals( $domain ); } /**