浏览代码

porting directory.lock

Marino Faggiana 8 年之前
父节点
当前提交
ccd4fb0906

+ 20 - 8
Picker/DocumentPickerViewController.swift

@@ -771,10 +771,13 @@ extension DocumentPickerViewController: UITableViewDataSource {
             passcode = ""
         }
         
-        if metadata!.directory && CCCoreData.isDirectoryLock(lockServerUrl, activeAccount: activeAccount) && (passcode?.characters.count)! > 0 {
-            cell.StatusImageView.image = UIImage(named: "passcode")
-        } else {
-            cell.StatusImageView.image = nil
+        let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectoryWithPreficate(NSPredicate(format: "serverUrl = %@", lockServerUrl!))
+        if tableDirectory != nil {
+            if metadata!.directory &&  (tableDirectory?.lock)! && (passcode?.characters.count)! > 0 {
+                cell.StatusImageView.image = UIImage(named: "passcode")
+            } else {
+                cell.StatusImageView.image = nil
+            }
         }
         
         return cell
@@ -836,13 +839,22 @@ extension DocumentPickerViewController: UITableViewDataSource {
                 passcode = ""
             }
             
-            if CCCoreData.isDirectoryLock(serverUrlPush, activeAccount: activeAccount) && (passcode?.characters.count)! > 0 {
+            let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectoryWithPreficate(NSPredicate(format: "serverUrl = %@", serverUrlPush!))
+
+            if tableDirectory != nil {
                 
-                self.passcodeIsPush = true
-                openBKPasscode(self.metadata?.fileNamePrint)
+                if (tableDirectory?.lock)! && (passcode?.characters.count)! > 0 {
+                    
+                    self.passcodeIsPush = true
+                    openBKPasscode(self.metadata?.fileNamePrint)
+                    
+                } else {
+                    
+                    performSegue()
+                }
                 
             } else {
-            
+                
                 performSegue()
             }
         }

+ 2 - 0
iOSClient/FileSystem/CCCoreData.h

@@ -76,6 +76,7 @@
 
 // ===== Directory =====
 
+/*
 + (NSString *)addDirectory:(NSString *)serverUrl permissions:(NSString *)permissions activeAccount:(NSString *)activeAccount;
 + (void)updateDirectoryEtagServerUrl:(NSString *)serverUrl fileID:(NSString *)fileID activeAccount:(NSString *)activeAccount;
 + (void)deleteDirectoryFromPredicate:(NSPredicate *)predicate;
@@ -108,6 +109,7 @@
 + (void)setAllDirectoryUnLockForAccount:(NSString *)activeAccount;
 + (BOOL)isDirectoryLock:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
 + (BOOL)isBlockZone:(NSString *)serverUrl activeAccount:(NSString *)activeAccount;
+*/
 
 // ===== LocalFile =====
 

+ 3 - 7
iOSClient/FileSystem/CCCoreData.m

@@ -332,7 +332,7 @@
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Directory =====
 #pragma --------------------------------------------------------------------------------------------
-
+/*
 + (NSString *)addDirectory:(NSString *)serverUrl permissions:(NSString *)permissions activeAccount:(NSString *)activeAccount
 {
     NSString *directoryID;
@@ -406,7 +406,6 @@
             // remove directory in Metadata come cazzo si fa a saperlo
             //[TableMetadata MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@)", activeAccount, recordDirectory.directoryID] inContext:context];
             
-            /*
             NSArray *tableMetadatas = [TableMetadata MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@)", activeAccount, recordDirectory.directoryID] inContext:context];
             
             for(TableMetadata *recordMetadata in tableMetadatas) {
@@ -428,7 +427,6 @@
             }
             
             [recordDirectory MR_deleteEntityInContext:context];
-            */ 
         }
     }
 
@@ -719,7 +717,6 @@
 
 + (BOOL)isBlockZone:(NSString *)serverUrl activeAccount:(NSString *)activeAccount
 {
-    /*
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(account == %@) AND (directory == 1)", activeAccount];
     NSArray *records = [TableMetadata MR_findAllWithPredicate:predicate];
     
@@ -746,11 +743,10 @@
             }
         }
     }
-    */
-    
+ 
     return NO;
 }
-
+*/
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== LocalFile =====
 #pragma --------------------------------------------------------------------------------------------

+ 27 - 6
iOSClient/FileSystem/NCManageDatabase.swift

@@ -1153,14 +1153,14 @@ class NCManageDatabase: NSObject {
         
         let cameraFolderName = self.getAccountCameraUploadFolderName()
         let cameraFolderPath = self.getAccountCameraUploadFolderPath(activeUrl)
-        let direcory = CCCoreData.getServerUrl(fromDirectoryID: metadata.directoryID, activeAccount: metadata.account)
+        let directory = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID)
         
         let realm = try! Realm()
         
         try! realm.write {
             
             if (metadata.realm == nil) {
-                let metadataWithIcon = CCUtility.insertTypeFileIconName(metadata, directory: direcory, cameraFolderName: cameraFolderName, cameraFolderPath: cameraFolderPath)
+                let metadataWithIcon = CCUtility.insertTypeFileIconName(metadata, directory: directory, cameraFolderName: cameraFolderName, cameraFolderPath: cameraFolderPath)
                 realm.add(metadataWithIcon!, update: true)
             } else {
                 realm.add(metadata, update: true)
@@ -1216,9 +1216,9 @@ class NCManageDatabase: NSObject {
         
         let cameraFolderName = self.getAccountCameraUploadFolderName()
         let cameraFolderPath = self.getAccountCameraUploadFolderPath(activeUrl)
-        let direcory = CCCoreData.getServerUrl(fromDirectoryID: metadata.directoryID, activeAccount: metadata.account)
+        let serverUrl = self.getServerUrl(metadata.directoryID)
         
-        let metadataWithIcon = CCUtility.insertTypeFileIconName(metadata, directory: direcory, cameraFolderName: cameraFolderName, cameraFolderPath: cameraFolderPath)
+        let metadataWithIcon = CCUtility.insertTypeFileIconName(metadata, directory: serverUrl, cameraFolderName: cameraFolderName, cameraFolderPath: cameraFolderPath)
         
         let realm = try! Realm()
         
@@ -1449,10 +1449,10 @@ class NCManageDatabase: NSObject {
         }
         */
         
-        let directoryID = CCCoreData.getDirectoryID(fromServerUrl: serverUrl, activeAccount: tableAccount!.account)
+        let directoryID = self.getDirectoryID(serverUrl)
         
         
-        let predicate = NSPredicate(format: "(account == %@) AND (directoryID == %@) AND (session == '')AND (type == 'file') AND ((typeFile == %@) OR (typeFile == %@))", tableAccount!.account, directoryID!, k_metadataTypeFile_image, k_metadataTypeFile_video)
+        let predicate = NSPredicate(format: "(account == %@) AND (directoryID == %@) AND (session == '')AND (type == 'file') AND ((typeFile == %@) OR (typeFile == %@))", tableAccount!.account, directoryID, k_metadataTypeFile_image, k_metadataTypeFile_video)
         
         let sorted = CCUtility.getOrderSettings()
         let ascending = CCUtility.getAscendingSettings()
@@ -1546,6 +1546,27 @@ class NCManageDatabase: NSObject {
         }
     }
 
+    func getTableDirectoryWithPreficate(_ predicate: NSPredicate) -> tableDirectory? {
+        
+        let tableAccount = self.getAccountActive()
+        if tableAccount == nil {
+            return nil
+        }
+        
+        let realm = try! Realm()
+        
+        let results = realm.objects(tableDirectory.self).filter(predicate)
+        
+        if (results.count > 0) {
+            
+            return results[0]
+            
+        } else {
+            
+            return nil
+        }
+    }
+
     func getDirectoryID(_ serverUrl: String) -> String {
         
         let tableAccount = self.getAccountActive()

+ 19 - 8
iOSClient/Main/CCMain.m

@@ -4053,7 +4053,9 @@
     }
     
     // se è richiesta la disattivazione si chiede la password
-    if ([CCCoreData isDirectoryLock:lockServerUrl activeAccount:app.activeAccount]) {
+    
+    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+    if (directory.lock) {
         
         CCBKPasscode *viewController = [[CCBKPasscode alloc] initWithNibName:nil bundle:nil];
         viewController.delegate = self;
@@ -4144,9 +4146,12 @@
     if (_metadata.directory) {
         // calcolo lockServerUrl
         NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
         
-        if ([CCCoreData isDirectoryLock:lockServerUrl activeAccount:app.activeAccount]) titoloLock = [NSString stringWithFormat:NSLocalizedString(@"_remove_passcode_", nil)];
-        else titoloLock = [NSString stringWithFormat:NSLocalizedString(@"_protect_passcode_", nil)];
+        if (directory.lock)
+            titoloLock = [NSString stringWithFormat:NSLocalizedString(@"_remove_passcode_", nil)];
+        else
+            titoloLock = [NSString stringWithFormat:NSLocalizedString(@"_protect_passcode_", nil)];
     }
     
     TableLocalFile *recordLocalFile = [CCCoreData getLocalFileWithEtag:_metadata.fileID activeAccount:app.activeAccount];
@@ -4182,7 +4187,8 @@
         NSString *dirServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
 
         // Directory bloccata ?
-        if ([CCCoreData isDirectoryLock:dirServerUrl activeAccount:app.activeAccount] && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil) lockDirectory = YES;
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", dirServerUrl]];
+        if (directory.lock && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil) lockDirectory = YES;
         
         NSString *cameraUploadFolderName = [[NCManageDatabase sharedInstance] getAccountCameraUploadFolderName];
         NSString *cameraUploadFolderPath = [[NCManageDatabase sharedInstance] getAccountCameraUploadFolderPath:app.activeUrl];
@@ -4553,8 +4559,10 @@
     
     // Directory locked ?
     NSString *lockServerUrl = [CCUtility stringAppendServerUrl:[CCCoreData getServerUrlFromDirectoryID:_metadata.directoryID activeAccount:_metadata.account] addFileName:_metadata.fileNameData];
+    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", dirServerUrl]];
     
-    if ([CCCoreData isDirectoryLock:lockServerUrl activeAccount:app.activeAccount] && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil) lockDirectory = YES;
+    if (directory.lock && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil)
+        lockDirectory = YES;
     
     if (lockDirectory && editingStyle == UITableViewCellEditingStyleDelete) {
         
@@ -5097,7 +5105,9 @@
     
     // Directory con passcode lock attivato
     NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileNameData];
-    if (metadata.directory && ([CCCoreData isDirectoryLock:lockServerUrl activeAccount:app.activeAccount] && [[CCUtility getBlockCode] length]))
+    tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", dirServerUrl]];
+    
+    if (metadata.directory && (directory.lock && [[CCUtility getBlockCode] length]))
         cell.statusImageView.image = [UIImage imageNamed:@"passcode"];
     
     // ----------------------------------------------------------------------------------------------------------
@@ -5613,9 +5623,10 @@
         
         NSString *serverUrl = [CCCoreData getServerUrlFromDirectoryID:_metadata.directoryID activeAccount:_metadata.account];
         NSString *lockServerUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:_metadata.fileNameData];
-        
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", dirServerUrl]];
+
         // SE siamo in presenza di una directory bloccata E è attivo il block E la sessione password Lock è senza data ALLORA chiediamo la password per procedere
-        if ([CCCoreData isDirectoryLock:lockServerUrl activeAccount:app.activeAccount] && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil && controlPasscode) {
+        if (directory.lock && [[CCUtility getBlockCode] length] && app.sessionePasscodeLock == nil && controlPasscode) {
             
             CCBKPasscode *viewController = [[CCBKPasscode alloc] initWithNibName:nil bundle:nil];
             viewController.delegate = self;

+ 5 - 3
iOSClient/Move/CCMove.m

@@ -459,7 +459,7 @@
     NSPredicate *predicate;
 
     NSIndexPath *index = [self.tableView indexPathForSelectedRow];
-    NSString *directoryID = [CCCoreData getDirectoryIDFromServerUrl:_serverUrl activeAccount:activeAccount];
+    NSString *directoryID = [[NCManageDatabase sharedInstance] getDirectoryID:_serverUrl];
     
     if (self.onlyClearDirectory) predicate = [NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@) AND (directory == 1) AND (cryptated == 0)", activeAccount, directoryID];
     else predicate = [NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@) AND (directory == 1)", activeAccount, directoryID];
@@ -471,8 +471,10 @@
         // lockServerUrl
         NSString *lockServerUrl = [CCUtility stringAppendServerUrl:_serverUrl addFileName:metadata.fileNameData];
         
-        // SE siamo in presenza di una directory bloccata E è attivo il block E la sessione PASSWORD Lock è senza data ALLORA chiediamo la password per procedere
-        if ([CCCoreData isDirectoryLock:lockServerUrl activeAccount:activeAccount] && [[CCUtility getBlockCode] length] && controlPasscode) {
+        // Se siamo in presenza di una directory bloccata E è attivo il block E la sessione PASSWORD Lock è senza data ALLORA chiediamo la password per procedere
+        tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPreficate:[NSPredicate predicateWithFormat:@"serverUrl = %@", lockServerUrl]];
+        
+        if (directory.lock && [[CCUtility getBlockCode] length] && controlPasscode) {
             
             CCBKPasscode *viewController = [[CCBKPasscode alloc] initWithNibName:nil bundle:nil];
             viewController.delegate = self;