Index: modules/archive.module =================================================================== RCS file: /cvs/drupal/drupal/modules/archive.module,v retrieving revision 1.81 diff -u -r1.81 archive.module --- modules/archive.module 17 Jul 2005 18:29:31 -0000 1.81 +++ modules/archive.module 25 Aug 2005 20:03:59 -0000 @@ -28,19 +28,20 @@ $end_of_today = mktime(23, 59, 59, date('n', time()), date('d', time()), date('Y', time())) + $user->timezone; // Extract the requested date: - if ($edit['year'] && $edit['month'] && $edit['day']) { + if ($edit['year'] && $edit['month']) { $year = $edit['year']; $month = $edit['month']; $day = $edit['day']; - $requested = mktime(0, 0, 0, $month, $day, $year) + $user->timezone; + // AH050508 If $day not defined, assume 2nd day of the month to build calender, avoiding any timezone confusion + $requested = mktime(0, 0, 0, $month, $day?$day:2, $year) + $user->timezone; } - else if (arg(0) == 'archive' && arg(3)) { + else if (arg(0) == 'archive' && arg(2)) { $year = arg(1); $month = arg(2); $day = arg(3); - $requested = mktime(0, 0, 0, $month, $day, $year) + $user->timezone; + $requested = mktime(0, 0, 0, $month, $day?$day:2, $year) + $user->timezone; } else { $year = date('Y', time()); @@ -68,9 +69,9 @@ // Calculate previous and next months dates and check for shorter months (28/30 days) $prevmonth = mktime(23, 59, 59, $month - 1, 1, $year); - $prev = mktime(23, 59, 59, $month - 1, min(date('t', $prevmonth), $day), $year); + $prev = mktime(23, 59, 59, $month - 1, min(date('t', $prevmonth), $day?$day:1), $year); $nextmonth = mktime(23, 59, 59, $month + 1, 1, $year); - $next = mktime(23, 59, 59, $month + 1, min(date('t', $nextmonth), $day), $year); + $next = mktime(23, 59, 59, $month + 1, min(date('t', $nextmonth), $day?$day:1), $year); $sql = 'SELECT n.nid, n.created FROM {node} n WHERE n.status = 1 AND n.created > %d AND n.created < %d ORDER BY n.created'; $sql = db_rewrite_sql($sql); @@ -91,7 +92,7 @@ $output .= "\n\n"; $output .= '
$daytext | \n"; } else if ($date == $start_of_today) { @@ -226,20 +227,28 @@ $day = $edit['day']; } - $date = mktime(0, 0, 0, $month, $day, $year) - $user->timezone; - $date_end = mktime(0, 0, 0, $month, $day + 1, $year) - $user->timezone; + if ($day) { + $date = mktime(0, 0, 0, $month, $day, $year) - $user->timezone; + $date_end = mktime(0, 0, 0, $month, $day + 1, $year) - $user->timezone; + } else { + $day = 0; + $date = mktime(0, 0, 0, $month, 1, $year) - $user->timezone; + $date_end = mktime(23, 59, 59, $month, 31, $year) - $user->timezone; + } // Prepare the values of the form fields. - $years = drupal_map_assoc(range(2000, 2005)); + $years = drupal_map_assoc(range(2000, date('Y'))); $months = array(1 => t('January'), 2 => t('February'), 3 => t('March'), 4 => t('April'), 5 => t('May'), 6 => t('June'), 7 => t('July'), 8 => t('August'), 9 => t('September'), 10 => t('October'), 11 => t('November'), 12 => t('December')); - $days = drupal_map_assoc(range(0, 31)); + $dayrange = range(0,31); + $dayrange[0]=t("All days"); + $days = drupal_map_assoc($dayrange); $start = '