X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FWikiMap.php;h=90ebc4bc412b9f8c14b7bd4aa0725e19d8fc1ba3;hb=21fb9bb32b82f13a436238a7dca9bac1464baf80;hp=4f3c461699faf148342019f4cd387f6d87e8796b;hpb=24ea37bf927ca32c1bb85adcaa0ea71ee95cce28;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/WikiMap.php b/includes/WikiMap.php index 4f3c461699..90ebc4bc41 100644 --- a/includes/WikiMap.php +++ b/includes/WikiMap.php @@ -21,6 +21,7 @@ */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\DatabaseDomain; /** * Helper tools for dealing with other locally-hosted wikis. @@ -103,7 +104,7 @@ class WikiMap { $path .= '?' . $urlParts['query']; } - $canonicalServer = isset( $urlParts['scheme'] ) ? $urlParts['scheme'] : 'http'; + $canonicalServer = $urlParts['scheme'] ?? 'http'; $canonicalServer .= '://' . $urlParts['host']; return new WikiReference( $canonicalServer, $path ); @@ -239,4 +240,22 @@ class WikiMap { return false; } + + /** + * Get the wiki ID of a database domain + * + * This is like DatabaseDomain::getId() without encoding (for legacy reasons) + * + * @param string|DatabaseDomain $domain + * @return string + */ + public static function getWikiIdFromDomain( $domain ) { + if ( !( $domain instanceof DatabaseDomain ) ) { + $domain = DatabaseDomain::newFromId( $domain ); + } + + return strlen( $domain->getTablePrefix() ) + ? "{$domain->getDatabase()}-{$domain->getTablePrefix()}" + : $domain->getDatabase(); + } }