Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
94.44% covered (success)
94.44%
17 / 18
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CirrusConfigInterwikiResolver
94.44% covered (success)
94.44%
17 / 18
50.00% covered (danger)
50.00%
1 / 2
4.00
0.00% covered (danger)
0.00%
0 / 1
 accepts
80.00% covered (warning)
80.00%
4 / 5
0.00% covered (danger)
0.00%
0 / 1
3.07
 loadMatrix
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace CirrusSearch;
4
5/**
6 * InterwikiResolver suited for custom cirrus config:
7 * - wgCirrusSearchLanguageToWikiMap: a map of language code to wiki db prefixes
8 * - wgCirrusSearchInterwikiSources: a map of cross project interwiki prefixes to wikiId
9 * - wgCirrusSearchWikiToNameMap: a map of language interwiki prefixes to wikiId
10 */
11class CirrusConfigInterwikiResolver extends BaseInterwikiResolver {
12    /**
13     * @param SearchConfig $config
14     * @return bool true if this resolver can run with the specified config
15     */
16    public static function accepts( SearchConfig $config ) {
17        if ( $config->get( 'CirrusSearchInterwikiSources' ) ) {
18            return true;
19        }
20        if ( $config->get( 'CirrusSearchWikiToNameMap' ) ) {
21            return true;
22        }
23        return false;
24    }
25
26    /** @inheritDoc */
27    protected function loadMatrix() {
28        $sisterProjects = $this->config->get( 'CirrusSearchInterwikiSources' ) ?? [];
29        $languageMap = $this->config->get( 'CirrusSearchLanguageToWikiMap' ) ?? [];
30        $crossLanguage = $this->config->get( 'CirrusSearchWikiToNameMap' ) ?? [];
31        $crossLanguage = array_filter( $crossLanguage, function ( $entry ) {
32            return $entry !== $this->config->getWikiId();
33        } );
34        $prefixesByWiki = array_flip( $sisterProjects ) + array_flip( $crossLanguage );
35        return [
36            'sister_projects' => $sisterProjects,
37            'language_map' => $languageMap,
38            'cross_language' => $crossLanguage,
39            'prefixes_by_wiki' => $prefixesByWiki,
40        ];
41    }
42}