aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_versions/lib/Controller/PreviewController.php
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2018-10-12 17:42:08 +0200
committerRobin Appelman <robin@icewind.nl>2018-11-01 00:21:48 +0100
commit4403d771ad72b3de62e6ba5ea8822110253c578e (patch)
tree169d10594adf85c5ca7881a983c8568d9bf53762 /apps/files_versions/lib/Controller/PreviewController.php
parent4a642fc0048c03a24aa199ccc9df23d547f69aa2 (diff)
downloadnextcloud-server-4403d771ad72b3de62e6ba5ea8822110253c578e.tar.gz
nextcloud-server-4403d771ad72b3de62e6ba5ea8822110253c578e.zip
modular versions api
Allows apps to register version backends for storage types The existing versions backend is wrapped in a "legacy" backend. Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'apps/files_versions/lib/Controller/PreviewController.php')
-rw-r--r--apps/files_versions/lib/Controller/PreviewController.php47
1 files changed, 26 insertions, 21 deletions
diff --git a/apps/files_versions/lib/Controller/PreviewController.php b/apps/files_versions/lib/Controller/PreviewController.php
index b8bf464fb3f..f41250a8971 100644
--- a/apps/files_versions/lib/Controller/PreviewController.php
+++ b/apps/files_versions/lib/Controller/PreviewController.php
@@ -21,45 +21,53 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCA\Files_Versions\Controller;
+use OCA\Files_Versions\Versions\IVersionManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\FileDisplayResponse;
-use OCP\Files\File;
-use OCP\Files\Folder;
use OCP\Files\IMimeTypeDetector;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
use OCP\IPreview;
use OCP\IRequest;
+use OCP\IUserSession;
class PreviewController extends Controller {
/** @var IRootFolder */
private $rootFolder;
- /** @var string */
- private $userId;
+ /** @var IUserSession */
+ private $userSession;
/** @var IMimeTypeDetector */
private $mimeTypeDetector;
+ /** @var IVersionManager */
+ private $versionManager;
+
/** @var IPreview */
private $previewManager;
- public function __construct($appName,
- IRequest $request,
- IRootFolder $rootFolder,
- $userId,
- IMimeTypeDetector $mimeTypeDetector,
- IPreview $previewManager) {
+ public function __construct(
+ $appName,
+ IRequest $request,
+ IRootFolder $rootFolder,
+ IUserSession $userSession,
+ IMimeTypeDetector $mimeTypeDetector,
+ IVersionManager $versionManager,
+ IPreview $previewManager
+ ) {
parent::__construct($appName, $request);
$this->rootFolder = $rootFolder;
- $this->userId = $userId;
+ $this->userSession = $userSession;
$this->mimeTypeDetector = $mimeTypeDetector;
+ $this->versionManager = $versionManager;
$this->previewManager = $previewManager;
}
@@ -79,20 +87,17 @@ class PreviewController extends Controller {
$y = 44,
$version = ''
) {
- if($file === '' || $version === '' || $x === 0 || $y === 0) {
+ if ($file === '' || $version === '' || $x === 0 || $y === 0) {
return new DataResponse([], Http::STATUS_BAD_REQUEST);
}
try {
- $userFolder = $this->rootFolder->getUserFolder($this->userId);
- /** @var Folder $versionFolder */
- $versionFolder = $userFolder->getParent()->get('files_versions');
- $mimeType = $this->mimeTypeDetector->detectPath($file);
- $file = $versionFolder->get($file.'.v'.$version);
-
- /** @var File $file */
- $f = $this->previewManager->getPreview($file, $x, $y, true, IPreview::MODE_FILL, $mimeType);
- return new FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]);
+ $user = $this->userSession->getUser();
+ $userFolder = $this->rootFolder->getUserFolder($user->getUID());
+ $file = $userFolder->get($file);
+ $versionFile = $this->versionManager->getVersionFile($user, $file, (int)$version);
+ $preview = $this->previewManager->getPreview($versionFile, $x, $y, true, IPreview::MODE_FILL, $versionFile->getMimetype());
+ return new FileDisplayResponse($preview, Http::STATUS_OK, ['Content-Type' => $preview->getMimeType()]);
} catch (NotFoundException $e) {
return new DataResponse([], Http::STATUS_NOT_FOUND);
} catch (\InvalidArgumentException $e) {