]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix calculating size for empty folders
authorMichael Gapczynski <mtgap@owncloud.com>
Sun, 28 Jul 2013 20:14:49 +0000 (16:14 -0400)
committerMichael Gapczynski <mtgap@owncloud.com>
Sun, 28 Jul 2013 20:14:49 +0000 (16:14 -0400)
lib/files/cache/cache.php

index 3818fdbd84065fb43b7ed2d9f731dddcd3e74674..458df56141cfbd73362229d31ee4751e6c990aeb 100644 (file)
@@ -485,27 +485,24 @@ class Cache {
         * @return int
         */
        public function calculateFolderSize($path) {
-               $id = $this->getId($path);
-               if ($id === -1) {
-                       return 0;
-               }
-               $sql = 'SELECT `size` FROM `*PREFIX*filecache` WHERE `parent` = ? AND `storage` = ?';
-               $result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
                $totalSize = 0;
-               $hasChilds = 0;
-               while ($row = $result->fetchRow()) {
-                       $hasChilds = true;
-                       $size = (int)$row['size'];
-                       if ($size === -1) {
-                               $totalSize = -1;
-                               break;
-                       } else {
-                               $totalSize += $size;
+               $entry = $this->get($path);
+               if ($entry && $entry['mimetype'] === 'httpd/unix-directory') {
+                       $id = $entry['fileid'];
+                       $sql = 'SELECT `size` FROM `*PREFIX*filecache` WHERE `parent` = ? AND `storage` = ?';
+                       $result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
+                       while ($row = $result->fetchRow()) {
+                               $size = (int)$row['size'];
+                               if ($size === -1) {
+                                       $totalSize = -1;
+                                       break;
+                               } else {
+                                       $totalSize += $size;
+                               }
+                       }
+                       if ($entry['size'] !== $totalSize) {
+                               $this->update($id, array('size' => $totalSize));
                        }
-               }
-
-               if ($hasChilds) {
-                       $this->update($id, array('size' => $totalSize));
                }
                return $totalSize;
        }