Permalink
Browse files

Merge branch 'master' of https://github.com/moodle/moodle

  • Loading branch information...
2 parents ae4a9ae + 4db0616 commit 03d3451d625f3b2a0b4a44ba08d7b0f2aa268be0 @doraemonyoung doraemonyoung committed Jun 4, 2012
Showing 1,225 changed files with 74,686 additions and 60,642 deletions.
View
@@ -425,7 +425,8 @@
exit(1);
}
} else {
- cli_error(get_string('maturitycorewarning', 'admin'));
+ cli_problem(get_string('maturitycorewarning', 'admin', $maturitylevel));
+ cli_error(get_string('maturityallowunstable', 'admin'));
}
}
}
@@ -677,7 +678,9 @@
// Test plugin dependencies.
require_once($CFG->libdir . '/pluginlib.php');
-if (!plugin_manager::instance()->all_plugins_ok($version)) {
+$failed = array();
+if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) {
+ cli_problem(get_string('pluginscheckfailed', 'admin', array('pluginslist' => implode(', ', array_unique($failed)))));
cli_error(get_string('pluginschecktodo', 'admin'));
}
@@ -161,7 +161,9 @@
// Test plugin dependencies.
require_once($CFG->libdir . '/pluginlib.php');
-if (!plugin_manager::instance()->all_plugins_ok($version)) {
+$failed = array();
+if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) {
+ cli_problem(get_string('pluginscheckfailed', 'admin', array('pluginslist' => implode(', ', array_unique($failed)))));
cli_error(get_string('pluginschecktodo', 'admin'));
}
View
@@ -34,8 +34,8 @@
}
// now get cli options
-list($options, $unrecognized) = cli_get_params(array('help'=>false, 'list'=>false, 'engine'=>false),
- array('h'=>'help', 'l'=>'list'));
+list($options, $unrecognized) = cli_get_params(array('help'=>false, 'list'=>false, 'engine'=>false, 'available'=>false),
+ array('h'=>'help', 'l'=>'list', 'a'=>'available'));
if ($unrecognized) {
$unrecognized = implode("\n ", $unrecognized);
@@ -52,14 +52,19 @@
Options:
--engine=ENGINE Convert MySQL tables to different engine
-l, --list Show table information
+-a, --available Show list of available engines
-h, --help Print out this help
Example:
\$sudo -u www-data /usr/bin/php admin/cli/mysql_engine.php --engine=InnoDB
";
if (!empty($options['engine'])) {
+ $engines = mysql_get_engines();
$engine = clean_param($options['engine'], PARAM_ALPHA);
+ if (!isset($engines[strtoupper($engine)])) {
+ cli_error("Error: engine '$engine' is not available on this server!");
+ }
echo "Converting tables to '$engine' for $CFG->wwwroot:\n";
$prefix = $DB->get_prefix();
@@ -68,26 +73,34 @@
$rs = $DB->get_recordset_sql($sql);
$converted = 0;
$skipped = 0;
+ $errors = 0;
foreach ($rs as $table) {
- if ($table->engine === $engine) {
- echo str_pad($table->name, 40). " - NO CONVERSION NEEDED\n";
+ if (strtoupper($table->engine) === strtoupper($engine)) {
+ $newengine = mysql_get_table_engine($table->name);
+ echo str_pad($table->name, 40). " - NO CONVERSION NEEDED ($newengine)\n";
$skipped++;
continue;
}
echo str_pad($table->name, 40). " - ";
try {
$DB->change_database_structure("ALTER TABLE {$table->name} ENGINE = $engine");
+ $newengine = mysql_get_table_engine($table->name);
+ if (strtoupper($newengine) !== strtoupper($engine)) {
+ echo "ERROR ($newengine)\n";
+ $errors++;
+ continue;
+ }
+ echo "DONE ($newengine)\n";
+ $converted++;
} catch (moodle_exception $e) {
echo $e->getMessage()."\n";
- $skipped++;
+ $errors++;
continue;
}
- echo "DONE\n";
- $converted++;
}
$rs->close();
- echo "Converted: $converted, skipped: $skipped\n";
+ echo "Converted: $converted, skipped: $skipped, errors: $errors\n";
exit(0); // success
} else if (!empty($options['list'])) {
@@ -115,7 +128,53 @@
}
exit(0); // success
+} else if (!empty($options['available'])) {
+ echo "List of available MySQL engines for $CFG->wwwroot:\n";
+ $engines = mysql_get_engines();
+ foreach ($engines as $engine) {
+ echo " $engine\n";
+ }
+ die;
+
} else {
echo $help;
die;
}
+
+
+
+// ========== Some functions ==============
+
+function mysql_get_engines() {
+ global $DB;
+
+ $sql = "SHOW Engines";
+ $rs = $DB->get_recordset_sql($sql);
+ $engines = array();
+ foreach ($rs as $engine) {
+ if (strtoupper($engine->support) !== 'YES' and strtoupper($engine->support) !== 'DEFAULT') {
+ continue;
+ }
+ $engines[strtoupper($engine->engine)] = $engine->engine;
+ if (strtoupper($engine->support) === 'DEFAULT') {
+ $engines[strtoupper($engine->engine)] .= ' (default)';
+ }
+ }
+ $rs->close();
+
+ return $engines;
+}
+
+function mysql_get_table_engine($tablename) {
+ global $DB;
+
+ $engine = null;
+ $sql = "SHOW TABLE STATUS WHERE Name = '$tablename'"; // no special chars expected here
+ $rs = $DB->get_recordset_sql($sql);
+ if ($rs->valid()) {
+ $record = $rs->current();
+ $engine = $record->engine;
+ }
+ $rs->close();
+ return $engine;
+}
View
@@ -109,7 +109,9 @@
}
// Test plugin dependencies.
-if (!plugin_manager::instance()->all_plugins_ok($version)) {
+$failed = array();
+if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) {
+ cli_problem(get_string('pluginscheckfailed', 'admin', array('pluginslist' => implode(', ', array_unique($failed)))));
cli_error(get_string('pluginschecktodo', 'admin'));
}
@@ -132,7 +134,8 @@
echo get_string('morehelp') . ': ' . get_docs_url('admin/versions') . PHP_EOL;
cli_separator();
} else {
- cli_error(get_string('maturitycorewarning', 'admin', $maturitylevel));
+ cli_problem(get_string('maturitycorewarning', 'admin', $maturitylevel));
+ cli_error(get_string('maturityallowunstable', 'admin'));
}
}
}
View
@@ -152,6 +152,20 @@
die();
}
+ // check plugin dependencies
+ $failed = array();
+ if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) {
+ $PAGE->navbar->add(get_string('pluginscheck', 'admin'));
+ $PAGE->set_title($strinstallation);
+ $PAGE->set_heading($strinstallation . ' - Moodle ' . $CFG->target_release);
+
+ $output = $PAGE->get_renderer('core', 'admin');
+ $url = new moodle_url('/admin/index.php', array('agreelicense' => 1, 'confirmrelease' => 1, 'lang' => $CFG->lang));
+ echo $output->unsatisfied_dependencies_page($version, $failed, $url);
+ die();
+ }
+ unset($failed);
+
//TODO: add a page with list of non-standard plugins here
$strdatabasesetup = get_string('databasesetup');
@@ -238,6 +252,15 @@
$reloadurl = new moodle_url('/admin/index.php', array('confirmupgrade' => 1, 'confirmrelease' => 1));
+ // check plugin dependencies first
+ $failed = array();
+ if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) {
+ $output = $PAGE->get_renderer('core', 'admin');
+ echo $output->unsatisfied_dependencies_page($version, $failed, $reloadurl);
+ die();
+ }
+ unset($failed);
+
if ($fetchupdates) {
// no sesskey support guaranteed here
if (empty($CFG->disableupdatenotifications)) {
@@ -290,6 +313,16 @@
}
$output = $PAGE->get_renderer('core', 'admin');
+
+ // check plugin dependencies first
+ $failed = array();
+ if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) {
+ echo $output->unsatisfied_dependencies_page($version, $failed, $PAGE->url);
+ die();
+ }
+ unset($failed);
+
+ // dependencies check passed, let's rock!
echo $output->upgrade_plugin_check_page(plugin_manager::instance(), available_update_checker::instance(),
$version, $showallplugins,
new moodle_url($PAGE->url),
View
@@ -0,0 +1,38 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * An oauth2 redirection endpoint which can be used for an application:
+ * http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-3.1.2
+ *
+ * This is used because some oauth servers will not allow a redirect urls
+ * with get params (like repository callback) and that needs to be called
+ * using the state param.
+ *
+ * @package core
+ * @copyright 2012 Dan Poltawski
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(dirname(__FILE__)).'/config.php');
+
+// The authorization code generated by the authorization server.
+$code = required_param('code', PARAM_RAW);
+// The state parameter we've given (used in moodle as a redirect url).
+$state = required_param('state', PARAM_URL);
+
+redirect(new moodle_url($state, array('code' => $code)));
Oops, something went wrong.

0 comments on commit 03d3451

Please sign in to comment.