diff --git a/lib/files/cache/legacy.php b/lib/files/cache/legacy.php index eac2795d6dfcb04ffa9e3c2171455dd77f0586ba..55e40e1af7205db0d1ca0e2379be787be20b31c4 100644 --- a/lib/files/cache/legacy.php +++ b/lib/files/cache/legacy.php @@ -79,7 +79,23 @@ class Legacy { $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*fscache` WHERE `path` = ?'); } $result = $query->execute(array($path)); - return $result->fetchRow(); + $data = $result->fetchRow(); + $data['etag'] = $this->getEtag($data['path']); + return $data; + } + + function getEtag($path) { + list(, $user, , $relativePath) = explode('/', $path, 4); + if (is_null($relativePath)) { + $relativePath = ''; + } + $query = \OC_DB::prepare('SELECT `propertyvalue` FROM `*PREFIX*properties` WHERE `userid` = ? AND propertypath = ? AND propertyname = "{DAV:}getetag"'); + $result = $query->execute(array($user, $relativePath)); + if ($row = $result->fetchRow()) { + return trim($row['propertyvalue'], '"'); + } else { + return ''; + } } /** @@ -91,6 +107,10 @@ class Legacy { function getChildren($id) { $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*fscache` WHERE `parent` = ?'); $result = $query->execute(array($id)); - return $result->fetchAll(); + $data = $result->fetchAll(); + foreach ($data as $i => $item) { + $data[$i]['etag'] = $this->getEtag($item['path']); + } + return $data; } } diff --git a/lib/files/cache/upgrade.php b/lib/files/cache/upgrade.php index ab64a65a285839f30ad2758ab95f66faf558ace9..4d60199b154024ef177587b3f44865386e8430d3 100644 --- a/lib/files/cache/upgrade.php +++ b/lib/files/cache/upgrade.php @@ -134,6 +134,7 @@ class Upgrade { */ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($data['path']); if ($storage) { + $newData['etag'] = $data['etag']; $newData['path_hash'] = md5($internalPath); $newData['path'] = $internalPath; $newData['storage'] = $this->getNumericId($storage);