calendar events are now added/deleted when hotpots are added/updated/deleted
This commit is contained in:
+73
-9
@@ -161,6 +161,12 @@ define("HOTPOT_DISPLAYNEXT_QUIZ", "0");
|
||||
define("HOTPOT_DISPLAYNEXT_COURSE", "1");
|
||||
define("HOTPOT_DISPLAYNEXT_INDEX", "2");
|
||||
|
||||
/**
|
||||
* If start and end date for the quiz are more than this many seconds apart
|
||||
* they will be represented by two separate events in the calendar
|
||||
*/
|
||||
define("HOTPOT_MAX_EVENT_LENGTH", "432000"); // 5 days maximum
|
||||
|
||||
//////////////////////////////////
|
||||
/// CORE FUNCTIONS
|
||||
|
||||
@@ -186,7 +192,9 @@ define("HOTPOT_DISPLAYNEXT_INDEX", "2");
|
||||
|
||||
function hotpot_add_instance(&$hp) {
|
||||
if (hotpot_set_form_values($hp)) {
|
||||
$result = insert_record("hotpot", $hp);
|
||||
if ($result = insert_record('hotpot', $hp)) {
|
||||
hotpot_update_events($hp);
|
||||
}
|
||||
} else {
|
||||
$result= false;
|
||||
}
|
||||
@@ -196,12 +204,66 @@ function hotpot_add_instance(&$hp) {
|
||||
function hotpot_update_instance(&$hp) {
|
||||
if (hotpot_set_form_values($hp)) {
|
||||
$hp->id = $hp->instance;
|
||||
$result = update_record("hotpot", $hp);
|
||||
if ($result = update_record('hotpot', $hp)) {
|
||||
hotpot_update_events($hp);
|
||||
}
|
||||
} else {
|
||||
$result= false;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
function hotpot_update_events($hotpot) {
|
||||
|
||||
// remove any previous calendar events for this hotpot
|
||||
delete_records('event', 'modulename', 'hotpot', 'instance', $hotpot->id);
|
||||
|
||||
$event = new stdClass();
|
||||
$event->description = $hotpot->summary;
|
||||
$event->courseid = $hotpot->course;
|
||||
$event->groupid = 0;
|
||||
$event->userid = 0;
|
||||
$event->modulename = 'hotpot';
|
||||
$event->instance = $hotpot->id;
|
||||
$event->timestart = $hotpot->timeopen;
|
||||
if ($cm = get_coursemodule_from_id('hotpot', $hotpot->id)) {
|
||||
$event->visible = hotpot_is_visible($cm);
|
||||
} else {
|
||||
$event->visible = 1;
|
||||
}
|
||||
|
||||
if ($hotpot->timeclose && $hotpot->timeopen) {
|
||||
// we have both a start and an end date
|
||||
$event->eventtype = 'open';
|
||||
$event->timeduration = ($hotpot->timeclose - $hotpot->timeopen);
|
||||
|
||||
if ($event->timeduration > HOTPOT_MAX_EVENT_LENGTH) { /// Long durations create two events
|
||||
|
||||
$event->name = $hotpot->name.' ('.get_string('hotpotopens', 'hotpot').')';
|
||||
$event->timeduration = 0;
|
||||
add_event($event);
|
||||
|
||||
$event->timestart = $hotpot->timeclose;
|
||||
$event->eventtype = 'close';
|
||||
$event->name = $hotpot->name.' ('.get_string('hotpotcloses', 'hotpot').')';
|
||||
unset($event->id);
|
||||
add_event($event);
|
||||
} else { // single event with duration
|
||||
$event->name = $hotpot->name;
|
||||
add_event($event);
|
||||
}
|
||||
} elseif ($hotpot->timeopen) { // only an open date
|
||||
$event->name = $hotpot->name.' ('.get_string('hotpotopens', 'hotpot').')';
|
||||
$event->eventtype = 'open';
|
||||
$event->timeduration = 0;
|
||||
add_event($event);
|
||||
} elseif ($hotpot->timeclose) { // only a closing date
|
||||
$event->name = $hotpot->name.' ('.get_string('hotpotcloses', 'hotpot').')';
|
||||
$event->timestart = $hotpot->timeclose;
|
||||
$event->eventtype = 'close';
|
||||
$event->timeduration = 0;
|
||||
add_event($event);
|
||||
}
|
||||
}
|
||||
|
||||
function hotpot_set_form_values(&$hp) {
|
||||
$ok = true;
|
||||
@@ -796,16 +858,18 @@ function hotpot_delete_instance($id) {
|
||||
/// and any data that depends on it.
|
||||
|
||||
$result = false;
|
||||
if (delete_records("hotpot", "id", "$id")) {
|
||||
if (delete_records('hotpot', 'id', "$id")) {
|
||||
$result = true;
|
||||
delete_records("hotpot_questions", "hotpot", "$id");
|
||||
if ($attempts = get_records_select("hotpot_attempts", "hotpot='$id'")) {
|
||||
delete_records('hotpot_questions', 'hotpot', "$id");
|
||||
if ($attempts = get_records_select('hotpot_attempts', "hotpot='$id'")) {
|
||||
$ids = implode(',', array_keys($attempts));
|
||||
delete_records_select("hotpot_attempts", "id IN ($ids)");
|
||||
delete_records_select("hotpot_details", "attempt IN ($ids)");
|
||||
delete_records_select("hotpot_responses", "attempt IN ($ids)");
|
||||
delete_records_select('hotpot_attempts', "id IN ($ids)");
|
||||
delete_records_select('hotpot_details', "attempt IN ($ids)");
|
||||
delete_records_select('hotpot_responses', "attempt IN ($ids)");
|
||||
}
|
||||
}
|
||||
// remove calendar events for this hotpot
|
||||
delete_records('event', 'modulename', 'hotpot', 'instance', $id);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
function hotpot_delete_and_notify($table, $select, $strtable) {
|
||||
|
||||
Reference in New Issue
Block a user