]> source.dussan.org Git - nextcloud-server.git/commitdiff
Use the sub storage's permission cache for retrieving the correct permission
authorMichael Gapczynski <mtgap@owncloud.com>
Wed, 2 Jan 2013 19:40:06 +0000 (14:40 -0500)
committerMichael Gapczynski <mtgap@owncloud.com>
Wed, 2 Jan 2013 19:40:06 +0000 (14:40 -0500)
lib/files/view.php

index 8558b03fe1ea2d02a34ee84ca145bc0f5f993694..9ba3eea3cf9f622d20193565dd5806a64202432c 100644 (file)
@@ -739,6 +739,18 @@ class View {
 
                        $files = $cache->getFolderContents($internalPath); //TODO: mimetype_filter
 
+                       $ids = array();
+                       foreach ($files as $i => $file) {
+                               $files[$i]['type'] = $file['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file';
+                               $ids[] = $file['fileid'];
+                       }
+
+                       $permissionsCache = $storage->getPermissionsCache($internalPath);
+                       $permissions = $permissionsCache->getMultiple($ids, \OC_User::getUser());
+                       foreach ($files as $i => $file) {
+                               $files[$i]['permissions'] = $permissions[$file['fileid']];
+                       }
+
                        //add a folder for any mountpoint in this directory and add the sizes of other mountpoints to the folders
                        $mountPoints = Filesystem::getMountPoints($path);
                        $dirLength = strlen($path);
@@ -758,24 +770,14 @@ class View {
                                                }
                                        } else { //mountpoint in this folder, add an entry for it
                                                $rootEntry['name'] = $relativePath;
+                                               $rootEntry['type'] = $rootEntry['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file';
+                                               $subPermissionsCache = $subStorage->getPermissionsCache('');
+                                               $rootEntry['permissions'] = $subPermissionsCache->get($rootEntry['fileid'], \OC_User::getUser());
                                                $files[] = $rootEntry;
                                        }
                                }
                        }
 
-                       $ids = array();
-
-                       foreach ($files as $i => $file) {
-                               $files[$i]['type'] = $file['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file';
-                               $ids[] = $file['fileid'];
-                       }
-                       $permissionsCache = $storage->getPermissionsCache($internalPath);
-
-                       $permissions = $permissionsCache->getMultiple($ids, \OC_User::getUser());
-                       foreach ($files as $i => $file) {
-                               $files[$i]['permissions'] = $permissions[$file['fileid']];
-                       }
-
                        if ($mimetype_filter) {
                                foreach ($files as $file) {
                                        if (strpos($mimetype_filter, '/')) {