From 97c4410778c8f89e6d6587b67c750d1588c46010 Mon Sep 17 00:00:00 2001
From: michaelpenne <michaelpenne>
Date: Fri, 8 Apr 2005 21:38:09 +0000
Subject: [PATCH] added calendar event code to add, update, and delete instance

---
 mod/lesson/lib.php | 85 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 82 insertions(+), 3 deletions(-)

diff --git a/mod/lesson/lib.php b/mod/lesson/lib.php
index 75c8a43f2d6..e46b506c1fc 100644
--- a/mod/lesson/lib.php
+++ b/mod/lesson/lib.php
@@ -2,9 +2,12 @@
         // modified by mnielsen @ CDC
         /// Update:  The lib.php now contains only the functions that are
         /// used outside of the lesson module.  All functions (I hope) that are only local
-        /// are now in locallib.php.  All the constants moved there as well.
+        /// are now in locallib.php.
 
 /// Library of functions and constants for module lesson
+
+define("LESSON_MAX_EVENT_LENGTH", "432000");   // 5 days maximum
+
 /// (replace lesson with the name of your module and delete this line)
 
 /*******************************************************************/
@@ -32,7 +35,10 @@ function lesson_add_instance($lesson) {
         unset($lesson->password);
     }
     /// CDC-FLAG ///
-
+	if (!$lesson->id = insert_record("lesson", $lesson)) {
+		return false; // bad
+	}
+	
     if ($lesson->lessondefault) {
         $lessondefault = $lesson;
         unset($lessondefault->lessondefault);
@@ -49,7 +55,39 @@ function lesson_add_instance($lesson) {
         unset($lesson->lessondefault);
     }
     
-    return insert_record("lesson", $lesson);
+	// got this code from quiz, thanks quiz!!!
+	delete_records('event', 'modulename', 'lesson', 'instance', $lesson->id);  // Just in case
+
+    $event = new stdClass;
+    $event->name        = addslashes($lesson->name);
+    $event->description = addslashes($lesson->name);
+    $event->courseid    = $lesson->course;
+    $event->groupid     = 0;
+    $event->userid      = 0;
+    $event->modulename  = 'lesson';
+    $event->instance    = $lesson->id;
+    $event->eventtype   = 'open';
+    $event->timestart   = $lesson->available;
+    $event->visible     = instance_is_visible('lesson', $lesson);
+    $event->timeduration = ($lesson->deadline - $lesson->available);
+
+    if ($event->timeduration > LESSON_MAX_EVENT_LENGTH) {  /// Long durations create two events
+        $event2 = $event;
+
+        $event->name         .= ' ('.get_string('lessonopens', 'lesson').')';
+        $event->timeduration  = 0;
+
+        $event2->timestart    = $lesson->deadline;
+        $event2->eventtype    = 'close';
+        $event2->timeduration = 0;
+        $event2->name        .= ' ('.get_string('lessoncloses', 'lesson').')';
+
+        add_event($event2);
+    }
+
+    add_event($event);
+
+    return $lesson->id;
 }
 
 
@@ -92,6 +130,42 @@ function lesson_update_instance($lesson) {
         unset($lesson->lessondefault);
     }
     
+	// update the calendar events (credit goes to quiz module)
+	if ($events = get_records_select('event', "modulename = 'lesson' and instance = '$lesson->id'")) {
+        foreach($events as $event) {
+            delete_event($event->id);
+        }
+    }
+
+    $event = new stdClass;
+    $event->name        = addslashes($lesson->name);
+    $event->description = addslashes($lesson->name);
+    $event->courseid    = $lesson->course;
+    $event->groupid     = 0;
+    $event->userid      = 0;
+    $event->modulename  = 'lesson';
+    $event->instance    = $lesson->id;
+    $event->eventtype   = 'open';
+    $event->timestart   = $lesson->available;
+    $event->visible     = instance_is_visible('lesson', $lesson);
+    $event->timeduration = ($lesson->deadline - $lesson->available);
+
+    if ($event->timeduration > LESSON_MAX_EVENT_LENGTH) {  /// Long durations create two events
+        $event2 = $event;
+
+        $event->name         .= ' ('.get_string('lessonopens', 'lesson').')';
+        $event->timeduration  = 0;
+
+        $event2->timestart    = $lesson->deadline;
+        $event2->eventtype    = 'close';
+        $event2->timeduration = 0;
+        $event2->name        .= ' ('.get_string('lessoncloses', 'lesson').')';
+
+        add_event($event2);
+    }
+
+    add_event($event);
+
     if (!empty($lesson->deleteattempts)) {
         $subject = "Delete User Attempts";
         $message = "";
@@ -175,6 +249,11 @@ function lesson_delete_instance($id) {
     if (! delete_records("lesson_high_scores", "lessonid", "$lesson->id")) {
             $result = false;
     }
+	if ($events = get_records_select('event', "modulename = 'lesson' and instance = '$lesson->id'")) {
+        foreach($events as $event) {
+            delete_event($event->id);
+        }
+	}
     
 	return $result;
 }