From a24bfae49eb5348a3de1a9e01987de33614d4f99 Mon Sep 17 00:00:00 2001
From: Mario Rimann <mario.rimann@typo3.org>
Date: Wed, 18 Dec 2013 10:17:30 +0100
Subject: [PATCH] [BUGFIX] File browser fails on inexistent expandFolder

If a user browsed to a directory "foo" and re-opens the file-
browser later, the same directory is shown expanded.

In case the directory has been moved/renamed/deleted in the
meantime, the user gets an exception due to the inexistent
directory.

This change just adds a try/catch block around to handle that
situation.

Change-Id: I39aab6be46aec1d3f1f365e5d5f5455aca9b3aa2
Resolves: #50266
Releases: 6.2, 6.1, 6.0
Reviewed-on: https://review.typo3.org/26466
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Pascal Maechler
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
---
 .../recordlist/Classes/Browser/ElementBrowser.php      | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php b/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
index 27ce173ef4c9..12a2049177e3 100644
--- a/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
+++ b/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
@@ -1193,7 +1193,15 @@ class ElementBrowser {
 		// Create upload/create folder forms, if a path is given
 		if ($this->expandFolder) {
 			$this->selectedFolder = FALSE;
-			$fileOrFolderObject = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->retrieveFileOrFolderObject($this->expandFolder);
+
+			// try to fetch the folder the user had open the last time he browsed files
+			// fallback to the default folder in case the last used folder is not existing
+			try {
+				$fileOrFolderObject = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->retrieveFileOrFolderObject($this->expandFolder);
+			} catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $inexistentFolderException) {
+				// we're just catching the exception here, nothing to be done if folder does not exist
+			};
+
 			if ($fileOrFolderObject instanceof \TYPO3\CMS\Core\Resource\Folder) {
 				// It's a folder
 				$this->selectedFolder = $fileOrFolderObject;
-- 
GitLab