Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
HTMLZLanguageSelectField
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 2
20
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
6
 getOptions
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/**
3 * WikiLambda HTMLSelectZLanguageField extends HTMLSelectField
4 *
5 * @file
6 * @ingroup Extensions
7 * @copyright 2020– Abstract Wikipedia team; see AUTHORS.txt
8 * @license MIT
9 */
10
11namespace MediaWiki\Extension\WikiLambda\Fields;
12
13use MediaWiki\Extension\WikiLambda\Registry\ZLangRegistry;
14use MediaWiki\Extension\WikiLambda\WikiLambdaServices;
15use MediaWiki\HTMLForm\Field\HTMLSelectField;
16
17class HTMLZLanguageSelectField extends HTMLSelectField {
18
19    /**
20     * @inheritDoc
21     */
22    public function __construct( $params ) {
23        parent::__construct( $params );
24
25        // Get user language to select best labels for each item
26        $language = $this->mParent->getLanguage();
27        $languageCode = $language->getCode();
28
29        // Get all valid WikiLambda languages: zids, codes and labels
30        $zObjectStore = WikiLambdaServices::getZObjectStore();
31        $languages = $zObjectStore->fetchAllZLanguagesWithLabels( $languageCode );
32        $languageZid = ZLangRegistry::singleton()->getLanguageZidFromCode( $languageCode, true );
33
34        // Create the options array with all existing ZLanguages
35        foreach ( $languages as $row ) {
36            $langCode = htmlspecialchars( $row->wlzlangs_language ?? '' );
37            $langZid = htmlspecialchars( $row->wlzl_zobject_zid ?? '' );
38            $info = $this->msg( 'parentheses' )
39                ->rawParams( $language->commaList( [ $langCode, $langZid ] ) )
40                ->parse();
41            $label = $row->wlzl_label . ' ' . $info;
42            $this->mParams[ 'options' ][ $label ] = $row->wlzl_zobject_zid;
43        }
44
45        $this->mParams[ 'default' ] ??= $languageZid;
46    }
47
48    /**
49     * @inheritDoc
50     */
51    public function getOptions() {
52        if ( $this->mOptions === null ) {
53            return [];
54        }
55
56        return parent::getOptions();
57    }
58}