From e8a2b21e913e4c309f80ca809b23876c79adad49 Mon Sep 17 00:00:00 2001
From: Markus Klein <klein.t3@mfc-linz.at>
Date: Wed, 27 Nov 2013 23:20:25 +0100
Subject: [PATCH] [BUGFIX] Remove ElementBrowser::isReadOnlyFolder
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

ElementBrowser::isReadOnlyFolder is not required any more because the
check if the folder is writable has been moved to the methods that
create the file upload and folder creation forms.

The method and the parts where it was used were removed.

Additionally the check if the user is allowed to create folders
by TSConfig was moved to the createFolder method to reduce the amount
of duplicate code.

Resolves: #47648
Releases: 6.2, 6.1, 6.0
Change-Id: Ic6504c8def80012cbe420fc83539cfa859a53c0d
Reviewed-on: https://review.typo3.org/25358
Reviewed-by: DANIEL Rémy
Tested-by: DANIEL Rémy
Reviewed-by: Fabien Udriot
Tested-by: Fabien Udriot
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
---
 .../Classes/Browser/ElementBrowser.php        | 34 ++++---------------
 .../rtehtmlarea/Classes/BrowseLinks.php       |  8 ++---
 .../rtehtmlarea/Classes/SelectImage.php       |  6 ++--
 3 files changed, 12 insertions(+), 36 deletions(-)

diff --git a/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php b/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
index 334eeb497ff7..711e63944900 100644
--- a/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
+++ b/typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
@@ -845,11 +845,9 @@ class ElementBrowser {
 				// Build the file upload and folder creation form
 				$uploadForm = '';
 				$createFolder = '';
-				if ($selectedFolder && !$this->isReadOnlyFolder($selectedFolder)) {
+				if ($selectedFolder) {
 					$uploadForm = ($this->act === 'file') ? $this->uploadForm($selectedFolder) : '';
-					if ($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.createFoldersInEB')) {
-						$createFolder = $this->createFolder($selectedFolder);
-					}
+					$createFolder = $this->createFolder($selectedFolder);
 				}
 				// Insert the upload form on top, if so configured
 				if ($GLOBALS['BE_USER']->getTSConfigVal('options.uploadFieldsInTopOfEB')) {
@@ -1214,17 +1212,9 @@ class ElementBrowser {
 			// Build the file upload and folder creation form
 		$uploadForm = '';
 		$createFolder = '';
-		if ($this->selectedFolder && !$this->isReadOnlyFolder($this->selectedFolder)) {
-			$uploadForm = ($this->act === 'file') ? $this->uploadForm($this->selectedFolder) : '';
-			if ($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.createFoldersInEB')) {
-				$createFolder =  $this->createFolder($this->selectedFolder);
-			}
-		}
 		if ($this->selectedFolder) {
 			$uploadForm = $this->uploadForm($this->selectedFolder);
 			$createFolder = $this->createFolder($this->selectedFolder);
-		} else {
-			$uploadForm = $createFolder = '';
 		}
 		// Insert the upload form on top, if so configured
 		if ($GLOBALS['BE_USER']->getTSConfigVal('options.uploadFieldsInTopOfEB')) {
@@ -1298,7 +1288,7 @@ class ElementBrowser {
 		if ($this->expandFolder) {
 			$this->selectedFolder = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFolderObjectFromCombinedIdentifier($this->expandFolder);
 		}
-		if ($this->selectedFolder && !$this->isReadOnlyFolder($this->selectedFolder)) {
+		if ($this->selectedFolder) {
 			$createFolder = $this->createFolder($this->selectedFolder);
 		} else {
 			$createFolder = '';
@@ -1328,9 +1318,7 @@ class ElementBrowser {
 			</table>
 			';
 		// Adding create folder if applicable:
-		if ($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.createFoldersInEB')) {
-			$content .= $createFolder;
-		}
+		$content .= $createFolder;
 		// Add some space
 		$content .= '<br /><br />';
 		// Ending page, returning content:
@@ -1922,17 +1910,6 @@ class ElementBrowser {
 		return $this->fileProcessor->checkPathAgainstMounts(rtrim($folder, '/') . '/') ? TRUE : FALSE;
 	}
 
-	/**
-	 * Checks, if a path is within a read-only mountpoint of the backend user
-	 *
-	 * @param string $folder Absolute filepath
-	 * @return boolean If the input path is found in the backend users filemounts and if the filemount is of type readonly, then return TRUE.
-	 * @todo Define visibility
-	 */
-	public function isReadOnlyFolder($folder) {
-		return $GLOBALS['FILEMOUNTS'][$this->fileProcessor->checkPathAgainstMounts(rtrim($folder, '/') . '/')]['type'] == 'readonly';
-	}
-
 	/**
 	 * Prints a 'header' where string is in a tablecell
 	 *
@@ -2177,6 +2154,9 @@ class ElementBrowser {
 		if (!$folderObject->checkActionPermission('write')) {
 			return '';
 		}
+		if (!($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.createFoldersInEB'))) {
+			return '';
+		}
 		// Don't show Folder-create form if it's denied
 		if ($GLOBALS['BE_USER']->getTSConfigVal('options.folderTree.hideCreateFolder')) {
 			return '';
diff --git a/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php b/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php
index 3e136c49f2a3..dfdbb6c45b32 100644
--- a/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php
+++ b/typo3/sysext/rtehtmlarea/Classes/BrowseLinks.php
@@ -577,11 +577,9 @@ class BrowseLinks extends \TYPO3\CMS\Recordlist\Browser\ElementBrowser {
 				// Build the file upload and folder creation forms
 				$uploadForm = '';
 				$createFolder = '';
-				if ($selectedFolder && !$this->isReadOnlyFolder($selectedFolder)) {
-					$uploadForm = $this->act === 'file' ? $this->uploadForm($selectedFolder) : '';
-					if ($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.createFoldersInEB')) {
-						$createFolder = $this->createFolder($selectedFolder);
-					}
+				if ($selectedFolder) {
+					$uploadForm = ($this->act === 'file') ? $this->uploadForm($selectedFolder) : '';
+					$createFolder = $this->createFolder($selectedFolder);
 				}
 				// Insert the upload form on top, if so configured
 				if ($GLOBALS['BE_USER']->getTSConfigVal('options.uploadFieldsInTopOfEB')) {
diff --git a/typo3/sysext/rtehtmlarea/Classes/SelectImage.php b/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
index 3e7e5b3d93ec..01c2ce30ccb8 100644
--- a/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
+++ b/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
@@ -743,11 +743,9 @@ class SelectImage extends \TYPO3\CMS\Recordlist\Browser\ElementBrowser {
 				// Build the file upload and folder creation form
 				$uploadForm = '';
 				$createFolder = '';
-				if ($selectedFolder && !$this->isReadOnlyFolder($selectedFolder)) {
+				if ($selectedFolder) {
 					$uploadForm = $this->uploadForm($selectedFolder);
-					if ($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.createFoldersInEB')) {
-						$createFolder = $this->createFolder($selectedFolder);
-					}
+					$createFolder = $this->createFolder($selectedFolder);
 				}
 				// Insert the upload form on top, if so configured
 				if ($GLOBALS['BE_USER']->getTSConfigVal('options.uploadFieldsInTopOfEB')) {
-- 
GitLab