mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-26 22:05:23 +00:00
(fix) fix events in floating time during CalDAV's PUT operation (fixes #2865)
This commit is contained in:
@@ -1857,6 +1857,54 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// This is similar to what we do in SOGoAppointmentFolder: -importCalendar:
|
||||
//
|
||||
- (void) _adjustFloatingTimeInRequestCalendar: (iCalCalendar *) rqCalendar
|
||||
{
|
||||
iCalDateTime *startDate, *endDate;
|
||||
NSString *startDateAsString;
|
||||
SOGoUserDefaults *ud;
|
||||
NSArray *allEvents;
|
||||
iCalTimeZone *tz;
|
||||
iCalEvent *event;
|
||||
int i, delta;
|
||||
|
||||
allEvents = [rqCalendar events];
|
||||
for (i = 0; i < [allEvents count]; i++)
|
||||
{
|
||||
event = [allEvents objectAtIndex: i];
|
||||
|
||||
if ([event isAllDay])
|
||||
continue;
|
||||
|
||||
startDate = (iCalDateTime *)[event uniqueChildWithTag: @"dtstart"];
|
||||
startDateAsString = [[startDate valuesAtIndex: 0 forKey: @""] objectAtIndex: 0];
|
||||
|
||||
if (![startDate timeZone] &&
|
||||
![startDateAsString hasSuffix: @"Z"] &&
|
||||
![startDateAsString hasSuffix: @"z"])
|
||||
{
|
||||
ud = [[context activeUser] userDefaults];
|
||||
tz = [iCalTimeZone timeZoneForName: [ud timeZoneName]];
|
||||
if ([rqCalendar addTimeZone: tz])
|
||||
{
|
||||
delta = [[tz periodForDate: [startDate dateTime]] secondsOffsetFromGMT];
|
||||
|
||||
[event setStartDate: [[event startDate] dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: -delta]];
|
||||
[startDate setTimeZone: tz];
|
||||
|
||||
endDate = (iCalDateTime *) [event uniqueChildWithTag: @"dtend"];
|
||||
if (endDate)
|
||||
{
|
||||
[event setEndDate: [[event endDate] dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: -delta]];
|
||||
[endDate setTimeZone: tz];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) _decomposeGroupsInRequestCalendar: (iCalCalendar *) rqCalendar
|
||||
{
|
||||
NSArray *allEvents;
|
||||
@@ -1980,6 +2028,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
|
||||
[self _adjustEventsInRequestCalendar: calendar];
|
||||
[self adjustClassificationInRequestCalendar: calendar];
|
||||
[self _adjustPartStatInRequestCalendar: calendar];
|
||||
[self _adjustFloatingTimeInRequestCalendar: calendar];
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user