summaryrefslogtreecommitdiffstats
path: root/lib/files/mount.php
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2013-04-26 00:01:36 +0200
committerRobin Appelman <icewind@owncloud.com>2013-04-26 00:01:36 +0200
commit809b5f81f6ee448563462ae8f642fbb8a6a11499 (patch)
tree88f31a78a59d073b3731e00c26bb6ae05be032a5 /lib/files/mount.php
parentbcd9a6903317a786f5f947374a8680130e4a8297 (diff)
downloadnextcloud-server-809b5f81f6ee448563462ae8f642fbb8a6a11499.tar.gz
nextcloud-server-809b5f81f6ee448563462ae8f642fbb8a6a11499.zip
Further seperation of mount management logic
Diffstat (limited to 'lib/files/mount.php')
-rw-r--r--lib/files/mount.php223
1 files changed, 0 insertions, 223 deletions
diff --git a/lib/files/mount.php b/lib/files/mount.php
deleted file mode 100644
index 0030d0ee7a6..00000000000
--- a/lib/files/mount.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-namespace OC\Files;
-
-class Mount {
- /**
- * @var Mount[]
- */
- static private $mounts = array();
-
- /**
- * @var \OC\Files\Storage\Storage $storage
- */
- private $storage = null;
- private $class;
- private $storageId;
- private $arguments = array();
- private $mountPoint;
-
- /**
- * @param string|\OC\Files\Storage\Storage $storage
- * @param string $mountpoint
- * @param array $arguments (optional)
- */
- public function __construct($storage, $mountpoint, $arguments = null) {
- if (is_null($arguments)) {
- $arguments = array();
- }
-
- $mountpoint = self::formatPath($mountpoint);
- if ($storage instanceof \OC\Files\Storage\Storage) {
- $this->class = get_class($storage);
- $this->storage = $storage;
- } else {
- // Update old classes to new namespace
- if (strpos($storage, 'OC_Filestorage_') !== false) {
- $storage = '\OC\Files\Storage\\' . substr($storage, 15);
- }
- $this->class = $storage;
- $this->arguments = $arguments;
- }
- $this->mountPoint = $mountpoint;
-
- self::$mounts[$this->mountPoint] = $this;
- }
-
- /**
- * @return string
- */
- public function getMountPoint() {
- return $this->mountPoint;
- }
-
- /**
- * @return \OC\Files\Storage\Storage
- */
- private function createStorage() {
- if (class_exists($this->class)) {
- try {
- return new $this->class($this->arguments);
- } catch (\Exception $exception) {
- \OC_Log::write('core', $exception->getMessage(), \OC_Log::ERROR);
- return null;
- }
- } else {
- \OC_Log::write('core', 'storage backend ' . $this->class . ' not found', \OC_Log::ERROR);
- return null;
- }
- }
-
- /**
- * @return \OC\Files\Storage\Storage
- */
- public function getStorage() {
- if (is_null($this->storage)) {
- $this->storage = $this->createStorage();
- }
- return $this->storage;
- }
-
- /**
- * @return string
- */
- public function getStorageId() {
- if (!$this->storageId) {
- if (is_null($this->storage)) {
- $storage = $this->createStorage(); //FIXME: start using exceptions
- if (is_null($storage)) {
- return null;
- }
- $this->storage = $storage;
- }
- $this->storageId = $this->storage->getId();
- if (strlen($this->storageId) > 64) {
- $this->storageId = md5($this->storageId);
- }
- }
- return $this->storageId;
- }
-
- /**
- * @param string $path
- * @return string
- */
- public function getInternalPath($path) {
- if ($this->mountPoint === $path or $this->mountPoint . '/' === $path) {
- $internalPath = '';
- } else {
- $internalPath = substr($path, strlen($this->mountPoint));
- }
- return $internalPath;
- }
-
- /**
- * @param string $path
- * @return string
- */
- private static function formatPath($path) {
- $path = Filesystem::normalizePath($path);
- if (strlen($path) > 1) {
- $path .= '/';
- }
- return $path;
- }
-
- /**
- * Find the mount for $path
- *
- * @param $path
- * @return Mount
- */
- public static function find($path) {
- \OC_Util::setupFS();
- $path = self::formatPath($path);
- if (isset(self::$mounts[$path])) {
- return self::$mounts[$path];
- }
-
- \OC_Hook::emit('OC_Filesystem', 'get_mountpoint', array('path' => $path));
- $foundMountPoint = '';
- $mountPoints = array_keys(self::$mounts);
- foreach ($mountPoints as $mountpoint) {
- if (strpos($path, $mountpoint) === 0 and strlen($mountpoint) > strlen($foundMountPoint)) {
- $foundMountPoint = $mountpoint;
- }
- }
- if (isset(self::$mounts[$foundMountPoint])) {
- return self::$mounts[$foundMountPoint];
- } else {
- return null;
- }
- }
-
- /**
- * Find all mounts in $path
- *
- * @param $path
- * @return Mount[]
- */
- public static function findIn($path) {
- \OC_Util::setupFS();
- $path = self::formatPath($path);
- $result = array();
- $pathLength = strlen($path);
- $mountPoints = array_keys(self::$mounts);
- foreach ($mountPoints as $mountPoint) {
- if (substr($mountPoint, 0, $pathLength) === $path and strlen($mountPoint) > $pathLength) {
- $result[] = self::$mounts[$mountPoint];
- }
- }
- return $result;
- }
-
- public static function clear() {
- self::$mounts = array();
- }
-
- /**
- * Find mounts by storage id
- *
- * @param string $id
- * @return Mount[]
- */
- public static function findByStorageId($id) {
- \OC_Util::setupFS();
- if (strlen($id) > 64) {
- $id = md5($id);
- }
- $result = array();
- foreach (self::$mounts as $mount) {
- if ($mount->getStorageId() === $id) {
- $result[] = $mount;
- }
- }
- return $result;
- }
-
- /**
- * Find mounts by numeric storage id
- *
- * @param string $id
- * @return Mount
- */
- public static function findByNumericId($id) {
- $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*storages` WHERE `numeric_id` = ?');
- $result = $query->execute(array($id))->fetchOne();
- if ($result) {
- $id = $result;
- foreach (self::$mounts as $mount) {
- if ($mount->getStorageId() === $id) {
- return $mount;
- }
- }
- }
- return false;
- }
-}