]> err.no Git - sope/commitdiff
added methods to delete ACLs
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 28 May 2007 14:04:25 +0000 (14:04 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 28 May 2007 14:04:25 +0000 (14:04 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1488 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-gdl1/GDLContentStore/ChangeLog
sope-gdl1/GDLContentStore/GCSFolder.h
sope-gdl1/GDLContentStore/GCSFolder.m
sope-gdl1/GDLContentStore/Version

index 5d6af5037f969c60645b3bda1849b5d504024c93..6c8e9c56f34c1b208b63263cd0524e82a0a875b8 100644 (file)
@@ -1,3 +1,8 @@
+2007-03-21  Wolfgang Sourdeau  <WSourdeau@Inverse.CA>
+
+       * GCSFolder.[hm]: added methods to delete ACL records (OGo bug #1866)
+         (v4.7.44)
+
 2007-04-22  Helge Hess  <helge.hess@opengroupware.org>
 
        * GCSChannelManager.m: improved error log (v4.7.43)
index e461666cd50346cf074b202a808fcd2412541af1..7209517ed860ebf34294ee98d1c365ea0c37b30b 100644 (file)
   fetchSpecification:(EOFetchSpecification *)_fs;
 - (NSArray *)fetchFields:(NSArray *)_flds matchingQualifier:(EOQualifier *)_q;
 - (NSArray *)fetchAclMatchingQualifier:(EOQualifier *)_q;
+- (void)deleteAclMatchingQualifier:(EOQualifier *)_q;
+- (void)deleteAclWithSpecification:(EOFetchSpecification *)_fs;
 
 @end
 
index 5033c6db27e9ef897873c21ce5db849bdef2fc85..39f813ffa4cceec4889cb5790e47feb1a462a80d 100644 (file)
@@ -899,8 +899,7 @@ static GCSStringFormatter *stringFormatter = nil;
   return [self fetchFields:_flds fetchSpecification:fs];
 }
 
-- (NSArray *)fetchAclWithSpecification:(EOFetchSpecification *)_fs
-{
+- (NSArray *)fetchAclWithSpecification:(EOFetchSpecification *)_fs {
   EOQualifier      *qualifier;
   NSArray          *sortOrderings;
   EOAdaptorChannel *channel;
@@ -982,6 +981,53 @@ static GCSStringFormatter *stringFormatter = nil;
   return [self fetchAclWithSpecification:fs];
 }
 
+- (void) deleteAclMatchingQualifier:(EOQualifier *)_q {
+  EOFetchSpecification *fs;
+
+  if (_q != nil) {
+    fs = [EOFetchSpecification fetchSpecificationWithEntityName:
+                                [self folderName]
+                              qualifier:_q
+                              sortOrderings:nil];
+    [self deleteAclWithSpecification:fs];
+  }
+}
+
+- (void)deleteAclWithSpecification:(EOFetchSpecification *)_fs
+{
+  EOQualifier      *qualifier;
+  EOAdaptorChannel *channel;
+  NSException      *error;
+  NSMutableString  *sql;
+  
+  qualifier     = [_fs qualifier];
+  if (qualifier != nil) {
+    sql = [NSMutableString stringWithCapacity:256];
+    [sql appendString:@"DELETE FROM "];
+    [sql appendString:[self aclTableName]];
+    [sql appendString:@" WHERE "];
+    [sql appendString:[self generateSQLForQualifier:qualifier]];
+  }
+  
+  /* open channel */
+
+  if ((channel = [self acquireAclChannel]) == nil) {
+    [self errorWithFormat:@"could not open acl channel!"];
+    return;
+  }
+  
+  /* run SQL */
+
+  if ((error = [channel evaluateExpressionX:sql]) != nil) {
+    [self errorWithFormat:@"%s: cannot execute acl-fetch SQL '%@': %@", 
+           __PRETTY_FUNCTION__, sql, error];
+    [self releaseChannel:channel];
+    return;
+  }
+  
+  [self releaseChannel:channel];
+}
+
 /* description */
 
 - (NSString *)description {
index 2f980b4fbfa5c1371fd3afa8d7fe7279ebf5c62d..f1c7bbbcd89e98322afd29e1e41b8615f6c56e72 100644 (file)
@@ -2,7 +2,7 @@
 
 MAJOR_VERSION:=4
 MINOR_VERSION:=7
-SUBMINOR_VERSION:=43
+SUBMINOR_VERSION:=44
 
 # v4.5.29 requires libNGExtensions v4.5.161
 # v4.5.26 does not require libNGiCal anymore