]> git.mjollnir.org Git - moodle.git/commitdiff
Fix for bug 1321:
authordefacer <defacer>
Fri, 7 May 2004 10:39:30 +0000 (10:39 +0000)
committerdefacer <defacer>
Fri, 7 May 2004 10:39:30 +0000 (10:39 +0000)
When clicking the month name from the month view block and go to detailed
month view, only events from the course you where in are shown by default.

blocks/calendar_month/block_calendar_month.php
calendar/lib.php

index 10b419da8cabc6f1bb56542619944c9a0121b75c..770d7c5881233f3ac90865a06b2c8a96ce6cf162 100644 (file)
@@ -36,15 +36,24 @@ class CourseBlock_calendar_month extends MoodleBlock {
         // We 'll need this later
         calendar_set_referring_course($courseshown);
 
+        if($courseshown !== false) {
+            // By default, the course filter will show this course only
+            $SESSION->cal_show_course = $courseshown;
+        }
+
+        // [pj] Let's leave this in, the above may not be the final solution
+        /*
         if($courseshown !== false && is_int($SESSION->cal_show_course) && $SESSION->cal_show_course != $courseshown) {
             // There is a filter in action that shows events from a course other than the current
-            // Obviously we have to cut it out
-            $SESSION->cal_show_course = true;
+            // Change it to show only the current course
+            $SESSION->cal_show_course = $courseshown;
         }
-       else if($courseshown !== false && is_array($SESSION->cal_show_course) && !in_array($courseshown, $SESSION->cal_show_course)) {
+        else if($courseshown !== false && is_array($SESSION->cal_show_course) && !in_array($courseshown, $SESSION->cal_show_course)) {
             // Same as above, only there are many courses being shown. Unfortunately, not this one.
-            $SESSION->cal_show_course = true;
+            // Change it to show only the current course
+            $SESSION->cal_show_course = $courseshown;
         }
+        */
 
         // Be VERY careful with the format for default courses arguments!
         // Correct formatting is [courseid] => 1 to be concise with moodlelib.php functions.
@@ -55,7 +64,7 @@ class CourseBlock_calendar_month extends MoodleBlock {
             // For the front page
             $this->content->text .= calendar_overlib_html();
             $this->content->text .= calendar_top_controls('frontpage', array('m' => $_GET['cal_m'], 'y' => $_GET['cal_y']));
-            $this->content->text.= calendar_get_mini($courses, $group, $user, $_GET['cal_m'], $_GET['cal_y']);
+            $this->content->text .= calendar_get_mini($courses, $group, $user, $_GET['cal_m'], $_GET['cal_y']);
             // No filters for now
         }
         else {
index 651f0a76953b11ecdb98697b18ec80862b15d209..d2e6ed6cc8fe3092bf4872da440523c2918793e0 100644 (file)
@@ -1007,6 +1007,13 @@ function calendar_set_filters(&$courses, &$group, &$user, $defaultcourses = NULL
     // WARNING: When calling this function, be VERY careful with the format for default courses arguments!
     // Correct formatting is [courseid] => 1 to be concise with moodlelib.php functions.
 
+    // Insidious bug-wannabe: setting $SESSION->cal_show_course to $course->id would cause
+    // the code to function incorrectly UNLESS we convert it to an integer. One case where
+    // PHP's loose type system works against us.
+    if(is_string($SESSION->cal_show_course)) {
+        $SESSION->cal_show_course = intval($SESSION->cal_show_course);
+    }
+
     $showcourse = (
         (is_int($SESSION->cal_show_course) && $SESSION->cal_show_course) ||
         (is_array($SESSION->cal_show_course) && count($SESSION->cal_show_course)) ||