]> err.no Git - scalable-opengroupware.org/blob - SoObjects/Appointments/iCalEntityObject+SOGo.m
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1277 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / SoObjects / Appointments / iCalEntityObject+SOGo.m
1 /* iCalEntityObject+SOGo.m - this file is part of SOGo
2  *
3  * Copyright (C) 2007 Inverse groupe conseil
4  *
5  * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
6  *
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)
10  * any later version.
11  *
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.
16  *
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.
21  */
22
23 #import <Foundation/NSArray.h>
24 #import <Foundation/NSEnumerator.h>
25
26 #import <NGCards/iCalCalendar.h>
27 #import <NGCards/iCalPerson.h>
28
29 #import <SoObjects/SOGo/NSArray+Utilities.h>
30 #import <SoObjects/SOGo/SOGoUser.h>
31
32 #import "iCalPerson+SOGo.h"
33
34 #import "iCalEntityObject+SOGo.h"
35
36 @implementation iCalEntityObject (SOGoExtensions)
37
38 - (BOOL) userIsParticipant: (SOGoUser *) user
39 {
40   NSEnumerator *participants;
41   iCalPerson *currentParticipant;
42   BOOL isParticipant;
43
44   isParticipant = NO;
45
46   participants = [[self participants] objectEnumerator];
47   currentParticipant = [participants nextObject];
48   while (!isParticipant
49          && currentParticipant)
50     if ([user hasEmail: [currentParticipant rfc822Email]])
51       isParticipant = YES;
52     else
53       currentParticipant = [participants nextObject];
54
55   return isParticipant;
56 }
57
58 #warning user could be a delegate, we will need to handle that someday
59 - (BOOL) userIsOrganizer: (SOGoUser *) user
60 {
61   NSString *orgMail;
62
63   orgMail = [[self organizer] rfc822Email];
64
65   return [user hasEmail: orgMail];
66 }
67
68 - (NSArray *) attendeeUIDs
69 {
70   NSEnumerator *attendees;
71   NSString *uid;
72   iCalPerson *currentAttendee;
73   NSMutableArray *uids;
74
75   uids = [NSMutableArray array];
76
77   attendees = [[self attendees] objectEnumerator];
78   while ((currentAttendee = [attendees nextObject]))
79     {
80       uid = [currentAttendee uid];
81       if (uid)
82         [uids addObject: uid];
83     }
84
85   return uids;
86 }
87
88 #warning this method should be implemented in a category of iCalToDo
89 - (BOOL) isStillRelevant
90 {
91   [self subclassResponsibility: _cmd];
92   return NO;
93 }
94
95 - (id) itipEntryWithMethod: (NSString *) method
96 {
97   iCalCalendar *newCalendar;
98   iCalEntityObject *newEntry;
99
100   newCalendar = [parent mutableCopy];
101   [newCalendar autorelease];
102   [newCalendar setMethod: method];
103   newEntry = (iCalEntityObject *) [newCalendar firstChildWithTag: tag];
104
105   return newEntry;
106 }
107
108 - (NSArray *) attendeesWithoutUser: (SOGoUser *) user
109 {
110   NSMutableArray *newAttendees;
111   NSArray *oldAttendees;
112   unsigned int count, max;
113   iCalPerson *currentAttendee;
114   NSString *userID;
115
116   userID = [user login];
117   oldAttendees = [self attendees];
118   max = [oldAttendees count];
119   newAttendees = [NSMutableArray arrayWithCapacity: max];
120   for (count = 0; count < max; count++)
121     {
122       currentAttendee = [oldAttendees objectAtIndex: count];
123       if (![[currentAttendee uid] isEqualToString: userID])
124         [newAttendees addObject: currentAttendee];
125     }
126
127   return newAttendees;
128 }
129
130 @end