? 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'],