]> err.no Git - scalable-opengroupware.org/commitdiff
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1361 d1b88da0-ebda-0310...
authorwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Thu, 7 Feb 2008 22:21:14 +0000 (22:21 +0000)
committerwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Thu, 7 Feb 2008 22:21:14 +0000 (22:21 +0000)
ChangeLog
SoObjects/Mailer/SOGoMailAccount.m
SoObjects/Mailer/SOGoMailAccounts.m
SoObjects/SOGo/SOGoUser.h
SoObjects/SOGo/SOGoUser.m

index 001304afead99b335eb6a0415dddeb6c6ec1e2b4..e17a8e4354e386e6a7841d14d57f88fb8722ccda 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
        * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): if the
        loginname for the default mail account contains an "@", it should
        be url-escaped to avoid confusing NSURL.
+       ([SOGoUser -accountWithName:accountName]): new method that wanders
+       the accounts list and returns the one that matches the name passed
+       as parameter, if found.
 
        * SoObjects/SOGo/SOGoUserFolder.m ([-login]): removed useless
        method.
index 4a64431b497d7c30484b1b3d488f0bb53fd75a5c..69cefa26109ca8cee335c8627af9a7fb50d7068b 100644 (file)
@@ -245,6 +245,27 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
   return [creds objectAtIndex:0]; /* the user */
 }
 
+- (NSString *) urlHostString
+{
+  NSDictionary *mailAccount;
+  NSString *username, *escUsername, hostString;
+
+  mailAccount = [[context activeUser] accountWithName: nameInContainer];
+  if (mailAccount)
+    {
+      username = [mailAccount objectForKey: @"userName"];
+      escUsername
+       = [[username stringByReplacingString: @"@" withString: @"%40"]
+           stringByEscapingURL];
+      hostString = [NSString stringWithFormat: @"%@@%@", escUsername,
+                            [mailAccount objectForKey: @"serverName"]];
+    }
+  else
+    hostString = @"localhost";
+
+  return hostString;
+}
+
 - (NSMutableString *) imap4URLString
 {
   /* private, overridden by SOGoSharedMailAccount */
@@ -258,7 +279,7 @@ static NSString *otherUsersFolderName = @""; // TODO: add English default
   else
     [urlString appendString: @"imap://"];
 
-  host = [self nameInContainer];
+  host = [self urlHostString];
   if (![host rangeOfString: @"@"].length)
     [urlString appendFormat: @"%@@", [self imap4LoginFromHTTP]];
   [urlString appendFormat: @"%@/", host];
index 8a2cde7befd01eb5872f43c7ab6ce8df532f9e65..cf498cf321d633f34aa92d0a9cbef593172bfd07 100644 (file)
@@ -95,7 +95,6 @@
 //     return [NSException exceptionWithHTTPStatus:403 /* Forbidden */
 //                     reason:@"Tried to access the mail of another user"];
 //   }
 
   /* first check attributes directly bound to the application */
   obj = [super lookupName:_key inContext:_ctx acquire:NO];
index 1c580e57a137bd7c2f80c945b9285d13a2c98f95..6a5e89c6cf2e0ca1fe70c787124cb5c7b15db90e 100644 (file)
@@ -118,6 +118,7 @@ extern NSString *SOGoWeekStartFirstFullWeek;
 - (NSTimeZone *) serverTimeZone;
 
 - (NSArray *) mailAccounts;
+- (NSDictinary *) accountWithName: (NSString *) accountName;
 - (NSArray *) allIdentities;
 - (NSDictionary *) primaryIdentity;
 - (NSMutableDictionary *) defaultIdentity;
index a9ec7d78a562846deacf79d3293c4a2d34d973fc..b94e7188f0cbcbc8d7ecf2f714d54693bd008e45 100644 (file)
@@ -454,16 +454,14 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek";
 {
   NSMutableDictionary *mailAccount, *identity;
   NSMutableArray *identities;
-  NSString *name, *fullName, *userName;
+  NSString *name, *fullName;
   NSArray *mails;
   unsigned int count, max;
 
   mailAccount = [NSMutableDictionary dictionary];
-  userName = [[login stringByReplacingString: @"@" withString: @"%40"]
-              stringByEscapingURL];
   name = [NSString stringWithFormat: @"%@@%@",
-                  userName, fallbackIMAP4Server];
-  [mailAccount setObject: userName forKey: @"userName"];
+                  login, fallbackIMAP4Server];
+  [mailAccount setObject: login forKey: @"userName"];
   [mailAccount setObject: fallbackIMAP4Server forKey: @"serverName"];
   [mailAccount setObject: name forKey: @"name"];
 
@@ -509,6 +507,23 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek";
   return mailAccounts;
 }
 
+- (NSDictinary *) accountWithName: (NSString *) accountName
+{
+  NSEnumerator *accounts;
+  NSDictionary *mailAccount, *currentAccount;
+
+  mailAccount = nil;
+
+  accounts = [[self mailAccounts] objectEnumerator];
+  while (!mailAccount
+        && ((currentAccount = [accounts nextObject])))
+    if ([[currentAccount objectForKey: @"name"]
+         isEqualToString: nameInContainer])
+      mailAccount = currentAccount;
+
+  return mailAccount;
+}
+
 /*
 @interface SOGoMailIdentity : NSObject
 {