]> err.no Git - scalable-opengroupware.org/blobdiff - SoObjects/Appointments/SOGoCalendarComponent.m
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1146 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / SoObjects / Appointments / SOGoCalendarComponent.m
index 5f707b181415f4bb278f6b3b23a9b22109f76c7c..808275d36565508e0246d6298e9a2af208f93464 100644 (file)
  */
 
 #import <Foundation/NSString.h>
-
+#import <Foundation/NSUserDefaults.h>
+
+#import <NGObjWeb/NSException+HTTP.h>
+#import <NGObjWeb/SoSecurityManager.h>
+#import <NGObjWeb/WOApplication.h>
+#import <NGObjWeb/WOContext+SoObjects.h>
+#import <NGExtensions/NSObject+Logs.h>
+#import <NGExtensions/NGHashMap.h>
 #import <NGCards/iCalCalendar.h>
 #import <NGCards/iCalPerson.h>
 #import <NGCards/iCalRepeatableEntityObject.h>
-#import <NGMime/NGMime.h>
-#import <NGMail/NGMail.h>
-#import <NGMail/NGSendMail.h>
+#import <NGMime/NGMimeBodyPart.h>
+#import <NGMime/NGMimeMultipartBody.h>
+#import <NGMail/NGMimeMessage.h>
 
 #import <SoObjects/SOGo/LDAPUserManager.h>
+#import <SoObjects/SOGo/NSCalendarDate+SOGo.h>
+#import <SoObjects/SOGo/SOGoMailer.h>
 #import <SoObjects/SOGo/SOGoPermissions.h>
 #import <SoObjects/SOGo/SOGoUser.h>
 #import <SoObjects/Appointments/SOGoAppointmentFolder.h>
 
-#import "common.h"
-
 #import "SOGoAptMailNotification.h"
 #import "iCalEntityObject+SOGo.h"
 #import "SOGoCalendarComponent.h"
@@ -111,23 +118,38 @@ static BOOL sendEMailNotifications = NO;
 
 - (NSString *) contentAsString
 {
-  NSString *uid;
   iCalCalendar *tmpCalendar;
   iCalRepeatableEntityObject *tmpComponent;
-  NSArray *roles;
+//   NSArray *roles;
+//   NSString *uid;
+  SoSecurityManager *sm;
 
   if (!calContent)
     {
-      uid = [[context activeUser] login];
-      roles = [self aclsForUser: uid];
-      if ([roles containsObject: SOGoCalendarRole_Organizer]
-         || [roles containsObject: SOGoCalendarRole_Participant]
-         || [roles containsObject: SOGoCalendarRole_ComponentViewer])
-       {
-         calContent = content;
-         [calContent retain];
-       }
-      else if ([roles containsObject: SOGoCalendarRole_ComponentDAndTViewer])
+//       uid = [[context activeUser] login];
+//       roles = [self aclsForUser: uid];
+//       if ([roles containsObject: SOGoCalendarRole_Organizer]
+//       || [roles containsObject: SOGoCalendarRole_Participant]
+//       || [roles containsObject: SOGoCalendarRole_ComponentViewer])
+//     calContent = content;
+//       else if ([roles containsObject: SOGoCalendarRole_ComponentDAndTViewer])
+//     {
+//       tmpCalendar = [[self calendar: NO] copy];
+//       tmpComponent = (iCalRepeatableEntityObject *)
+//         [tmpCalendar firstChildWithTag: [self componentTag]];
+//       [self _filterComponent: tmpComponent];
+//       calContent = [tmpCalendar versitString];
+//       [tmpCalendar release];
+//     }
+//       else
+//     calContent = nil;
+
+      sm = [SoSecurityManager sharedSecurityManager];
+      if (![sm validatePermission: SOGoCalendarPerm_ViewAllComponent
+              onObject: self inContext: context])
+       calContent = content;
+      else if (![sm validatePermission: SOGoCalendarPerm_ViewDAndT
+                   onObject: self inContext: context])
        {
          tmpCalendar = [[self calendar: NO] copy];
          tmpComponent = (iCalRepeatableEntityObject *)
@@ -314,13 +336,12 @@ static BOOL sendEMailNotifications = NO;
   NSString *pageName;
   iCalPerson *organizer;
   NSString *cn, *email, *sender, *iCalString;
-  NGSendMail *sendmail;
   WOApplication *app;
   unsigned i, count;
   iCalPerson *attendee;
   NSString *recipient;
   SOGoAptMailNotification *p;
-  NSString *subject, *text, *header;
+  NSString *mailDate, *subject, *text, *header;
   NGMutableHashMap *headerMap;
   NGMimeMessage *msg;
   NGMimeBodyPart *bodyPart;
@@ -342,9 +363,6 @@ static BOOL sendEMailNotifications = NO;
       /* generate iCalString once */
       iCalString = [[_newObject parent] versitString];
   
-      /* get sendmail object */
-      sendmail = [NGSendMail sharedSendMail];
-
       /* get WOApplication instance */
       app = [WOApplication application];
 
@@ -391,7 +409,8 @@ static BOOL sendEMailNotifications = NO;
           [headerMap setObject: @"multipart/mixed" forKey: @"content-type"];
           [headerMap setObject: sender forKey: @"From"];
           [headerMap setObject: recipient forKey: @"To"];
-          [headerMap setObject: [NSCalendarDate date] forKey: @"date"];
+         mailDate = [[NSCalendarDate date] rfc822DateString];
+          [headerMap setObject: mailDate forKey: @"date"];
           [headerMap setObject: subject forKey: @"Subject"];
           msg = [NGMimeMessage messageWithHeader: headerMap];
 
@@ -425,9 +444,10 @@ static BOOL sendEMailNotifications = NO;
           [body release];
 
           /* send the damn thing */
-          [sendmail sendMimePart: msg
-                    toRecipients: [NSArray arrayWithObject: email]
-                    sender: [organizer rfc822Email]];
+          [[SOGoMailer sharedMailer]
+           sendMimePart: msg
+           toRecipients: [NSArray arrayWithObject: email]
+           sender: [organizer rfc822Email]];
         }
     }
 }
@@ -606,7 +626,6 @@ static BOOL sendEMailNotifications = NO;
       else if ([roles containsObject: SOGoRole_ObjectCreator])
        [roles addObject: SOGoCalendarRole_Organizer];
     }
-//     }
 
   return roles;
 }