sogo/SoObjects/Appointments/SOGoAptMailNotification.m

156 lines
3.8 KiB
Matlab
Raw Normal View History

/*
Copyright (C) 2000-2005 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.
*/
#import <Foundation/NSCharacterSet.h>
#import <Foundation/NSCalendarDate.h>
#import <Foundation/NSTimeZone.h>
#import <NGObjWeb/WOActionResults.h>
#import <NGObjWeb/WOMessage.h>
#import <NGExtensions/NSObject+Logs.h>
#import <NGCards/iCalEntityObject.h>
#import <SoObjects/SOGo/NSString+Utilities.h>
#import "SOGoAptMailNotification.h"
@interface SOGoAptMailNotification (PrivateAPI)
- (BOOL)isSubject;
- (void)setIsSubject:(BOOL)_isSubject;
@end
@implementation SOGoAptMailNotification
static NSCharacterSet *wsSet = nil;
static NSTimeZone *EST = nil;
+ (void)initialize {
static BOOL didInit = NO;
if (didInit) return;
didInit = YES;
wsSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet] retain];
EST = [[NSTimeZone timeZoneWithAbbreviation:@"EST"] retain];
}
- (void)dealloc {
[self->oldApt release];
[self->newApt release];
[self->homePageURL release];
[self->viewTZ release];
[self->oldStartDate release];
[self->newStartDate release];
[super dealloc];
}
- (id)oldApt {
return self->oldApt;
}
- (void)setOldApt:(iCalEntityObject *)_oldApt {
ASSIGN(self->oldApt, _oldApt);
}
- (id)newApt {
return self->newApt;
}
- (void)setNewApt:(iCalEntityObject *) _newApt
{
ASSIGN(self->newApt, _newApt);
}
- (NSString *)homePageURL {
return self->homePageURL;
}
- (void)setHomePageURL:(NSString *)_homePageURL {
ASSIGN(self->homePageURL, _homePageURL);
}
- (NSString *)appointmentURL {
NSString *aptUID;
aptUID = [[self newApt] uid];
return [NSString stringWithFormat:@"%@/Calendar/personal/%@/edit?mail-invitation=yes",
[self homePageURL],
aptUID];
}
- (NSTimeZone *)viewTZ {
if (self->viewTZ) return self->viewTZ;
return EST;
}
- (void)setViewTZ:(NSTimeZone *)_viewTZ {
ASSIGN(self->viewTZ, _viewTZ);
}
- (BOOL)isSubject {
return self->isSubject;
}
- (void)setIsSubject:(BOOL)_isSubject {
self->isSubject = _isSubject;
}
/* Helpers */
- (NSCalendarDate *)oldStartDate {
if (!self->oldStartDate) {
ASSIGN(self->oldStartDate, [[self oldApt] startDate]);
[self->oldStartDate setTimeZone:[self viewTZ]];
}
return self->oldStartDate;
}
- (NSCalendarDate *)newStartDate {
if (!self->newStartDate) {
ASSIGN(self->newStartDate, [[self newApt] startDate]);
[self->newStartDate setTimeZone:[self viewTZ]];
}
return self->newStartDate;
}
/* Generate Response */
- (NSString *)getSubject {
NSString *subject;
[self setIsSubject:YES];
subject = [[[self generateResponse] contentAsString]
stringByTrimmingCharactersInSet:wsSet];
if (!subject) {
[self errorWithFormat:@"Failed to properly generate subject! Please check "
@"template for component '%@'!",
[self name]];
subject = @"ERROR: missing subject!";
}
return [subject asQPSubjectString: @"utf-8"];
}
- (NSString *)getBody {
[self setIsSubject:NO];
return [[self generateResponse] contentAsString];
}
@end