]> source.dussan.org Git - nextcloud-server.git/commitdiff
Scan mount points in root before adding a entry
authorMichael Gapczynski <mtgap@owncloud.com>
Thu, 10 Jan 2013 17:09:55 +0000 (12:09 -0500)
committerMichael Gapczynski <mtgap@owncloud.com>
Thu, 10 Jan 2013 17:09:55 +0000 (12:09 -0500)
lib/files/view.php

index 94c89603aed6452381e82d6e0f95b642e7bd5e0e..703cda5123ce8d0effbf05e44d1a7f142132a999 100644 (file)
@@ -767,27 +767,37 @@ class View {
                                $subStorage = Filesystem::getStorage($mountPoint);
                                if ($subStorage) {
                                        $subCache = $subStorage->getCache('');
-                                       $rootEntry = $subCache->get('');
 
-                                       $relativePath = trim(substr($mountPoint, $dirLength), '/');
-                                       if ($pos = strpos($relativePath, '/')) { //mountpoint inside subfolder add size to the correct folder
-                                               $entryName = substr($relativePath, 0, $pos);
-                                               foreach ($files as &$entry) {
-                                                       if ($entry['name'] === $entryName) {
-                                                               $entry['size'] += $rootEntry['size'];
+                                       if ($subCache->getStatus('') < Cache\Cache::COMPLETE) {
+                                               $subScanner = $subStorage->getScanner('');
+                                               $subScanner->scan('', Cache\Scanner::SCAN_SHALLOW);
+                                       } else {
+                                               $subWatcher = $subStorage->getWatcher('');
+                                               $subWatcher->checkUpdate('');
+                                       }
+
+                                       $rootEntry = $subCache->get('');
+                                       if ($rootEntry) {
+                                               $relativePath = trim(substr($mountPoint, $dirLength), '/');
+                                               if ($pos = strpos($relativePath, '/')) { //mountpoint inside subfolder add size to the correct folder
+                                                       $entryName = substr($relativePath, 0, $pos);
+                                                       foreach ($files as &$entry) {
+                                                               if ($entry['name'] === $entryName) {
+                                                                       $entry['size'] += $rootEntry['size'];
+                                                               }
                                                        }
+                                               } 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('');
+                                                       $permissions = $subPermissionsCache->get($rootEntry['fileid'], $user);
+                                                       if ($permissions === -1) {
+                                                               $permissions = $subStorage->getPermissions($rootEntry['path']);
+                                                               $subPermissionsCache->set($rootEntry['fileid'], $user, $permissions);
+                                                       }
+                                                       $rootEntry['permissions'] = $permissions;
+                                                       $files[] = $rootEntry;
                                                }
-                                       } 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('');
-                                               $permissions = $subPermissionsCache->get($rootEntry['fileid'], $user);
-                                               if ($permissions === -1) {
-                                                       $permissions = $subStorage->getPermissions($rootEntry['path']);
-                                                       $subPermissionsCache->set($rootEntry['fileid'], $user, $permissions);
-                                               }
-                                               $rootEntry['permissions'] = $permissions;
-                                               $files[] = $rootEntry;
                                        }
                                }
                        }