1 /* iCalEntityObject+SOGo.m - this file is part of SOGo
3 * Copyright (C) 2007 Inverse groupe conseil
5 * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
7 * This file is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
12 * This file is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
23 #import <Foundation/NSArray.h>
24 #import <Foundation/NSEnumerator.h>
26 #import <NGCards/iCalCalendar.h>
27 #import <NGCards/iCalPerson.h>
29 #import <SoObjects/SOGo/NSArray+Utilities.h>
30 #import <SoObjects/SOGo/SOGoUser.h>
32 #import "iCalPerson+SOGo.h"
34 #import "iCalEntityObject+SOGo.h"
36 @implementation iCalEntityObject (SOGoExtensions)
38 - (BOOL) userIsParticipant: (SOGoUser *) user
40 NSEnumerator *participants;
41 iCalPerson *currentParticipant;
46 participants = [[self participants] objectEnumerator];
47 currentParticipant = [participants nextObject];
49 && currentParticipant)
50 if ([user hasEmail: [currentParticipant rfc822Email]])
53 currentParticipant = [participants nextObject];
58 #warning user could be a delegate, we will need to handle that someday
59 - (BOOL) userIsOrganizer: (SOGoUser *) user
63 orgMail = [[self organizer] rfc822Email];
65 return [user hasEmail: orgMail];
68 - (NSArray *) attendeeUIDs
70 NSEnumerator *attendees;
72 iCalPerson *currentAttendee;
75 uids = [NSMutableArray array];
77 attendees = [[self attendees] objectEnumerator];
78 while ((currentAttendee = [attendees nextObject]))
80 uid = [currentAttendee uid];
82 [uids addObject: uid];
88 #warning this method should be implemented in a category of iCalToDo
89 - (BOOL) isStillRelevant
91 [self subclassResponsibility: _cmd];
95 - (id) itipEntryWithMethod: (NSString *) method
97 iCalCalendar *newCalendar;
98 iCalEntityObject *newEntry;
100 newCalendar = [parent mutableCopy];
101 [newCalendar autorelease];
102 [newCalendar setMethod: method];
103 newEntry = (iCalEntityObject *) [newCalendar firstChildWithTag: tag];
108 - (NSArray *) attendeesWithoutUser: (SOGoUser *) user
110 NSMutableArray *newAttendees;
111 NSArray *oldAttendees;
112 unsigned int count, max;
113 iCalPerson *currentAttendee;
116 userID = [user login];
117 oldAttendees = [self attendees];
118 max = [oldAttendees count];
119 newAttendees = [NSMutableArray arrayWithCapacity: max];
120 for (count = 0; count < max; count++)
122 currentAttendee = [oldAttendees objectAtIndex: count];
123 if (![[currentAttendee uid] isEqualToString: userID])
124 [newAttendees addObject: currentAttendee];