From: moodler Date: Fri, 21 May 2004 13:20:36 +0000 (+0000) Subject: Workshop now supports calendar events for the deadline date X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=5ba21e557e3021378507dfcd7cda29c0c40cbacc;p=moodle.git Workshop now supports calendar events for the deadline date --- diff --git a/mod/workshop/db/mysql.php b/mod/workshop/db/mysql.php index 44c35dfefa..b1d5bcc50e 100644 --- a/mod/workshop/db/mysql.php +++ b/mod/workshop/db/mysql.php @@ -75,6 +75,12 @@ function workshop_upgrade($oldversion) { NOT NULL default '0' AFTER `resubmission`"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop_grades` ADD INDEX (`assessmentid`)"); } + + if ($oldversion < 2004052100) { + include_once("$CFG->dirroot/mod/workshop/lib.php"); + workshop_refresh_events(); + } + return true; } diff --git a/mod/workshop/db/postgres7.php b/mod/workshop/db/postgres7.php index 1a7de6c578..708aa4cca8 100644 --- a/mod/workshop/db/postgres7.php +++ b/mod/workshop/db/postgres7.php @@ -18,12 +18,17 @@ function workshop_upgrade($oldversion) { assessmentid int8 NOT NULL default '0', userid int8 NOT NULL default '0', timecreated int8 NOT NULL default '0', - mailed int2 NOT NULL default '0', + mailed int2 NOT NULL default '0', comments text NOT NULL ) "); } return true; + + if ($oldversion < 2004052100) { + include_once("$CFG->dirroot/mod/workshop/lib.php"); + workshop_refresh_events(); + } } diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index eea98f8583..32cf224b4b 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -59,6 +59,7 @@ workshop_cron () workshop_delete_instance($id) workshop_grades($workshopid) workshop_print_recent_activity(&$logs, $isteacher=false) +workshop_refresh_events($workshop) workshop_update_instance($workshop) workshop_user_complete($course, $user, $mod, $workshop) workshop_user_outline($course, $user, $mod, $workshop) @@ -77,7 +78,24 @@ function workshop_add_instance($workshop) { $workshop->deadlinemonth, $workshop->deadlineday, $workshop->deadlinehour, $workshop->deadlineminute); - return insert_record("workshop", $workshop); + if ($returnid = insert_record("workshop", $workshop)) { + + $event = NULL; + $event->name = $workshop->name; + $event->description = $workshop->description; + $event->courseid = $workshop->course; + $event->groupid = 0; + $event->userid = 0; + $event->modulename = 'workshop'; + $event->instance = $returnid; + $event->eventtype = 'deadline'; + $event->timestart = $workshop->deadline; + $event->timeduration = 0; + + add_event($event); + } + + return $returnid; } @@ -561,6 +579,10 @@ function workshop_delete_instance($id) { $result = false; } + if (! delete_records('event', 'modulename', 'workshop', 'instance', $workshop->id)) { + $result = false; + } + return $result; } @@ -806,6 +828,50 @@ function workshop_print_recent_activity($course, $isteacher, $timestart) { } +/////////////////////////////////////////////////////////////////////////////// +function workshop_refresh_events($courseid = 0) { +// This standard function will check all instances of this module +// and make sure there are up-to-date events created for each of them. +// If courseid = 0, then every workshop event in the site is checked, else +// only workshop events belonging to the course specified are checked. +// This function is used, in its new format, by restore_refresh_events() + + if ($courseid == 0) { + if (! $workshops = get_records("workshop")) { + return true; + } + } else { + if (! $workshops = get_records("workshop", "course", $courseid)) { + return true; + } + } + $moduleid = get_field('modules', 'id', 'name', 'workshop'); + + foreach ($workshops as $workshop) { + $event = NULL; + $event->name = addslashes($workshop->name); + $event->description = addslashes($workshop->description); + $event->timestart = $workshop->deadline; + + if ($event->id = get_field('event', 'id', 'modulename', 'workshop', 'instance', $workshop->id)) { + update_event($event); + + } else { + $event->courseid = $workshop->course; + $event->groupid = 0; + $event->userid = 0; + $event->modulename = 'workshop'; + $event->instance = $workshop->id; + $event->eventtype = 'deadline'; + $event->timeduration = 0; + $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $workshop->id); + add_event($event); + } + + } + return true; +} + /////////////////////////////////////////////////////////////////////////////// function workshop_update_instance($workshop) { @@ -821,7 +887,21 @@ function workshop_update_instance($workshop) { $workshop->id = $workshop->instance; - return update_record("workshop", $workshop); + if ($returnid = update_record("workshop", $workshop)) { + + $event = NULL; + + if ($event->id = get_field('event', 'id', 'modulename', 'workshop', 'instance', $workshop->id)) { + + $event->name = $workshop->name; + $event->description = $workshop->description; + $event->timestart = $workshop->deadline; + + update_event($event); + } + } + + return $returnid; } diff --git a/mod/workshop/version.php b/mod/workshop/version.php index 660a96ab37..0072334947 100644 --- a/mod/workshop/version.php +++ b/mod/workshop/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2004013101; +$module->version = 2004052100; $module->requires = 2004013101; // Requires this Moodle version $module->cron = 60;