]> source.dussan.org Git - nextcloud-server.git/commitdiff
Remove deleted versions from the cache
authorRobin Appelman <icewind@owncloud.com>
Thu, 10 Jul 2014 13:19:40 +0000 (15:19 +0200)
committerRobin Appelman <icewind@owncloud.com>
Thu, 10 Jul 2014 13:19:40 +0000 (15:19 +0200)
apps/files_versions/lib/versions.php

index 5035defd60b05b8b623bb3a2d3c766f5a7a059e5..2e048416c11c13e56e36d6a3867676994f778320 100644 (file)
@@ -131,6 +131,23 @@ class Storage {
                        'filename' => $filename);
        }
 
+       /**
+        * delete the version from the storage and cache
+        *
+        * @param \OC\Files\View $view
+        * @param string $path
+        */
+       protected static function deleteVersion($view, $path) {
+               $view->unlink($path);
+               /**
+                * @var \OC\Files\Storage\Storage $storage
+                * @var string $internalPath
+                */
+               list($storage, $internalPath) = $view->resolvePath($path);
+               $cache = $storage->getCache($internalPath);
+               $cache->remove($internalPath);
+       }
+
        /**
         * Delete versions of a file
         */
@@ -148,7 +165,7 @@ class Storage {
                        if (!empty($versions)) {
                                foreach ($versions as $v) {
                                        \OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path . $v['version']));
-                                       $view->unlink($filename . '.v' . $v['version']);
+                                       self::deleteVersion($view, $filename . '.v' . $v['version']);
                                        \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path . $v['version']));
                                }
                        }
@@ -219,7 +236,7 @@ class Storage {
                                return true;
 
                        }else if ( $versionCreated ) {
-                               $users_view->unlink($version);
+                               self::deleteVersion($users_view, $version);
                        }
                }
                return false;
@@ -471,7 +488,7 @@ class Storage {
 
                        foreach($toDelete as $key => $path) {
                                \OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path));
-                               $versionsFileview->unlink($path);
+                               self::deleteVersion($versionsFileview, $path);
                                \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path));
                                unset($allVersions[$key]); // update array with the versions we keep
                                \OCP\Util::writeLog('files_versions', "Expire: " . $path, \OCP\Util::DEBUG);
@@ -485,7 +502,7 @@ class Storage {
                        while ($availableSpace < 0 && $i < $numOfVersions) {
                                $version = current($allVersions);
                                \OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $version['path'].'.v'.$version['version']));
-                               $versionsFileview->unlink($version['path'].'.v'.$version['version']);
+                               self::deleteVersion($versionsFileview, $version['path'] . '.v' . $version['version']);
                                \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $version['path'].'.v'.$version['version']));
                                \OCP\Util::writeLog('files_versions', 'running out of space! Delete oldest version: ' . $version['path'].'.v'.$version['version'] , \OCP\Util::DEBUG);
                                $versionsSize -= $version['size'];