Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
HTMLZTypeSelectField
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 2
30
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
 getOptions
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/**
3 * WikiLambda HTMLSelectZTypeField 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\Context\RequestContext;
14use MediaWiki\Extension\WikiLambda\WikiLambdaServices;
15use MediaWiki\HTMLForm\Field\HTMLSelectField;
16use MediaWiki\HTMLForm\HTMLForm;
17
18class HTMLZTypeSelectField extends HTMLSelectField {
19
20    /**
21     * @inheritDoc
22     */
23    public function __construct( $params ) {
24        parent::__construct( $params );
25
26        // Get user language to select best labels for each item
27        $languageCode = ( $this->mParent instanceof HTMLForm ) ?
28            $this->mParent->getLanguage()->getCode() :
29            RequestContext::getMain()->getLanguage()->getCode();
30
31        // Get all valid WikiLambda types with instances: zids and labels
32        $zObjectStore = WikiLambdaServices::getZObjectStore();
33        $types = $zObjectStore->fetchAllInstancedTypesWithLabels( $languageCode ) ?? [];
34
35        // Create the options array with all existing ZTypes
36        foreach ( $types as $row ) {
37            $typeZid = htmlspecialchars( $row->wlzl_zobject_zid ?? '' );
38            $info = $this->msg( 'parentheses' )->rawParams( $typeZid )->parse();
39            $label = $row->wlzl_label . ' ' . $info;
40            $this->mParams[ 'options' ][ $label ] = $row->wlzl_zobject_zid;
41        }
42    }
43
44    /**
45     * @inheritDoc
46     */
47    public function getOptions() {
48        if ( $this->mOptions === null ) {
49            return [];
50        }
51
52        return parent::getOptions();
53    }
54
55}