From a2c7458c98dd67894a68bc636a2808263e9feb63 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Sun, 21 Sep 2003 20:02:54 +0000 Subject: Added a fix for when peeps write calendar start times before 1970 (when unix started). --- calendars/US Holidays.ics | 314 ++++++---------------------------------------- functions/ical_parser.php | 12 +- 2 files changed, 48 insertions(+), 278 deletions(-) diff --git a/calendars/US Holidays.ics b/calendars/US Holidays.ics index c71decd..544f957 100644 --- a/calendars/US Holidays.ics +++ b/calendars/US Holidays.ics @@ -1,277 +1,37 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//Rockin' Software//WinDates 5.0//EN -METHOD:PUBLISH - -BEGIN:VEVENT -SUMMARY:Grandparent's Day -DESCRIPTION:First Sunday after Labor Day -DTSTAMP:20030701T000000Z -UID:holiday0017@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:19780910 -RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=13,7,8,9,10,11,12;BYMONTH=9 -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Election Day -DESCRIPTION:Tuesday after 1st Monday in November -DTSTAMP:20030701T000000Z -UID:holiday0013@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17531106 -RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8;BYMONTH=11 -END:VEVENT - -BEGIN:VEVENT -SUMMARY:April Fools Day -DESCRIPTION:April 1 -DTSTAMP:20030701T000000Z -UID:holiday0000@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530401 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Armed Forces Day -DESCRIPTION:3rd Saturday of May -DTSTAMP:20030701T000000Z -UID:holiday0001@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530519 -RRULE:FREQ=MONTHLY;BYMONTH=5;BYDAY=3SA -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Columbus Day -DESCRIPTION:2nd Monday of October -DTSTAMP:20030701T000000Z -UID:holiday0008@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17531008 -RRULE:FREQ=MONTHLY;BYMONTH=10;BYDAY=2MO -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Daylight Savings +1 hr -DESCRIPTION:1st Sunday of April -DTSTAMP:20030701T000000Z -UID:holiday0009@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530401 -RRULE:FREQ=MONTHLY;BYMONTH=4;BYDAY=1SU -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Daylight Savings -1 hr -DESCRIPTION:Last Sunday of October -DTSTAMP:20030701T000000Z -UID:holiday0010@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17531028 -RRULE:FREQ=MONTHLY;BYMONTH=10;BYDAY=-1SU -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Father's Day -DESCRIPTION:3rd Sunday of June -DTSTAMP:20030701T000000Z -UID:holiday0014@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530617 -RRULE:FREQ=MONTHLY;BYMONTH=6;BYDAY=3SU -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Flag Day -DESCRIPTION:June 14 -DTSTAMP:20030701T000000Z -UID:holiday0015@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530614 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Groundhog Day -DESCRIPTION:February 2 -DTSTAMP:20030701T000000Z -UID:holiday0018@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530202 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Halloween -DESCRIPTION:October 31 -DTSTAMP:20030701T000000Z -UID:holiday0019@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17531031 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Independence Day -DESCRIPTION:July 4 -DTSTAMP:20030701T000000Z -UID:holiday0020@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530704 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Labor Day -DESCRIPTION:1st Monday of September -DTSTAMP:20030701T000000Z -UID:holiday0021@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530903 -RRULE:FREQ=MONTHLY;BYMONTH=9;BYDAY=1MO -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Lincoln's Birthday -DESCRIPTION:February 12 -DTSTAMP:20030701T000000Z -UID:holiday0022@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530212 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Mardi Gras (Fat Tuesday) -DESCRIPTION:47 days before Easter -DTSTAMP:20030701T000000Z -UID:holiday0023@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530308 -X-WD-RECUR-EASTER:TRUE -X-WD-RECUR-OFFSET:-47 -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Martin Luther King Jr. -DESCRIPTION:3rd Monday of January -DTSTAMP:20030701T000000Z -UID:holiday0024@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530115 -RRULE:FREQ=MONTHLY;BYMONTH=1;BYDAY=3MO -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Memorial Day -DESCRIPTION:Last Monday of May -DTSTAMP:20030701T000000Z -UID:holiday0025@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530528 -RRULE:FREQ=MONTHLY;BYMONTH=5;BYDAY=-1MO -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Mother's Day -DESCRIPTION:2nd Sunday of May -DTSTAMP:20030701T000000Z -UID:holiday0026@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530513 -RRULE:FREQ=MONTHLY;BYMONTH=5;BYDAY=2SU -END:VEVENT - -BEGIN:VEVENT -SUMMARY:New Year's Day -DESCRIPTION:January 1 -DTSTAMP:20030701T000000Z -UID:holiday0027@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530101 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:New Year's Eve -DESCRIPTION:December 31 -DTSTAMP:20030701T000000Z -UID:holiday0028@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17531231 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:President's Day -DESCRIPTION:3rd Monday of February -DTSTAMP:20030701T000000Z -UID:holiday0030@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530219 -RRULE:FREQ=MONTHLY;BYMONTH=2;BYDAY=3MO -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Secretaries Day -DESCRIPTION:Wednesday of last full week in April -DTSTAMP:20030701T000000Z -UID:holiday0032@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:19520423 -RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=WE;BYMONTHDAY=25,26,27,21,22,23,24;BYMONTH=4 -END:VEVENT - -BEGIN:VEVENT -SUMMARY:St. Patrick's Day -DESCRIPTION:March 17 -DTSTAMP:20030701T000000Z -UID:holiday0033@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530317 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Thanksgiving -DESCRIPTION:4th Thursday of November -DTSTAMP:20030701T000000Z -UID:holiday0034@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17531122 -RRULE:FREQ=MONTHLY;BYMONTH=11;BYDAY=4TH -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Valentine's Day -DESCRIPTION:February 14 -DTSTAMP:20030701T000000Z -UID:holiday0035@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530214 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Veteran's Day -DESCRIPTION:November 11 -DTSTAMP:20030701T000000Z -UID:holiday0037@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17531111 -RRULE:FREQ=YEARLY -END:VEVENT - -BEGIN:VEVENT -SUMMARY:Washington's Birthday -DESCRIPTION:February 22 -DTSTAMP:20030701T000000Z -UID:holiday0038@icaldates.com -CATEGORIES:Holiday - US -DTSTART;VALUE=DATE:17530222 -RRULE:FREQ=YEARLY -END:VEVENT - -END:VCALENDAR +BEGIN:VCALENDAR + + +VERSION:2.0 + + +PRODID:-//Rockin' Software//WinDates 5.0//EN + + +METHOD:PUBLISH + + + + +BEGIN:VEVENT + +SUMMARY:Washington's Birthday + +DESCRIPTION:February 22 + +DTSTAMP:20030701T000000Z + +UID:holiday0038@icaldates.com + +CATEGORIES:Holiday - US + +DTSTART;VALUE=DATE:17530222 + +RRULE:FREQ=YEARLY + +END:VEVENT + + + +END:VCALENDAR + + diff --git a/functions/ical_parser.php b/functions/ical_parser.php index 40e377d..8895b88 100644 --- a/functions/ical_parser.php +++ b/functions/ical_parser.php @@ -387,6 +387,7 @@ foreach ($cal_filelist as $filename) { break; case 'END': + if (!isset($number)) $number = 1; // if $until isn't set yet, we set it to the end of our range we're looking at // The FREQ switch array will always kick our early, so lets try this workaround. if (isset($until)) $until = strtotime('+'.$interval.' '.$freq_type, $until);; @@ -494,7 +495,11 @@ foreach ($cal_filelist as $filename) { } break; case 'YEARLY': - if (!isset($bymonth)) $bymonth[] = date('m', $start_date_time); + + if (!isset($bymonth)) { + $m = date('m', $start_date_time); + $bymonth = array("$m"); + } foreach($bymonth as $month) { $year = date('Y', $next_range_time); if ((isset($byday)) && (is_array($byday))) { @@ -764,6 +769,11 @@ foreach ($cal_filelist as $filename) { $data = ereg_replace('Z', '', $data); $field = ereg_replace(';VALUE=DATE-TIME', '', $field); if (preg_match("/^DTSTART;VALUE=DATE/i", $field)) { + ereg ('([0-9]{4})([0-9]{2})([0-9]{2})', $data, $dtstart_check); + if ($dtstart_check[1] < 1969) { + $dtstart_check[1] = '1990'; + $data = $dtstart_check[1].$dtstart_check[2].$dtstart_check[3]; + } $allday_start = $data; $start_date = $allday_start; $start_unixtime = strtotime($data); -- cgit v1.2.3