]> git.mjollnir.org Git - moodle.git/commitdiff
Fixes for slightly incorrect behavior on days where the DST setting changes.
authordefacer <defacer>
Sat, 20 Nov 2004 20:10:03 +0000 (20:10 +0000)
committerdefacer <defacer>
Sat, 20 Nov 2004 20:10:03 +0000 (20:10 +0000)
Not quite correct in some places though (those require more attention).

calendar/lib.php
calendar/view.php

index 87bfb8ef1fe2113e3200d457c8a8a8a90af3f6d0..0c1fc168fc31a535a7c0121f0665c7c16105ab3e 100644 (file)
@@ -290,6 +290,9 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve
     // This effectively adds as many days as needed, and the final SECS_IN_DAY - 1
     // serves to cover the duration until the end of the final day. We could
     // just do another gmmktime() and an addition, but this is "faster" :)
+
+    // WARNING: IT IS ALSO BUGGY WITH REGARDS TO DST CHANGES! THIS HAS TO BE FIXED SOMEDAY!
+    // IF YOU DO SECS ARITHMETIC, THE CODE WILL ALWAYS BE BUGGY WITH REGARD TO DST!
     $display->tend = $display->tstart + (SECS_IN_DAY * $display->range) - 1;
 
     // Get the events matching our criteria
@@ -535,8 +538,8 @@ function calendar_top_controls($type, $data) {
         case 'day':
             $data['d'] = $date['mday']; // Just for convenience
             $dayname = calendar_wday_name($date['weekday']);
-            $prevdate = getdate($time - SECS_IN_DAY);
-            $nextdate = getdate($time + SECS_IN_DAY);
+            $prevdate = getdate(make_timestamp($data['y'], $data['m'], $data['d'] - 1));
+            $nextdate = getdate(make_timestamp($data['y'], $data['m'], $data['d'] + 1));
             $prevname = calendar_wday_name($prevdate['weekday']);
             $nextname = calendar_wday_name($nextdate['weekday']);
             $content .= "<table style='width: 100%;'><tr>\n";
index a12992e7f61e8d4e018d77ea2fc87a085a3465c0..1fb3d57f8107e8cd8628d231aaa072d7b9f64101 100644 (file)
@@ -193,7 +193,7 @@ function calendar_show_day($d, $m, $y, $courses, $groups, $users) {
     $getvars = 'from=day&amp;cal_d='.$d.'&amp;cal_m='.$m.'&amp;cal_y='.$y; // For filtering
 
     $starttime = make_timestamp($y, $m, $d);
-    $endtime   = $starttime + SECS_IN_DAY - 1;
+    $endtime   = make_timestamp($y, $m, $d + 1) - 1;
 
     $events = calendar_get_upcoming($courses, $groups, $users, 1, 100, $starttime);