* Fix r74790 by actually calling setup (using parent::setup)
[lhc/web/wiklou.git] / config / Installer.php
index a41dd7a..e2d0134 100644 (file)
@@ -277,9 +277,6 @@ if( !is_writable( "." ) ) {
        <p>Afterwards retry to start the <a href=\"\">setup</a>.</p>" );
 }
 
-
-require_once( "$IP/maintenance/updaters.inc" );
-
 class ConfigData {
        function getEncoded( $data ) {
                # removing latin1 support, no need...
@@ -644,9 +641,7 @@ print "<li style='font-weight:bold;color:green;font-size:110%'>Environment check
        $conf->SQLiteDataDir = importPost( "SQLiteDataDir", "$IP/../data" );
 
        ## DB2 specific:
-       // New variable in order to have a different default port number
        $conf->DBport_db2   = importPost( "DBport_db2",      "50000" );
-       $conf->DBcataloged  = importPost( "DBcataloged",  "cataloged" );
        $conf->DBdb2schema  = importPost( "DBdb2schema",  "mediawiki" );
 
        // Oracle specific
@@ -837,7 +832,9 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                }
 
                ## DB2 specific:
-               $wgDBcataloged = $conf->DBcataloged;
+               if ( $conf->DBtype == 'ibm_db2' ) {
+                       $wgDBport      = $conf->DBport_db2;
+               }
 
                $wgCommandLineMode = true;
                if (! defined ( 'STDERR' ) )
@@ -920,12 +917,9 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                        if( !$ok ) { continue; }
                }
                else if ( $conf->DBtype == 'mssql' ) {
-                       error_reporting( E_ALL );
-                       $wgSuperUser = '';
-                       # # Possible connect as a superuser
+                       # Possible connect as a superuser
                        if ( $useRoot ) {
-                               $wgDBsuperuser = $conf->RootUser;
-                               echo( "<li>Attempting to connect to database \"{$conf->DBtype}\" as superuser \"{$wgDBsuperuser}\"" );
+                               echo( "<li>Attempting to connect to database \"{$conf->DBtype}\" as superuser \"{$conf->RootUser}\"" );
                                $wgDatabase = $dbc->newFromParams(
                                                                                $conf->DBserver,
                                                                                $conf->RootUser,
@@ -941,7 +935,7 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                                        $errs['RootPW'] = 'and password';
                                        continue;
                                }
-                               $wgDatabase->initial_setup( $conf->RootPW, $conf->DBtype );
+                               $wgDatabase->initial_setup( $conf->DBname, $conf->DBuser, $conf->DBpassword );
                        }
                        echo( "<li>Attempting to connect to database \"{$wgDBname}\" as \"{$wgDBuser}\"..." );
                        $wgDatabase = $dbc->newFromParams(
@@ -1045,7 +1039,7 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                                echo "<li>Connect failed.</li>";
                                if ($useRoot) {
                                        if (ini_get('oci8.privileged_connect') === false) {
-                                               echo "<li>Privileged connect disabled, please set oci8.privileged_connect or run maintenance/ora/user.sql script manually prior to continuing.</li>";
+                                               echo "<li>Privileged connect disabled, please set oci8.privileged_connect or run maintenance/oracle/user.sql script manually prior to continuing.</li>";
                                                $ok = false;
                                        } else {
                                                $wgDBadminuser = $conf->RootUser;
@@ -1055,7 +1049,7 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                                                if ($wgDatabase->isOpen()) {
                                                        $wgDBOracleDefTS = $conf->DBdefTS_ora;
                                                        $wgDBOracleTempTS = $conf->DBtempTS_ora;
-                                                       $res = $wgDatabase->sourceFile( "../maintenance/ora/user.sql"  );
+                                                       $res = $wgDatabase->sourceFile( "../maintenance/oracle/user.sql"  );
                                                        if ($res !== true) dieout($res);
                                                } else {
                                                        echo "<li>Invalid database superuser, please supply a valid superuser account.</li>";
@@ -1080,7 +1074,6 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                        }
                } else { # not mysql
                        error_reporting( E_ALL | E_STRICT );
-                       $wgSuperUser = '';
                        ## Possible connect as a superuser
                        // Changed !mysql to postgres check since it seems to only apply to postgres
                        if( $useRoot && $conf->DBtype == 'postgres' ) {
@@ -1240,7 +1233,13 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                        print "</ul><pre>\n";
                        chdir( ".." );
                        flush();
-                       do_all_updates();
+
+                       $updater = DatabaseUpdater::newForDb( $wgDatabase, false );
+                       $updater->doUpdates();
+                       foreach( $updater->getPostDatabaseUpdateMaintenance() as $maint ) {
+                               call_user_func_array( array( new $maint, 'execute' ), array() );
+                       }
+
                        chdir( "config" );
                        print "</pre>\n";
                        print "<ul><li>Finished update checks.</li>\n";
@@ -1250,13 +1249,12 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
                        if ( $conf->DBtype == 'mysql' && version_compare( $myver, "4.1.2", "ge" ) ) {
                                $res = $wgDatabase->query( 'SHOW ENGINES' );
                                $found = false;
-                               while ( $row = $wgDatabase->fetchObject( $res ) ) {
+                               foreach ( $res as $row ) {
                                        if ( $row->Engine == $conf->DBengine && ( $row->Support == 'YES' || $row->Support == 'DEFAULT' ) ) {
                                                $found = true;
                                                break;
                                        }
                                }
-                               $wgDatabase->freeResult( $res );
                                if ( !$found && $conf->DBengine != 'MyISAM' ) {
                                        echo "<li><strong>Warning:</strong> " . htmlspecialchars( $conf->DBengine ) .
                                                " storage engine not available, " .
@@ -1603,7 +1601,7 @@ if( count( $errs ) ) {
        }
 ?>
        <ul class='plain'><?php
-               database_picker($conf);
+               database_picker($ourdb, $conf);
        ?></ul>
        </div>
 
@@ -1644,7 +1642,7 @@ if( count( $errs ) ) {
                </p>
        </div>
 
-       <?php database_switcher('mysql'); ?>
+       <?php database_switcher($ourdb, 'mysql'); ?>
        <div class="config-input"><?php aField( $conf, "DBprefix", "Database table prefix:" ); ?></div>
        <div class="config-desc">
                <p>If you need to share one database between multiple wikis, or
@@ -1683,7 +1681,7 @@ if( count( $errs ) ) {
        </p>
        </fieldset>
 
-       <?php database_switcher('postgres'); ?>
+       <?php database_switcher($ourdb, 'postgres'); ?>
        <div class="config-input"><?php aField( $conf, "DBport", "Database port:" ); ?></div>
        <div class="config-input"><?php aField( $conf, "DBpgschema", "Schema for mediawiki:" ); ?></div>
        <div class="config-input"><?php aField( $conf, "DBts2schema", "Schema for tsearch2:" ); ?></div>
@@ -1694,7 +1692,7 @@ if( count( $errs ) ) {
        </div>
        </fieldset>
 
-       <?php database_switcher('sqlite'); ?>
+       <?php database_switcher($ourdb, 'sqlite'); ?>
        <div class="config-input"><?php
                aField( $conf, "SQLiteDataDir", "SQLite data directory:" );
        ?></div>
@@ -1707,24 +1705,23 @@ if( count( $errs ) ) {
        </fieldset>
 
        
-       <?php database_switcher( 'mssql' ); ?>
+       <?php database_switcher($ourdb, 'mssql' ); ?>
        <div class="config-desc">
                <p>No MS SQL Server specific options at this time.</p>
        </div>
+       </fieldset>
        
        
-       <?php database_switcher('ibm_db2'); ?>
+       <?php database_switcher($ourdb, 'ibm_db2'); ?>
        <div class="config-input"><?php
                aField( $conf, "DBport_db2", "Database port:" );
        ?></div>
+       <div class="config-desc">
+               <p>50000 is the usual DB2 port.</p>
+       </div>
        <div class="config-input"><?php
                aField( $conf, "DBdb2schema", "Schema for mediawiki:" );
        ?></div>
-       <div>Select one:</div>
-               <ul class="plain">
-               <li><?php aField( $conf, "DBcataloged", "Cataloged (DB2 installed locally)", "radio", "cataloged" ); ?></li>
-               <li><?php aField( $conf, "DBcataloged", "Uncataloged (remote DB2 through ODBC)", "radio", "uncataloged" ); ?></li>
-               </ul>
        <div class="config-desc">
                <p>If you need to share one database between multiple wikis, or
                between MediaWiki and another web application, you may specify
@@ -1732,7 +1729,7 @@ if( count( $errs ) ) {
        </div>
        </fieldset>
 
-       <?php database_switcher('oracle'); ?>
+       <?php database_switcher($ourdb, 'oracle'); ?>
        <div class="config-input"><?php aField( $conf, "DBprefix_ora", "Database table prefix:" ); ?></div>
        <div class="config-desc">
                <p>If you need to share one database between multiple wikis, or
@@ -1915,11 +1912,11 @@ function writeLocalSettings( $conf ) {
 "# SQLite-specific settings
 \$wgSQLiteDataDir    = \"{$sqliteDataDir}\";";
        } elseif( $conf->DBtype == 'ibm_db2' ) {
-               $dbsettings =
-"# DB2 specific settings
-\$wgDBport       = \"{$slconf['DBport_db2']}\";
-\$wgDBmwschema       = \"{$slconf['DBdb2schema']}\";
-\$wgDBcataloged      = \"{$slconf['DBcataloged']}\";";
+               $dbsettings = <<<MULTILINE
+# DB2 specific settings
+\$wgDBport           = "{$slconf['DBport_db2']}";
+\$wgDBmwschema       = "{$slconf['DBdb2schema']}";
+MULTILINE;
        } elseif( $conf->DBtype == 'oracle' ) {
                $dbsettings =
 "# Oracle specific settings
@@ -2109,8 +2106,9 @@ function aField( &$conf, $field, $text, $type = "text", $value = "", $onclick =
        $id = $field;
        $nolabel = ($type == "radio") || ($type == "hidden");
 
-       if ($type == 'radio')
+       if ($type == 'radio') {
                $id .= $radioCount++;
+       }
 
        if( !$nolabel ) {
                echo "<label class='column' for=\"$id\">$text</label>";
@@ -2222,8 +2220,7 @@ function testMemcachedServer( $server ) {
        return $errstr;
 }
 
-function database_picker($conf) {
-       global $ourdb;
+function database_picker($ourdb, $conf) {
        print "\n";
        foreach(array_keys($ourdb) as $db) {
                if ($ourdb[$db]['havedriver']) {
@@ -2235,8 +2232,7 @@ function database_picker($conf) {
        print "\n\t";
 }
 
-function database_switcher($db) {
-       global $ourdb;
+function database_switcher($ourdb, $db) {
        $color = $ourdb[$db]['bgcolor'];
        $full = $ourdb[$db]['fullname'];
        print "<fieldset id='$db' style='clear:both'><legend>$full-specific options</legend>\n";