From 9e0d7f1d7a942e31d35165b84bec233b4ae64356 Mon Sep 17 00:00:00 2001 From: skeeter Date: Wed, 20 Feb 2002 02:01:55 +0000 Subject: [PATCH] GNU Path #150 - holidaycalc - occurence holidays shown wrong. --- calendar/inc/class.holidaycalc_US.inc.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/calendar/inc/class.holidaycalc_US.inc.php b/calendar/inc/class.holidaycalc_US.inc.php index c6a666ad66..c0165bc7de 100755 --- a/calendar/inc/class.holidaycalc_US.inc.php +++ b/calendar/inc/class.holidaycalc_US.inc.php @@ -23,15 +23,25 @@ class holidaycalc { if($holiday['occurence'] != 99) { $dow = $datetime->day_of_week($year,$holiday['month'],1); - $day = (((7 * $holiday['occurence']) - 6) + (($holiday['dow'] - $dow) % 7)); + $day = (((7 * $holiday['occurence']) - 6) + ((($holiday['dow'] + 7) - $dow) % 7)); $day += ($day < 1 ? 7 : 0); - $day += ($holiday['dow']==1 ? 7 : 0); + // What is the point of this? + // Add 7 when the holiday falls on a Monday??? + //$day += ($holiday['dow']==1 ? 7 : 0); + + // Sometimes the 5th occurance of a weekday (ie the 5th monday) + // can spill over to the next month. This prevents that. + $ld = $datetime->days_in_month($holiday['month'],$year); + if ($day > $ld) + { + return; + } } else { $ld = $datetime->days_in_month($holiday['month'],$year); $dow = $datetime->day_of_week($year,$holiday['month'],$ld); - $day = $ld - ($dow - $holiday['dow']) % 7 ; + $day = $ld - (($dow + 7) - $holiday['dow']) % 7 ; } } else