X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Finterwiki%2FClassicInterwikiLookup.php;h=7a8e64f5cea5104e7993b73c72fd3f080f840ef0;hb=9c7f6734c397a954b8eaa5ec73876f2b4bf92afb;hp=eada9d40cad3f6c713e93b93b1f8b28dda622f7a;hpb=e9ed100496b388a31ac2af0deabcc9754984d09d;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/interwiki/ClassicInterwikiLookup.php b/includes/interwiki/ClassicInterwikiLookup.php index eada9d40ca..7a8e64f5ce 100644 --- a/includes/interwiki/ClassicInterwikiLookup.php +++ b/includes/interwiki/ClassicInterwikiLookup.php @@ -27,6 +27,7 @@ use Cdb\Reader as CdbReader; use Hooks; use Interwiki; use Language; +use WikiMap; use MapCacheLRU; use WANObjectCache; use Wikimedia\Rdbms\Database; @@ -53,7 +54,7 @@ class ClassicInterwikiLookup implements InterwikiLookup { /** * @var Language */ - private $contentLanguage; + private $contLang; /** * @var WANObjectCache @@ -91,7 +92,7 @@ class ClassicInterwikiLookup implements InterwikiLookup { private $thisSite = null; /** - * @param Language $contentLanguage Language object used to convert prefixes to lower case + * @param Language $contLang Language object used to convert prefixes to lower case * @param WANObjectCache $objectCache Cache for interwiki info retrieved from the database * @param int $objectCacheExpiry Expiry time for $objectCache, in seconds * @param bool|array|string $cdbData The path of a CDB file, or @@ -104,7 +105,7 @@ class ClassicInterwikiLookup implements InterwikiLookup { * @param string $fallbackSite The code to assume for the local site, */ function __construct( - Language $contentLanguage, + Language $contLang, WANObjectCache $objectCache, $objectCacheExpiry, $cdbData, @@ -113,7 +114,7 @@ class ClassicInterwikiLookup implements InterwikiLookup { ) { $this->localCache = new MapCacheLRU( 100 ); - $this->contentLanguage = $contentLanguage; + $this->contLang = $contLang; $this->objectCache = $objectCache; $this->objectCacheExpiry = $objectCacheExpiry; $this->cdbData = $cdbData; @@ -144,7 +145,7 @@ class ClassicInterwikiLookup implements InterwikiLookup { return null; } - $prefix = $this->contentLanguage->lc( $prefix ); + $prefix = $this->contLang->lc( $prefix ); if ( $this->localCache->has( $prefix ) ) { return $this->localCache->get( $prefix ); } @@ -212,17 +213,20 @@ class ClassicInterwikiLookup implements InterwikiLookup { */ private function getInterwikiCacheEntry( $prefix ) { wfDebug( __METHOD__ . "( $prefix )\n" ); + + $wikiId = WikiMap::getWikiIdFromDbDomain( WikiMap::getCurrentWikiDbDomain() ); + $value = false; try { // Resolve site name if ( $this->interwikiScopes >= 3 && !$this->thisSite ) { - $this->thisSite = $this->getCacheValue( '__sites:' . wfWikiID() ); + $this->thisSite = $this->getCacheValue( '__sites:' . $wikiId ); if ( $this->thisSite == '' ) { $this->thisSite = $this->fallbackSite; } } - $value = $this->getCacheValue( wfWikiID() . ':' . $prefix ); + $value = $this->getCacheValue( $wikiId . ':' . $prefix ); // Site level if ( $value == '' && $this->interwikiScopes >= 3 ) { $value = $this->getCacheValue( "_{$this->thisSite}:{$prefix}" ); @@ -279,10 +283,11 @@ class ClassicInterwikiLookup implements InterwikiLookup { } } + $fname = __METHOD__; $iwData = $this->objectCache->getWithSetCallback( $this->objectCache->makeKey( 'interwiki', $prefix ), $this->objectCacheExpiry, - function ( $oldValue, &$ttl, array &$setOpts ) use ( $prefix ) { + function ( $oldValue, &$ttl, array &$setOpts ) use ( $prefix, $fname ) { $dbr = wfGetDB( DB_REPLICA ); // TODO: inject LoadBalancer $setOpts += Database::getCacheSetOptions( $dbr ); @@ -291,7 +296,7 @@ class ClassicInterwikiLookup implements InterwikiLookup { 'interwiki', self::selectFields(), [ 'iw_prefix' => $prefix ], - __METHOD__ + $fname ); return $row ? (array)$row : '!NONEXISTENT'; @@ -333,11 +338,14 @@ class ClassicInterwikiLookup implements InterwikiLookup { */ private function getAllPrefixesCached( $local ) { wfDebug( __METHOD__ . "()\n" ); + + $wikiId = WikiMap::getWikiIdFromDbDomain( WikiMap::getCurrentWikiDbDomain() ); + $data = []; try { /* Resolve site name */ if ( $this->interwikiScopes >= 3 && !$this->thisSite ) { - $site = $this->getCacheValue( '__sites:' . wfWikiID() ); + $site = $this->getCacheValue( '__sites:' . $wikiId ); if ( $site == '' ) { $this->thisSite = $this->fallbackSite; @@ -356,7 +364,7 @@ class ClassicInterwikiLookup implements InterwikiLookup { if ( $this->interwikiScopes >= 3 ) { $sources[] = '_' . $this->thisSite; } - $sources[] = wfWikiID(); + $sources[] = $wikiId; foreach ( $sources as $source ) { $list = $this->getCacheValue( '__list:' . $source );