summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gapczynski <mtgap@owncloud.com>2012-12-30 19:18:05 -0500
committerMichael Gapczynski <mtgap@owncloud.com>2012-12-30 19:18:05 -0500
commita5cb7363a5031d25d3e4cbd46817930c19893143 (patch)
treedb63294d2b097405f4c6d32c7ace3f57726ae945
parent2c23e143d33e231e62dccb450bf1f1b0f3938ccd (diff)
downloadnextcloud-server-a5cb7363a5031d25d3e4cbd46817930c19893143.tar.gz
nextcloud-server-a5cb7363a5031d25d3e4cbd46817930c19893143.zip
Use etags from file cache in SabreDAV connector
-rw-r--r--lib/connector/sabre/directory.php2
-rw-r--r--lib/connector/sabre/node.php12
2 files changed, 6 insertions, 8 deletions
diff --git a/lib/connector/sabre/directory.php b/lib/connector/sabre/directory.php
index 8d4dd92a3d4..a7201579366 100644
--- a/lib/connector/sabre/directory.php
+++ b/lib/connector/sabre/directory.php
@@ -121,8 +121,8 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
$paths = array();
foreach($folder_content as $info) {
$paths[] = $this->path.'/'.$info['name'];
+ $properties[$this->path.'/'.$info['name']][self::GETETAG_PROPERTYNAME] = $info['etag'];
}
- $properties = array_fill_keys($paths, array());
if(count($paths)>0) {
//
// the number of arguments within IN conditions are limited in most databases
diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php
index ad08bd434f2..d4023dfad78 100644
--- a/lib/connector/sabre/node.php
+++ b/lib/connector/sabre/node.php
@@ -190,6 +190,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
while( $row = $result->fetchRow()) {
$this->property_cache[$row['propertyname']] = $row['propertyvalue'];
}
+ $this->property_cache[self::GETETAG_PROPERTYNAME] = $this->getETagPropertyForPath($this->path);
}
// if the array was empty, we need to return everything
@@ -210,14 +211,11 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
* @return string|null Returns null if the ETag can not effectively be determined
*/
static public function getETagPropertyForPath($path) {
- $tag = \OC\Files\Filesystem::getETag($path);
- if (empty($tag)) {
- return null;
+ $data = \OC\Files\Filesystem::getFileInfo($path);
+ if (isset($data['etag'])) {
+ return $data['etag'];
}
- $etag = '"'.$tag.'"';
- $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*properties` (`userid`,`propertypath`,`propertyname`,`propertyvalue`) VALUES(?,?,?,?)' );
- $query->execute( array( OC_User::getUser(), $path, self::GETETAG_PROPERTYNAME, $etag ));
- return $etag;
+ return null;
}
/**