From 6ba23912a7c969ce24a3b295c55a60ea640ca690 Mon Sep 17 00:00:00 2001
From: Thomas Tanghus <thomas@tanghus.net>
Date: Wed, 18 Sep 2013 12:34:10 +0200
Subject: [PATCH] Add getUserFolder/getAppFolder to Server.

---
 lib/public/iservercontainer.php | 14 +++++++++++++
 lib/server.php                  | 35 +++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+)

diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php
index ec7212b306..89e71db8d1 100644
--- a/lib/public/iservercontainer.php
+++ b/lib/public/iservercontainer.php
@@ -62,6 +62,20 @@ interface IServerContainer {
 	 */
 	function getRootFolder();
 
+	/**
+	 * Returns a view to ownCloud's files folder
+	 *
+	 * @return \OCP\Files\Folder
+	 */
+	function getUserFolder();
+
+	/**
+	 * Returns an app-specific view in ownClouds data directory
+	 *
+	 * @return \OCP\Files\Folder
+	 */
+	function getAppFolder();
+
 	/**
 	 * Returns the current session
 	 *
diff --git a/lib/server.php b/lib/server.php
index 0eee3e0f73..9525fce9fd 100644
--- a/lib/server.php
+++ b/lib/server.php
@@ -56,6 +56,17 @@ class Server extends SimpleContainer implements IServerContainer {
 			$view = new View();
 			return new Root($manager, $view, $user);
 		});
+		$this->registerService('CustomFolder', function($c) {
+			$dir = $c['CustomFolderPath'];
+			$root = $this->getRootFolder();
+			$folder = null;
+			if(!$root->nodeExists($dir)) {
+				$folder = $root->newFolder($dir);
+			} else {
+				$folder = $root->get($dir);
+			}
+			return $folder;
+		});
 	}
 
 	/**
@@ -97,6 +108,30 @@ class Server extends SimpleContainer implements IServerContainer {
 		return $this->query('RootFolder');
 	}
 
+	/**
+	 * Returns a view to ownCloud's files folder
+	 *
+	 * @return \OCP\Files\Folder
+	 */
+	function getUserFolder() {
+
+		$this->registerParameter('CustomFolderPath', '/files');
+		return $this->query('CustomFolder');
+
+	}
+
+	/**
+	 * Returns an app-specific view in ownClouds data directory
+	 *
+	 * @return \OCP\Files\Folder
+	 */
+	function getAppFolder() {
+
+		$this->registerParameter('CustomFolderPath', '/' . \OC_App::getCurrentApp());
+		return $this->query('CustomFolder');
+
+	}
+
 	/**
 	 * Returns the current session
 	 *
-- 
GitLab