Update mtimes of all parent folders after change inside

remotes/origin/stable5
Michael Gapczynski 12 years ago
parent 8ca30d244c
commit 664f33a29c
  1. 16
      lib/files/cache/updater.php

@ -35,7 +35,7 @@ class Updater {
$scanner = $storage->getScanner($internalPath); $scanner = $storage->getScanner($internalPath);
$scanner->scan($internalPath, Scanner::SCAN_SHALLOW); $scanner->scan($internalPath, Scanner::SCAN_SHALLOW);
$cache->correctFolderSize($internalPath); $cache->correctFolderSize($internalPath);
self::eTagUpdate($path); self::correctFolder($path, $storage->filemtime($internalPath));
} }
} }
@ -49,11 +49,17 @@ class Updater {
$cache = $storage->getCache($internalPath); $cache = $storage->getCache($internalPath);
$cache->remove($internalPath); $cache->remove($internalPath);
$cache->correctFolderSize($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 !== '/') { if ($path !== '' && $path !== '/') {
$parent = dirname($path); $parent = dirname($path);
if ($parent === '.') { if ($parent === '.') {
@ -68,8 +74,8 @@ class Updater {
$cache = $storage->getCache(); $cache = $storage->getCache();
$id = $cache->getId($internalPath); $id = $cache->getId($internalPath);
if ($id !== -1) { if ($id !== -1) {
$cache->update($id, array('etag' => $storage->getETag($internalPath))); $cache->update($id, array('mtime' => $time, 'etag' => $storage->getETag($internalPath)));
self::eTagUpdate($parent); self::correctFolder($parent, $time);
} }
} }
} }

Loading…
Cancel
Save