(fix) email reminders sent multiple times (fixes #4100)
parent
7582ec8462
commit
ab50a41a86
1
NEWS
1
NEWS
|
@ -13,6 +13,7 @@ Bug fixes
|
|||
- [core] cherry-picked comma escaping fix from v2 (#3296)
|
||||
- [core] fix sogo-tool restore potentially crashing on corrupted data (#4048)
|
||||
- [core] handle properly mails using windows-1255 charset (#4124)
|
||||
- [core] fixed email reminders sent multiple times (#4100)
|
||||
- [eas] set reply/forwarded flags when ReplaceMime is set (#4133)
|
||||
- [eas] remove alarms over EAS if we don't want them (#4059)
|
||||
- [eas] correctly set RSVP on event invitations
|
||||
|
|
|
@ -149,24 +149,23 @@
|
|||
- (SOGoAppointmentFolder *) _lookupContainerMatchingRecord: (NSDictionary *) record
|
||||
{
|
||||
SOGoAppointmentFolders *folders;
|
||||
SOGoAppointmentFolder *calendar;
|
||||
NSString *container, *owner;
|
||||
SOGoUserFolder *userFolder;
|
||||
SOGoUser *user;
|
||||
WOContext *context;
|
||||
|
||||
[self _extractOwner: &owner fromPath: [record objectForKey: @"c_path"]];
|
||||
[self _extractContainer: &container fromPath: [record objectForKey: @"c_path"]];
|
||||
user = [SOGoUser userWithLogin: owner];
|
||||
userFolder = [SOGoUserFolder objectWithName: owner inContainer: nil];
|
||||
|
||||
context = [WOContext context];
|
||||
[context setActiveUser: user];
|
||||
folders = [userFolder lookupName: @"Calendar"
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
|
||||
return [folders lookupName: container
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
folders = [user calendarsFolderInContext: context];
|
||||
|
||||
calendar = [folders lookupPersonalFolder: container ignoringRights: YES];
|
||||
|
||||
return calendar;
|
||||
}
|
||||
|
||||
- (iCalAlarm *) _lookupAlarmMatchingRecord: (NSDictionary *) record
|
||||
|
|
|
@ -692,7 +692,7 @@ NSNumber *iCalDistantFutureNumber = nil;
|
|||
GCSAlarmsFolder *af;
|
||||
NSString *path;
|
||||
|
||||
int alarm_number;
|
||||
int email_alarm_number;
|
||||
|
||||
if ([[SOGoSystemDefaults sharedSystemDefaults] enableEMailAlarms])
|
||||
{
|
||||
|
@ -706,7 +706,7 @@ NSNumber *iCalDistantFutureNumber = nil;
|
|||
}
|
||||
|
||||
nextAlarmDate = nil;
|
||||
alarm_number = -1;
|
||||
email_alarm_number = -1;
|
||||
|
||||
if ([self hasAlarms])
|
||||
{
|
||||
|
@ -733,19 +733,18 @@ NSNumber *iCalDistantFutureNumber = nil;
|
|||
else if ((anAlarm = [self firstEmailAlarm]) && af)
|
||||
{
|
||||
nextAlarmDate = [anAlarm nextAlarmDate];
|
||||
email_alarm_number = [[self alarms] indexOfObject: anAlarm];
|
||||
|
||||
// The email alarm is too old, let's just remove it
|
||||
if ([nextAlarmDate earlierDate: [NSDate date]] == nextAlarmDate)
|
||||
nextAlarmDate = nil;
|
||||
else
|
||||
{
|
||||
alarm_number = [[self alarms] indexOfObject: anAlarm];
|
||||
|
||||
[af writeRecordForEntryWithCName: nameInContainer
|
||||
inCalendarAtPath: path
|
||||
forUID: [self uid]
|
||||
recurrenceId: nil
|
||||
alarmNumber: [NSNumber numberWithInt: alarm_number]
|
||||
alarmNumber: [NSNumber numberWithInt: email_alarm_number]
|
||||
andAlarmDate: nextAlarmDate];
|
||||
}
|
||||
}
|
||||
|
@ -834,13 +833,13 @@ NSNumber *iCalDistantFutureNumber = nil;
|
|||
else if ((anAlarm = [self firstEmailAlarm]) && af)
|
||||
{
|
||||
nextAlarmDate = [NSDate dateWithTimeIntervalSince1970: [[[alarms objectAtIndex: i] objectForKey: @"c_nextalarm"] intValue]];
|
||||
alarm_number = [[self alarms] indexOfObject: anAlarm];
|
||||
email_alarm_number = [[self alarms] indexOfObject: anAlarm];
|
||||
|
||||
[af writeRecordForEntryWithCName: nameInContainer
|
||||
inCalendarAtPath: path
|
||||
forUID: [self uid]
|
||||
recurrenceId: [self recurrenceId]
|
||||
alarmNumber: [NSNumber numberWithInt: alarm_number]
|
||||
alarmNumber: [NSNumber numberWithInt: email_alarm_number]
|
||||
andAlarmDate: nextAlarmDate];
|
||||
}
|
||||
}
|
||||
|
@ -850,8 +849,8 @@ NSNumber *iCalDistantFutureNumber = nil;
|
|||
}
|
||||
}
|
||||
|
||||
// Don't update c_nextalarm in the quick table if it's an email alarm
|
||||
if ([nextAlarmDate isNotNull] && alarm_number < 0)
|
||||
// Don't update c_nextalarm in the quick table if it's not na email alarm
|
||||
if ([nextAlarmDate isNotNull] && email_alarm_number < 0)
|
||||
{
|
||||
[row setObject: [NSNumber numberWithInt: [nextAlarmDate timeIntervalSince1970]]
|
||||
forKey: @"c_nextalarm"];
|
||||
|
@ -861,7 +860,7 @@ NSNumber *iCalDistantFutureNumber = nil;
|
|||
[row setObject: [NSNumber numberWithInt: 0] forKey: @"c_nextalarm"];
|
||||
|
||||
// Delete old email alarms
|
||||
if (!nextAlarmDate && alarm_number >= 0)
|
||||
if (!nextAlarmDate && email_alarm_number >= 0)
|
||||
[af deleteRecordForEntryWithCName: nameInContainer
|
||||
inCalendarAtPath: [theContainer ocsPath]];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue