]> source.dussan.org Git - nextcloud-server.git/commitdiff
Properties work fine now
authorJakob Sack <kde@jakobsack.de>
Fri, 22 Jul 2011 20:30:45 +0000 (22:30 +0200)
committerJakob Sack <kde@jakobsack.de>
Fri, 22 Jul 2011 20:30:45 +0000 (22:30 +0200)
lib/Connector/Sabre/locks.php
lib/Connector/Sabre/node.php

index ed5ea17beabc3e11d4a412b51e27eee79d513992..6c370b188fb6bec43d27a016416d23f483fb6685 100644 (file)
@@ -20,6 +20,7 @@ require_once("lib/base.php");
  *
  * CREATE TABLE locks (
  *   `id` INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ *   `userid` VARCHAR(200),
  *   `owner` VARCHAR(100),
  *   `timeout` INTEGER UNSIGNED,
  *   `created` INTEGER,
@@ -50,8 +51,8 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
                // NOTE: the following 10 lines or so could be easily replaced by
                // pure sql. MySQL's non-standard string concatination prevents us
                // from doing this though.
-               $query = 'SELECT owner, token, timeout, created, scope, depth, uri FROM *PREFIX*locks WHERE ((created + timeout) > CAST(? AS UNSIGNED INTEGER)) AND ((uri = ?)';
-               $params = array(time(),$uri);
+               $query = 'SELECT * FROM *PREFIX*locks WHERE userid = ? AND ((created + timeout) > CAST(? AS UNSIGNED INTEGER)) AND ((uri = ?)';
+               $params = array(OC_USER::getUser(),time(),$uri);
 
                // We need to check locks for every part in the uri.
                $uriParts = explode('/',$uri);
@@ -122,19 +123,17 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
                }
        
                if ($exists) {
-                       $query = OC_DB::prepare( 'UPDATE *PREFIX*locks SET owner = ?, timeout = ?, scope = ?, depth = ?, uri = ?, created = ? WHERE token = ?' );
-                       $result = $query->execute( array($lockInfo->owner,$lockInfo->timeout,$lockInfo->scope,$lockInfo->depth,$uri,$lockInfo->created,$lockInfo->token));
+                       $query = OC_DB::prepare( 'UPDATE *PREFIX*locks SET owner = ?, timeout = ?, scope = ?, depth = ?, uri = ?, created = ? WHERE userid = ? AND token = ?' );
+                       $result = $query->execute( array($lockInfo->owner,$lockInfo->timeout,$lockInfo->scope,$lockInfo->depth,$uri,$lockInfo->created,OC_USER::getUser(),$lockInfo->token));
                } else {
-                       $query = OC_DB::prepare( 'INSERT INTO *PREFIX*locks (owner,timeout,scope,depth,uri,created,token) VALUES (?,?,?,?,?,?,?)' );
-                       $result = $query->execute( array($lockInfo->owner,$lockInfo->timeout,$lockInfo->scope,$lockInfo->depth,$uri,$lockInfo->created,$lockInfo->token));
+                       $query = OC_DB::prepare( 'INSERT INTO *PREFIX*locks (userid,owner,timeout,scope,depth,uri,created,token) VALUES (?,?,?,?,?,?,?,?)' );
+                       $result = $query->execute( array(OC_USER::getUser(),$lockInfo->owner,$lockInfo->timeout,$lockInfo->scope,$lockInfo->depth,$uri,$lockInfo->created,$lockInfo->token));
                }
 
                return true;
 
        }
 
-
-
        /**
         * Removes a lock from a uri
         *
@@ -144,8 +143,8 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
         */
        public function unlock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) {
 
-               $query = OC_DB::prepare( 'DELETE FROM *PREFIX*locks WHERE path=? AND token=?' );
-               $result = $query->execute( array($uri,$lockInfo->token));
+               $query = OC_DB::prepare( 'DELETE FROM *PREFIX*locks WHERE userid = ? AND path=? AND token=?' );
+               $result = $query->execute( array(OC_USER::getUser(),$uri,$lockInfo->token));
 
                return $result->numRows() === 1;
 
index 0e8bae75fd9d6c2f255d06d9e9ec18df54696ec2..dc1013dc524f839fdf45387a7793b44f37ed51fd 100644 (file)
@@ -71,9 +71,14 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
                list(, $newName) = Sabre_DAV_URLUtil::splitPath($name);
 
                $newPath = $parentPath . '/' . $newName;
+               $oldPath = $this->path;
+
                OC_FILESYSTEM::rename($this->path,$newPath);
        
                $this->path = $newPath;
+               
+               $query = OC_DB::prepare( 'UPDATE *PREFIX*properties SET propertypath = ? WHERE userid = ? AND propertypath = ?' );
+               $query->execute( array( $newPath,OC_USER::getUser(), $oldPath ));
 
        }
 
@@ -104,17 +109,17 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
                        if (is_null($propertyValue)) {
                                if(array_key_exists( $propertyName, $existing )){
                                        $query = OC_DB::prepare( 'DELETE FROM *PREFIX*properties WHERE userid = ? AND propertypath = ? AND propertyname = ?' );
-                                       $query->execute( array( 'OC_USER::getUser()', $this->path, $propertyName ));
+                                       $query->execute( array( OC_USER::getUser(), $this->path, $propertyName ));
                                }
                        }
                        else {
                                if(!array_key_exists( $propertyName, $existing )){
                                        $query = OC_DB::prepare( 'INSERT INTO *PREFIX*properties (userid,propertypath,propertyname,propertyvalue) VALUES(?,?,?,?)' );
-                                       $query->execute( array( 'OC_USER::getUser()', $this->path, $propertyName,$propertyValue ));
+                                       $query->execute( array( OC_USER::getUser(), $this->path, $propertyName,$propertyValue ));
                                }
-                               elseif($existing[$propertyName] !== $propertyValue){
+                               else{
                                        $query = OC_DB::prepare( 'UPDATE *PREFIX*properties SET propertyvalue = ? WHERE userid = ? AND propertypath = ? AND propertyname = ?' );
-                                       $query->execute( array( $propertyValue,'OC_USER::getUser()', $this->path, $propertyName ));
+                                       $query->execute( array( $propertyValue,OC_USER::getUser(), $this->path, $propertyName ));
                                }
                        }
 
@@ -134,7 +139,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
        function getProperties($properties) {
                // At least some magic in here :-)
                $query = OC_DB::prepare( 'SELECT * FROM *PREFIX*properties WHERE userid = ? AND propertypath = ?' );
-               $result = $query->execute( array( 'OC_USER::getUser()', $this->path ));
+               $result = $query->execute( array( OC_USER::getUser(), $this->path ));
 
                $existing = array();
                while( $row = $result->fetchRow()){