diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-08-30 19:13:01 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-10-16 13:17:12 +0200 |
commit | f2889dc6e4aa701f36081b314f38f620cbb1fc88 (patch) | |
tree | 8969d61c3dc2a71cd8eb1b745d88fc10782e1d75 /lib/private/connector/sabre/node.php | |
parent | 4b9ec49285081137195c5852682b127a37ea8bfe (diff) | |
download | nextcloud-server-f2889dc6e4aa701f36081b314f38f620cbb1fc88.tar.gz nextcloud-server-f2889dc6e4aa701f36081b314f38f620cbb1fc88.zip |
Consolidate webdav code - move all to one app
Diffstat (limited to 'lib/private/connector/sabre/node.php')
-rw-r--r-- | lib/private/connector/sabre/node.php | 276 |
1 files changed, 0 insertions, 276 deletions
diff --git a/lib/private/connector/sabre/node.php b/lib/private/connector/sabre/node.php deleted file mode 100644 index 30faf9941bd..00000000000 --- a/lib/private/connector/sabre/node.php +++ /dev/null @@ -1,276 +0,0 @@ -<?php -/** - * @author Arthur Schiwon <blizzz@owncloud.com> - * @author Bart Visscher <bartv@thisnet.nl> - * @author Jakob Sack <mail@jakobsack.de> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Klaas Freitag <freitag@owncloud.com> - * @author Markus Goetz <markus@woboq.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -namespace OC\Connector\Sabre; - -use OC\Connector\Sabre\Exception\InvalidPath; - - -abstract class Node implements \Sabre\DAV\INode { - /** - * Allow configuring the method used to generate Etags - * - * @var array(class_name, function_name) - */ - public static $ETagFunction = null; - - /** - * @var \OC\Files\View - */ - protected $fileView; - - /** - * The path to the current node - * - * @var string - */ - protected $path; - - /** - * node properties cache - * - * @var array - */ - protected $property_cache = null; - - /** - * @var \OCP\Files\FileInfo - */ - protected $info; - - /** - * Sets up the node, expects a full path name - * - * @param \OC\Files\View $view - * @param \OCP\Files\FileInfo $info - */ - public function __construct($view, $info) { - $this->fileView = $view; - $this->path = $this->fileView->getRelativePath($info->getPath()); - $this->info = $info; - } - - protected function refreshInfo() { - $this->info = $this->fileView->getFileInfo($this->path); - } - - /** - * Returns the name of the node - * - * @return string - */ - public function getName() { - return $this->info->getName(); - } - - /** - * Returns the full path - * - * @return string - */ - public function getPath() { - return $this->path; - } - - /** - * Renames the node - * - * @param string $name The new name - * @throws \Sabre\DAV\Exception\BadRequest - * @throws \Sabre\DAV\Exception\Forbidden - */ - public function setName($name) { - - // rename is only allowed if the update privilege is granted - if (!$this->info->isUpdateable()) { - throw new \Sabre\DAV\Exception\Forbidden(); - } - - list($parentPath,) = \Sabre\HTTP\URLUtil::splitPath($this->path); - list(, $newName) = \Sabre\HTTP\URLUtil::splitPath($name); - - // verify path of the target - $this->verifyPath(); - - $newPath = $parentPath . '/' . $newName; - - $this->fileView->rename($this->path, $newPath); - - $this->path = $newPath; - - $this->refreshInfo(); - } - - public function setPropertyCache($property_cache) { - $this->property_cache = $property_cache; - } - - /** - * Returns the last modification time, as a unix timestamp - * - * @return int timestamp as integer - */ - public function getLastModified() { - $timestamp = $this->info->getMtime(); - if (!empty($timestamp)) { - return (int)$timestamp; - } - return $timestamp; - } - - /** - * sets the last modification time of the file (mtime) to the value given - * in the second parameter or to now if the second param is empty. - * Even if the modification time is set to a custom value the access time is set to now. - */ - public function touch($mtime) { - $this->fileView->touch($this->path, $mtime); - $this->refreshInfo(); - } - - /** - * 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 - * arbitrary string, but MUST be surrounded by double-quotes. - * - * Return null if the ETag can not effectively be determined - * - * @return string - */ - public function getETag() { - return '"' . $this->info->getEtag() . '"'; - } - - /** - * Sets the ETag - * - * @param string $etag - * - * @return int file id of updated file or -1 on failure - */ - public function setETag($etag) { - return $this->fileView->putFileInfo($this->path, array('etag' => $etag)); - } - - /** - * Returns the size of the node, in bytes - * - * @return int|float - */ - public function getSize() { - return $this->info->getSize(); - } - - /** - * Returns the cache's file id - * - * @return int - */ - public function getId() { - return $this->info->getId(); - } - - /** - * @return string|null - */ - public function getFileId() { - if ($this->info->getId()) { - $instanceId = \OC_Util::getInstanceId(); - $id = sprintf('%08d', $this->info->getId()); - return $id . $instanceId; - } - - return null; - } - - /** - * @return string|null - */ - public function getDavPermissions() { - $p = ''; - if ($this->info->isShared()) { - $p .= 'S'; - } - if ($this->info->isShareable()) { - $p .= 'R'; - } - if ($this->info->isMounted()) { - $p .= 'M'; - } - if ($this->info->isDeletable()) { - $p .= 'D'; - } - if ($this->info->isDeletable()) { - $p .= 'NV'; // Renameable, Moveable - } - if ($this->info->getType() === \OCP\Files\FileInfo::TYPE_FILE) { - if ($this->info->isUpdateable()) { - $p .= 'W'; - } - } else { - if ($this->info->isCreatable()) { - $p .= 'CK'; - } - } - return $p; - } - - protected function verifyPath() { - try { - $fileName = basename($this->info->getPath()); - $this->fileView->verifyPath($this->path, $fileName); - } catch (\OCP\Files\InvalidPathException $ex) { - throw new InvalidPath($ex->getMessage()); - } - } - - /** - * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE - */ - public function acquireLock($type) { - $this->fileView->lockFile($this->path, $type); - } - - /** - * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE - */ - public function releaseLock($type) { - $this->fileView->unlockFile($this->path, $type); - } - - /** - * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE - */ - public function changeLock($type) { - $this->fileView->changeLock($this->path, $type); - } -} |