diff --git a/apps/files/appinfo/update.php b/apps/files/appinfo/update.php index 35008e345b..d963b75477 100644 --- a/apps/files/appinfo/update.php +++ b/apps/files/appinfo/update.php @@ -1,14 +1,16 @@ execute(); - while( $row = $result->fetchRow()) { - $query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyname` = ? WHERE `userid` = ? AND `propertypath` = ?' ); - $query->execute( array( preg_replace("/^{.*}/", "", $row["propertyname"]),$row["userid"], $row["propertypath"] )); - } +// fix webdav properties,add namespace in front of the property, update for OC4.5 +$installedVersion=OCP\Config::getAppValue('files', 'installed_version'); +if (version_compare($installedVersion, '1.1.6', '<')) { + $query = OC_DB::prepare( "SELECT propertyname, propertypath, userid FROM `*PREFIX*properties`" ); + $result = $query->execute(); + while( $row = $result->fetchRow()){ + if ( $row["propertyname"][0] != '{' ) { + $query = OC_DB::prepare( 'UPDATE *PREFIX*properties SET propertyname = ? WHERE userid = ? AND propertypath = ?' ); + $query->execute( array( '{DAV:}' + $row["propertyname"], $row["userid"], $row["propertypath"] )); + } + } } //update from OC 3 diff --git a/apps/files/appinfo/version b/apps/files/appinfo/version index e25d8d9f35..0664a8fd29 100644 --- a/apps/files/appinfo/version +++ b/apps/files/appinfo/version @@ -1 +1 @@ -1.1.5 +1.1.6 diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php index ecbbef8129..e5c76a6491 100644 --- a/lib/connector/sabre/node.php +++ b/lib/connector/sabre/node.php @@ -23,6 +23,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IProperties { const GETETAG_PROPERTYNAME = '{DAV:}getetag'; + const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified'; /** * The path to the current node @@ -142,7 +143,6 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr public function updateProperties($properties) { $existing = $this->getProperties(array()); foreach($properties as $propertyName => $propertyValue) { - $propertyName = preg_replace("/^{.*}/", "", $propertyName); // remove leading namespace from property name // If it was null, we need to delete the property if (is_null($propertyValue)) { if(array_key_exists( $propertyName, $existing )) { @@ -151,7 +151,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr } } else { - if( strcmp( $propertyName, "lastmodified") === 0) { + if( strcmp( $propertyName, self::LASTMODIFIED_PROPERTYNAME) === 0) { $this->touch($propertyValue); } else { if(!array_key_exists( $propertyName, $existing )) {