]> source.dussan.org Git - nextcloud-server.git/commitdiff
Support for locks, minor changes
authorJakob Sack <kde@jakobsack.de>
Fri, 22 Jul 2011 12:38:42 +0000 (14:38 +0200)
committerJakob Sack <kde@jakobsack.de>
Fri, 22 Jul 2011 12:38:42 +0000 (14:38 +0200)
files/webdav.php
lib/Connector/Sabre/auth.php [new file with mode: 0644]
lib/Connector/Sabre/directory.php [new file with mode: 0644]
lib/Connector/Sabre/file.php [new file with mode: 0644]
lib/Connector/Sabre/locks.php [new file with mode: 0644]
lib/Connector/Sabre/node.php [new file with mode: 0644]
lib/Sabre/DAV/Auth/Backend/Owncloud.php [deleted file]
lib/Sabre/DAV/FS/OwncloudDirectory.php [deleted file]
lib/Sabre/DAV/FS/OwncloudFile.php [deleted file]
lib/Sabre/DAV/FS/OwncloudNode.php [deleted file]

index 7d5855672acbaae1c2a285f9dec47621e5eb3261..7dce0b48197ba99a7d7573ca5ecb737f3ed2b33b 100644 (file)
@@ -28,23 +28,29 @@ $RUNTIME_NOSETUPFS = true;
 
 require_once('../lib/base.php');
 require_once('Sabre/autoload.php');
-require_once('Sabre/DAV/Auth/Backend/Owncloud.php');
-require_once('Sabre/DAV/FS/OwncloudNode.php');
-require_once('Sabre/DAV/FS/OwncloudFile.php');
-require_once('Sabre/DAV/FS/OwncloudDirectory.php');
+require_once('Connector/Sabre/auth.php');
+require_once('Connector/Sabre/node.php');
+require_once('Connector/Sabre/file.php');
+require_once('Connector/Sabre/directory.php');
+require_once('Connector/Sabre/locks.php');
 
 // Create ownCloud Dir
-$publicDir = new OC_Sabre_DAV_FS_OwncloudDirectory('');
+$publicDir = new OC_Connector_Sabre_Directory('');
 $server = new Sabre_DAV_Server($publicDir);
 
 // Path to our script
 $server->setBaseUri($WEBROOT.'/files/webdav.php');
 
 // Auth backend
-$authBackend = new OC_Sabre_DAV_Auth_Backend_Owncloud();
+$authBackend = new OC_Connector_Sabre_Auth();
 $authPlugin = new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud');
 $server->addPlugin($authPlugin);
 
+// Also make sure there is a 'data' directory, writable by the server. This directory is used to store information about locks
+$lockBackend = new OC_Connector_Sabre_Locks();
+$lockPlugin = new Sabre_DAV_Locks_Plugin($lockBackend);
+$server->addPlugin($lockPlugin);
+
 // And off we go!
 $server->exec();
 
diff --git a/lib/Connector/Sabre/auth.php b/lib/Connector/Sabre/auth.php
new file mode 100644 (file)
index 0000000..cfe7723
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+require_once("lib/base.php");
+/**
+ * HTTP Basic authentication backend class
+ *
+ * This class can be used by authentication objects wishing to use HTTP Basic
+ * Most of the digest logic is handled, implementors just need to worry about
+ * the validateUserPass method.
+ *
+ * @package Sabre
+ * @subpackage DAV
+ * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
+ * @author James David Low (http://jameslow.com/)
+ * @author Evert Pot (http://www.rooftopsolutions.nl/) 
+ * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
+ */
+class OC_Connector_Sabre_Auth extends Sabre_DAV_Auth_Backend_AbstractBasic {
+       /**
+        * Validates a username and password
+        *
+        * This method should return true or false depending on if login
+        * succeeded.
+        *
+        * @return bool
+        */
+       protected function validateUserPass($username, $password){
+               if(OC_USER::login($username,$password)){
+                       OC_UTIL::setUpFS();
+                       return true;
+               }
+               else{
+                       return false;
+               }
+       }
+} 
diff --git a/lib/Connector/Sabre/directory.php b/lib/Connector/Sabre/directory.php
new file mode 100644 (file)
index 0000000..d0ff87f
--- /dev/null
@@ -0,0 +1,131 @@
+<?php
+
+require_once("lib/base.php");
+
+/**
+ * Directory class 
+ * 
+ * @package Sabre
+ * @subpackage DAV
+ * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
+ * @author Evert Pot (http://www.rooftopsolutions.nl/) 
+ * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
+ */
+class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sabre_DAV_ICollection, Sabre_DAV_IQuota {
+
+       /**
+        * Creates a new file in the directory
+        *
+        * data is a readable stream resource
+        *
+        * @param string $name Name of the file
+        * @param resource $data Initial payload
+        * @return void
+        */
+       public function createFile($name, $data = null) {
+
+               $newPath = $this->path . '/' . $name;
+               OC_FILESYSTEM::file_put_contents($newPath,$data);
+
+       }
+
+       /**
+        * Creates a new subdirectory
+        *
+        * @param string $name
+        * @return void
+        */
+       public function createDirectory($name) {
+
+               $newPath = $this->path . '/' . $name;
+               OC_FILESYSTEM::mkdir($newPath);
+
+       }
+
+       /**
+        * Returns a specific child node, referenced by its name
+        *
+        * @param string $name
+        * @throws Sabre_DAV_Exception_FileNotFound
+        * @return Sabre_DAV_INode
+        */
+       public function getChild($name) {
+
+               $path = $this->path . '/' . $name;
+
+               if (!OC_FILESYSTEM::file_exists($path)) throw new Sabre_DAV_Exception_FileNotFound('File with name ' . $path . ' could not be located');
+
+               if (OC_FILESYSTEM::is_dir($path)) {
+
+                       return new OC_Connector_Sabre_Directory($path);
+
+               } else {
+
+                       return new OC_Connector_Sabre_File($path);
+
+               }
+
+       }
+
+       /**
+        * Returns an array with all the child nodes
+        *
+        * @return Sabre_DAV_INode[]
+        */
+       public function getChildren() {
+
+               $nodes = array();
+               // foreach(scandir($this->path) as $node) if($node!='.' && $node!='..') $nodes[] = $this->getChild($node);
+               if( OC_FILESYSTEM::is_dir($this->path)){
+                       $dh = OC_FILESYSTEM::opendir($this->path);
+                       while(( $node = readdir($dh)) !== false ){
+                               if($node!='.' && $node!='..'){
+                                       $nodes[] = $this->getChild($node);
+                               }
+                       }
+               }
+               return $nodes;
+
+       }
+
+       /**
+        * Checks if a child exists.
+        *
+        * @param string $name
+        * @return bool
+        */
+       public function childExists($name) {
+
+               $path = $this->path . '/' . $name;
+               return OC_FILESYSTEM::file_exists($path);
+
+       }
+
+       /**
+        * Deletes all files in this directory, and then itself
+        *
+        * @return void
+        */
+       public function delete() {
+
+               foreach($this->getChildren() as $child) $child->delete();
+               OC_FILESYSTEM::rmdir($this->path);
+
+       }
+
+       /**
+        * Returns available diskspace information
+        *
+        * @return array
+        */
+       public function getQuotaInfo() {
+
+               return array(
+                       OC_FILESYSTEM::filesize('/'),
+                       OC_FILESYSTEM::free_space()
+                       );
+
+       }
+
+}
+
diff --git a/lib/Connector/Sabre/file.php b/lib/Connector/Sabre/file.php
new file mode 100644 (file)
index 0000000..bb5ab73
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+require_once("lib/base.php");
+/**
+ * File class 
+ * 
+ * @package Sabre
+ * @subpackage DAV
+ * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
+ * @author Evert Pot (http://www.rooftopsolutions.nl/) 
+ * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
+ */
+class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_DAV_IFile {
+
+       /**
+        * Updates the data
+        *
+        * @param resource $data
+        * @return void
+        */
+       public function put($data) {
+
+               OC_FILESYSTEM::file_put_contents($this->path,$data);
+
+       }
+
+       /**
+        * Returns the data
+        *
+        * @return string
+        */
+       public function get() {
+
+               return OC_FILESYSTEM::file_get_contents($this->path);
+
+       }
+
+       /**
+        * Delete the current file
+        *
+        * @return void
+        */
+       public function delete() {
+
+               OC_FILESYSTEM::unlink($this->path);
+
+       }
+
+       /**
+        * Returns the size of the node, in bytes
+        *
+        * @return int
+        */
+       public function getSize() {
+       
+               return OC_FILESYSTEM::filesize($this->path);
+
+       }
+
+       /**
+        * Returns the ETag for a file
+        *
+        * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change.
+        * The ETag is an arbritrary string, but MUST be surrounded by double-quotes.
+        *
+        * Return null if the ETag can not effectively be determined
+        *
+        * @return mixed
+        */
+       public function getETag() {
+
+               return null;
+
+       }
+
+       /**
+        * Returns the mime-type for a file
+        *
+        * If null is returned, we'll assume application/octet-stream
+        *
+        * @return mixed
+        */
+       public function getContentType() {
+
+               return OC_FILESYSTEM::getMimeType($this->path);
+
+       }
+}
+
diff --git a/lib/Connector/Sabre/locks.php b/lib/Connector/Sabre/locks.php
new file mode 100644 (file)
index 0000000..58a0359
--- /dev/null
@@ -0,0 +1,138 @@
+<?php
+require_once("lib/base.php");
+
+/**
+ * The Lock manager allows you to handle all file-locks centrally.
+ *
+ * This Lock Manager stores all its data in a database. You must pass a PDO
+ * connection object in the constructor.
+ * 
+ * @package Sabre
+ * @subpackage DAV
+ * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
+ * @author Evert Pot (http://www.rooftopsolutions.nl/) 
+ * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
+ */
+class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
+
+       /**
+        * Returns a list of Sabre_DAV_Locks_LockInfo objects
+        *
+        * This method should return all the locks for a particular uri, including
+        * locks that might be set on a parent uri.
+        *
+        * If returnChildLocks is set to true, this method should also look for
+        * any locks in the subtree of the uri for locks.
+        *
+        * @param string $uri
+        * @param bool $returnChildLocks
+        * @return array
+        */
+       public function getLocks($uri, $returnChildLocks) {
+
+               // 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);
+
+               // We need to check locks for every part in the uri.
+               $uriParts = explode('/',$uri);
+
+               // We already covered the last part of the uri
+               array_pop($uriParts);
+
+               $currentPath='';
+
+               foreach($uriParts as $part) {
+
+                       if ($currentPath) $currentPath.='/';
+                       $currentPath.=$part;
+
+                       $query.=' OR (depth!=0 AND uri = ?)';
+                       $params[] = $currentPath;
+
+               }
+
+               if ($returnChildLocks) {
+
+                       $query.=' OR (uri LIKE ?)';
+                       $params[] = $uri . '/%';
+
+               }
+               $query.=')';
+
+               $stmt = OC_DB::prepare($query);
+               $result = $stmt->execute($params);
+               
+               $lockList = array();
+               while( $row = $result->fetchRow()){
+
+                       $lockInfo = new Sabre_DAV_Locks_LockInfo();
+                       $lockInfo->owner = $row['owner'];
+                       $lockInfo->token = $row['token'];
+                       $lockInfo->timeout = $row['timeout'];
+                       $lockInfo->created = $row['created'];
+                       $lockInfo->scope = $row['scope'];
+                       $lockInfo->depth = $row['depth'];
+                       $lockInfo->uri   = $row['uri'];
+                       $lockList[] = $lockInfo;
+
+               }
+
+               return $lockList;
+
+       }
+
+       /**
+        * Locks a uri
+        *
+        * @param string $uri
+        * @param Sabre_DAV_Locks_LockInfo $lockInfo
+        * @return bool
+        */
+       public function lock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) {
+
+               // We're making the lock timeout 5 minutes
+               $lockInfo->timeout = 300;
+               $lockInfo->created = time();
+               $lockInfo->uri = $uri;
+
+               $locks = $this->getLocks($uri,false);
+               $exists = false;
+               foreach($locks as $k=>$lock) {
+                       if ($lock->token == $lockInfo->token) $exists = true;
+               }
+       
+               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));
+               } 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));
+               }
+
+               return true;
+
+       }
+
+
+
+       /**
+        * Removes a lock from a uri
+        *
+        * @param string $uri
+        * @param Sabre_DAV_Locks_LockInfo $lockInfo
+        * @return bool
+        */
+       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));
+
+               return $result->numRows() === 1;
+
+       }
+
+}
+
diff --git a/lib/Connector/Sabre/node.php b/lib/Connector/Sabre/node.php
new file mode 100644 (file)
index 0000000..fb607a7
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+require_once("lib/base.php");
+
+/**
+ * Base node-class 
+ *
+ * The node class implements the method used by both the File and the Directory classes 
+ * 
+ * @package Sabre
+ * @subpackage DAV
+ * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
+ * @author Evert Pot (http://www.rooftopsolutions.nl/) 
+ * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
+ */
+abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode {
+
+       /**
+        * The path to the current node
+        *
+        * @var string
+        */
+       protected $path;
+
+       /**
+        * Sets up the node, expects a full path name
+        *
+        * @param string $path
+        * @return void
+        */
+       public function __construct($path) {
+               $this->path = $path;
+       }
+
+
+
+       /**
+        * Returns the name of the node
+        *
+        * @return string
+        */
+       public function getName() {
+
+               list(, $name)  = Sabre_DAV_URLUtil::splitPath($this->path);
+               return $name;
+
+       }
+
+       /**
+        * Renames the node
+        *
+        * @param string $name The new name
+        * @return void
+        */
+       public function setName($name) {
+
+               list($parentPath, ) = Sabre_DAV_URLUtil::splitPath($this->path);
+               list(, $newName) = Sabre_DAV_URLUtil::splitPath($name);
+
+               $newPath = $parentPath . '/' . $newName;
+               OC_FILESYSTEM::rename($this->path,$newPath);
+       
+               $this->path = $newPath;
+
+       }
+
+
+
+       /**
+        * Returns the last modification time, as a unix timestamp
+        *
+        * @return int
+        */
+       public function getLastModified() {
+
+               return OC_FILESYSTEM::filemtime($this->path);
+
+       }
+
+}
+
diff --git a/lib/Sabre/DAV/Auth/Backend/Owncloud.php b/lib/Sabre/DAV/Auth/Backend/Owncloud.php
deleted file mode 100644 (file)
index 8c8556f..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-require_once("lib/base.php");
-/**
- * HTTP Basic authentication backend class
- *
- * This class can be used by authentication objects wishing to use HTTP Basic
- * Most of the digest logic is handled, implementors just need to worry about
- * the validateUserPass method.
- *
- * @package Sabre
- * @subpackage DAV
- * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
- * @author James David Low (http://jameslow.com/)
- * @author Evert Pot (http://www.rooftopsolutions.nl/) 
- * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
- */
-class OC_Sabre_DAV_Auth_Backend_Owncloud extends Sabre_DAV_Auth_Backend_AbstractBasic {
-       /**
-        * Validates a username and password
-        *
-        * This method should return true or false depending on if login
-        * succeeded.
-        *
-        * @return bool
-        */
-       protected function validateUserPass($username, $password){
-               if(OC_USER::login($username,$password)){
-                       OC_UTIL::setUpFS();
-                       return true;
-               }
-               else{
-                       return false;
-               }
-       }
-} 
diff --git a/lib/Sabre/DAV/FS/OwncloudDirectory.php b/lib/Sabre/DAV/FS/OwncloudDirectory.php
deleted file mode 100644 (file)
index 5a5e9fc..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-require_once("lib/base.php");
-
-/**
- * Directory class 
- * 
- * @package Sabre
- * @subpackage DAV
- * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
- * @author Evert Pot (http://www.rooftopsolutions.nl/) 
- * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
- */
-class OC_Sabre_DAV_FS_OwncloudDirectory extends OC_Sabre_DAV_FS_OwncloudNode implements Sabre_DAV_ICollection, Sabre_DAV_IQuota {
-
-       /**
-        * Creates a new file in the directory
-        *
-        * data is a readable stream resource
-        *
-        * @param string $name Name of the file
-        * @param resource $data Initial payload
-        * @return void
-        */
-       public function createFile($name, $data = null) {
-
-               $newPath = $this->path . '/' . $name;
-               OC_FILESYSTEM::file_put_contents($newPath,$data);
-
-       }
-
-       /**
-        * Creates a new subdirectory
-        *
-        * @param string $name
-        * @return void
-        */
-       public function createDirectory($name) {
-
-               $newPath = $this->path . '/' . $name;
-               OC_FILESYSTEM::mkdir($newPath);
-
-       }
-
-       /**
-        * Returns a specific child node, referenced by its name
-        *
-        * @param string $name
-        * @throws Sabre_DAV_Exception_FileNotFound
-        * @return Sabre_DAV_INode
-        */
-       public function getChild($name) {
-
-               $path = $this->path . '/' . $name;
-
-               if (!OC_FILESYSTEM::file_exists($path)) throw new Sabre_DAV_Exception_FileNotFound('File with name ' . $path . ' could not be located');
-
-               if (OC_FILESYSTEM::is_dir($path)) {
-
-                       return new OC_Sabre_DAV_FS_OwncloudDirectory($path);
-
-               } else {
-
-                       return new OC_Sabre_DAV_FS_OwncloudFile($path);
-
-               }
-
-       }
-
-       /**
-        * Returns an array with all the child nodes
-        *
-        * @return Sabre_DAV_INode[]
-        */
-       public function getChildren() {
-
-               $nodes = array();
-               // foreach(scandir($this->path) as $node) if($node!='.' && $node!='..') $nodes[] = $this->getChild($node);
-               if( OC_FILESYSTEM::is_dir($this->path)){
-                       $dh = OC_FILESYSTEM::opendir($this->path);
-                       while(( $node = readdir($dh)) !== false ){
-                               if($node!='.' && $node!='..'){
-                                       $nodes[] = $this->getChild($node);
-                               }
-                       }
-               }
-               return $nodes;
-
-       }
-
-       /**
-        * Checks if a child exists.
-        *
-        * @param string $name
-        * @return bool
-        */
-       public function childExists($name) {
-
-               $path = $this->path . '/' . $name;
-               return OC_FILESYSTEM::file_exists($path);
-
-       }
-
-       /**
-        * Deletes all files in this directory, and then itself
-        *
-        * @return void
-        */
-       public function delete() {
-
-               foreach($this->getChildren() as $child) $child->delete();
-               OC_FILESYSTEM::rmdir($this->path);
-
-       }
-
-       /**
-        * Returns available diskspace information
-        *
-        * @return array
-        */
-       public function getQuotaInfo() {
-
-               return array(
-                       OC_FILESYSTEM::filesize('/'),
-                       OC_FILESYSTEM::free_space()
-                       );
-
-       }
-
-}
-
diff --git a/lib/Sabre/DAV/FS/OwncloudFile.php b/lib/Sabre/DAV/FS/OwncloudFile.php
deleted file mode 100644 (file)
index 8c39030..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-require_once("lib/base.php");
-/**
- * File class 
- * 
- * @package Sabre
- * @subpackage DAV
- * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
- * @author Evert Pot (http://www.rooftopsolutions.nl/) 
- * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
- */
-class OC_Sabre_DAV_FS_OwncloudFile extends OC_Sabre_DAV_FS_OwncloudNode implements Sabre_DAV_IFile {
-
-       /**
-        * Updates the data
-        *
-        * @param resource $data
-        * @return void
-        */
-       public function put($data) {
-
-               OC_FILESYSTEM::file_put_contents($this->path,$data);
-
-       }
-
-       /**
-        * Returns the data
-        *
-        * @return string
-        */
-       public function get() {
-
-               return OC_FILESYSTEM::file_get_contents($this->path);
-
-       }
-
-       /**
-        * Delete the current file
-        *
-        * @return void
-        */
-       public function delete() {
-
-               OC_FILESYSTEM::unlink($this->path);
-
-       }
-
-       /**
-        * Returns the size of the node, in bytes
-        *
-        * @return int
-        */
-       public function getSize() {
-       
-               return OC_FILESYSTEM::filesize($this->path);
-
-       }
-
-       /**
-        * Returns the ETag for a file
-        *
-        * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change.
-        * The ETag is an arbritrary string, but MUST be surrounded by double-quotes.
-        *
-        * Return null if the ETag can not effectively be determined
-        *
-        * @return mixed
-        */
-       public function getETag() {
-
-               return null;
-
-       }
-
-       /**
-        * Returns the mime-type for a file
-        *
-        * If null is returned, we'll assume application/octet-stream
-        *
-        * @return mixed
-        */
-       public function getContentType() {
-
-               return OC_FILESYSTEM::getMimeType($this->path);
-
-       }
-}
-
diff --git a/lib/Sabre/DAV/FS/OwncloudNode.php b/lib/Sabre/DAV/FS/OwncloudNode.php
deleted file mode 100644 (file)
index 7ccd410..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-require_once("lib/base.php");
-
-/**
- * Base node-class 
- *
- * The node class implements the method used by both the File and the Directory classes 
- * 
- * @package Sabre
- * @subpackage DAV
- * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
- * @author Evert Pot (http://www.rooftopsolutions.nl/) 
- * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
- */
-abstract class OC_Sabre_DAV_FS_OwncloudNode implements Sabre_DAV_INode {
-
-       /**
-        * The path to the current node
-        *
-        * @var string
-        */
-       protected $path;
-
-       /**
-        * Sets up the node, expects a full path name
-        *
-        * @param string $path
-        * @return void
-        */
-       public function __construct($path) {
-               $this->path = $path;
-       }
-
-
-
-       /**
-        * Returns the name of the node
-        *
-        * @return string
-        */
-       public function getName() {
-
-               list(, $name)  = Sabre_DAV_URLUtil::splitPath($this->path);
-               return $name;
-
-       }
-
-       /**
-        * Renames the node
-        *
-        * @param string $name The new name
-        * @return void
-        */
-       public function setName($name) {
-
-               list($parentPath, ) = Sabre_DAV_URLUtil::splitPath($this->path);
-               list(, $newName) = Sabre_DAV_URLUtil::splitPath($name);
-
-               $newPath = $parentPath . '/' . $newName;
-               OC_FILESYSTEM::rename($this->path,$newPath);
-       
-               $this->path = $newPath;
-
-       }
-
-
-
-       /**
-        * Returns the last modification time, as a unix timestamp
-        *
-        * @return int
-        */
-       public function getLastModified() {
-
-               return OC_FILESYSTEM::filemtime($this->path);
-
-       }
-
-}
-