Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 46
0.00% covered (danger)
0.00%
0 / 9
CRAP
0.00% covered (danger)
0.00%
0 / 1
DatabaseForm
0.00% covered (danger)
0.00%
0 / 46
0.00% covered (danger)
0.00%
0 / 9
132
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVar
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setVar
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTextBox
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
6
 getPasswordBox
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
6
 getCheckBox
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
2
 getRadioSet
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 setVarsFromRequest
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Installer;
4
5/**
6 * @internal
7 */
8abstract class DatabaseForm {
9    protected WebInstaller $webInstaller;
10    protected DatabaseInstaller $dbInstaller;
11
12    public function __construct( WebInstaller $webInstaller, DatabaseInstaller $dbInstaller ) {
13        $this->webInstaller = $webInstaller;
14        $this->dbInstaller = $dbInstaller;
15    }
16
17    /**
18     * Get a variable, taking local defaults into account.
19     * @param string $var
20     * @param mixed|null $default
21     * @return mixed
22     */
23    protected function getVar( $var, $default = null ) {
24        return $this->dbInstaller->getVar( $var, $default );
25    }
26
27    /**
28     * Set a variable
29     * @param string $name
30     * @param mixed $value
31     */
32    protected function setVar( $name, $value ) {
33        $this->dbInstaller->setVar( $name, $value );
34    }
35
36    /**
37     * Return the internal name, e.g. 'mysql', or 'sqlite'.
38     * @return string
39     */
40    protected function getName() {
41        return $this->dbInstaller->getName();
42    }
43
44    /**
45     * Get a labelled text box to configure a local variable.
46     *
47     * @param string $var
48     * @param string $label
49     * @param array $attribs
50     * @param string $helpData HTML
51     * @return string HTML
52     * @return-taint escaped
53     */
54    protected function getTextBox( $var, $label, $attribs = [], $helpData = "" ) {
55        $name = $this->getName() . '_' . $var;
56        $value = $this->getVar( $var );
57        if ( !isset( $attribs ) ) {
58            $attribs = [];
59        }
60
61        return $this->webInstaller->getTextBox( [
62            'var' => $var,
63            'label' => $label,
64            'attribs' => $attribs,
65            'controlName' => $name,
66            'value' => $value,
67            'help' => $helpData
68        ] );
69    }
70
71    /**
72     * Get a labelled password box to configure a local variable.
73     * Implements password hiding.
74     *
75     * @param string $var
76     * @param string $label
77     * @param array $attribs
78     * @param string $helpData HTML
79     * @return string HTML
80     * @return-taint escaped
81     */
82    protected function getPasswordBox( $var, $label, $attribs = [], $helpData = "" ) {
83        $name = $this->getName() . '_' . $var;
84        $value = $this->getVar( $var );
85        if ( !isset( $attribs ) ) {
86            $attribs = [];
87        }
88
89        return $this->webInstaller->getPasswordBox( [
90            'var' => $var,
91            'label' => $label,
92            'attribs' => $attribs,
93            'controlName' => $name,
94            'value' => $value,
95            'help' => $helpData
96        ] );
97    }
98
99    /**
100     * Get a labelled checkbox to configure a local boolean variable.
101     *
102     * @param string $var
103     * @param string $label
104     * @param array $attribs Optional.
105     * @param string $helpData Optional.
106     * @return string
107     */
108    protected function getCheckBox( $var, $label, $attribs = [], $helpData = "" ) {
109        $name = $this->getName() . '_' . $var;
110        $value = $this->getVar( $var );
111
112        return $this->webInstaller->getCheckBox( [
113            'var' => $var,
114            'label' => $label,
115            'attribs' => $attribs,
116            'controlName' => $name,
117            'value' => $value,
118            'help' => $helpData
119        ] );
120    }
121
122    /**
123     * Get a set of labelled radio buttons.
124     *
125     * @param array $params Parameters are:
126     *      var:            The variable to be configured (required)
127     *      label:          The message name for the label (required)
128     *      itemLabelPrefix: The message name prefix for the item labels (required)
129     *      values:         List of allowed values (required)
130     *      itemAttribs     Array of attribute arrays, outer key is the value name (optional)
131     *
132     * @return string
133     */
134    protected function getRadioSet( $params ) {
135        $params['controlName'] = $this->getName() . '_' . $params['var'];
136        $params['value'] = $this->getVar( $params['var'] );
137
138        return $this->webInstaller->getRadioSet( $params );
139    }
140
141    /**
142     * Convenience function to set variables based on form data.
143     * Assumes that variables containing "password" in the name are (potentially
144     * fake) passwords.
145     * @param array $varNames
146     * @return array
147     */
148    protected function setVarsFromRequest( $varNames ) {
149        return $this->webInstaller->setVarsFromRequest( $varNames, $this->getName() . '_' );
150    }
151
152}