Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3namespace CirrusSearch;
4
5/**
6 * Retrieve Interwiki information.
7 * Designed to support CirrusSearch usecase:
8 * - getSisterProjectPrefixes(): same lang different project
9 * - getSameProjectWikiByLang(): same project different lang
10 * - getInterwikiPrefix(): retrieve the interwiki prefix from a wikiId
11 */
12interface InterwikiResolver {
13    /** @const string service name */
14    public const SERVICE = 'CirrusSearchInterwikiresolver';
15
16    /**
17     * @return string[] of wikiIds indexed by interwiki prefix
18     */
19    public function getSisterProjectPrefixes();
20
21    /**
22     * @return SearchConfig[] configs of sister projects indexed by interwiki prefix
23     */
24    public function getSisterProjectConfigs();
25
26    /**
27     * @param string $wikiId
28     * @return string|null the interwiki identified for this $wikiId or null if none found
29     */
30    public function getInterwikiPrefix( $wikiId );
31
32    /**
33     * Determine the proper interwiki_prefix <=> wikiId pair for a given language code.
34     * Most the time the language code is equals to interwiki prefix but in
35     * some rarer cases it's not true. Always use the interwiki prefix returned by this function
36     * to generate crosslanguage interwiki links.
37     *
38     * @param string $lang
39     * @return string[] a two elt array ['wikiId', 'iwPrefix'] or [] if none found
40     */
41    public function getSameProjectWikiByLang( $lang );
42
43    /**
44     * Fetch the config of the wiki identified by this language code
45     *
46     * @param string $lang
47     * @return SearchConfig[] zero or one element array: [] or [ interwiki => SearchConfig ]
48     */
49    public function getSameProjectConfigByLang( $lang );
50}