MDL-29029 move innodb conversion to admin tools
authorPetr Skoda <commits@skodak.org>
Sat, 17 Sep 2011 19:19:31 +0000 (21:19 +0200)
committerPetr Skoda <commits@skodak.org>
Sat, 17 Sep 2011 19:19:31 +0000 (21:19 +0200)
admin/innodb.php [deleted file]
admin/settings/unsupported.php
admin/tool/innodb/index.php [new file with mode: 0644]
admin/tool/innodb/lang/en/tool_innodb.php [new file with mode: 0644]
admin/tool/innodb/settings.php [new file with mode: 0644]
admin/tool/innodb/version.php [new file with mode: 0644]
lib/pluginlib.php

diff --git a/admin/innodb.php b/admin/innodb.php
deleted file mode 100644 (file)
index 47fcf09..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-    require_once('../config.php');
-    require_once($CFG->libdir.'/adminlib.php');
-
-    admin_externalpage_setup('toinodb');
-
-    $confirm = optional_param('confirm', 0, PARAM_BOOL);
-
-    require_login();
-
-    require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
-
-    echo $OUTPUT->header();
-    echo $OUTPUT->heading('Convert all MySQL tables from MYISAM to InnoDB');
-
-    if ($DB->get_dbfamily() != 'mysql') {
-        notice('This function is for MySQL databases only!', 'index.php');
-    }
-
-    if (data_submitted() and $confirm and confirm_sesskey()) {
-
-        echo $OUTPUT->notification('Please be patient and wait for this to complete...', 'notifysuccess');
-
-        if ($tables = $DB->get_tables()) {
-            $DB->set_debug(true);
-            foreach ($tables as $table) {
-                $fulltable = $DB->get_prefix().$table;
-                $DB->change_database_structure("ALTER TABLE $fulltable TYPE=INNODB");
-            }
-            $DB->set_debug(false);
-        }
-        echo $OUTPUT->notification('... done.', 'notifysuccess');
-        echo $OUTPUT->continue_button('index.php');
-        echo $OUTPUT->footer();
-
-    } else {
-        $optionsyes = array('confirm'=>'1', 'sesskey'=>sesskey());
-        $formcontinue = new single_button(new moodle_url('/admin/innodb.php', $optionsyes), get_string('yes'));
-        $formcancel = new single_button(new moodle_url('/admin/index.php'), get_string('no'), 'get');
-        echo $OUTPUT->confirm('Are you sure you want convert all your tables to the InnoDB format?', $formcontinue, $formcancel);
-        echo $OUTPUT->footer();
-    }
-
-
index c800de1..f618f91 100644 (file)
@@ -5,7 +5,6 @@
 if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
 
     $ADMIN->add('unsupported', new admin_externalpage('purgemoodledata', 'Purge moodledata', $CFG->wwwroot.'/'.$CFG->admin.'/delete.php', 'moodle/site:config', true));
-    $ADMIN->add('unsupported', new admin_externalpage('toinodb', 'Convert to InnoDB', $CFG->wwwroot.'/'.$CFG->admin.'/innodb.php', 'moodle/site:config', true));
     $ADMIN->add('unsupported', new admin_externalpage('replace', 'Search and replace', $CFG->wwwroot.'/'.$CFG->admin.'/replace.php', 'moodle/site:config', true));
 
 } // end of speedup
diff --git a/admin/tool/innodb/index.php b/admin/tool/innodb/index.php
new file mode 100644 (file)
index 0000000..faaea89
--- /dev/null
@@ -0,0 +1,69 @@
+<?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/>.
+
+/**
+ * InnoDB conversion tool.
+ *
+ * @package    tool
+ * @subpackage innodb
+ * @copyright  1999 onwards Martin Dougiamas (http://dougiamas.com)
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+define('NO_OUTPUT_BUFFERING', true);
+
+require_once('../../../config.php');
+require_once($CFG->libdir.'/adminlib.php');
+
+admin_externalpage_setup('toolinnodb');
+
+$confirm = optional_param('confirm', 0, PARAM_BOOL);
+
+require_login();
+require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
+
+echo $OUTPUT->header();
+echo $OUTPUT->heading('Convert all MySQL tables from MYISAM to InnoDB');
+
+if ($DB->get_dbfamily() != 'mysql') {
+    notice('This function is for MySQL databases only!', new moodle_url('/admin/'));
+}
+
+if (data_submitted() and $confirm and confirm_sesskey()) {
+
+    echo $OUTPUT->notification('Please be patient and wait for this to complete...', 'notifysuccess');
+
+    if ($tables = $DB->get_tables()) {
+        $DB->set_debug(true);
+        foreach ($tables as $table) {
+            $fulltable = $DB->get_prefix().$table;
+            $DB->change_database_structure("ALTER TABLE $fulltable TYPE=INNODB");
+        }
+        $DB->set_debug(false);
+    }
+    echo $OUTPUT->notification('... done.', 'notifysuccess');
+    echo $OUTPUT->continue_button(new moodle_url('/admin/'));
+    echo $OUTPUT->footer();
+
+} else {
+    $optionsyes = array('confirm'=>'1', 'sesskey'=>sesskey());
+    $formcontinue = new single_button(new moodle_url('/admin/tool/innodb/index.php', $optionsyes), get_string('yes'));
+    $formcancel = new single_button(new moodle_url('/admin/'), get_string('no'), 'get');
+    echo $OUTPUT->confirm('Are you sure you want convert all your tables to the InnoDB format?', $formcontinue, $formcancel);
+    echo $OUTPUT->footer();
+}
+
+
diff --git a/admin/tool/innodb/lang/en/tool_innodb.php b/admin/tool/innodb/lang/en/tool_innodb.php
new file mode 100644 (file)
index 0000000..3edcd39
--- /dev/null
@@ -0,0 +1,26 @@
+<?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/>.
+
+/**
+ * Strings for component 'tool_generator', language 'en', branch 'MOODLE_22_STABLE'
+ *
+ * @package    tool
+ * @subpackage innodb
+ * @copyright  2011 petr Skoda
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['pluginname'] = 'Convert to InnoDB';
diff --git a/admin/tool/innodb/settings.php b/admin/tool/innodb/settings.php
new file mode 100644 (file)
index 0000000..254f8f0
--- /dev/null
@@ -0,0 +1,30 @@
+<?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/>.
+
+/**
+ * Link to InnoDB conversion tool
+ *
+ * @package    tool
+ * @subpackage innodb
+ * @copyright  2010 Petr Skoda {@link http://skodak.org}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+if ($hassiteconfig) {
+    $ADMIN->add('unsupported', new admin_externalpage('toolinnodb', 'Convert to InnoDB', $CFG->wwwroot.'/'.$CFG->admin.'/tool/innodb/index.php', 'moodle/site:config', true));
+}
diff --git a/admin/tool/innodb/version.php b/admin/tool/innodb/version.php
new file mode 100644 (file)
index 0000000..8732ea3
--- /dev/null
@@ -0,0 +1,30 @@
+<?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/>.
+
+/**
+ * Version details.
+ *
+ * @package    tool
+ * @subpackage innodb
+ * @copyright  2011 Petr Skoda
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+$plugin->version   = 2011091700; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2011091600; // Requires this Moodle version
+$plugin->component = 'tool_innodb'; // Full name of the plugin (used for diagnostics)
index 7e07e69..96f1e13 100644 (file)
@@ -368,7 +368,7 @@ class plugin_manager {
 
             'tool' => array(
                 'bloglevelupgrade', 'capability', 'generator', 'health',
-                'langimport', 'profiling', 'unittest', 'unsuproles'
+                'innodb', 'langimport', 'profiling', 'unittest', 'unsuproles'
             ),
 
             'webservice' => array(