From 51f8a12f2832517b88942f029b0dd953e70104a3 Mon Sep 17 00:00:00 2001 From: defacer Date: Fri, 7 May 2004 10:39:30 +0000 Subject: [PATCH] Fix for bug 1321: 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. --- .../calendar_month/block_calendar_month.php | 19 ++++++++++++++----- calendar/lib.php | 7 +++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/blocks/calendar_month/block_calendar_month.php b/blocks/calendar_month/block_calendar_month.php index 10b419da8c..770d7c5881 100644 --- a/blocks/calendar_month/block_calendar_month.php +++ b/blocks/calendar_month/block_calendar_month.php @@ -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 { diff --git a/calendar/lib.php b/calendar/lib.php index 651f0a7695..d2e6ed6cc8 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -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)) || -- 2.39.5