]> source.dussan.org Git - nextcloud-server.git/commitdiff
Update mtimes of all parent folders after change inside
authorMichael Gapczynski <mtgap@owncloud.com>
Sun, 20 Jan 2013 02:04:25 +0000 (21:04 -0500)
committerMichael Gapczynski <mtgap@owncloud.com>
Sun, 20 Jan 2013 02:04:25 +0000 (21:04 -0500)
lib/files/cache/updater.php

index 8b0d38350332881a48ccb3e1b176926655b65245..d04541c219fd87157076e8bd4333b329e699b499 100644 (file)
@@ -35,7 +35,7 @@ class Updater {
                        $scanner = $storage->getScanner($internalPath);
                        $scanner->scan($internalPath, Scanner::SCAN_SHALLOW);
                        $cache->correctFolderSize($internalPath);
-                       self::eTagUpdate($path);
+                       self::correctFolder($path, $storage->filemtime($internalPath));
                }
        }
 
@@ -49,11 +49,17 @@ class Updater {
                        $cache = $storage->getCache($internalPath);
                        $cache->remove($internalPath);
                        $cache->correctFolderSize($internalPath);
-                       self::eTagUpdate($path);
+                       self::correctFolder($path, time());
                }
        }
 
-       static public function eTagUpdate($path) {
+       /**
+       * Update the mtime and ETag of all parent folders
+       *
+       * @param string $path
+       * @param string $time
+       */
+       static public function correctFolder($path, $time) {
                if ($path !== '' && $path !== '/') {
                        $parent = dirname($path);
                        if ($parent === '.') {
@@ -68,8 +74,8 @@ class Updater {
                                $cache = $storage->getCache();
                                $id = $cache->getId($internalPath);
                                if ($id !== -1) {
-                                       $cache->update($id, array('etag' => $storage->getETag($internalPath)));
-                                       self::eTagUpdate($parent);
+                                       $cache->update($id, array('mtime' => $time, 'etag' => $storage->getETag($internalPath)));
+                                       self::correctFolder($parent, $time);
                                }
                        }
                }