From 05e43411659c3bbce5b50f190350d75475901db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20S=CC=8Ckoda?= Date: Sun, 22 Jul 2012 13:17:15 +0200 Subject: [PATCH] MDL-34441 rewrite log display actions after db migration --- .../dbtransfer/lang/en/tool_dbtransfer.php | 1 + admin/tool/dbtransfer/locallib.php | 39 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/admin/tool/dbtransfer/lang/en/tool_dbtransfer.php b/admin/tool/dbtransfer/lang/en/tool_dbtransfer.php index 448183b5e96..24c013c9802 100644 --- a/admin/tool/dbtransfer/lang/en/tool_dbtransfer.php +++ b/admin/tool/dbtransfer/lang/en/tool_dbtransfer.php @@ -22,6 +22,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ +$string['convertinglogdisplay'] = 'Converting log display actions'; $string['dbexport'] = 'Database export'; $string['dbtransfer'] = 'Database transfer'; $string['exportdata'] = 'Export data'; diff --git a/admin/tool/dbtransfer/locallib.php b/admin/tool/dbtransfer/locallib.php index 8e5d2d68ecd..b0c27a1c99f 100644 --- a/admin/tool/dbtransfer/locallib.php +++ b/admin/tool/dbtransfer/locallib.php @@ -83,6 +83,43 @@ function tool_dbtransfer_transfer_database(moodle_database $sourcedb, moodle_dat $var = new database_mover($sourcedb, $targetdb, true, $feedback); $var->export_database(null); + + tool_dbtransfer_rebuild_target_log_actions($targetdb, $feedback); +} + +/** + * Very hacky function for rebuilding of log actions in target database. + * @param moodle_database $target + * @param progress_trace $feedback + * @return void + * @throws Exception on conversion error + */ +function tool_dbtransfer_rebuild_target_log_actions(moodle_database $target, progress_trace $feedback = null) { + global $DB, $CFG; + require_once("$CFG->libdir/upgradelib.php"); + + $feedback->output(get_string('convertinglogdisplay', 'tool_dbtransfer')); + + $olddb = $DB; + $DB = $target; + try { + $DB->delete_records('log_display', array('component'=>'moodle')); + log_update_descriptions('moodle'); + $plugintypes = get_plugin_types(); + foreach ($plugintypes as $type=>$location) { + $plugs = get_plugin_list($type); + foreach ($plugs as $plug=>$fullplug) { + $component = $type.'_'.$plug; + $DB->delete_records('log_display', array('component'=>$component)); + log_update_descriptions($component); + } + } + } catch (Exception $e) { + $DB = $olddb; + throw $e; + } + $DB = $olddb; + $feedback->output(get_string('done', 'core_dbtransfer', null), 1); } /** @@ -105,7 +142,7 @@ function tool_dbtransfer_get_drivers() { $dblibrary = $matches[2]; if ($dbtype === 'sqlite3') { - // Ignored unfinished. + // Blacklist unfinished drivers. continue; }