]> err.no Git - scalable-opengroupware.org/commitdiff
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1054 d1b88da0-ebda-0310...
authorwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Wed, 9 May 2007 20:28:34 +0000 (20:28 +0000)
committerwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Wed, 9 May 2007 20:28:34 +0000 (20:28 +0000)
SoObjects/Contacts/SOGoContactLDIFEntry.m [new file with mode: 0644]

diff --git a/SoObjects/Contacts/SOGoContactLDIFEntry.m b/SoObjects/Contacts/SOGoContactLDIFEntry.m
new file mode 100644 (file)
index 0000000..22a2ba7
--- /dev/null
@@ -0,0 +1,200 @@
+/* SOGoContactLDIFEntry.m - this file is part of SOGo
+ *
+ * Copyright (C) 2006 Inverse groupe conseil
+ *
+ * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This file 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#import <Foundation/NSArray.h>
+#import <Foundation/NSDictionary.h>
+#import <Foundation/NSString.h>
+
+#import <NGCards/NGVCard.h>
+#import <NGCards/CardVersitRenderer.h>
+
+#import "SOGoContactLDIFEntry.h"
+
+@implementation SOGoContactLDIFEntry
+
++ (SOGoContactLDIFEntry *) contactEntryWithName: (NSString *) newName
+                                  withLDIFEntry: (NSDictionary *) newEntry
+                                    inContainer: (id) newContainer
+{
+  SOGoContactLDIFEntry *entry;
+
+  entry = [[self alloc] initWithName: newName
+                        withLDIFEntry: newEntry
+                        inContainer: newContainer];
+  [entry autorelease];
+
+  return entry;
+}
+
+- (id) initWithName: (NSString *) newName
+      withLDIFEntry: (NSDictionary *) newEntry
+        inContainer: (id) newContainer
+{
+  self = [self init];
+  ASSIGN (name, newName);
+  ASSIGN (container, newContainer);
+  ASSIGN (ldifEntry, newEntry);
+  vcard = nil;
+
+//   [self dumpEntry: anEntry];
+
+  return self;
+}
+
+- (NSString *) nameInContainer
+{
+  return name;
+}
+
+- (void) dealloc
+{
+  [vcard release];
+  [ldifEntry release];
+  [super dealloc];
+}
+
+- (NSString *) contentAsString
+{
+  return [[self vCard] versitString];
+}
+
+- (void) _setPhonesOfVCard: (NGVCard *) vCard
+{
+  NSString *info;
+
+  info = [ldifEntry objectForKey: @"telephoneNumber"];
+  if (info)
+    [vCard addTel: info
+           types: [NSArray arrayWithObjects: @"work", @"voice", @"pref", nil]];
+  info = [ldifEntry objectForKey: @"homePhone"];
+  if (info)
+    [vCard addTel: info
+           types: [NSArray arrayWithObjects: @"home", @"voice", nil]];
+  info = [ldifEntry objectForKey: @"fax"];
+  if (info)
+    [vCard addTel: info
+           types: [NSArray arrayWithObjects: @"work", @"fax", nil]];
+  info = [ldifEntry objectForKey: @"pager"];
+  if (info)
+    [vCard addTel: info
+           types: [NSArray arrayWithObjects: @"pager", nil]];
+  info = [ldifEntry objectForKey: @"mobile"];
+  if (info)
+    [vCard addTel: info
+           types: [NSArray arrayWithObjects: @"cell", @"voice", nil]];
+
+// telephoneNumber: work phone
+// homePhone: home phone
+// fax: fax phone
+// pager: page phone
+// mobile: mobile phone
+  
+}
+
+- (NGVCard *) vCard
+{
+  NSString *info, *surname, *streetAddress, *location;
+  CardElement *element;
+
+  if (!vcard)
+    {
+      vcard = [[NGVCard alloc] initWithUid: [self nameInContainer]];
+      [vcard setVClass: @"PUBLIC"];
+      [vcard setProdID: @"-//OpenGroupware.org//SOGo"];
+      [vcard setProfile: @"vCard"];
+      info = [ldifEntry objectForKey: @"displayName"];
+      if (!(info && [info length] > 0))
+        info = [ldifEntry objectForKey: @"cn"];
+      [vcard setFn: info];
+      surname = [ldifEntry objectForKey: @"sn"];
+      if (!surname)
+        surname = [ldifEntry objectForKey: @"surname"];
+      [vcard setNWithFamily: surname
+             given: [ldifEntry objectForKey: @"givenName"]
+             additional: nil
+             prefixes: nil
+             suffixes: nil];
+      info = [ldifEntry objectForKey: @"title"];
+      if (info)
+        [vcard setTitle: info];
+      info = [ldifEntry objectForKey: @"mozillaNickname"];
+      if (info)
+        [vcard setNickname: info];
+      info = [ldifEntry objectForKey: @"xmozillaNickname"];
+      if (info)
+        [vcard setNickname: info];
+      info = [ldifEntry objectForKey: @"notes"];
+      if (info)
+        [vcard setNote: info];
+      info = [ldifEntry objectForKey: @"mail"];
+      if (info)
+        [vcard addEmail: info
+               types: [NSArray arrayWithObjects: @"internet", @"pref", nil]];
+      [self _setPhonesOfVCard: vcard];
+      streetAddress = [ldifEntry objectForKey: @"streetAddress"];
+      location = [ldifEntry objectForKey: @"l"];
+      element = [CardElement elementWithTag: @"adr"
+                             attributes: nil values: nil];
+      [element setValue: 0 ofAttribute: @"type" to: @"work"];
+      if (streetAddress)
+        [element setValue: 2 to: streetAddress];
+      if (location)
+        [element setValue: 3 to: location];
+      if (streetAddress || location)
+        [vcard addChild: element];
+      info = [ldifEntry objectForKey: @"calFBURL"];
+      if (info)
+        [vcard addChildWithTag: @"FBURL"
+               types: nil
+               singleValue: info];
+    }
+
+  return vcard;
+}
+
+- (NSString *) davEntityTag
+{
+  return [ldifEntry objectForKey: @"modifyTimeStamp"];
+}
+
+- (NSString *) davContentType
+{
+  return @"text/x-vcard";
+}
+
+- (NSArray *) aclsForUser: (NSString *) uid
+{
+  return nil;
+}
+
+- (void) save
+{
+}
+
+/* message type */
+
+- (NSString *) outlookMessageClass
+{
+  return @"IPM.Contact";
+}
+
+@end