Skip to content

Commit

Permalink
fix: redirect to proper directory if file not found
Browse files Browse the repository at this point in the history
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
  • Loading branch information
skjnldsv committed Oct 4, 2023
1 parent 529bce2 commit b05719c
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion apps/files/lib/Controller/ViewController.php
Expand Up @@ -231,6 +231,19 @@ public function index($dir = '', $view = '', $fileid = null, $fileNotFound = fal
$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 : '/');
Expand Down Expand Up @@ -380,7 +393,7 @@ private function redirectToFile(int $fileId) {
$uid = $this->userSession->getUser()->getUID();
$baseFolder = $this->rootFolder->getUserFolder($uid);
$nodes = $baseFolder->getById($fileId);
$params = [];
$params = ['view' => 'files'];

try {
$this->redirectToFileIfInTrashbin($fileId);
Expand Down

0 comments on commit b05719c

Please sign in to comment.