Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 26
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
ApiLanguageSearch
0.00% covered (danger)
0.00%
0 / 26
0.00% covered (danger)
0.00%
0 / 5
30
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 execute
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 getAllowedParams
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
2
 getExamplesMessages
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
 getHelpUrls
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Api;
5
6use MediaWiki\Language\LanguageNameSearch;
7use Wikimedia\ParamValidator\ParamValidator;
8
9/**
10 * Language name search API
11 *
12 * Copyright (C) 2012 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris,
13 * Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other
14 * contributors.
15 *
16 * @license GPL-2.0-or-later
17 * @ingroup API
18 */
19class ApiLanguageSearch extends ApiBase {
20
21    public function __construct(
22        ApiMain $main,
23        string $action,
24        private readonly LanguageNameSearch $languageNameSearch,
25    ) {
26        parent::__construct( $main, $action );
27    }
28
29    /**
30     * @inheritDoc
31     */
32    public function execute() {
33        $params = $this->extractRequestParams();
34        $search = $params['search'];
35        $typos = $params['typos'];
36        $searches = $this->languageNameSearch->doSearch( $search, $typos, $this->getLanguage()->getCode() );
37        $result = $this->getResult();
38        $result->addValue( null, $this->getModuleName(), $searches );
39    }
40
41    /**
42     * @inheritDoc
43     */
44    public function getAllowedParams(): array {
45        return [
46            'search' => [
47                ParamValidator::PARAM_REQUIRED => true
48            ],
49            'typos' => [
50                ParamValidator::PARAM_REQUIRED => false,
51                ParamValidator::PARAM_TYPE => 'integer',
52                ParamValidator::PARAM_DEFAULT => 1
53            ],
54        ];
55    }
56
57    /**
58     * @inheritDoc
59     */
60    protected function getExamplesMessages(): array {
61        return [
62            'action=languagesearch&search=Te'
63                => 'apihelp-languagesearch-example-1',
64            'action=languagesearch&search=ഫി'
65                => 'apihelp-languagesearch-example-2',
66            'action=languagesearch&search=ഫി&typos=1'
67                => 'apihelp-languagesearch-example-3',
68        ];
69    }
70
71    /**
72     * @inheritDoc
73     */
74    public function getHelpUrls(): string {
75        return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Languagesearch';
76    }
77}