From: <ji...@us...> - 2008-12-26 05:54:51
|
Update of /cvsroot/phpicalendar/phpicalendar/functions In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv24761/functions Modified Files: date_functions.php ical_parser.php is_daylight.php Log Message: fix US holidays; fix 1743686 where byday set and timezone pushes event to different day Index: date_functions.php =================================================================== RCS file: /cvsroot/phpicalendar/phpicalendar/functions/date_functions.php,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** date_functions.php 25 Dec 2008 18:45:26 -0000 1.41 --- date_functions.php 26 Dec 2008 05:54:46 -0000 1.42 *************** *** 210,214 **** /* Returns an array of the date and time extracted from the data ! passed in. This array contains (unixtime, date, time, allday). $data = A string representing a date-time per RFC2445. --- 210,214 ---- /* Returns an array of the date and time extracted from the data ! passed in. This array contains (unixtime, date, time, allday, tzid). $data = A string representing a date-time per RFC2445. *************** *** 220,224 **** function extractDateTime($data, $property, $field) { global $tz_array, $phpiCal_config, $calendar_tz; - $allday =''; #suppress error on returning undef. // Check for zulu time. --- 220,223 ---- *************** *** 259,265 **** $offset_tmp = chooseOffset($unixtime, $tz_dt); } elseif (isset($calendar_tz)) { ! $offset_tmp = chooseOffset($unixtime, $calendar_tz); } else { $offset_tmp = $server_offset_tmp; } // Set the values. --- 258,266 ---- $offset_tmp = chooseOffset($unixtime, $tz_dt); } elseif (isset($calendar_tz)) { ! $offset_tmp = chooseOffset($unixtime, $calendar_tz); ! $tz_dt = $calendar_tz; } else { $offset_tmp = $server_offset_tmp; + $tz_dt = $phpiCal_config->timezone; } // Set the values. *************** *** 270,274 **** // Return the results. ! return array($unixtime, $date, $time, $allday); } --- 271,275 ---- // Return the results. ! return array($unixtime, $date, $time, $allday, $tz_dt); } Index: ical_parser.php =================================================================== RCS file: /cvsroot/phpicalendar/phpicalendar/functions/ical_parser.php,v retrieving revision 1.229 retrieving revision 1.230 diff -C2 -d -r1.229 -r1.230 *** ical_parser.php 20 Dec 2008 05:05:25 -0000 1.229 --- ical_parser.php 26 Dec 2008 05:54:46 -0000 1.230 *************** *** 280,283 **** --- 280,288 ---- $start_time = $datetime[2]; $allday_start = $datetime[3]; + $start_tz = $datetime[4]; + preg_match ('/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{0,2})([0-9]{0,2})/', $data, $regs); + $vevent_start_date = $regs[1] . $regs[2] . $regs[3]; + $day_offset = dayCompare($start_date, $vevent_start_date); + #echo date("Ymd Hi", $start_unixtime)." $start_date $start_time $vevent_start_date $day_offset<br>"; break; Index: is_daylight.php =================================================================== RCS file: /cvsroot/phpicalendar/phpicalendar/functions/is_daylight.php,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** is_daylight.php 25 Dec 2008 18:45:26 -0000 1.1 --- is_daylight.php 26 Dec 2008 05:54:46 -0000 1.2 *************** *** 13,289 **** $day = date("d",$time); $hour = date("H",$time); ! switch ($timezone){ ! case 'US/Samoa': # array('-1100', '-1100'); ! case 'America/Adak': # array('-1000', '-0900'); ! case 'America/Atka': ! case 'US/Aleutian': ! case 'America/Anchorage': # array('-0900', '-0800'); ! case 'America/Nome': ! case 'US/Alaska': ! case 'America/Juneau': ! case 'America/Yakutat': ! case 'America/Dawson': # array('-0800', '-0700'); ! case 'America/Los_Angeles': ! case 'America/Vancouver': ! case 'America/Whitehorse': ! case 'Canada/Pacific': ! case 'Canada/Yukon': ! case 'PST8PDT': ! case 'US/Pacific': ! case 'America/Boise': # array('-0700', '-0600'); ! case 'America/Cambridge_Bay': ! case 'America/Denver': ! case 'America/Edmonton': ! case 'America/Inuvik': ! case 'America/Shiprock': ! case 'America/Yellowknife': ! case 'Canada/Mountain': ! case 'MST7MDT': ! case 'Navajo': ! case 'US/Mountain': ! case 'America/Chicago': # array('-0600', '-0500'); ! case 'America/Menominee': ! case 'America/Merida': ! case 'America/Rainy_River': ! case 'America/Rankin_Inlet': ! case 'America/Winnipeg': ! case 'Canada/Central': ! case 'CST6CDT': ! case 'US/Central': ! case 'America/Detroit': # array('-0500', '-0400'); ! case 'America/Grand_Turk': ! case 'America/Iqaluit': ! case 'America/Kentucky/Louisville': ! case 'America/Kentucky/Monticello': ! case 'America/Louisville': ! case 'America/Montreal': ! case 'America/Nassau': ! case 'America/New_York': ! case 'America/Nipigon': ! case 'America/Pangnirtung': ! case 'America/Thunder_Bay': ! case 'Canada/Eastern': ! case 'EST5EDT': ! case 'US/Eastern': ! case 'US/Michigan': ! case 'America/Glace_Bay': # array('-0400', '-0300'); ! case 'America/Goose_Bay': ! case 'America/Halifax': ! case 'America/Thule': ! case 'Canada/Atlantic': ! case 'America/St_Johns': # array('-0330', '-0230'); ! case 'Canada/Newfoundland': ! case 'America/Godthab': # array('-0300', '-0200'); ! case 'America/Miquelon': ! if ($year < 2007){ $start = strtotime("+1 Sun",strtotime($year."0331")); $end = strtotime("-1 Sun",strtotime($year."1101")); ! }else{ ! $start = strtotime("+2 Sun",strtotime($year."0300")); ! $end = strtotime("+1 Sun",strtotime($year."1031")); ! } ! break; ! case 'America/Havana': ! case 'Cuba': ! $start = strtotime("+3 Sun",strtotime($year."0300")); ! $end = strtotime("-1 Sun",strtotime($year."1101")); ! break; ! case 'America/Cancun': ! case 'America/Chihuahua': ! case 'America/Ensenada': ! case 'America/Tijuana': ! case 'America/Mexico_City': ! case 'America/Monterrey': ! case 'Atlantic/Bermuda': ! case 'Mexico/BajaSur': ! case 'Mexico/BajaNorte': ! case 'Mexico/General': ! case 'America/Mazatlan': ! $start = strtotime("+1 Sun",strtotime($year."0331")); ! $end = strtotime("-1 Sun",strtotime($year."1101")); ! break; ! case 'Chile/EasterIsland': # array('-0500', '-0600'); ! case 'Pacific/Easter': ! ! break; ! case 'America/Asuncion': # array('-0300', '-0400'); ! case 'America/Cuiaba': ! case 'America/Santiago': ! case 'Antarctica/Palmer': ! case 'Atlantic/Stanley': ! case 'Chile/Continental': ! ! break; ! case 'America/Araguaina': # array('-0200', '-0300'); ! case 'America/Sao_Paulo': ! case 'Brazil/East': ! ! break; ! case 'America/Scoresbysund': # array('-0100', '+0000'); ! case 'Atlantic/Azores': ! ! break; ! case 'Atlantic/Canary': # array('+0000', '+0100'); ! case 'Atlantic/Faeroe': ! case 'Atlantic/Madeira': ! case 'Eire': ! case 'Europe/Belfast': ! case 'Europe/Dublin': ! case 'Europe/Lisbon': ! case 'Europe/London': ! case 'GB-Eire': ! case 'GB': ! case 'Portugal': ! case 'WET': ! ! break; ! case 'Africa/Ceuta': # array('+0100', '+0200'); ! case 'Arctic/Longyearbyen': ! case 'CET': ! case 'Europe/Amsterdam': ! case 'Europe/Andorra': ! case 'Europe/Belgrade': ! case 'Europe/Berlin': ! case 'Europe/Bratislava': ! case 'Europe/Brussels': ! case 'Europe/Budapest': ! case 'Europe/Copenhagen': ! case 'Europe/Gibraltar': ! case 'Europe/Ljubljana': ! case 'Europe/Luxembourg': ! case 'Europe/Madrid': ! case 'Europe/Malta': ! case 'Europe/Monaco': ! case 'Europe/Oslo': ! case 'Europe/Paris': ! case 'Europe/Prague': ! case 'Europe/Rome': ! case 'Europe/San_Marino': ! case 'Europe/Sarajevo': ! case 'Europe/Skopje': ! case 'Europe/Stockholm': ! case 'Europe/Tirane': ! case 'Europe/Vaduz': ! case 'Europe/Vatican': ! case 'Europe/Vienna': ! case 'Europe/Warsaw': ! case 'Europe/Zagreb': ! case 'Europe/Zurich': ! case 'MET': ! case 'Poland': ! $start = strtotime("-1 Sun",strtotime($year."0401")); ! $end = strtotime("-1 Sun",strtotime($year."1101")); ! break; ! case 'Africa/Windhoek': # array('+0200', '+0100'); ! ! break; ! case 'Asia/Amman': # array('+0200', '+0300'); ! case 'Asia/Beirut': ! case 'Asia/Damascus': ! case 'Asia/Gaza': ! case 'Asia/Istanbul': ! case 'Asia/Jerusalem': ! case 'Asia/Nicosia': ! case 'Asia/Tel_Aviv': ! case 'EET': ! case 'Egypt': ! case 'Europe/Athens': ! case 'Europe/Bucharest': ! case 'Europe/Chisinau': ! case 'Europe/Helsinki': ! case 'Europe/Istanbul': ! case 'Europe/Kaliningrad': ! case 'Europe/Kiev': ! case 'Europe/Minsk': ! case 'Europe/Nicosia': ! case 'Europe/Riga': ! case 'Europe/Simferopol': ! case 'Europe/Sofia': ! case 'Europe/Tiraspol': ! case 'Europe/Uzhgorod': ! case 'Europe/Zaporozhye': ! case 'Israel': ! case 'Turkey': ! ! break; ! case 'Asia/Baghdad': # array('+0300', '+0400'); ! case 'Europe/Moscow': ! case 'W-SU': ! ! break; ! case 'Asia/Tehran': # array('+0330', '+0430'); ! case 'Iran': ! ! break; ! case 'Asia/Aqtau': # array('+0400', '+0500'); ! case 'Asia/Baku': ! case 'Asia/Tbilisi': ! case 'Asia/Yerevan': ! case 'Europe/Samara': ! ! break; ! case 'Asia/Aqtobe': # array('+0500', '+0600'); ! case 'Asia/Bishkek': ! case 'Asia/Yekaterinburg': ! ! break; ! case 'Asia/Almaty': # array('+0600', '+0700'); ! case 'Asia/Novosibirsk': ! case 'Asia/Omsk': ! ! break; ! case 'Asia/Krasnoyarsk': # array('+0700', '+0800'); ! ! break; ! case 'Asia/Irkutsk': # array('+0800', '+0900'); ! ! break; ! case 'Asia/Yakutsk': # array('+0900', '+1000'); ! break; ! case 'Asia/Vladivostok': # array('+1000', '+1100'); ! case 'Australia/ACT': ! case 'Australia/Melbourne': ! case 'Australia/NSW': ! case 'Australia/Sydney': ! case 'Australia/Tasmania': ! case 'Australia/Victoria': ! ! break; ! case 'Australia/Adelaide': # array('+1030', '+0930'); ! case 'Australia/Broken_Hill': ! case 'Australia/South': ! case 'Australia/Yancowinna': ! ! break; ! case 'Asia/Magadan': # array('+1100', '+1200'); ! ! break; ! case 'Australia/LHI': # array('+1100', '+1030'); ! case 'Australia/Lord_Howe': ! ! break; ! case 'Australia/Canberra': # array('+1100', '+1000'); ! case 'Australia/Hobart': ! ! break; ! case 'Asia/Anadyr': # array('+1200', '+1300'); ! case 'Asia/Kamchatka': ! ! break; ! case 'Antarctica/McMurdo': ! case 'Antarctica/South_Pole': ! case 'NZ': # array('+1300', '+1200'); ! case 'Pacific/Auckland': ! break; ! case 'NZ-CHAT': ! case 'Pacific/Chatham': # array('+1345', '+1245'); ! break; ! default: ! $dlst = date('I', $time); } if (isset($start,$end) && $time >= $start && $time < $end) $dlst = 1; ! echo "$summary $dlst <br>"; return $dlst; --- 13,293 ---- $day = date("d",$time); $hour = date("H",$time); ! ! if(isset($tz_array[$timezone]['dt_start'][$year]) && isset($tz_array[$timezone]['st_start'][$year])){ ! $start = $tz_array[$timezone]['dt_start'][$year]; ! $end = $tz_array[$timezone]['st_start'][$year]; ! }else{ ! switch ($timezone){ ! case 'US/Samoa': # array('-1100', '-1100'); ! case 'America/Adak': # array('-1000', '-0900'); ! case 'America/Atka': ! case 'US/Aleutian': ! case 'America/Anchorage': # array('-0900', '-0800'); ! case 'America/Nome': ! case 'US/Alaska': ! case 'America/Juneau': ! case 'America/Yakutat': ! case 'America/Dawson': # array('-0800', '-0700'); ! case 'America/Los_Angeles': ! case 'America/Vancouver': ! case 'America/Whitehorse': ! case 'Canada/Pacific': ! case 'Canada/Yukon': ! case 'PST8PDT': ! case 'US/Pacific': ! case 'America/Boise': # array('-0700', '-0600'); ! case 'America/Cambridge_Bay': ! case 'America/Denver': ! case 'America/Edmonton': ! case 'America/Inuvik': ! case 'America/Shiprock': ! case 'America/Yellowknife': ! case 'Canada/Mountain': ! case 'MST7MDT': ! case 'Navajo': ! case 'US/Mountain': ! case 'America/Chicago': # array('-0600', '-0500'); ! case 'America/Menominee': ! case 'America/Merida': ! case 'America/Rainy_River': ! case 'America/Rankin_Inlet': ! case 'America/Winnipeg': ! case 'Canada/Central': ! case 'CST6CDT': ! case 'US/Central': ! case 'America/Detroit': # array('-0500', '-0400'); ! case 'America/Grand_Turk': ! case 'America/Iqaluit': ! case 'America/Kentucky/Louisville': ! case 'America/Kentucky/Monticello': ! case 'America/Louisville': ! case 'America/Montreal': ! case 'America/Nassau': ! case 'America/New_York': ! case 'America/Nipigon': ! case 'America/Pangnirtung': ! case 'America/Thunder_Bay': ! case 'Canada/Eastern': ! case 'EST5EDT': ! case 'US/Eastern': ! case 'US/Michigan': ! case 'America/Glace_Bay': # array('-0400', '-0300'); ! case 'America/Goose_Bay': ! case 'America/Halifax': ! case 'America/Thule': ! case 'Canada/Atlantic': ! case 'America/St_Johns': # array('-0330', '-0230'); ! case 'Canada/Newfoundland': ! case 'America/Godthab': # array('-0300', '-0200'); ! case 'America/Miquelon': ! if ($year < 2007){ ! $start = strtotime("+1 Sun",strtotime($year."0331")); ! $end = strtotime("-1 Sun",strtotime($year."1101")); ! }else{ ! $start = strtotime("+2 Sun",strtotime($year."0300")); ! $end = strtotime("+1 Sun",strtotime($year."1031")); ! } ! break; ! case 'America/Havana': ! case 'Cuba': ! $start = strtotime("+3 Sun",strtotime($year."0300")); ! $end = strtotime("-1 Sun",strtotime($year."1101")); ! break; ! case 'America/Cancun': ! case 'America/Chihuahua': ! case 'America/Ensenada': ! case 'America/Tijuana': ! case 'America/Mexico_City': ! case 'America/Monterrey': ! case 'Atlantic/Bermuda': ! case 'Mexico/BajaSur': ! case 'Mexico/BajaNorte': ! case 'Mexico/General': ! case 'America/Mazatlan': $start = strtotime("+1 Sun",strtotime($year."0331")); $end = strtotime("-1 Sun",strtotime($year."1101")); ! break; ! case 'Chile/EasterIsland': # array('-0500', '-0600'); ! case 'Pacific/Easter': + break; + case 'America/Asuncion': # array('-0300', '-0400'); + case 'America/Cuiaba': + case 'America/Santiago': + case 'Antarctica/Palmer': + case 'Atlantic/Stanley': + case 'Chile/Continental': ! break; ! case 'America/Araguaina': # array('-0200', '-0300'); ! case 'America/Sao_Paulo': ! case 'Brazil/East': ! ! break; ! case 'America/Scoresbysund': # array('-0100', '+0000'); ! case 'Atlantic/Azores': ! ! break; ! case 'Atlantic/Canary': # array('+0000', '+0100'); ! case 'Atlantic/Faeroe': ! case 'Atlantic/Madeira': ! case 'Eire': ! case 'Europe/Belfast': ! case 'Europe/Dublin': ! case 'Europe/Lisbon': ! case 'Europe/London': ! case 'GB-Eire': ! case 'GB': ! case 'Portugal': ! case 'WET': ! case 'Africa/Ceuta': # array('+0100', '+0200'); ! case 'Arctic/Longyearbyen': ! case 'CET': ! case 'Europe/Amsterdam': ! case 'Europe/Andorra': ! case 'Europe/Belgrade': ! case 'Europe/Berlin': ! case 'Europe/Bratislava': ! case 'Europe/Brussels': ! case 'Europe/Budapest': ! case 'Europe/Copenhagen': ! case 'Europe/Gibraltar': ! case 'Europe/Ljubljana': ! case 'Europe/Luxembourg': ! case 'Europe/Madrid': ! case 'Europe/Malta': ! case 'Europe/Monaco': ! case 'Europe/Oslo': ! case 'Europe/Paris': ! case 'Europe/Prague': ! case 'Europe/Rome': ! case 'Europe/San_Marino': ! case 'Europe/Sarajevo': ! case 'Europe/Skopje': ! case 'Europe/Stockholm': ! case 'Europe/Tirane': ! case 'Europe/Vaduz': ! case 'Europe/Vatican': ! case 'Europe/Vienna': ! case 'Europe/Warsaw': ! case 'Europe/Zagreb': ! case 'Europe/Zurich': ! case 'MET': ! case 'Poland': ! case 'Europe/Athens': ! case 'Europe/Bucharest': ! case 'Europe/Chisinau': ! case 'Europe/Helsinki': ! case 'Europe/Istanbul': ! case 'Europe/Kaliningrad': ! case 'Europe/Kiev': ! case 'Europe/Minsk': ! case 'Europe/Nicosia': ! case 'Europe/Riga': ! case 'Europe/Simferopol': ! case 'Europe/Sofia': ! case 'Europe/Tiraspol': ! case 'Europe/Uzhgorod': ! case 'Europe/Zaporozhye': ! case 'EET': ! $start = strtotime("-1 Sun",strtotime($year."0401")); ! $end = strtotime("-1 Sun",strtotime($year."1101")); ! break; ! case 'Africa/Windhoek': # array('+0200', '+0100'); ! ! break; ! case 'Asia/Amman': # array('+0200', '+0300'); ! case 'Asia/Beirut': ! case 'Asia/Damascus': ! case 'Asia/Gaza': ! case 'Asia/Istanbul': ! case 'Asia/Jerusalem': ! case 'Asia/Nicosia': ! case 'Asia/Tel_Aviv': ! case 'Egypt': ! case 'Israel': ! case 'Turkey': ! ! break; ! case 'Asia/Baghdad': # array('+0300', '+0400'); ! case 'Europe/Moscow': ! case 'W-SU': ! ! break; ! case 'Asia/Tehran': # array('+0330', '+0430'); ! case 'Iran': ! ! break; ! case 'Asia/Aqtau': # array('+0400', '+0500'); ! case 'Asia/Baku': ! case 'Asia/Tbilisi': ! case 'Asia/Yerevan': ! case 'Europe/Samara': ! ! break; ! case 'Asia/Aqtobe': # array('+0500', '+0600'); ! case 'Asia/Bishkek': ! case 'Asia/Yekaterinburg': ! ! break; ! case 'Asia/Almaty': # array('+0600', '+0700'); ! case 'Asia/Novosibirsk': ! case 'Asia/Omsk': ! ! break; ! case 'Asia/Krasnoyarsk': # array('+0700', '+0800'); ! ! break; ! case 'Asia/Irkutsk': # array('+0800', '+0900'); ! ! break; ! case 'Asia/Yakutsk': # array('+0900', '+1000'); ! ! ! break; ! case 'Asia/Vladivostok': # array('+1000', '+1100'); ! case 'Australia/ACT': ! case 'Australia/Melbourne': ! case 'Australia/NSW': ! case 'Australia/Sydney': ! case 'Australia/Tasmania': ! case 'Australia/Victoria': ! ! break; ! case 'Australia/Adelaide': # array('+1030', '+0930'); ! case 'Australia/Broken_Hill': ! case 'Australia/South': ! case 'Australia/Yancowinna': ! ! break; ! case 'Asia/Magadan': # array('+1100', '+1200'); ! ! break; ! case 'Australia/LHI': # array('+1100', '+1030'); ! case 'Australia/Lord_Howe': ! ! break; ! case 'Australia/Canberra': # array('+1100', '+1000'); ! case 'Australia/Hobart': ! ! break; ! case 'Asia/Anadyr': # array('+1200', '+1300'); ! case 'Asia/Kamchatka': ! ! break; ! case 'Antarctica/McMurdo': ! case 'Antarctica/South_Pole': ! case 'NZ': # array('+1300', '+1200'); ! case 'Pacific/Auckland': ! break; ! case 'NZ-CHAT': ! case 'Pacific/Chatham': # array('+1345', '+1245'); ! break; ! default: ! $dlst = date('I', $time); ! } } if (isset($start,$end) && $time >= $start && $time < $end) $dlst = 1; ! #echo "$summary $dlst <br>"; return $dlst; |