From a203a4a1c772bc05750f0bbe2db701c21cae6855 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Sat, 6 Oct 2012 13:44:53 +0200
Subject: [PATCH] add support to mount a specific folder from dropbox

---
 apps/files_external/lib/dropbox.php | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php
index bb86894e55..c822083270 100755
--- a/apps/files_external/lib/dropbox.php
+++ b/apps/files_external/lib/dropbox.php
@@ -25,21 +25,25 @@ require_once 'Dropbox/autoload.php';
 class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 
 	private $dropbox;
+	private $root;
 	private $metaData = array();
 
 	private static $tempFiles = array();
 
 	public function __construct($params) {
 		if (isset($params['configured']) && $params['configured'] == 'true' && isset($params['app_key']) && isset($params['app_secret']) && isset($params['token']) && isset($params['token_secret'])) {
+			$this->root=isset($params['root'])?$params['root']:'';
 			$oauth = new Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']);
 			$oauth->setToken($params['token'], $params['token_secret']);
 			$this->dropbox = new Dropbox_API($oauth, 'dropbox');
+			$this->mkdir('');
 		} else {
 			throw new Exception('Creating OC_Filestorage_Dropbox storage failed');
 		}
 	}
 
 	private function getMetaData($path, $list = false) {
+		$path = $this->root.$path;
 		if (!$list && isset($this->metaData[$path])) {
 			return $this->metaData[$path];
 		} else {
@@ -76,6 +80,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 	}
 
 	public function mkdir($path) {
+		$path = $this->root.$path;
 		try {
 			$this->dropbox->createFolder($path);
 			return true;
@@ -144,6 +149,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 	}
 
 	public function unlink($path) {
+		$path = $this->root.$path;
 		try {
 			$this->dropbox->delete($path);
 			return true;
@@ -154,6 +160,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 	}
 
 	public function rename($path1, $path2) {
+		$path1 = $this->root.$path1;
+		$path2 = $this->root.$path2;
 		try {
 			$this->dropbox->move($path1, $path2);
 			return true;
@@ -164,6 +172,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 	}
 
 	public function copy($path1, $path2) {
+		$path1 = $this->root.$path1;
+		$path2 = $this->root.$path2;
 		try {
 			$this->dropbox->copy($path1, $path2);
 			return true;
@@ -174,6 +184,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
 	}
 
 	public function fopen($path, $mode) {
+		$path = $this->root.$path;
 		switch ($mode) {
 			case 'r':
 			case 'rb':
-- 
GitLab