aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/controller/viewcontroller.php
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-05-11 19:41:36 +0200
committerThomas Müller <DeepDiver1975@users.noreply.github.com>2016-05-11 19:41:36 +0200
commitceaac03bb5512f925e43bdf8574977ea8e056e62 (patch)
tree109cec3643fe8d4aa8cb7c6ef7254ac8db6f88a2 /apps/files/controller/viewcontroller.php
parentbc1d70f08c4042c457dc3e1bf25c5a34412ac2fb (diff)
downloadnextcloud-server-ceaac03bb5512f925e43bdf8574977ea8e056e62.tar.gz
nextcloud-server-ceaac03bb5512f925e43bdf8574977ea8e056e62.zip
Make permalinks work for trashed files (#24537)
Opening a permalink that points to a trashed file will now display the file within the "Deleted Files" section in the files web UI.
Diffstat (limited to 'apps/files/controller/viewcontroller.php')
-rw-r--r--apps/files/controller/viewcontroller.php52
1 files changed, 35 insertions, 17 deletions
diff --git a/apps/files/controller/viewcontroller.php b/apps/files/controller/viewcontroller.php
index 6ee924e2f0b..7539a3ab649 100644
--- a/apps/files/controller/viewcontroller.php
+++ b/apps/files/controller/viewcontroller.php
@@ -39,6 +39,7 @@ use OCP\IUserSession;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use OCP\AppFramework\Http\NotFoundResponse;
use OCP\Files\Folder;
+use OCP\App\IAppManager;
/**
* Class ViewController
@@ -62,8 +63,10 @@ class ViewController extends Controller {
protected $eventDispatcher;
/** @var IUserSession */
protected $userSession;
+ /** @var IAppManager */
+ protected $appManager;
/** @var \OCP\Files\Folder */
- protected $userFolder;
+ protected $rootFolder;
/**
* @param string $appName
@@ -74,7 +77,8 @@ class ViewController extends Controller {
* @param IConfig $config
* @param EventDispatcherInterface $eventDispatcherInterface
* @param IUserSession $userSession
- * @param Folder $userFolder
+ * @param IAppManager $appManager
+ * @param Folder $rootFolder
*/
public function __construct($appName,
IRequest $request,
@@ -84,7 +88,8 @@ class ViewController extends Controller {
IConfig $config,
EventDispatcherInterface $eventDispatcherInterface,
IUserSession $userSession,
- Folder $userFolder
+ IAppManager $appManager,
+ Folder $rootFolder
) {
parent::__construct($appName, $request);
$this->appName = $appName;
@@ -95,7 +100,8 @@ class ViewController extends Controller {
$this->config = $config;
$this->eventDispatcher = $eventDispatcherInterface;
$this->userSession = $userSession;
- $this->userFolder = $userFolder;
+ $this->appManager = $appManager;
+ $this->rootFolder = $rootFolder;
}
/**
@@ -265,21 +271,33 @@ class ViewController extends Controller {
* @NoAdminRequired
*/
public function showFile($fileId) {
- $files = $this->userFolder->getById($fileId);
- $params = [];
+ try {
+ $uid = $this->userSession->getUser()->getUID();
+ $baseFolder = $this->rootFolder->get($uid . '/files/');
+ $files = $baseFolder->getById($fileId);
+ $params = [];
+
+ if (empty($files) && $this->appManager->isEnabledForUser('files_trashbin')) {
+ $baseFolder = $this->rootFolder->get($uid . '/files_trashbin/files/');
+ $files = $baseFolder->getById($fileId);
+ $params['view'] = 'trashbin';
+ }
- if (!empty($files)) {
- $file = current($files);
- if ($file instanceof Folder) {
- // set the full path to enter the folder
- $params['dir'] = $this->userFolder->getRelativePath($file->getPath());
- } else {
- // set parent path as dir
- $params['dir'] = $this->userFolder->getRelativePath($file->getParent()->getPath());
- // and scroll to the entry
- $params['scrollto'] = $file->getName();
+ if (!empty($files)) {
+ $file = current($files);
+ if ($file instanceof Folder) {
+ // set the full path to enter the folder
+ $params['dir'] = $baseFolder->getRelativePath($file->getPath());
+ } else {
+ // set parent path as dir
+ $params['dir'] = $baseFolder->getRelativePath($file->getParent()->getPath());
+ // and scroll to the entry
+ $params['scrollto'] = $file->getName();
+ }
+ return new RedirectResponse($this->urlGenerator->linkToRoute('files.view.index', $params));
}
- return new RedirectResponse($this->urlGenerator->linkToRoute('files.view.index', $params));
+ } catch (\OCP\Files\NotFoundException $e) {
+ return new NotFoundResponse();
}
return new NotFoundResponse();
}