aboutsummaryrefslogtreecommitdiffstats
path: root/lib/connector
diff options
context:
space:
mode:
Diffstat (limited to 'lib/connector')
-rw-r--r--lib/connector/sabre/directory.php19
-rw-r--r--lib/connector/sabre/file.php19
-rw-r--r--lib/connector/sabre/node.php66
-rw-r--r--lib/connector/sabre/quotaplugin.php2
-rw-r--r--lib/connector/sabre/request.php50
5 files changed, 79 insertions, 77 deletions
diff --git a/lib/connector/sabre/directory.php b/lib/connector/sabre/directory.php
index 6076aed6fcd..a7201579366 100644
--- a/lib/connector/sabre/directory.php
+++ b/lib/connector/sabre/directory.php
@@ -62,7 +62,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
}
} else {
$newPath = $this->path . '/' . $name;
- OC_Filesystem::file_put_contents($newPath, $data);
+ \OC\Files\Filesystem::file_put_contents($newPath, $data);
return OC_Connector_Sabre_Node::getETagPropertyForPath($newPath);
}
@@ -78,7 +78,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
public function createDirectory($name) {
$newPath = $this->path . '/' . $name;
- OC_Filesystem::mkdir($newPath);
+ \OC\Files\Filesystem::mkdir($newPath);
}
@@ -93,7 +93,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
$path = $this->path . '/' . $name;
if (is_null($info)) {
- $info = OC_Files::getFileInfo($path);
+ $info = \OC\Files\Filesystem::getFileInfo($path);
}
if (!$info) {
@@ -116,12 +116,13 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
* @return Sabre_DAV_INode[]
*/
public function getChildren() {
- $folder_content = OC_Files::getDirectoryContent($this->path);
+
+ $folder_content = \OC\Files\Filesystem::getDirectoryContent($this->path);
$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
@@ -160,7 +161,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
public function childExists($name) {
$path = $this->path . '/' . $name;
- return OC_Filesystem::file_exists($path);
+ return \OC\Files\Filesystem::file_exists($path);
}
@@ -173,7 +174,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
if ($this->path != "/Shared") {
foreach($this->getChildren() as $child) $child->delete();
- OC_Filesystem::rmdir($this->path);
+ \OC\Files\Filesystem::rmdir($this->path);
}
}
@@ -184,10 +185,10 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
* @return array
*/
public function getQuotaInfo() {
- $rootInfo=OC_FileCache_Cached::get('');
+ $rootInfo=\OC\Files\Filesystem::getFileInfo('');
return array(
$rootInfo['size'],
- OC_Filesystem::free_space()
+ \OC\Files\Filesystem::free_space()
);
}
diff --git a/lib/connector/sabre/file.php b/lib/connector/sabre/file.php
index 8d963a1cf8d..1c18a391742 100644
--- a/lib/connector/sabre/file.php
+++ b/lib/connector/sabre/file.php
@@ -45,7 +45,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
*/
public function put($data) {
- OC_Filesystem::file_put_contents($this->path, $data);
+ \OC\Files\Filesystem::file_put_contents($this->path,$data);
return OC_Connector_Sabre_Node::getETagPropertyForPath($this->path);
}
@@ -57,7 +57,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
*/
public function get() {
- return OC_Filesystem::fopen($this->path, 'rb');
+ return \OC\Files\Filesystem::fopen($this->path,'rb');
}
@@ -68,7 +68,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
*/
public function delete() {
- OC_Filesystem::unlink($this->path);
+ \OC\Files\Filesystem::unlink($this->path);
}
@@ -98,16 +98,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
if (isset($properties[self::GETETAG_PROPERTYNAME])) {
return $properties[self::GETETAG_PROPERTYNAME];
}
- return $this->getETagPropertyForPath($this->path);
- }
-
- /**
- * Creates a ETag for this path.
- * @param string $path Path of the file
- * @return string|null Returns null if the ETag can not effectively be determined
- */
- static protected function createETag($path) {
- return OC_Filesystem::hash('md5', $path);
+ return null;
}
/**
@@ -122,7 +113,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
return $this->fileinfo_cache['mimetype'];
}
- return OC_Filesystem::getMimeType($this->path);
+ return \OC\Files\Filesystem::getMimeType($this->path);
}
}
diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php
index 026ec9f7ec5..b48d3b41f24 100644
--- a/lib/connector/sabre/node.php
+++ b/lib/connector/sabre/node.php
@@ -84,12 +84,12 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
$newPath = $parentPath . '/' . $newName;
$oldPath = $this->path;
- OC_Filesystem::rename($this->path, $newPath);
+ \OC\Files\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 ));
+ $query->execute( array( $newPath,OC_User::getUser(), $oldPath ));
}
@@ -104,9 +104,9 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
*/
protected function getFileinfoCache() {
if (!isset($this->fileinfo_cache)) {
- if ($fileinfo_cache = OC_FileCache::get($this->path)) {
+ if ($fileinfo_cache = \OC\Files\Filesystem::getFileInfo($this->path)) {
} else {
- $fileinfo_cache = OC_Filesystem::stat($this->path);
+ $fileinfo_cache = \OC\Files\Filesystem::stat($this->path);
}
$this->fileinfo_cache = $fileinfo_cache;
@@ -134,7 +134,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
* Even if the modification time is set to a custom value the access time is set to now.
*/
public function touch($mtime) {
- OC_Filesystem::touch($this->path, $mtime);
+ \OC\Files\Filesystem::touch($this->path, $mtime);
}
/**
@@ -159,10 +159,10 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
} 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 ));
} 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 ));
}
}
}
@@ -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
@@ -205,57 +206,16 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
}
/**
- * @brief Creates a ETag for this path.
- * @param string $path Path of the file
- * @return string|null Returns null if the ETag can not effectively be determined
- */
- static protected function createETag($path) {
- if(self::$ETagFunction) {
- $hash = call_user_func(self::$ETagFunction, $path);
- return $hash;
- }else{
- return uniqid('', true);
- }
- }
-
- /**
- * @brief Returns the ETag surrounded by double-quotes for this path.
+ * Returns the ETag surrounded by double-quotes for this path.
* @param string $path Path of the file
* @return string|null Returns null if the ETag can not effectively be determined
*/
static public function getETagPropertyForPath($path) {
- $tag = self::createETag($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;
}
- /**
- * @brief Remove the ETag from the cache.
- * @param string $path Path of the file
- */
- static public function removeETagPropertyForPath($path) {
- // remove tags from this and parent paths
- $paths = array();
- while ($path != '/' && $path != '.' && $path != '' && $path != '\\') {
- $paths[] = $path;
- $path = dirname($path);
- }
- if (empty($paths)) {
- return;
- }
- $paths[] = $path;
- $path_placeholders = join(',', array_fill(0, count($paths), '?'));
- $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*properties`'
- .' WHERE `userid` = ?'
- .' AND `propertyname` = ?'
- .' AND `propertypath` IN ('.$path_placeholders.')'
- );
- $vals = array( OC_User::getUser(), self::GETETAG_PROPERTYNAME );
- $query->execute(array_merge( $vals, $paths ));
- }
}
diff --git a/lib/connector/sabre/quotaplugin.php b/lib/connector/sabre/quotaplugin.php
index fbbb4a3cf6f..ce9a968eb3c 100644
--- a/lib/connector/sabre/quotaplugin.php
+++ b/lib/connector/sabre/quotaplugin.php
@@ -50,7 +50,7 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
$uri='/'.$uri;
}
list($parentUri, $newName) = Sabre_DAV_URLUtil::splitPath($uri);
- if ($length > OC_Filesystem::free_space($parentUri)) {
+ if ($length > \OC\Files\Filesystem::free_space($parentUri)) {
throw new Sabre_DAV_Exception_InsufficientStorage();
}
}
diff --git a/lib/connector/sabre/request.php b/lib/connector/sabre/request.php
new file mode 100644
index 00000000000..97a27996bf3
--- /dev/null
+++ b/lib/connector/sabre/request.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * ownCloud
+ *
+ * @author Stefan Herbrechtsmeier
+ * @copyright 2012 Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+class OC_Connector_Sabre_Request extends Sabre_HTTP_Request {
+ /**
+ * Returns the requested uri
+ *
+ * @return string
+ */
+ public function getUri() {
+ return OC_Request::requestUri();
+ }
+
+ /**
+ * Returns a specific item from the _SERVER array.
+ *
+ * Do not rely on this feature, it is for internal use only.
+ *
+ * @param string $field
+ * @return string
+ */
+ public function getRawServerValue($field) {
+ if($field == 'REQUEST_URI'){
+ return $this->getUri();
+ }
+ else{
+ return isset($this->_SERVER[$field])?$this->_SERVER[$field]:null;
+ }
+ }
+}