--- archive.bak 2004-05-20 21:30:00.000000000 +0200 +++ archive.module 2004-07-20 13:43:04.959598400 +0200 @@ -1,5 +1,5 @@ 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; + // AH040720 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()); @@ -48,6 +49,7 @@ else if (arg(0) == "archive" && arg(3) $requested = $end_of_today + $user->timezone; } + $start_of_month = mktime(0, 0, 0, $month, 1, $year); // Extract first day of the month: @@ -62,13 +64,13 @@ $end_of_month = mktime(23, 59, 59, $mo if (!empty($cache)) { return $cache->data; - } - + } + // 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); $result = db_query("SELECT created FROM {node} WHERE status = 1 AND created > $start_of_month AND created < $end_of_month"); @@ -83,7 +85,7 @@ while ($day_with_post = db_fetch_objec $output .= "\n\n"; $output .= "
"; $output .= "\n"; - $output .= " \n"; + $output .= " \n"; // First day of week (0 => Sunday, 1 => Monday, ...) $cday = $weekstart = variable_get("default_firstday", 0); @@ -129,7 +131,7 @@ if (in_array($nday, $days_with_posts $daytext = "
$nday
"; $dayclass = "day-normal"; } - if ($date == $requested) { + if (($date == $requested)&&($day)) { $output .= " \n"; } else if ($date == $start_of_today) { @@ -216,8 +218,14 @@ if ($op == t("Show")) { $day = arg(3); } - $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: @@ -228,7 +236,7 @@ ** Prepare the values of the form fiel $days = drupal_map_assoc(range(0, 31)); $start = "
"; - $start .= form_select("", "year", ($year ? $year : date("Y")), $years). form_select("", "month", ($month ? $month : date("m")), $months) . form_select("", "day", ($day ? $day : date("d")), $days) . form_submit(t("Show")); + $start .= form_select("", "year", ($year ? $year : date("Y")), $years). form_select("", "month", ($month ? $month : date("m")), $months) . form_select("", "day", (isset($day) ? $day : date("d")), $days) . form_submit(t("Show")); $start .= "
"; $output .= form($start); @@ -237,7 +245,7 @@ ** Fetch nodes for the selected date, ** selected. */ - if ($year && $month && $day) { + if ($year && $month) { $result = db_query_range("SELECT nid FROM {node} WHERE status = '1' AND created > %d AND created < %d ORDER BY created", $date, $date_end, 0, 20); while ($nid = db_fetch_object($result)) {
". l("«", "archive/". date("Y/m/d", $prev)) ." ". format_date($requested, "custom", "F") . date(" Y", $requested) ." ". ($nextmonth <= time() ? l("»", "archive/". date("Y/m/d", $next)) : " ") ."
". l("«", "archive/". date("Y/m", $prev)) ." ". format_date($requested, "custom", "F") . date(" Y", $requested) ." ". ($nextmonth <= time() ? l("»", "archive/". date("Y/m", $next)) : " ") ."
$daytext