aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/lib/Controller/ViewController.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/lib/Controller/ViewController.php')
-rw-r--r--apps/files/lib/Controller/ViewController.php15
1 files changed, 14 insertions, 1 deletions
diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php
index d4a75b514eb..88d9a32039b 100644
--- a/apps/files/lib/Controller/ViewController.php
+++ b/apps/files/lib/Controller/ViewController.php
@@ -231,6 +231,19 @@ class ViewController extends Controller {
$favElements['folders'] = [];
}
+ // If the file doesn't exists in the folder and
+ // exists in only one occurrence, redirect to that file
+ // in the correct folder
+ if ($fileid && $dir !== '') {
+ $baseFolder = $this->rootFolder->getUserFolder($userId);
+ $nodes = $baseFolder->getById((int) $fileid);
+ $relativePath = dirname($baseFolder->getRelativePath($nodes[0]->getPath()));
+ // If the requested path is different from the file path
+ if (count($nodes) === 1 && $relativePath !== $dir) {
+ return $this->redirectToFile((int) $fileid);
+ }
+ }
+
try {
// If view is files, we use the directory, otherwise we use the root storage
$storageInfo = $this->getStorageInfo(($view === 'files' && $dir) ? $dir : '/');
@@ -380,7 +393,7 @@ class ViewController extends Controller {
$uid = $this->userSession->getUser()->getUID();
$baseFolder = $this->rootFolder->getUserFolder($uid);
$nodes = $baseFolder->getById($fileId);
- $params = [];
+ $params = ['view' => 'files'];
try {
$this->redirectToFileIfInTrashbin($fileId);