]> source.dussan.org Git - nextcloud-server.git/commitdiff
Implement getDirectoryPermissions() in Shared Permissions, fixes #2846
authorMichael Gapczynski <mtgap@owncloud.com>
Wed, 29 May 2013 22:22:54 +0000 (18:22 -0400)
committerMichael Gapczynski <mtgap@owncloud.com>
Wed, 29 May 2013 22:22:54 +0000 (18:22 -0400)
apps/files_sharing/lib/permissions.php
apps/files_sharing/lib/share/file.php

index 6747faa4d4313269cbf1649774e625cbfd1f26f5..b6638564cd82c343070f6be07da1b3235d7f8747 100644 (file)
@@ -70,6 +70,28 @@ class Shared_Permissions extends Permissions {
                return $filePermissions;
        }
 
+       /**
+        * get the permissions for all files in a folder
+        *
+        * @param int $parentId
+        * @param string $user
+        * @return int[]
+        */
+       public function getDirectoryPermissions($parentId, $user) {
+               // Root of the Shared folder
+               if ($parentId === -1) {
+                       return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_PERMISSIONS);
+               }
+               $permissions = $this->get($parentId, $user);
+               $query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `parent` = ?');
+               $result = $query->execute(array($parentId));
+               $filePermissions = array();
+               while ($row = $result->fetchRow()) {
+                       $filePermissions[$row['fileid']] = $permissions;
+               }
+               return $filePermissions;
+       }
+
        /**
         * remove the permissions for a file
         *
@@ -83,4 +105,5 @@ class Shared_Permissions extends Permissions {
        public function removeMultiple($fileIds, $user) {
                // Not a valid action for Shared Permissions
        }
-}
+
+}
\ No newline at end of file
index 62948651806fdde14b0d28b67d64dcaa57567cc5..07e7a4ca0c5ccaa1c26d6acb55141abbf351b47a 100644 (file)
@@ -26,6 +26,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
        const FORMAT_FILE_APP_ROOT = 2;
        const FORMAT_OPENDIR = 3;
        const FORMAT_GET_ALL = 4;
+       const FORMAT_PERMISSIONS = 5;
 
        private $path;
 
@@ -125,6 +126,12 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
                                $ids[] = $item['file_source'];
                        }
                        return $ids;
+               } else if ($format === self::FORMAT_PERMISSIONS) {
+                       $filePermissions = array();
+                       foreach ($items as $item) {
+                               $filePermissions[$item['file_source']] = $item['permissions'];
+                       }
+                       return $filePermissions;
                }
                return array();
        }