/** * Load the interwiki, trying first memcached then the DB * * @param string $prefix The interwiki prefix * @return Interwiki|bool Interwiki if $prefix is valid, otherwise false */ protected static function load($prefix) { global $wgInterwikiExpiry; $iwData = array(); if (!Hooks::run('InterwikiLoadPrefix', array($prefix, &$iwData))) { return Interwiki::loadFromArray($iwData); } if (is_array($iwData)) { $iw = Interwiki::loadFromArray($iwData); if ($iw) { return $iw; // handled by hook } } $iwData = ObjectCache::getMainWANInstance()->getWithSetCallback(wfMemcKey('interwiki', $prefix), $wgInterwikiExpiry, function ($oldValue, &$ttl, array &$setOpts) use($prefix) { $dbr = wfGetDB(DB_SLAVE); $setOpts += Database::getCacheSetOptions($dbr); $row = $dbr->selectRow('interwiki', Interwiki::selectFields(), array('iw_prefix' => $prefix), __METHOD__); return $row ? (array) $row : '!NONEXISTENT'; }); if (is_array($iwData)) { return Interwiki::loadFromArray($iwData) ?: false; } return false; }