MDL-25660 recreate all workshop calendar events

Due to complex workshop upgrade path from 1.9 and missing calendar events
support in 2.x, the only safe way to get rid of potentially invalid
calendar events (such as those reported in MDL-26687) is to remove all
current workshop events and recreate them from scratch.
This commit is contained in:
David Mudrak
2012-04-13 05:08:20 +02:00
parent 5f05ebc40f
commit 3108a0f862
2 changed files with 38 additions and 1 deletions
+37
View File
@@ -319,5 +319,42 @@ function xmldb_workshop_upgrade($oldversion) {
upgrade_mod_savepoint(true, 2011061001, 'workshop');
}
/**
* Remove all workshop calendar events
*/
if ($oldversion < 2011061002) {
require_once($CFG->dirroot . '/calendar/lib.php');
$events = $DB->get_records('event', array('modulename' => 'workshop'));
foreach ($events as $event) {
$event = calendar_event::load($event);
$event->delete();
}
upgrade_mod_savepoint(true, 2011061002, 'workshop');
}
/**
* Recreate all workshop calendar events
*/
if ($oldversion < 2011061003) {
require_once(dirname(dirname(__FILE__)) . '/lib.php');
$sql = "SELECT w.id, w.course, w.name, w.intro, w.introformat, w.submissionstart,
w.submissionend, w.assessmentstart, w.assessmentend,
cm.id AS cmid
FROM {workshop} w
JOIN {modules} m ON m.name = 'workshop'
JOIN {course_modules} cm ON (cm.module = m.id AND cm.course = w.course AND cm.instance = w.id)";
$rs = $DB->get_recordset_sql($sql);
foreach ($rs as $workshop) {
$cmid = $workshop->cmid;
unset($workshop->cmid);
workshop_calendar_update($workshop, $cmid);
}
$rs->close();
upgrade_mod_savepoint(true, 2011061003, 'workshop');
}
return true;
}
+1 -1
View File
@@ -29,6 +29,6 @@
defined('MOODLE_INTERNAL') || die();
$module->version = 2011061001;
$module->version = 2011061003;
$module->requires = 2011020900; // Requires this Moodle version
//$module->cron = 60;