2006-06-15 21:34:10 +02:00
|
|
|
/*
|
|
|
|
Copyright (C) 2004 SKYRIX Software AG
|
|
|
|
|
|
|
|
This file is part of OpenGroupware.org.
|
|
|
|
|
|
|
|
OGo is free software; you can redistribute it and/or modify it under
|
|
|
|
the terms of the GNU Lesser General Public License as published by the
|
|
|
|
Free Software Foundation; either version 2, or (at your option) any
|
|
|
|
later version.
|
|
|
|
|
|
|
|
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
|
|
|
License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
|
|
License along with OGo; see the file COPYING. If not, write to the
|
|
|
|
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|
|
|
02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
2007-06-18 17:42:26 +02:00
|
|
|
#import <Foundation/NSArray.h>
|
|
|
|
#import <Foundation/NSString.h>
|
|
|
|
|
|
|
|
#import <NGExtensions/NSObject+Logs.h>
|
|
|
|
|
|
|
|
#import "SOGoCustomGroupFolder.h"
|
2006-06-15 21:34:10 +02:00
|
|
|
|
|
|
|
@implementation SOGoCustomGroupFolder
|
|
|
|
|
|
|
|
static NSString *SOGoUIDSeparator = @",";
|
|
|
|
|
|
|
|
- (id)initWithUIDs:(NSArray *)_uids inContainer:(id)_container {
|
|
|
|
if ((self = [self initWithName:nil inContainer:_container])) {
|
|
|
|
self->uids = [_uids copy];
|
|
|
|
}
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)dealloc {
|
|
|
|
[self->uids release];
|
|
|
|
[super dealloc];
|
|
|
|
}
|
|
|
|
|
|
|
|
/* accessors */
|
|
|
|
|
|
|
|
- (NSArray *)unescapeURLComponents:(NSArray *)_parts {
|
2006-09-29 20:26:29 +02:00
|
|
|
// #warning TODO: implement URL UID unescaping if necessary
|
2006-06-15 21:34:10 +02:00
|
|
|
// TODO: who calls this for what?
|
|
|
|
// Note: remember URL encoding!
|
|
|
|
return _parts;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSArray *)uids {
|
|
|
|
NSArray *a;
|
|
|
|
NSString *s;
|
|
|
|
|
|
|
|
if (self->uids != nil)
|
|
|
|
return self->uids;
|
|
|
|
|
|
|
|
s = [self nameInContainer];
|
|
|
|
if (![s hasPrefix:@"_custom_"]) {
|
|
|
|
[self logWithFormat:@"WARNING: incorrect custom group folder name: '%@'",
|
|
|
|
s];
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
s = [s substringFromIndex:8];
|
|
|
|
a = [s componentsSeparatedByString:SOGoUIDSeparator];
|
|
|
|
a = [self unescapeURLComponents:a];
|
|
|
|
self->uids = [a copy];
|
|
|
|
|
|
|
|
if ([self->uids count] < 2)
|
|
|
|
[self debugWithFormat:@"Note: less than two custom group members!"];
|
|
|
|
|
|
|
|
return self->uids;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* display name */
|
|
|
|
|
|
|
|
- (NSString *)davDisplayName {
|
|
|
|
NSArray *a;
|
|
|
|
unsigned count;
|
|
|
|
|
|
|
|
a = [self uids];
|
|
|
|
if ((count = [a count]) == 0)
|
|
|
|
return @"empty";
|
|
|
|
if (count == 1)
|
|
|
|
return [a objectAtIndex:0];
|
|
|
|
|
|
|
|
if (count < 6) {
|
|
|
|
NSMutableString *ms;
|
|
|
|
unsigned i;
|
|
|
|
|
|
|
|
ms = [NSMutableString stringWithCapacity:64];
|
|
|
|
for (i = 0; i < count; i++) {
|
|
|
|
if (i != 0) [ms appendString:@"|"];
|
|
|
|
[ms appendString:[a objectAtIndex:i]];
|
|
|
|
if ([ms length] > 60) {
|
|
|
|
ms = nil;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (ms != nil) return ms;
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: localize 'members' (UI component task?)
|
|
|
|
return [NSString stringWithFormat:@"Members: %d", count];
|
|
|
|
}
|
|
|
|
|
|
|
|
@end /* SOGoCustomGroupFolder */
|