MediaWiki  master
WebInstallerDBConnect.php
Go to the documentation of this file.
1 <?php
23 
27  public function execute() {
28  if ( $this->getVar( '_ExistingDBSettings' ) ) {
29  return 'skip';
30  }
31 
32  $r = $this->parent->request;
33  if ( $r->wasPosted() ) {
34  $status = $this->submit();
35 
36  if ( $status->isGood() ) {
37  $this->setVar( '_UpgradeDone', false );
38 
39  return 'continue';
40  } else {
41  $this->parent->showStatusBox( $status );
42  }
43  }
44 
45  $this->startForm();
46 
47  $types = "<ul class=\"config-settings-block\">\n";
48  $settings = '';
49  $defaultType = $this->getVar( 'wgDBtype' );
50 
51  // Messages: config-dbsupport-mysql, config-dbsupport-postgres, config-dbsupport-sqlite
52  $dbSupport = '';
53  foreach ( Installer::getDBTypes() as $type ) {
54  $dbSupport .= wfMessage( "config-dbsupport-$type" )->plain() . "\n";
55  }
56  $this->addHTML( $this->parent->getInfoBox(
57  wfMessage( 'config-support-info', trim( $dbSupport ) )->plain() ) );
58 
59  // It's possible that the library for the default DB type is not compiled in.
60  // In that case, instead select the first supported DB type in the list.
61  $compiledDBs = $this->parent->getCompiledDBs();
62  if ( !in_array( $defaultType, $compiledDBs ) ) {
63  $defaultType = $compiledDBs[0];
64  }
65 
66  foreach ( $compiledDBs as $type ) {
67  $installer = $this->parent->getDBInstaller( $type );
68  $types .=
69  '<li>' .
71  $installer->getReadableName(),
72  'DBType',
73  $type,
74  "DBType_$type",
75  $type == $defaultType,
76  [ 'class' => 'dbRadio', 'rel' => "DB_wrapper_$type" ]
77  ) .
78  "</li>\n";
79 
80  // Messages: config-header-mysql, config-header-postgres, config-header-sqlite
81  $settings .= Html::openElement(
82  'div',
83  [
84  'id' => 'DB_wrapper_' . $type,
85  'class' => 'dbWrapper'
86  ]
87  ) .
88  Html::element( 'h3', [], wfMessage( 'config-header-' . $type )->text() ) .
89  $installer->getConnectForm() .
90  "</div>\n";
91  }
92 
93  $types .= "</ul><br style=\"clear: left\"/>\n";
94 
95  $this->addHTML( $this->parent->label( 'config-db-type', false, $types ) . $settings );
96  $this->endForm();
97 
98  return null;
99  }
100 
104  public function submit() {
105  $r = $this->parent->request;
106  $type = $r->getVal( 'DBType' );
107  if ( !$type ) {
108  return Status::newFatal( 'config-invalid-db-type' );
109  }
110  $this->setVar( 'wgDBtype', $type );
111  $installer = $this->parent->getDBInstaller( $type );
112  if ( !$installer ) {
113  return Status::newFatal( 'config-invalid-db-type' );
114  }
115 
116  return $installer->submitConnectForm();
117  }
118 
119 }
Abstract class to define pages for the web installer.
static newFatal( $message,... $parameters)
Factory function for fatal errors.
Definition: StatusValue.php:69
static element( $element, $attribs=[], $contents='')
Identical to rawElement(), but HTML-escapes $contents (like Xml::element()).
Definition: Html.php:231
setVar( $name, $value)
static openElement( $element, $attribs=[])
Identical to rawElement(), but has no third parameter and omits the end tag (and the self-closing &#39;/&#39;...
Definition: Html.php:251
static radioLabel( $label, $name, $value, $id, $checked=false, $attribs=[])
Convenience function to build an HTML radio button with a label.
Definition: Xml.php:444
getVar( $var, $default=null)
endForm( $continue='continue', $back='back')
static getDBTypes()
Get a list of known DB types.
Definition: Installer.php:471
wfMessage( $key,... $params)
This is the function for getting translated interface messages.