From 1d3beffacf70519d5d9c49b3a7af18faae99a6c4 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 8 Mar 2013 19:08:07 +0100 Subject: Cache: better rename hook for cache updater --- lib/files/cache/updater.php | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) (limited to 'lib/files/cache') diff --git a/lib/files/cache/updater.php b/lib/files/cache/updater.php index d04541c219f..e760ba71bc6 100644 --- a/lib/files/cache/updater.php +++ b/lib/files/cache/updater.php @@ -53,12 +53,36 @@ class Updater { } } + static public function renameUpdate($from, $to) { + /** + * @var \OC\Files\Storage\Storage $storageFrom + * @var \OC\Files\Storage\Storage $storageTo + * @var string $internalFrom + * @var string $internalTo + */ + list($storageFrom, $internalFrom) = self::resolvePath($from); + list($storageTo, $internalTo) = self::resolvePath($to); + if ($storageFrom && $storageTo) { + if ($storageFrom === $storageTo) { + $cache = $storageFrom->getCache($internalFrom); + $cache->move($internalFrom, $internalTo); + $cache->correctFolderSize($internalFrom); + $cache->correctFolderSize($internalTo); + self::correctFolder($from, time()); + self::correctFolder($to, time()); + } else { + self::deleteUpdate($from); + self::writeUpdate($to); + } + } + } + /** - * Update the mtime and ETag of all parent folders - * - * @param string $path - * @param string $time - */ + * 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); @@ -66,9 +90,9 @@ class Updater { $parent = ''; } /** - * @var \OC\Files\Storage\Storage $storage - * @var string $internalPath - */ + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ list($storage, $internalPath) = self::resolvePath($parent); if ($storage) { $cache = $storage->getCache(); @@ -92,8 +116,7 @@ class Updater { * @param array $params */ static public function renameHook($params) { - self::deleteUpdate($params['oldpath']); - self::writeUpdate($params['newpath']); + self::renameUpdate($params['oldpath'], $params['newpath']); } /** -- cgit v1.2.3