Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 39
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
MysqlConnectForm
0.00% covered (danger)
0.00%
0 / 39
0.00% covered (danger)
0.00%
0 / 2
90
0.00% covered (danger)
0.00%
0 / 1
 getHtml
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 1
2
 submit
0.00% covered (danger)
0.00%
0 / 19
0.00% covered (danger)
0.00%
0 / 1
72
1<?php
2
3namespace MediaWiki\Installer;
4
5use MediaWiki\Html\Html;
6use MediaWiki\Status\Status;
7
8/**
9 * @internal
10 */
11class MysqlConnectForm extends DatabaseConnectForm {
12    /**
13     * @return string
14     */
15    public function getHtml() {
16        return $this->getTextBox(
17                'wgDBserver',
18                'config-db-host',
19                [],
20                $this->webInstaller->getHelpBox( 'config-db-host-help' )
21            ) .
22            $this->getCheckBox( 'wgDBssl', 'config-db-ssl' ) .
23            "<span class=\"cdx-card\"><span class=\"cdx-card__text\">" .
24            Html::element(
25                'span',
26                [ 'class' => 'cdx-card__text__title' ],
27                wfMessage( 'config-db-wiki-settings' )->text()
28            ) .
29            "<span class=\"cdx-card__text__description\">" .
30            $this->getTextBox( 'wgDBname', 'config-db-name', [ 'dir' => 'ltr' ],
31                $this->webInstaller->getHelpBox( 'config-db-name-help' ) ) .
32            $this->getTextBox( 'wgDBprefix', 'config-db-prefix', [ 'dir' => 'ltr' ],
33                $this->webInstaller->getHelpBox( 'config-db-prefix-help' ) ) .
34            "</span></span></span>" .
35            $this->getInstallUserBox();
36    }
37
38    public function submit() {
39        // Get variables from the request.
40        $newValues = $this->setVarsFromRequest( [ 'wgDBserver', 'wgDBname', 'wgDBprefix', 'wgDBssl' ] );
41
42        // Validate them.
43        $status = Status::newGood();
44        if ( !strlen( $newValues['wgDBserver'] ) ) {
45            $status->fatal( 'config-missing-db-host' );
46        }
47        if ( !strlen( $newValues['wgDBname'] ) ) {
48            $status->fatal( 'config-missing-db-name' );
49        } elseif ( !preg_match( '/^[a-z0-9+_-]+$/i', $newValues['wgDBname'] ) ) {
50            $status->fatal( 'config-invalid-db-name', $newValues['wgDBname'] );
51        }
52        if ( !preg_match( '/^[a-z0-9_-]*$/i', $newValues['wgDBprefix'] ) ) {
53            $status->fatal( 'config-invalid-db-prefix', $newValues['wgDBprefix'] );
54        }
55        if ( !$status->isOK() ) {
56            return $status;
57        }
58
59        // Submit user box
60        $status = $this->submitInstallUserBox();
61        if ( !$status->isOK() ) {
62            return $status;
63        }
64
65        // Try to connect
66        $status = $this->dbInstaller->getConnection( DatabaseInstaller::CONN_CREATE_DATABASE );
67        if ( !$status->isOK() ) {
68            return $status;
69        }
70
71        // Check version
72        return MysqlInstaller::meetsMinimumRequirement( $status->getDB() );
73    }
74}