Skip to content

Commit

Permalink
Should fix issue where external ical all-day events show up across tw…
Browse files Browse the repository at this point in the history
…o days [#754 state:resolved]
  • Loading branch information
dleffler committed Oct 6, 2012
1 parent 649c0f2 commit 4a9db50
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions framework/modules-1/calendarmodule/class.php
Expand Up @@ -609,34 +609,41 @@ static function getExternalEvents($loc,$startdate,$enddate) {
if (!empty($yearArray)) foreach ($yearArray as $month => $monthArray) {
if (!empty($monthArray)) foreach ($monthArray as $day => $dailyEventsArray) {
if (!empty($dailyEventsArray)) foreach ($dailyEventsArray as $vevent) {
$yesterday = false;
$currddate = $vevent->getProperty('x-current-dtstart');
$thisday = explode('-',$currddate[1]);
// if member of a recurrence set,
// returns array( 'x-current-dtstart', <DATE>)
// <DATE> = (string) date("Y-m-d [H:i:s][timezone/UTC offset]")
$dtstart = $vevent->getProperty('dtstart');
//FIXME must convert $dtstart timezone
$eventdate = expDateTime::startOfDayTimestamp(iCalUtilityFunctions::_date2timestamp($dtstart));
$dtstart = $vevent->getProperty('dtstart',false,true);
//FIXME must convert $dtstart['TZID'] timezone
$dtend = $vevent->getProperty('dtend',false,true);
//FIXME must convert $dtend['TZID'] timezone
$eventdate = expDateTime::startOfDayTimestamp(iCalUtilityFunctions::_date2timestamp($dtstart['value']));
$extevents[$eventdate][$dy] = new stdClass();
$extevents[$eventdate][$dy]->eventdate = $eventdate;
if (!empty($dtstart['hour'])) {
$extevents[$eventdate][$dy]->eventstart = ($dtstart['hour']*3600)+($dtstart['min']*60);
if (!empty($dtstart['value']['hour'])) {
$extevents[$eventdate][$dy]->eventstart = ($dtstart['value']['hour']*3600)+($dtstart['value']['min']*60);
if (date("I",$eventdate)) $extevents[$eventdate][$dy]->eventstart += 3600;
} else {
if ($dtstart['value']['day'] != $thisday[2]) $yesterday = true;
$extevents[$eventdate][$dy]->eventstart = null;
$extevents[$eventdate][$dy]->is_allday = 1;
}
$dtend = $vevent->getProperty('dtend');
//FIXME must convert $dtend timezone
if (!empty($dtend['hour'])) {
$extevents[$eventdate][$dy]->eventend = ($dtend['hour']*3600)+($dtend['min']*60);
if (!empty($dtend['value']['hour'])) {
$extevents[$eventdate][$dy]->eventend = ($dtend['value']['hour']*3600)+($dtend['value']['min']*60);
if (date("I",$eventdate)) $extevents[$eventdate][$dy]->eventend += 3600;
}
// dtstart required, one occurrence, (orig. start date)
$extevents[$eventdate][$dy]->title = $vevent->getProperty('summary');
$extevents[$eventdate][$dy]->body = $vevent->getProperty('description');

$extevents[$eventdate][$dy]->location_data = null;
$dy++;
if (!$yesterday) {
$dy++;
} else {
unset($extevents[$eventdate][$dy]);
}
}
}
}
Expand Down

0 comments on commit 4a9db50

Please sign in to comment.