From ade61d8b433be7d1ebcc4e50e718993a125b97f1 Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <roeland@famdouma.nl>
Date: Mon, 8 Oct 2018 14:35:35 +0200
Subject: [PATCH] Allow the creationg of previews of files stored in appdata

To allow us to create previews of files stored in appdata we need to
construct the view differently.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
---
 lib/private/Preview/GeneratorHelper.php | 19 ++++++++-----------
 lib/private/PreviewManager.php          |  3 ++-
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/lib/private/Preview/GeneratorHelper.php b/lib/private/Preview/GeneratorHelper.php
index 587f8174b02..2f1a1f8aeff 100644
--- a/lib/private/Preview/GeneratorHelper.php
+++ b/lib/private/Preview/GeneratorHelper.php
@@ -26,6 +26,7 @@ use OC\Files\View;
 use OCP\Files\File;
 use OCP\Files\IRootFolder;
 use OCP\Files\SimpleFS\ISimpleFile;
+use OCP\IConfig;
 use OCP\IImage;
 use OCP\Image as OCPImage;
 use OCP\Preview\IProvider;
@@ -38,8 +39,12 @@ class GeneratorHelper {
 	/** @var IRootFolder */
 	private $rootFolder;
 
-	public function __construct(IRootFolder $rootFolder) {
+	/** @var IConfig */
+	private $config;
+
+	public function __construct(IRootFolder $rootFolder, IConfig $config) {
 		$this->rootFolder = $rootFolder;
+		$this->config = $config;
 	}
 
 	/**
@@ -60,16 +65,8 @@ class GeneratorHelper {
 	 * This is required to create the old view and path
 	 */
 	private function getViewAndPath(File $file) {
-		$absPath = ltrim($file->getPath(), '/');
-		$owner = explode('/', $absPath)[0];
-
-		$userFolder = $this->rootFolder->getUserFolder($owner)->getParent();
-
-		$nodes = $userFolder->getById($file->getId());
-		$file = $nodes[0];
-
-		$view = new View($userFolder->getPath());
-		$path = $userFolder->getRelativePath($file->getPath());
+		$view = new View($file->getParent()->getPath());
+		$path = $file->getName();
 
 		return [$view, $path];
 	}
diff --git a/lib/private/PreviewManager.php b/lib/private/PreviewManager.php
index de03861badc..931b0035c4f 100644
--- a/lib/private/PreviewManager.php
+++ b/lib/private/PreviewManager.php
@@ -195,7 +195,8 @@ class PreviewManager implements IPreview {
 				$this,
 				$this->appData,
 				new GeneratorHelper(
-					$this->rootFolder
+					$this->rootFolder,
+					$this->config
 				),
 				$this->eventDispatcher
 			);
-- 
GitLab