diff --git a/ChangeLog b/ChangeLog index e4ea747b9..33829da00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -153,17 +153,6 @@ (-detectDoublesFromRecords:withQuickField:): added a quick field parameter to enable the use of other fields than just c_mail. -2011-03-27 Ludovic Marcotte - - * Added the SOGoLocalStorageURL preference that allows - one to set a different database where resource tables will - be created. If not set, it'll default to the database - specified in OCSFolderInfoURL. This is particularly useful - for multi-sites deployments where the sogo_folder_info and - sogo_user_profile are shared across sites but resources - tables are located at each sites, to minimize bandwitdh - requirements. - 2011-03-24 Wolfgang Sourdeau * UI/Contacts/UIxContactsListView.m (-currentContactClasses): new diff --git a/NEWS b/NEWS index 6aaf79b67..a2539f010 100644 --- a/NEWS +++ b/NEWS @@ -7,8 +7,6 @@ Enhancements - updated Spanish translation - "check while typing" is no longer enabled by default in HTML editor - updated CKEditor to version 3.5.2 -- now possible to set a per-instance database storage using the - SOGoLocalStorageURL preference - contact lists now have their own icons in the contacts web module - added the ability to invite people and to answer invitations from the iOS Calendar diff --git a/SOPE/GDLContentStore/GCSFolderManager.h b/SOPE/GDLContentStore/GCSFolderManager.h index 0302895cf..3f4ca95c3 100644 --- a/SOPE/GDLContentStore/GCSFolderManager.h +++ b/SOPE/GDLContentStore/GCSFolderManager.h @@ -67,7 +67,7 @@ - (GCSFolder *)folderAtPath:(NSString *)_path; -- (NSException *)createFolderOfType:(NSString *)_type withName:(NSString *)_name atPath:(NSString *)_path andURL:(NSURL *) _url; +- (NSException *)createFolderOfType:(NSString *)_type withName:(NSString *)_name atPath:(NSString *)_path; - (NSException *)deleteFolderAtPath:(NSString *)_path; /* alarms */ diff --git a/SOPE/GDLContentStore/GCSFolderManager.m b/SOPE/GDLContentStore/GCSFolderManager.m index c4e0bbcee..6b998734d 100644 --- a/SOPE/GDLContentStore/GCSFolderManager.m +++ b/SOPE/GDLContentStore/GCSFolderManager.m @@ -725,46 +725,32 @@ static NSCharacterSet *asciiAlphaNumericCS = nil; - (NSException *) _reallyCreateFolderWithName: (NSString *) folderName andFolderType: (NSString *) folderType andType: (GCSFolderType *) ftype - andFolderChannel: (EOAdaptorChannel *) folderChannel - andFolderInfoChannel: (EOAdaptorChannel *) folderInfoChannel + andChannel: (EOAdaptorChannel *) channel atPath: (NSString *) path - andURL: (NSURL *) url { - NSString *baseURL, *tableName, *quickTableName, *aclTableName, *createQuery, *sql; - EOAdaptorContext *folderChannelContext, *folderInfoChannelContext; - GCSSpecialQueries *specialQuery; - NSMutableArray *paths; NSException *error; - BOOL b; + NSString *baseURL, *tableName, *quickTableName, *aclTableName, *createQuery, + *sql; + EOAdaptorContext *aContext; + NSMutableArray *paths; + GCSSpecialQueries *specialQuery; paths = [NSMutableArray arrayWithArray: [path componentsSeparatedByString: @"/"]]; while ([paths count] < 5) [paths addObject: @"NULL"]; - // start a transaction to modify sogo_folder_info - folderInfoChannelContext = [folderInfoChannel adaptorContext]; - [folderInfoChannelContext beginTransaction]; - - // if we use a different database for resource tables, we also start a transaction - if (folderChannel != folderInfoChannel) - { - folderChannelContext = [folderChannel adaptorContext]; - [folderChannelContext beginTransaction]; - b = YES; - } + aContext = [channel adaptorContext]; + [aContext beginTransaction]; tableName = [self baseTableNameWithUID: [paths objectAtIndex: 2]]; quickTableName = [tableName stringByAppendingString: @"_quick"]; aclTableName = [tableName stringByAppendingString: @"_acl"]; - // holds the path to the database - baseURL = [url absoluteString]; - - if (!url) - baseURL = [[folderInfoLocation absoluteString] stringByDeletingLastPathComponent]; - - // TBD: fix SQL injection issues + // TBD: fix SQL injection issues + baseURL + = [[folderInfoLocation absoluteString] stringByDeletingLastPathComponent]; + sql = [NSString stringWithFormat: @"INSERT INTO %@" @" (c_path, c_path1, c_path2, c_path3, c_path4," @" c_foldername, c_location, c_quick_location," @@ -779,36 +765,29 @@ static NSCharacterSet *asciiAlphaNumericCS = nil; baseURL, quickTableName, baseURL, aclTableName, folderType]; - error = [folderInfoChannel evaluateExpressionX: sql]; + error = [channel evaluateExpressionX: sql]; if (!error) { - specialQuery = [folderChannel specialQueries]; + specialQuery = [channel specialQueries]; createQuery = [specialQuery createFolderTableWithName: tableName]; - error = [folderChannel evaluateExpressionX: createQuery]; + error = [channel evaluateExpressionX: createQuery]; if (!error) { sql = [ftype sqlQuickCreateWithTableName: quickTableName]; - error = [folderChannel evaluateExpressionX: sql]; + error = [channel evaluateExpressionX: sql]; if (!error) { - createQuery = [specialQuery createFolderACLTableWithName: aclTableName]; - error = [folderChannel evaluateExpressionX: createQuery]; + createQuery = [specialQuery + createFolderACLTableWithName: aclTableName]; + error = [channel evaluateExpressionX: createQuery]; } } } if (error) - { - [folderInfoChannelContext rollbackTransaction]; - if (b) - [folderChannelContext rollbackTransaction]; - } + [aContext rollbackTransaction]; else - { - [folderInfoChannelContext commitTransaction]; - if (b) - [folderChannelContext commitTransaction]; - } + [aContext commitTransaction]; return error; } @@ -816,12 +795,11 @@ static NSCharacterSet *asciiAlphaNumericCS = nil; - (NSException *) createFolderOfType: (NSString *) _type withName: (NSString*) _name atPath: (NSString *) _path - andURL: (NSURL *) _url { // TBD: would be best to perform all operations as a single SQL statement. - EOAdaptorChannel *folderChannel, *folderInfoChannel; - GCSFolderType *ftype; - NSException *error; + GCSFolderType *ftype; + EOAdaptorChannel *channel; + NSException *error; // TBD: fix SQL injection issue! if ([self folderExistsAtPath: _path]) @@ -833,34 +811,17 @@ static NSCharacterSet *asciiAlphaNumericCS = nil; ftype = [self folderTypeWithName:_type]; if (ftype) { - folderInfoChannel = [self acquireOpenChannel]; - folderChannel = nil; - - // We use the provided alternate database, if any. The content, - // quick and acl tables will be created in there. - if (_url) - folderChannel = [[self channelManager] acquireOpenChannelForURL: _url]; - - // Otherwise we use the same database used by sogo_folder_info - if (!folderChannel) - folderChannel = folderInfoChannel; - - if (folderChannel) + channel = [self acquireOpenChannel]; + if (channel) { error = [self _reallyCreateFolderWithName: _name andFolderType: _type - andType: ftype - andFolderChannel: folderChannel - andFolderInfoChannel: folderInfoChannel - atPath: _path - andURL: _url]; + andType: ftype andChannel: channel + atPath: _path]; if (error && [self folderExistsAtPath: _path]) error = nil; - if (folderChannel != folderInfoChannel) - [self releaseChannel: folderChannel]; - - [self releaseChannel: folderInfoChannel]; + [self releaseChannel: channel]; } else error = [NSException exceptionWithName: @"GCSNoChannel" diff --git a/SoObjects/SOGo/SOGoFolder.m b/SoObjects/SOGo/SOGoFolder.m index 9079816b8..ea89273ae 100644 --- a/SoObjects/SOGo/SOGoFolder.m +++ b/SoObjects/SOGo/SOGoFolder.m @@ -1,6 +1,6 @@ /* SOGoFolder.m - this file is part of SOGo * - * Copyright (C) 2007-2011 Inverse inc. + * Copyright (C) 2007-2009 Inverse inc. * * Author: Wolfgang Sourdeau * diff --git a/SoObjects/SOGo/SOGoGCSFolder.h b/SoObjects/SOGo/SOGoGCSFolder.h index 7b8a4c1d6..8a85ee59f 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.h +++ b/SoObjects/SOGo/SOGoGCSFolder.h @@ -1,6 +1,6 @@ /* Copyright (C) 2004-2005 SKYRIX Software AG - Copyright (C) 2006-2011 Inverse inc. + Copyright (C) 2006-2010 Inverse inc. This file is part of SOGo. diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index 0ac2e0872..81e696237 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -1,7 +1,7 @@ /* SOGoGCSFolder.m - this file is part of SOGo * * Copyright (C) 2004-2005 SKYRIX Software AG - * Copyright (C) 2006-2011 Inverse inc. + * Copyright (C) 2006-2010 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -70,7 +70,6 @@ #import "SOGoParentFolder.h" #import "SOGoPermissions.h" #import "SOGoUser.h" -#import "SOGoSystemDefaults.h" #import "SOGoUserDefaults.h" #import "SOGoUserSettings.h" #import "SOGoUserManager.h" @@ -526,34 +525,12 @@ static NSArray *childRecordFields = nil; } } -// -// This method honors the SOGoLocalStorageURL preference in order -// to create the database tables at the preferred location instead of -// creating them in the same database as the one specified in the -// OCSFolderInfoURL preference. This is particularly useful for -// multi-sites deployments. -// - (BOOL) create { - GCSFolderManager *folderManager; - EOAdaptorChannel *channel; NSException *result; - NSString *s; - NSURL *url; - - folderManager = [self folderManager]; - channel = nil; - - s = [[SOGoSystemDefaults sharedSystemDefaults] stringForKey: @"SOGoLocalStorageURL"]; - url = nil; - - if (s) - url = [NSURL URLWithString: s]; - - result = [folderManager createFolderOfType: [self folderType] - withName: displayName - atPath: ocsPath - andURL: url]; + result = [[self folderManager] createFolderOfType: [self folderType] + withName: displayName + atPath: ocsPath]; if (!result && [[context request] handledByDefaultHandler]) diff --git a/Tools/SOGoToolRestore.m b/Tools/SOGoToolRestore.m index cb9f668b7..2949b4fc7 100644 --- a/Tools/SOGoToolRestore.m +++ b/Tools/SOGoToolRestore.m @@ -1,6 +1,6 @@ /* SOGoToolRestore.m - this file is part of SOGo * - * Copyright (C) 2009-2011 Inverse inc. + * Copyright (C) 2009-2010 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -36,7 +36,6 @@ #import #import #import -#import #import #import #import @@ -383,10 +382,9 @@ typedef enum SOGoToolRestoreMode { - (BOOL) createFolder: (NSString *) folder withFM: (GCSFolderManager *) fm { - NSString *folderType, *s; NSArray *pathElements; NSException *error; - NSURL *url; + NSString *folderType; BOOL rc; pathElements = [folder componentsSeparatedByString: @"/"]; @@ -395,16 +393,9 @@ typedef enum SOGoToolRestoreMode { else folderType = @"Appointment"; - s = [[SOGoSystemDefaults sharedSystemDefaults] stringForKey: @"SOGoLocalStorageURL"]; - url = nil; - - if (s) - url = [NSURL URLWithString: s]; - error = [fm createFolderOfType: folderType - withName: [pathElements objectAtIndex: 4] - atPath: folder - andURL: url]; + withName: [pathElements objectAtIndex: 4] + atPath: folder]; if (error) { rc = NO;