oc-calendar: Fix weekly recurring events exported to Outlook from SOGo

SOGo does not create BYDAY mask in weekly recurrence, so
we have to guess it from the start date's day of week.

In other case, the event is not exported to Outlook and it
says that is corrupted.
pull/65/head
Enrique J. Hernández Blasco 2015-03-10 00:36:36 +01:00 committed by Julio García
parent 6f44ec42c1
commit fb4c3a4730
2 changed files with 15 additions and 4 deletions

1
NEWS
View File

@ -5,6 +5,7 @@ Enhancements
- Improve sync speed from Outlook by non-reprocessing already downloaded unread mails
Bug fixes
- Weekly recurring events created in SOGo web interface are now shown in Outlook
- Fix exception modifications import in recurrence series
- Sent mails are not longer in Drafts folder using Outlook
- Fix server side crash parsing rtf emails with images (with word97 format)

View File

@ -325,15 +325,25 @@
rp->RecurFrequency = RecurFrequency_Weekly;
rp->PatternType = PatternType_Week;
rp->Period = repeatInterval;
dayOfWeek = [startDate dayOfWeek];
mask = 0;
byDayMask = [self byDayMask];
for (count = 0; count < 7; count++)
if ([byDayMask occursOnDay: count])
mask |= 1 << count;
if (byDayMask)
{
for (count = 0; count < 7; count++)
if ([byDayMask occursOnDay: count])
mask |= 1 << count;
}
else
{
/* Set the recurrence pattern using start date */
mask |= 1 << dayOfWeek;
}
rp->PatternTypeSpecific.WeekRecurrencePattern = mask;
/* FirstDateTime */
dayOfWeek = [startDate dayOfWeek];
if (dayOfWeek)
beginOfWeek = [startDate dateByAddingYears: 0 months: 0
days: -dayOfWeek