From 77f12c526bf0010219e363844b588ffae27f1251 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <mtgap@owncloud.com>
Date: Sun, 30 Dec 2012 19:54:51 -0500
Subject: [PATCH] Update etags in parent folders

---
 lib/files/cache/updater.php | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/lib/files/cache/updater.php b/lib/files/cache/updater.php
index fb9783023e..d57e4a1abe 100644
--- a/lib/files/cache/updater.php
+++ b/lib/files/cache/updater.php
@@ -34,6 +34,7 @@ class Updater {
 		$scanner = new Scanner($storage);
 		$scanner->scan($internalPath, Scanner::SCAN_SHALLOW);
 		$cache->correctFolderSize($internalPath);
+		self::eTagUpdate($path);
 	}
 
 	static public function deleteUpdate($path) {
@@ -45,6 +46,29 @@ class Updater {
 		$cache = new Cache($storage);
 		$cache->remove($internalPath);
 		$cache->correctFolderSize($internalPath);
+		self::eTagUpdate($path);
+	}
+
+	static public function eTagUpdate($path) {
+		if ($path !== '') {
+			$parent = dirname($path);
+			if ($parent === '.') {
+				$parent = '';
+			}
+			/**
+			* @var \OC\Files\Storage\Storage $storage
+			* @var string $internalPath
+			*/
+			list($storage, $internalPath) = self::resolvePath($parent);
+			if ($storage) {
+				$cache = $storage->getCache();
+				$id = $cache->getId($internalPath);
+				if ($id !== -1) {
+					$cache->update($id, array('etag' => $storage->getETag($internalPath)));
+					self::updateFolderETags($parent);
+				}
+			}
+		}
 	}
 
 	/**
-- 
GitLab