From a606131a6aa144b6e8435bc029f3e75db9636867 Mon Sep 17 00:00:00 2001 From: Robin Appelman <icewind@owncloud.com> Date: Wed, 7 Nov 2012 14:21:34 +0100 Subject: [PATCH] Allow changing the way etags are generated --- lib/connector/sabre/node.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php index 72de9723774..f87e9f9a0b1 100644 --- a/lib/connector/sabre/node.php +++ b/lib/connector/sabre/node.php @@ -25,6 +25,13 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr const GETETAG_PROPERTYNAME = '{DAV:}getetag'; const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified'; + /** + * Allow configuring the method used to generate Etags + * + * @var array(class_name, function_name) + */ + public static $ETagFunction = null; + /** * The path to the current node * @@ -178,7 +185,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr * If the array is empty, all properties should be returned * * @param array $properties - * @return void + * @return array */ public function getProperties($properties) { if (is_null($this->property_cache)) { @@ -209,7 +216,12 @@ 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 protected function createETag($path) { - return uniqid('', true); + if(self::$ETagFunction) { + $hash = call_user_func(self::$ETagFunction, $path); + return $hash; + }else{ + return uniqid('', true); + } } /**