diff --git a/admin/index.php b/admin/index.php
index 0a0d0b8cb24..b39146080d3 100644
--- a/admin/index.php
+++ b/admin/index.php
@@ -23,6 +23,10 @@
require_once($CFG->libdir.'/adminlib.php'); // Contains various admin-only functions
$id = optional_param('id', '', PARAM_TEXT);
+ $confirmupgrade = optional_param('confirmupgrade', 0, PARAM_BOOL);
+ $confirmrelease = optional_param('confirmrelease', 0, PARAM_BOOL);
+ $confirmplugins = optional_param('confirmplugincheck', 0, PARAM_BOOL);
+ $agreelicense = optional_param('agreelicense', 0, PARAM_BOOL);
/// Check some PHP server settings
@@ -73,14 +77,317 @@
print_error('withoutversion', 'debug'); // without version, stop
}
- upgrade_db($version, $release);
+ /// Check if the main tables have been installed yet or not.
+ if (!$tables = $DB->get_tables() ) { // No tables yet at all.
+ $maintables = false;
+
+ } else { // Check for missing main tables
+ $maintables = true;
+ $mtables = array('config', 'course', 'groupings'); // some tables used in 1.9 and 2.0, preferable something from the start and end of install.xml
+ foreach ($mtables as $mtable) {
+ if (!in_array($mtable, $tables)) {
+ $maintables = false;
+ break;
+ }
+ }
+ unset($mtables);
+ }
+ unset($tables);
+
+ if (!$maintables) {
+ /// hide errors from headers in case debug enabled in config.php
+ $origdebug = $CFG->debug;
+ $CFG->debug = DEBUG_MINIMAL;
+ error_reporting($CFG->debug);
+ if (empty($agreelicense)) {
+ $strlicense = get_string('license');
+ $navigation = build_navigation(array(array('name'=>$strlicense, 'link'=>null, 'type'=>'misc')));
+ print_header($strlicense, $strlicense, $navigation, "", "", false, " ", " ");
+ print_heading("Moodle - Modular Object-Oriented Dynamic Learning Environment");
+ print_heading(get_string('copyrightnotice'));
+ print_box(text_to_html(get_string('gpl')), 'copyrightnotice');
+ echo "
";
+ notice_yesno(get_string('doyouagree'), "index.php?agreelicense=1",
+ "http://docs.moodle.org/en/License");
+ print_footer('none');
+ exit;
+ }
+ if (empty($confirmrelease)) {
+ $strcurrentrelease = get_string("currentrelease");
+ $navigation = build_navigation(array(array('name'=>$strcurrentrelease, 'link'=>null, 'type'=>'misc')));
+ print_header($strcurrentrelease, $strcurrentrelease, $navigation, "", "", false, " ", " ");
+ print_heading("Moodle $release");
+ print_box(get_string('releasenoteslink', 'admin', 'http://docs.moodle.org/en/Release_Notes'), 'generalbox boxaligncenter boxwidthwide');
+ echo '
';
+ print_footer('none');
+ die;
+ }
+
+ $strdatabasesetup = get_string("databasesetup");
+ $strdatabasesuccess = get_string("databasesuccess");
+ $navigation = build_navigation(array(array('name'=>$strdatabasesetup, 'link'=>null, 'type'=>'misc')));
+
+ print_header($strdatabasesetup, $strdatabasesetup, $navigation,
+ "", upgrade_get_javascript(), false, " ", " ");
+
+ /// return to original debugging level
+ $CFG->debug = $origdebug;
+ error_reporting($CFG->debug);
+ $DB->set_debug(true);
+
+ if (!$DB->setup_is_unicodedb()) {
+ if (!$DB->change_db_encoding()) {
+ // If could not convert successfully, throw error, and prevent installation
+ print_error('unicoderequired', 'admin');
+ }
+ }
+
+ $DB->get_manager()->install_from_xmldb_file("$CFG->libdir/db/install.xml");
+ upgrade_log_start(); // move here because we want the flag to be stored in config table ;-)
+
+ /// set all core default records and default settings
+ require_once("$CFG->libdir/db/install.php");
+ xmldb_main_install($version);
+
+ /// Continue with the instalation
+
+ // Install the roles system.
+ moodle_install_roles();
+
+ // Install core event handlers
+ events_update_definition();
+
+ // Install core message providers
+ message_update_providers();
+ message_update_providers('message');
+
+ // Write default settings unconditionally (i.e. even if a setting is already set, overwrite it)
+ admin_apply_default_settings(NULL, true);
+ notify($strdatabasesuccess, 'notifysuccess');
+
+ /// do not show certificates in log ;-)
+ $DB->set_debug(false);
+
+ print_continue("index.php");
+ print_footer('none');
+
+ die;
+ }
+
+
+/// Check version of Moodle code on disk compared with database
+/// and upgrade if possible.
+
+ $stradministration = get_string('administration');
+
+ if (empty($CFG->version)) {
+ print_error('missingconfigversion', 'debug');
+ }
+
+ if ($version > $CFG->version) { // upgrade
+ require_once($CFG->libdir.'/db/upgrade.php'); // Defines upgrades
+ require_once($CFG->libdir.'/db/upgradelib.php'); // Upgrade-related functions
+
+ $a->oldversion = "$CFG->release ($CFG->version)";
+ $a->newversion = "$release ($version)";
+ $strdatabasechecking = get_string("databasechecking", "", $a);
+
+ // hide errors from headers in case debug is enabled
+ $origdebug = $CFG->debug;
+ $CFG->debug = DEBUG_MINIMAL;
+ error_reporting($CFG->debug);
+ $CFG->xmlstrictheaders = false;
+
+ // logo ut in case we are upgrading from pre 1.9 version in order to prevent
+ // weird session/role problems caused by incorrect data in USER and SESSION
+ if ($CFG->version < 2007101500) {
+ require_logout();
+ }
+
+ if (empty($confirmupgrade)) {
+ $navigation = build_navigation(array(array('name'=>$strdatabasechecking, 'link'=>null, 'type'=>'misc')));
+ print_header($strdatabasechecking, $stradministration, $navigation,
+ "", "", false, " ", " ");
+
+ notice_yesno(get_string('upgradesure', 'admin', $a->newversion), 'index.php?confirmupgrade=1', 'index.php');
+ print_footer('none');
+ exit;
+
+ } else if (empty($confirmrelease)){
+ $strcurrentrelease = get_string("currentrelease");
+ $navigation = build_navigation(array(array('name'=>$strcurrentrelease, 'link'=>null, 'type'=>'misc')));
+ print_header($strcurrentrelease, $strcurrentrelease, $navigation, "", "", false, " ", " ");
+ print_heading("Moodle $release");
+ print_box(get_string('releasenoteslink', 'admin', 'http://docs.moodle.org/en/Release_Notes'));
+
+ require_once($CFG->libdir.'/environmentlib.php');
+ print_heading(get_string('environment', 'admin'));
+ if (!check_moodle_environment($release, $environment_results, true)) {
+ if (empty($CFG->skiplangupgrade)) {
+ print_box_start('generalbox', 'notice'); // MDL-8330
+ print_string('langpackwillbeupdated', 'admin');
+ print_box_end();
+ }
+ notice_yesno(get_string('environmenterrorupgrade', 'admin'),
+ 'index.php?confirmupgrade=1&confirmrelease=1', 'index.php');
+ } else {
+ notify(get_string('environmentok', 'admin'), 'notifysuccess');
+ if (empty($CFG->skiplangupgrade)) {
+ print_box_start('generalbox', 'notice'); // MDL-8330
+ print_string('langpackwillbeupdated', 'admin');
+ print_box_end();
+ }
+ echo '';
+ }
+
+ print_footer('none');
+ die;
+
+ } elseif (empty($confirmplugins)) {
+ $strplugincheck = get_string('plugincheck');
+ $navigation = build_navigation(array(array('name'=>$strplugincheck, 'link'=>null, 'type'=>'misc')));
+ print_header($strplugincheck, $strplugincheck, $navigation, "", "", false, " ", " ");
+ print_heading($strplugincheck);
+ print_box_start('generalbox', 'notice'); // MDL-8330
+ print_string('pluginchecknotice');
+ print_box_end();
+ print_plugin_tables();
+ echo "
";
+ echo '';
+ print_single_button('index.php', array('confirmupgrade' => 1, 'confirmrelease' => 1), get_string('reload'), 'get');
+ echo '
';
+ echo '';
+ print_footer('none');
+ die();
+
+ } else {
+
+ $strdatabasesuccess = get_string("databasesuccess");
+ $navigation = build_navigation(array(array('name'=>$strdatabasesuccess, 'link'=>null, 'type'=>'misc')));
+ print_header($strdatabasechecking, $stradministration, $navigation,
+ "", upgrade_get_javascript(), false, " ", " ");
+
+ /// return to original debugging level
+ $CFG->debug = $origdebug;
+ error_reporting($CFG->debug);
+ upgrade_log_start();
+
+ /// Upgrade current language pack if we can
+ if (empty($CFG->skiplangupgrade)) {
+ upgrade_language_pack();
+ }
+
+ print_heading($strdatabasechecking);
+ $DB->set_debug(true);
+ /// Launch the old main upgrade (if exists)
+ $status = xmldb_main_upgrade($CFG->version);
+ $DB->set_debug(false);
+ /// If successful, continue upgrading roles and setting everything properly
+ if ($status) {
+ if (!update_capabilities()) {
+ print_error('cannotupgradecapabilities', 'debug');
+ }
+
+ // Update core events
+ events_update_definition();
+
+ // Update core message providers
+ message_update_providers();
+ message_update_providers('message');
+
+ if (set_config("version", $version)) {
+ remove_dir($CFG->dataroot . '/cache', true); // flush cache
+ notify($strdatabasesuccess, "green");
+ print_continue("upgradesettings.php");
+ print_footer('none');
+ exit;
+ } else {
+ print_error('cannotupdateversion', 'debug');
+ }
+ /// Main upgrade not success
+ } else {
+ notify('Main Upgrade failed! See lib/db/upgrade.php');
+ print_continue('index.php?confirmupgrade=1&confirmrelease=1&confirmplugincheck=1');
+ print_footer('none');
+ die;
+ }
+ }
+ } else if ($version < $CFG->version) {
+ notify("WARNING!!! The code you are using is OLDER than the version that made these databases!");
+ }
+
+/// Updated human-readable release version if necessary
+
+ if ($release <> $CFG->release) { // Update the release version
+ if (!set_config("release", $release)) {
+ print_error("cannotupdaterelease", 'debug');
+ }
+ }
+
+ // Turn off xmlstrictheaders during upgrade.
+ $origxmlstrictheaders = !empty($CFG->xmlstrictheaders);
+ $CFG->xmlstrictheaders = false;
+
+/// upgrade all plugins types
+ $upgradedplugins = false;
+ $plugintypes = get_plugin_types();
+ foreach ($plugintypes as $type=>$location) {
+ $upgradedplugins = upgrade_plugins($type, $location) || $upgradedplugins;
+ }
+
+ if ($upgradedplugins) {
+ print_continue($FULLSCRIPT);
+ print_footer('none');
+ die;
+ }
+
+/// Check for changes to RPC functions
+ if ($CFG->mnet_dispatcher_mode != 'off') {
+ require_once("$CFG->dirroot/$CFG->admin/mnet/adminlib.php");
+ upgrade_RPC_functions($FULLSCRIPT); // Return here afterwards
+ }
+
+/// Check for local database customisations
+ require_once("$CFG->dirroot/lib/locallib.php");
+ upgrade_local_db($FULLSCRIPT); // Return here afterwards
+
+/// just make sure upgrade logging is properly terminated
+ upgrade_log_finish();
+
+ // Turn xmlstrictheaders back on now.
+ $CFG->xmlstrictheaders = $origxmlstrictheaders;
+
+/// make sure admin user is created - this is the last step because we need
+/// session to be working properly in order to edit admin account
+ if (empty($CFG->rolesactive)) {
+ $adminuser = create_admin_user();
+ $adminuser->newadminuser = 1;
+ complete_user_login($adminuser);
+
+ redirect("$CFG->wwwroot/user/editadvanced.php?id=$adminuser->id"); // Edit thyself
+ }
/// Check for valid admin user - no guest autologin
require_login(0, false);
-
$context = get_context_instance(CONTEXT_SYSTEM);
-
require_capability('moodle/site:config', $context);
/// check that site is properly customized
@@ -94,10 +401,8 @@
/// Check if we are returning from moodle.org registration and if so, we mark that fact to remove reminders
- if (!empty($id)) {
- if ($id == $CFG->siteidentifier) {
- set_config('registered', time());
- }
+ if (!empty($id) and $id == $CFG->siteidentifier) {
+ set_config('registered', time());
}
/// setup critical warnings before printing admin tree block
@@ -106,7 +411,7 @@
$SESSION->admin_critical_warning = ($register_globals_enabled || $insecuredataroot==INSECURE_DATAROOT_ERROR);
- $adminroot =& admin_get_root();
+ $adminroot = admin_get_root();
/// Check if there are any new admin settings which have still yet to be set
if (any_new_admin_settings($adminroot)){
diff --git a/admin/report/unittest/index.php b/admin/report/unittest/index.php
index c4ce889276e..87a49549767 100644
--- a/admin/report/unittest/index.php
+++ b/admin/report/unittest/index.php
@@ -20,16 +20,7 @@ require_once('ex_reporter.php');
$path = optional_param('path', null, PARAM_PATH);
$showpasses = optional_param('showpasses', false, PARAM_BOOL);
$showsearch = optional_param('showsearch', false, PARAM_BOOL);
-$setuptesttables = optional_param('setuptesttables', false, PARAM_BOOL);
-$upgradetesttables = optional_param('upgradetesttables', false, PARAM_BOOL);
-$continuesetuptesttables = optional_param('continuesetuptesttables', false, PARAM_BOOL);
-$droptesttables = optional_param('droptesttables', false, PARAM_BOOL);
-$testtablesok = optional_param('testtablesok', false, PARAM_BOOL);
-if ($setuptesttables || $continuesetuptesttables || $upgradetesttables) {
- // Make sure this option is off during upgrade. It is not very helpful, and can break things.
- $CFG->xmlstrictheaders = false;
-}
admin_externalpage_setup('reportsimpletest', '', array('showpasses'=>$showpasses, 'showsearch'=>$showsearch));
admin_externalpage_print_header();
@@ -42,101 +33,7 @@ $UNITTEST = new object();
// Print the header.
$strtitle = get_string('unittests', $langfile);
-if ($testtablesok) {
- print_heading(get_string('testtablesok', 'simpletest'));
-}
-
-if (!empty($CFG->unittestprefix)) {
- // Temporarily override $DB and $CFG for a fresh install on the unit test prefix
- $real_version = $CFG->version;
-
- $real_db = $DB;
- $real_cfg = $CFG;
- $CFG = new stdClass();
- $CFG->dbhost = $real_cfg->dbhost;
- $CFG->dbtype = $real_cfg->dbtype;
- $CFG->dblibrary = $real_cfg->dblibrary;
- $CFG->dbuser = $real_cfg->dbuser;
- $CFG->dbpass = $real_cfg->dbpass;
- $CFG->dbname = $real_cfg->dbname;
- $CFG->unittestprefix = $real_cfg->unittestprefix;
- $CFG->wwwroot = $real_cfg->wwwroot;
- $CFG->dirroot = $real_cfg->dirroot;
- $CFG->libdir = $real_cfg->libdir;
- $CFG->dataroot = $real_cfg->dataroot;
- $CFG->admin = $real_cfg->admin;
- $CFG->release = $real_cfg->release;
- $CFG->version = $real_cfg->version;
- $CFG->config_php_settings = $real_cfg->config_php_settings;
- $CFG->frametarget = $real_cfg->frametarget;
- $CFG->framename = $real_cfg->framename;
- $CFG->footer = $real_cfg->footer;
- $CFG->debug = $real_cfg->debug;
-
- $DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
- $DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->unittestprefix);
-
- if ($DB->get_manager()->table_exists(new xmldb_table('config')) && $config = $DB->get_records('config')) {
- foreach ($config as $conf) {
- $CFG->{$conf->name} = $conf->value;
- }
- $testtablesok = true;
- }
-
- $test_tables = $DB->get_tables();
-
- // Test DB upgrade
- if (!$upgradetesttables && $real_version != $CFG->version) {
- notice_yesno(get_string('testtablesneedupgrade', 'simpletest'), $FULLSCRIPT . '?upgradetesttables=1', $FULLSCRIPT);
- $DB->dispose();
- $DB = $real_db;
- admin_externalpage_print_footer();
- exit();
- }
-
- // Build/upgrade test tables if requested and needed
- if ($setuptesttables || $continuesetuptesttables || $upgradetesttables) {
-
- $version = null;
- $release = null;
- include("$CFG->dirroot/version.php"); // defines $version and $release
-
- if (!$continuesetuptesttables && !$upgradetesttables) {
- // Drop all tables first if they exist
- $manager = $DB->get_manager();
- foreach ($test_tables as $table) {
- $xmldbtable = new xmldb_table($table);
- $manager->drop_table($xmldbtable);
- }
- }
-
- upgrade_db($version, $release, true);
- }
-
- if ($droptesttables) {
- $manager = $DB->get_manager();
- foreach ($test_tables as $table) {
- $xmldbtable = new xmldb_table($table);
- $manager->drop_table($xmldbtable);
- }
- $test_tables = $DB->get_tables();
- $testtablesok = false;
- }
-
- if (empty($test_tables['config'])) {
- // TODO replace error with proper admin dialog
- notice_yesno(get_string('tablesnotsetup', 'simpletest'), $FULLSCRIPT . '?setuptesttables=1', $FULLSCRIPT);
- $DB = $real_db;
- admin_externalpage_print_footer();
- exit();
- }
-
- $DB->dispose();
- $DB = $real_db;
- $CFG = $real_cfg;
-
- // end of ugly hack
-}
+unset($CFG->unittestprefix); // for now - until test_tables.php gets implemented
if (!is_null($path)) {
// Create the group of tests.
@@ -207,7 +104,10 @@ echo '';
print_box_end();
print_box_start('generalbox boxwidthwide boxaligncenter');
-if (empty($CFG->unittestprefix)) {
+if (true) {
+ echo "Fake test tables are disabled for now, sorry
"; // DO NOT LOCALISE!!! to be removed soon
+
+} else if (empty($CFG->unittestprefix)) {
print_heading(get_string('testdboperations', 'simpletest'));
// TODO: localise
echo 'Please add $CFG->unittestprefix="tst_"; or some other unique test table prefix if you want to execute all tests';
@@ -215,12 +115,6 @@ if (empty($CFG->unittestprefix)) {
} else {
print_heading(get_string('testdboperations', 'simpletest'));
echo '
'.get_string('unittestprefixsetting', 'simpletest', $CFG).'
';
- echo '';
echo '