mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-18 04:55:56 +00:00
Monotone-Parent: 0e24f707625b8e960d18430aa904f3ec40c5dd2a
Monotone-Revision: d75ed56bb85ad0c1c37621595267a590aa9b60db Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-10-12T20:00:46 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
11
ChangeLog
11
ChangeLog
@@ -1,3 +1,14 @@
|
||||
2011-10-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* OpenChange/MAPIStoreAppointmentWrapper.m
|
||||
(-initWithICalEvent:andUser:andSenderEmail:inTimeZone:): take a
|
||||
new "senderEmail" parameter in order to help the process of
|
||||
deducting the attendee in an invitation message not including a
|
||||
"METHOD".
|
||||
(-_setupITIPContextFromAttendees): fixed method to set the method
|
||||
as "REPLY" when the user is organizer rather than the other way
|
||||
around.
|
||||
|
||||
2011-10-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* OpenChange/MAPIStoreAppointmentWrapper.m (-_setupITIPContext):
|
||||
|
||||
@@ -42,9 +42,10 @@ extern NSTimeZone *utcTZ;
|
||||
iCalCalendar *calendar;
|
||||
iCalEvent *event;
|
||||
NSTimeZone *timeZone;
|
||||
SOGoUser *user;
|
||||
NSString *senderEmail;
|
||||
NSData *globalObjectId;
|
||||
NSData *cleanGlobalObjectId;
|
||||
SOGoUser *user;
|
||||
BOOL alarmSet;
|
||||
iCalAlarm *alarm;
|
||||
BOOL itipSetup;
|
||||
@@ -54,9 +55,11 @@ extern NSTimeZone *utcTZ;
|
||||
|
||||
+ (id) wrapperWithICalEvent: (iCalEvent *) newEvent
|
||||
andUser: (SOGoUser *) newUser
|
||||
andSenderEmail: (NSString *) newSenderEmail
|
||||
inTimeZone: (NSTimeZone *) newTimeZone;
|
||||
- (id) initWithICalEvent: (iCalEvent *) newEvent
|
||||
andUser: (SOGoUser *) newUser
|
||||
andSenderEmail: (NSString *) newSenderEmail
|
||||
inTimeZone: (NSTimeZone *) newTimeZone;
|
||||
|
||||
/* getters */
|
||||
|
||||
@@ -77,12 +77,14 @@ static NSCharacterSet *hexCharacterSet = nil;
|
||||
|
||||
+ (id) wrapperWithICalEvent: (iCalEvent *) newEvent
|
||||
andUser: (SOGoUser *) newUser
|
||||
andSenderEmail: (NSString *) newSenderEmail
|
||||
inTimeZone: (NSTimeZone *) newTimeZone
|
||||
{
|
||||
MAPIStoreAppointmentWrapper *wrapper;
|
||||
|
||||
wrapper = [[self alloc] initWithICalEvent: newEvent
|
||||
andUser: newUser
|
||||
andSenderEmail: newSenderEmail
|
||||
inTimeZone: newTimeZone];
|
||||
[wrapper autorelease];
|
||||
|
||||
@@ -96,6 +98,7 @@ static NSCharacterSet *hexCharacterSet = nil;
|
||||
calendar = nil;
|
||||
event = nil;
|
||||
timeZone = nil;
|
||||
senderEmail = nil;
|
||||
globalObjectId = nil;
|
||||
cleanGlobalObjectId = nil;
|
||||
user = nil;
|
||||
@@ -110,16 +113,33 @@ static NSCharacterSet *hexCharacterSet = nil;
|
||||
|
||||
- (void) _setupITIPContextFromAttendees
|
||||
{
|
||||
iCalPerson *attendee;
|
||||
iCalPerson *attendee = nil;
|
||||
NSArray *attendees;
|
||||
|
||||
attendee = [event userAsAttendee: user];
|
||||
if (attendee)
|
||||
{
|
||||
method = @"REPLY";
|
||||
partstat = [attendee participationStatus];
|
||||
}
|
||||
else if ([event userIsOrganizer: user])
|
||||
method = @"REQUEST";
|
||||
else if ([event userIsOrganizer: user])
|
||||
{
|
||||
if (senderEmail)
|
||||
attendee = [event findAttendeeWithEmail: senderEmail];
|
||||
if (!attendee)
|
||||
{
|
||||
attendees = [event attendees];
|
||||
if ([attendees count] == 1)
|
||||
attendee = [attendees objectAtIndex: 0];
|
||||
}
|
||||
if (attendee)
|
||||
{
|
||||
method = @"REPLY";
|
||||
partstat = [attendee participationStatus];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self logWithFormat: @"no attendee matching sender found"];
|
||||
method = nil;
|
||||
}
|
||||
}
|
||||
else
|
||||
method = nil;
|
||||
|
||||
@@ -155,6 +175,7 @@ static NSCharacterSet *hexCharacterSet = nil;
|
||||
|
||||
- (id) initWithICalEvent: (iCalEvent *) newEvent
|
||||
andUser: (SOGoUser *) newUser
|
||||
andSenderEmail: (NSString *) newSenderEmail
|
||||
inTimeZone: (NSTimeZone *) newTimeZone
|
||||
{
|
||||
if ((self = [self init]))
|
||||
@@ -163,6 +184,7 @@ static NSCharacterSet *hexCharacterSet = nil;
|
||||
ASSIGN (calendar, [event parent]);
|
||||
ASSIGN (timeZone, newTimeZone);
|
||||
ASSIGN (user, newUser);
|
||||
ASSIGN (senderEmail, newSenderEmail);
|
||||
[self _setupITIPContext];
|
||||
}
|
||||
|
||||
@@ -174,9 +196,10 @@ static NSCharacterSet *hexCharacterSet = nil;
|
||||
[calendar release];
|
||||
[event release];
|
||||
[timeZone release];
|
||||
[user release];
|
||||
[senderEmail release];
|
||||
[globalObjectId release];
|
||||
[cleanGlobalObjectId release];
|
||||
[user release];
|
||||
[alarm release];
|
||||
[method release];
|
||||
[super dealloc];
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
ASSIGN (appointmentWrapper,
|
||||
[MAPIStoreAppointmentWrapper wrapperWithICalEvent: event
|
||||
andUser: [[self context] activeUser]
|
||||
andSenderEmail: nil
|
||||
inTimeZone: [self ownerTimeZone]]);
|
||||
}
|
||||
|
||||
|
||||
@@ -251,10 +251,10 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data)
|
||||
|
||||
- (MAPIStoreAppointmentWrapper *) _appointmentWrapper
|
||||
{
|
||||
NSArray *events;
|
||||
NSArray *events, *from;
|
||||
iCalCalendar *calendar;
|
||||
iCalEvent *event;
|
||||
NSString *stringValue;
|
||||
NSString *stringValue, *senderEmail;
|
||||
|
||||
if (!appointmentWrapper)
|
||||
{
|
||||
@@ -267,9 +267,15 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data)
|
||||
if ([events count] > 0)
|
||||
{
|
||||
event = [events objectAtIndex: 0];
|
||||
from = [sogoObject fromEnvelopeAddresses];
|
||||
if ([from count] > 0)
|
||||
senderEmail = [[from objectAtIndex: 0] email];
|
||||
else
|
||||
senderEmail = nil;
|
||||
appointmentWrapper = [MAPIStoreAppointmentWrapper
|
||||
wrapperWithICalEvent: event
|
||||
andUser: [[self context] activeUser]
|
||||
andSenderEmail: senderEmail
|
||||
inTimeZone: [self ownerTimeZone]];
|
||||
[appointmentWrapper retain];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user