Monotone-Parent: 3ded00a80ce87781ff6767f6fe38a12735a48340

Monotone-Revision: af0fb5901615e40ad3549c59f74f88bb33f9b392

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2012-08-09T19:43:17
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2012-08-09 19:43:17 +00:00
parent c2a63a3d8e
commit 700d23e80e
4 changed files with 110 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2012-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder)
(sogo_folder_copy_folder): new backend methods.
2012-08-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OpenChange/MAPIStoreCalendarMessage.m (-save): generate a

View File

@ -123,6 +123,14 @@
andChangeKeys: (struct Binary_r **) targetChangeKeys
wantCopy: (uint8_t) want_copy;
- (enum mapistore_error) moveFolderWithFID: (uint64_t) fid
fromFolder: (MAPIStoreFolder *) sourceFolder
withNewName: (NSString *) newFolderName;
- (enum mapistore_error) copyFolderWithFID: (uint64_t) fid
fromFolder: (MAPIStoreFolder *) sourceFolder
recursive: (BOOL) resursive
withNewName: (NSString *) newFolderName;
- (int) getDeletedFMIDs: (struct I8Array_r **) fmidsPtr
andCN: (uint64_t *) cnPtr
fromChangeNumber: (uint64_t) changeNum

View File

@ -795,6 +795,21 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe
return rc;
}
- (enum mapistore_error) moveFolderWithFID: (uint64_t) fid
fromFolder: (MAPIStoreFolder *) sourceFolder
withNewName: (NSString *) newFolderName
{
return MAPISTORE_ERR_DENIED;
}
- (enum mapistore_error) copyFolderWithFID: (uint64_t) fid
fromFolder: (MAPIStoreFolder *) sourceFolder
recursive: (BOOL) resursive
withNewName: (NSString *) newFolderName
{
return MAPISTORE_ERR_DENIED;
}
- (SOGoFolder *) aclFolder
{
[self subclassResponsibility: _cmd];

View File

@ -608,6 +608,86 @@ sogo_folder_move_copy_messages(void *folder_object,
return rc;
}
static enum mapistore_error
sogo_folder_move_folder(void *folder_object, void *source_folder_object,
uint64_t fid, const char *new_folder_name)
{
MAPIStoreFolder *sourceFolder, *targetFolder;
NSAutoreleasePool *pool;
NSString *newFolderName;
struct MAPIStoreTallocWrapper *wrapper;
int rc;
DEBUG (5, ("[SOGo: %s:%d]\n", __FUNCTION__, __LINE__));
if (folder_object)
{
wrapper = folder_object;
targetFolder = wrapper->instance;
wrapper = source_folder_object;
sourceFolder = wrapper->instance;
GSRegisterCurrentThread ();
pool = [NSAutoreleasePool new];
newFolderName = [NSString stringWithUTF8String: new_folder_name];
rc = [targetFolder moveFolderWithFID: fid
fromFolder: sourceFolder
withNewName: newFolderName];
[pool release];
GSUnregisterCurrentThread ();
}
else
{
rc = sogo_backend_unexpected_error();
}
return rc;
}
static enum mapistore_error
sogo_folder_copy_folder(void *folder_object, void *source_folder_object,
uint64_t fid, bool recursive,
const char *new_folder_name)
{
MAPIStoreFolder *sourceFolder, *targetFolder;
NSAutoreleasePool *pool;
NSString *newFolderName;
struct MAPIStoreTallocWrapper *wrapper;
int rc;
DEBUG (5, ("[SOGo: %s:%d]\n", __FUNCTION__, __LINE__));
if (folder_object)
{
wrapper = folder_object;
targetFolder = wrapper->instance;
wrapper = source_folder_object;
sourceFolder = wrapper->instance;
GSRegisterCurrentThread ();
pool = [NSAutoreleasePool new];
newFolderName = [NSString stringWithUTF8String: new_folder_name];
rc = [targetFolder copyFolderWithFID: fid
fromFolder: sourceFolder
recursive: recursive
withNewName: newFolderName];
[pool release];
GSUnregisterCurrentThread ();
}
else
{
rc = sogo_backend_unexpected_error();
}
return rc;
}
static enum mapistore_error
sogo_folder_get_deleted_fmids(void *folder_object, TALLOC_CTX *mem_ctx,
enum mapistore_table_type table_type, uint64_t change_num,
@ -1414,6 +1494,8 @@ int mapistore_init_backend(void)
backend.folder.create_message = sogo_folder_create_message;
backend.folder.delete_message = sogo_folder_delete_message;
backend.folder.move_copy_messages = sogo_folder_move_copy_messages;
backend.folder.move_folder = sogo_folder_move_folder;
backend.folder.copy_folder = sogo_folder_copy_folder;
backend.folder.get_deleted_fmids = sogo_folder_get_deleted_fmids;
backend.folder.get_child_count = sogo_folder_get_child_count;
backend.folder.open_table = sogo_folder_open_table;