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:
Wolfgang Sourdeau
2011-10-12 20:00:46 +00:00
parent 4db63efdac
commit 600c8ddb7e
5 changed files with 54 additions and 10 deletions

View File

@@ -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):

View File

@@ -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 */

View File

@@ -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];

View File

@@ -109,6 +109,7 @@
ASSIGN (appointmentWrapper,
[MAPIStoreAppointmentWrapper wrapperWithICalEvent: event
andUser: [[self context] activeUser]
andSenderEmail: nil
inTimeZone: [self ownerTimeZone]]);
}

View File

@@ -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];
}