? archive/_________station_archive.install
? archive/____station_archive.module
Index: dayhour.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/station/dayhour.inc,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 dayhour.inc
--- dayhour.inc	25 Nov 2007 21:08:58 -0000	1.17
+++ dayhour.inc	8 Dec 2007 00:47:08 -0000
@@ -141,6 +141,10 @@ function station_day_from_minute($minute
  *
  * @param $minutes
  *   Integer specifying minutes since midnight on Sunday.
+ * @param $round_backward
+ *   A boolean indicating which way a midnight time should be rounded, 24:00
+ *   of the previous day or 0:00 of the next. A true value would return the
+ *   previous day.
  * @return
  *   An array with the following keys:
  *     'w'       - Day of week (0-6).
@@ -153,32 +157,41 @@ function station_day_from_minute($minute
  *     'minutes' - minutes since midnight Sunday.
  *     'a'       - am/pm.
  */
-function station_time_from_minute($minutes) {
-  $min = $minutes % 60;
-  $day = (int) (($minutes) / MINUTES_IN_DAY);
-  $hour24 = (int) (($minutes % MINUTES_IN_DAY) / 60);
-  if (!($hour12 = $hour24 % 12)) {
-    $hour12 = 12;
-  }
-  $i = str_pad($min, 2, '0', STR_PAD_LEFT);
-  $h = str_pad($hour12, 2, '0', STR_PAD_LEFT);
+function station_time_from_minute($week_minutes, $round_backward = FALSE) {
+  $week_minutes = $week_minutes % MINUTES_IN_WEEK;
+  $day_minutes = $week_minutes % MINUTES_IN_DAY;
+  $hour_minutes = $day_minutes % 60;
+  $day = (int) ($week_minutes / MINUTES_IN_DAY);
+
+  if ($day_minutes == 0 && $round_backward) {
+    $day--;
+    $day_minutes = MINUTES_IN_DAY;
+  }
+
+  $hour_24 = (int) ($day_minutes / 60);
+  $hour_12 = ($hour_24 % 12 == 0) ? 12 : $hour_24 % 12;
+  $hour_24_pad = str_pad($hour_24, 2, '0', STR_PAD_LEFT);
+  $hour_12_pad = str_pad($hour_12, 2, '0', STR_PAD_LEFT);
+  $hour_minutes_pad = str_pad($hour_minutes, 2, '0', STR_PAD_LEFT);
+
   if (variable_get('station_clock', 12) == 12) {
-    $time = $hour12 . (($min == 0) ? '' : ":$i");
-    $a = ($hour24 > 11) ? 'pm' : 'am';
+    $time = $hour_12 . (($hour_minutes == 0) ? '' : ":$hour_minutes_pad");
+    $a = ($hour_24 > 11 && $hour_24 < 24) ? 'pm' : 'am';
   }
   else {
-    $time = "$hour24:$i";
+    $time = "$hour_24:$hour_minutes_pad";
     $a = '';
   }
+
   return array(
     'w' => $day,
-    'G' => $hour24,
-    'g' => $hour12,
-    'H' => str_pad($hour24, 2, '0', STR_PAD_LEFT),
-    'h' => $h,
-    'i' => $i,
+    'G' => $hour_24,
+    'g' => $hour_12,
+    'H' => $hour_24_pad,
+    'h' => $hour_12_pad,
+    'i' => $hour_minutes_pad,
     'time' => $time,
-    'minutes' => $minutes,
+    'minutes' => $week_minutes,
     'a' => $a,
   );
 }
@@ -195,8 +208,8 @@ function station_time_from_minute($minut
  *   Formatted string.
  */
 function theme_station_dayhour_range($start, $finish) {
-  $start = station_time_from_minute($start);
-  $finish = station_time_from_minute($finish);
+  $start = station_time_from_minute($start, FALSE);
+  $finish = station_time_from_minute($finish, TRUE);
   $format_params = array(
     '@sday' => station_day_name($start['w']), '@shour' => $start['g'],
     '@stime' => $start['time'], '@sampm' => $start['a'],
