[BUGFIX] Fix several typos in php comments
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Classes / Tree / View / FolderTreeView.php
index 776c64c..3c9273e 100644 (file)
@@ -17,25 +17,29 @@ namespace TYPO3\CMS\Backend\Tree\View;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
+use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Messaging\FlashMessageService;
 use TYPO3\CMS\Core\Resource\Folder;
 use TYPO3\CMS\Core\Resource\FolderInterface;
 use TYPO3\CMS\Core\Resource\InaccessibleFolder;
+use TYPO3\CMS\Core\Resource\ResourceStorage;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Lang\LanguageService;
 
 /**
  * Generate a folder tree,
  * specially made for browsing folders in the File module
+ *
+ * @internal This class is a TYPO3 Backend implementation and is not considered part of the Public TYPO3 API.
  */
 class FolderTreeView extends AbstractTreeView
 {
     /**
      * The users' file Storages
      *
-     * @var \TYPO3\CMS\Core\Resource\ResourceStorage[]
+     * @var ResourceStorage[]
      */
-    protected $storages = null;
+    protected $storages;
 
     /**
      * @var array
@@ -61,12 +65,6 @@ class FolderTreeView extends AbstractTreeView
     protected $iconFactory;
 
     /**
-     * If file-drag mode is set, temp and recycler folders are filtered out.
-     * @var bool
-     */
-    public $ext_noTempRecyclerDirs = false;
-
-    /**
      * override to not use a title attribute
      * @var string
      */
@@ -99,11 +97,12 @@ class FolderTreeView extends AbstractTreeView
     /**
      * Generate the plus/minus icon for the browsable tree.
      *
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject Entry folder object
+     * @param Folder $folderObject Entry folder object
      * @param int $subFolderCounter The current entry number
      * @param int $totalSubFolders The total number of entries. If equal to $a, a "bottom" element is returned.
      * @param int $nextCount The number of sub-elements to the current element.
      * @param bool $isExpanded The element was expanded to render subelements if this flag is set.
+     *
      * @return string Image tag with the plus/minus icon.
      * @internal
      * @see \TYPO3\CMS\Backend\Tree\View\PageTreeView::PMicon()
@@ -130,11 +129,10 @@ class FolderTreeView extends AbstractTreeView
     public function PMiconATagWrap($icon, $cmd, $isExpand = true)
     {
         if (empty($this->scope)) {
-            $this->scope = array(
-                'class' => get_class($this),
+            $this->scope = [
+                'class' => static::class,
                 'script' => $this->thisScript,
-                'ext_noTempRecyclerDirs' => $this->ext_noTempRecyclerDirs
-            );
+            ];
         }
 
         if ($this->thisScript) {
@@ -143,9 +141,8 @@ class FolderTreeView extends AbstractTreeView
             $scopeHash = GeneralUtility::hmac($scopeData);
             $js = htmlspecialchars('Tree.load(' . GeneralUtility::quoteJSvalue($cmd) . ', ' . (int)$isExpand . ', this, ' . GeneralUtility::quoteJSvalue($scopeData) . ', ' . GeneralUtility::quoteJSvalue($scopeHash) . ');');
             return '<a class="list-tree-control' . (!$isExpand ? ' list-tree-control-open' : ' list-tree-control-closed') . '" onclick="' . $js . '"><i class="fa"></i></a>';
-        } else {
-            return $icon;
         }
+        return $icon;
     }
 
     /**
@@ -163,7 +160,8 @@ class FolderTreeView extends AbstractTreeView
      * Wrapping the folder icon
      *
      * @param string $icon The image tag for the icon
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The row for the current element
+     * @param Folder $folderObject The row for the current element
+     *
      * @return string The processed icon input value.
      * @internal
      */
@@ -175,7 +173,8 @@ class FolderTreeView extends AbstractTreeView
         if (!$this->ext_IconMode) {
             // Check storage access to wrap with click menu
             if (!$folderObject instanceof InaccessibleFolder) {
-                $theFolderIcon = BackendUtility::wrapClickMenuOnIcon($icon, $folderObject->getCombinedIdentifier(), '', 0);
+                $tableName = $this->getTableNameForClickMenu($folderObject);
+                $theFolderIcon = BackendUtility::wrapClickMenuOnIcon($icon, $tableName, $folderObject->getCombinedIdentifier(), 'tree');
             }
         } elseif ($this->ext_IconMode === 'titlelink') {
             $aOnClick = 'return jumpTo(' . GeneralUtility::quoteJSvalue($this->getJumpToParam($folderObject)) . ',this,' . GeneralUtility::quoteJSvalue($this->domIdPrefix . $this->getId($folderObject)) . ',' . $this->bank . ');';
@@ -188,8 +187,9 @@ class FolderTreeView extends AbstractTreeView
      * Wrapping $title in a-tags.
      *
      * @param string $title Title string
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject the folder record
+     * @param Folder $folderObject the folder record
      * @param int $bank Bank pointer (which mount point number)
+     *
      * @return string
      * @internal
      */
@@ -200,7 +200,8 @@ class FolderTreeView extends AbstractTreeView
             return $title;
         }
         $aOnClick = 'return jumpTo(' . GeneralUtility::quoteJSvalue($this->getJumpToParam($folderObject)) . ', this, ' . GeneralUtility::quoteJSvalue($this->domIdPrefix . $this->getId($folderObject)) . ', ' . $bank . ');';
-        $clickMenuParts = BackendUtility::wrapClickMenuOnIcon('', $folderObject->getCombinedIdentifier(), '', 0, ('&bank=' . $this->bank), '', true);
+        $tableName = $this->getTableNameForClickMenu($folderObject);
+        $clickMenuParts = BackendUtility::wrapClickMenuOnIcon('', $tableName, $folderObject->getCombinedIdentifier(), 'tree', '', '', true);
 
         return '<a href="#" title="' . htmlspecialchars(strip_tags($title)) . '" onclick="' . htmlspecialchars($aOnClick) . '" ' . GeneralUtility::implodeAttributes($clickMenuParts) . '>' . $title . '</a>';
     }
@@ -208,18 +209,20 @@ class FolderTreeView extends AbstractTreeView
     /**
      * Returns the id from the record - for folders, this is an md5 hash.
      *
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The folder object
+     * @param Folder $folderObject The folder object
+     *
      * @return int The "uid" field value.
      */
     public function getId($folderObject)
     {
-        return GeneralUtility::md5Int($folderObject->getCombinedIdentifier());
+        return GeneralUtility::md5int($folderObject->getCombinedIdentifier());
     }
 
     /**
      * Returns jump-url parameter value.
      *
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The folder object
+     * @param Folder $folderObject The folder object
+     *
      * @return string The jump-url parameter.
      */
     public function getJumpToParam($folderObject)
@@ -228,7 +231,7 @@ class FolderTreeView extends AbstractTreeView
     }
 
     /**
-     * Returns the title for the input record. If blank, a "no title" labele (localized) will be returned.
+     * Returns the title for the input record. If blank, a "no title" label (localized) will be returned.
      * '_title' is used for setting an alternative title for folders.
      *
      * @param array $row The input row array (where the key "_title" is used for the title)
@@ -237,14 +240,15 @@ class FolderTreeView extends AbstractTreeView
      */
     public function getTitleStr($row, $titleLen = 30)
     {
-        return $row['_title'] ?: parent::getTitleStr($row, $titleLen);
+        return $row['_title'] ?? parent::getTitleStr($row, $titleLen);
     }
 
     /**
      * Returns the value for the image "title" attribute
      *
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The folder to be used
-     * @return         string The attribute value (is htmlspecialchared() already)
+     * @param Folder $folderObject The folder to be used
+     *
+     * @return string The attribute value (is htmlspecialchared() already)
      */
     public function getTitleAttrib($folderObject)
     {
@@ -262,7 +266,7 @@ class FolderTreeView extends AbstractTreeView
         // Get stored tree structure AND updating it if needed according to incoming PM GET var.
         $this->initializePositionSaving();
         // Init done:
-        $treeItems = array();
+        $treeItems = [];
         // Traverse mounts:
         foreach ($this->storages as $storageObject) {
             $this->getBrowseableTreeForStorage($storageObject);
@@ -275,32 +279,31 @@ class FolderTreeView extends AbstractTreeView
     /**
      * Get a tree for one storage
      *
-     * @param \TYPO3\CMS\Core\Resource\ResourceStorage $storageObject
-     * @return void
+     * @param ResourceStorage $storageObject
      */
-    public function getBrowseableTreeForStorage(\TYPO3\CMS\Core\Resource\ResourceStorage $storageObject)
+    public function getBrowseableTreeForStorage(ResourceStorage $storageObject)
     {
         // If there are filemounts, show each, otherwise just the rootlevel folder
         $fileMounts = $storageObject->getFileMounts();
-        $rootLevelFolders = array();
+        $rootLevelFolders = [];
         if (!empty($fileMounts)) {
             foreach ($fileMounts as $fileMountInfo) {
-                $rootLevelFolders[] = array(
+                $rootLevelFolders[] = [
                     'folder' => $fileMountInfo['folder'],
                     'name' => $fileMountInfo['title']
-                );
+                ];
             }
         } elseif ($this->BE_USER->isAdmin()) {
-            $rootLevelFolders[] = array(
+            $rootLevelFolders[] = [
                 'folder' => $storageObject->getRootLevelFolder(),
                 'name' => $storageObject->getName()
-            );
+            ];
         }
         // Clean the tree
         $this->reset();
         // Go through all "root level folders" of this tree (can be the rootlevel folder or any file mount points)
         foreach ($rootLevelFolders as $rootLevelFolderInfo) {
-            /** @var $rootLevelFolder \TYPO3\CMS\Core\Resource\Folder */
+            /** @var Folder $rootLevelFolder */
             $rootLevelFolder = $rootLevelFolderInfo['folder'];
             $rootLevelFolderName = $rootLevelFolderInfo['name'];
             $folderHashSpecUID = GeneralUtility::md5int($rootLevelFolder->getCombinedIdentifier());
@@ -321,26 +324,26 @@ class FolderTreeView extends AbstractTreeView
             // Mark a storage which is not online, as offline
             // maybe someday there will be a special icon for this
             if ($storageObject->isOnline() === false) {
-                $rootLevelFolderName .= ' (' . $this->getLanguageService()->sL('LLL:EXT:lang/locallang_mod_file.xlf:sys_file_storage.isOffline') . ')';
+                $rootLevelFolderName .= ' (' . $this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_mod_file.xlf:sys_file_storage.isOffline') . ')';
             }
             // Preparing rootRec for the mount
-            $icon = $this->iconFactory->getIconForResource($rootLevelFolder, Icon::SIZE_SMALL, null, array('mount-root' => true));
+            $icon = $this->iconFactory->getIconForResource($rootLevelFolder, Icon::SIZE_SMALL, null, ['mount-root' => true]);
             $firstHtml .= $this->wrapIcon($icon, $rootLevelFolder);
-            $row = array(
+            $row = [
                 'uid' => $folderHashSpecUID,
                 'title' => $rootLevelFolderName,
                 'path' => $rootLevelFolder->getCombinedIdentifier(),
                 'folder' => $rootLevelFolder
-            );
+            ];
             // Add the storage root to ->tree
-            $this->tree[] = array(
+            $this->tree[] = [
                 'HTML' => $firstHtml,
                 'row' => $row,
                 'bank' => $this->bank,
                 // hasSub is TRUE when the root of the storage is expanded
                 'hasSub' => $isOpen && $storageObject->isBrowsable(),
                 'invertedDepth' => 1000,
-            );
+            ];
             // If the mount is expanded, go down:
             if ($isOpen && $storageObject->isBrowsable()) {
                 // Set depth:
@@ -352,20 +355,21 @@ class FolderTreeView extends AbstractTreeView
     /**
      * Fetches the data for the tree
      *
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject the folderobject
+     * @param Folder $folderObject the folderobject
      * @param int $depth Max depth (recursivity limit)
      * @param string $type HTML-code prefix for recursive calls.
+     *
      * @return int The count of items on the level
      * @see getBrowsableTree()
      */
-    public function getFolderTree(\TYPO3\CMS\Core\Resource\Folder $folderObject, $depth = 999, $type = '')
+    public function getFolderTree(Folder $folderObject, $depth = 999, $type = '')
     {
         $depth = (int)$depth;
 
         // This generates the directory tree
         /* array of \TYPO3\CMS\Core\Resource\Folder */
         if ($folderObject instanceof InaccessibleFolder) {
-            $subFolders = array();
+            $subFolders = [];
         } else {
             $subFolders = $folderObject->getSubfolders();
             $subFolders = \TYPO3\CMS\Core\Resource\Utility\ListUtility::resolveSpecialFolderNames($subFolders);
@@ -380,19 +384,19 @@ class FolderTreeView extends AbstractTreeView
         foreach ($subFolders as $subFolderName => $subFolder) {
             $subFolderCounter++;
             // Reserve space.
-            $this->tree[] = array();
+            $this->tree[] = [];
             // Get the key for this space
             end($this->tree);
             $isLocked = $subFolder instanceof InaccessibleFolder;
             $treeKey = key($this->tree);
             $specUID = GeneralUtility::md5int($subFolder->getCombinedIdentifier());
             $this->specUIDmap[$specUID] = $subFolder->getCombinedIdentifier();
-            $row = array(
+            $row = [
                 'uid' => $specUID,
                 'path' => $subFolder->getCombinedIdentifier(),
                 'title' => $subFolderName,
                 'folder' => $subFolder
-            );
+            ];
             // Make a recursive call to the next level
             if (!$isLocked && $depth > 1 && $this->expandNext($specUID)) {
                 $nextCount = $this->getFolderTree($subFolder, $depth - 1, $type);
@@ -413,12 +417,12 @@ class FolderTreeView extends AbstractTreeView
                     $row['_title'] = '<strong>' . $subFolderName . '</strong>';
                 }
                 $icon = '<span title="' . htmlspecialchars($subFolderName) . '">'
-                    . $this->iconFactory->getIconForResource($subFolder, Icon::SIZE_SMALL, null, array('folder-open' => (bool)$isOpen))
+                    . $this->iconFactory->getIconForResource($subFolder, Icon::SIZE_SMALL, null, ['folder-open' => (bool)$isOpen])
                     . '</span>';
                 $HTML .= $this->wrapIcon($icon, $subFolder);
             }
             // Finally, add the row/HTML content to the ->tree array in the reserved key.
-            $this->tree[$treeKey] = array(
+            $this->tree[$treeKey] = [
                 'row' => $row,
                 'HTML' => $HTML,
                 'hasSub' => $nextCount && $this->expandNext($specUID),
@@ -426,7 +430,7 @@ class FolderTreeView extends AbstractTreeView
                 'isLast' => false,
                 'invertedDepth' => $depth,
                 'bank' => $this->bank
-            );
+            ];
         }
         if ($subFolderCounter > 0) {
             $this->tree[$treeKey]['isLast'] = true;
@@ -457,7 +461,12 @@ class FolderTreeView extends AbstractTreeView
                 $this->getLanguageService()->sL('LLL:EXT:backend/Resources/Private/Language/locallang.xlf:foldertreeview.noFolders.title'),
                 FlashMessage::INFO
             );
-            return $message->render();
+            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageService $flashMessageService */
+            $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
+            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageQueue $defaultFlashMessageQueue */
+            $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
+            $defaultFlashMessageQueue->enqueue($message);
+            return $defaultFlashMessageQueue->renderFlashMessages();
         }
 
         $expandedFolderHash = '';
@@ -474,11 +483,11 @@ class FolderTreeView extends AbstractTreeView
         }
         // We need to count the opened <ul>'s every time we dig into another level,
         // so we know how many we have to close when all children are done rendering
-        $closeDepth = array();
+        $closeDepth = [];
         foreach ($treeItems as $treeItem) {
-            /** @var $folderObject \TYPO3\CMS\Core\Resource\Folder */
+            /** @var Folder $folderObject */
             $folderObject = $treeItem['row']['folder'];
-            $classAttr = $treeItem['row']['_CSSCLASS'];
+            $classAttr = $treeItem['row']['_CSSCLASS'] ?? '';
             $folderIdentifier = $folderObject->getCombinedIdentifier();
             // this is set if the AJAX request has just opened this folder (via the PM command)
             $isExpandedFolderIdentifier = $expandedFolderHash == GeneralUtility::md5int($folderIdentifier);
@@ -486,27 +495,27 @@ class FolderTreeView extends AbstractTreeView
             $itemHTML = '';
             // If this item is the start of a new level,
             // then a new level <ul> is needed, but not in ajax mode
-            if ($treeItem['isFirst'] && !$doCollapse && !($doExpand && $isExpandedFolderIdentifier)) {
+            if (!empty($treeItem['isFirst']) && !$doCollapse && !($doExpand && $isExpandedFolderIdentifier)) {
                 $itemHTML = '<ul class="list-tree">';
             }
             // Add CSS classes to the list item
-            if ($treeItem['hasSub']) {
+            if (!empty($treeItem['hasSub'])) {
                 $classAttr .= ' list-tree-control-open';
             }
             $itemHTML .= '
                                <li id="' . $idAttr . '" ' . ($classAttr ? ' class="' . trim($classAttr) . '"' : '') . '><span class="list-tree-group">' . $treeItem['HTML'] . $this->wrapTitle($this->getTitleStr($treeItem['row'], $titleLength), $folderObject, $treeItem['bank']) . '</span>';
-            if (!$treeItem['hasSub']) {
+            if (empty($treeItem['hasSub'])) {
                 $itemHTML .= '</li>';
             }
             // We have to remember if this is the last one
             // on level X so the last child on level X+1 closes the <ul>-tag
-            if ($treeItem['isLast'] && !($doExpand && $isExpandedFolderIdentifier)) {
+            if (!empty($treeItem['isLast']) && !($doExpand && $isExpandedFolderIdentifier)) {
                 $closeDepth[$treeItem['invertedDepth']] = 1;
             }
             // If this is the last one and does not have subitems, we need to close
             // the tree as long as the upper levels have last items too
-            if ($treeItem['isLast'] && !$treeItem['hasSub'] && !$doCollapse && !($doExpand && $isExpandedFolderIdentifier)) {
-                for ($i = $treeItem['invertedDepth']; $closeDepth[$i] == 1; $i++) {
+            if (!empty($treeItem['isLast']) && empty($treeItem['hasSub']) && !$doCollapse && !($doExpand && $isExpandedFolderIdentifier)) {
+                for ($i = $treeItem['invertedDepth']; !empty($closeDepth[$i]); $i++) {
                     $closeDepth[$i] = 0;
                     $itemHTML .= '</ul></li>';
                 }
@@ -541,12 +550,31 @@ class FolderTreeView extends AbstractTreeView
     }
 
     /**
+     * Returns table name for click menu
+     *
+     * @param Folder $folderObject
+     * @return string
+     */
+    protected function getTableNameForClickMenu(Folder $folderObject)
+    {
+        if (strpos($folderObject->getRole(), FolderInterface::ROLE_MOUNT) !== false) {
+            $tableName = 'sys_filemounts';
+        } elseif ($folderObject->getIdentifier() === $folderObject->getStorage()->getRootLevelFolder()->getIdentifier()) {
+            $tableName = 'sys_file_storage';
+        } else {
+            $tableName = 'sys_file';
+        }
+        return $tableName;
+    }
+
+    /**
      * Counts the number of directories in a file path.
      *
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject File path.
+     * @param Folder $folderObject File path.
+     *
      * @return int
      */
-    public function getNumberOfSubfolders(\TYPO3\CMS\Core\Resource\Folder $folderObject)
+    public function getNumberOfSubfolders(Folder $folderObject)
     {
         $subFolders = $folderObject->getSubfolders();
         return count($subFolders);
@@ -555,16 +583,15 @@ class FolderTreeView extends AbstractTreeView
     /**
      * Get stored tree structure AND updating it if needed according to incoming PM GET var.
      *
-     * @return void
-     * @access private
+     * @internal
      */
     public function initializePositionSaving()
     {
         // Get stored tree structure:
-        $this->stored = unserialize($this->BE_USER->uc['browseTrees'][$this->treeName]);
+        $this->stored = json_decode($this->BE_USER->uc['browseTrees'][$this->treeName], true);
         $this->getShortHashNumberForStorage();
         // PM action:
-        // (If an plus/minus icon has been clicked,
+        // (If a plus/minus icon has been clicked,
         // the PM GET var is sent and we must update the stored positions in the tree):
         // 0: mount key, 1: set/clear boolean, 2: item ID (cannot contain "_"), 3: treeName
         list($storageHashNumber, $doExpand, $numericFolderHash, $treeName) = $this->evaluateExpandCollapseParameter();
@@ -585,16 +612,15 @@ class FolderTreeView extends AbstractTreeView
     /**
      * Helper method to map md5-hash to shorter number
      *
-     * @param \TYPO3\CMS\Core\Resource\ResourceStorage $storageObject
-     * @param \TYPO3\CMS\Core\Resource\Folder $startingPointFolder
+     * @param ResourceStorage $storageObject
+     * @param Folder $startingPointFolder
+     *
      * @return int
      */
-    protected function getShortHashNumberForStorage(\TYPO3\CMS\Core\Resource\ResourceStorage $storageObject = null, \TYPO3\CMS\Core\Resource\Folder $startingPointFolder = null)
+    protected function getShortHashNumberForStorage(ResourceStorage $storageObject = null, Folder $startingPointFolder = null)
     {
         if (!$this->storageHashNumbers) {
-            $this->storageHashNumbers = array();
-            // Mapping md5-hash to shorter number:
-            $hashMap = array();
+            $this->storageHashNumbers = [];
             foreach ($this->storages as $storageUid => $storage) {
                 $fileMounts = $storage->getFileMounts();
                 if (!empty($fileMounts)) {
@@ -612,19 +638,17 @@ class FolderTreeView extends AbstractTreeView
         if ($storageObject) {
             if ($startingPointFolder) {
                 return $this->storageHashNumbers[$storageObject->getUid() . $startingPointFolder->getCombinedIdentifier()];
-            } else {
-                return $this->storageHashNumbers[$storageObject->getUid()];
             }
-        } else {
-            return null;
+            return $this->storageHashNumbers[$storageObject->getUid()];
         }
+        return null;
     }
 
     /**
      * Gets the values from the Expand/Collapse Parameter (&PM)
      * previously known as "PM" (plus/minus)
      * PM action:
-     * (If an plus/minus icon has been clicked,
+     * (If a plus/minus icon has been clicked,
      * the PM GET var is sent and we must update the stored positions in the tree):
      * 0: mount key, 1: set/clear boolean, 2: item ID (cannot contain "_"), 3: treeName
      *
@@ -641,15 +665,15 @@ class FolderTreeView extends AbstractTreeView
             }
         }
         // Take the first three parameters
-        list($mountKey, $doExpand, $folderIdentifier) = explode('_', $PM, 3);
+        list($mountKey, $doExpand, $folderIdentifier) = array_pad(explode('_', $PM, 3), 3, null);
         // In case the folder identifier contains "_", we just need to get the fourth/last parameter
-        list($folderIdentifier, $treeName) = GeneralUtility::revExplode('_', $folderIdentifier, 2);
-        return array(
+        list($folderIdentifier, $treeName) = array_pad(GeneralUtility::revExplode('_', $folderIdentifier, 2), 2, null);
+        return [
             $mountKey,
             $doExpand,
             $folderIdentifier,
             $treeName
-        );
+        ];
     }
 
     /**
@@ -657,18 +681,19 @@ class FolderTreeView extends AbstractTreeView
      *
      * @param string $mountKey The mount key / storage UID
      * @param bool $doExpand Whether to expand/collapse
-     * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The folder object
+     * @param Folder $folderObject The folder object
      * @param string $treeName The name of the tree
+     *
      * @return string
      */
-    protected function generateExpandCollapseParameter($mountKey = null, $doExpand = false, \TYPO3\CMS\Core\Resource\Folder $folderObject = null, $treeName = null)
+    protected function generateExpandCollapseParameter($mountKey = null, $doExpand = false, Folder $folderObject = null, $treeName = null)
     {
-        $parts = array(
-            $mountKey !== null ? $mountKey : $this->bank,
+        $parts = [
+            $mountKey ?? $this->bank,
             $doExpand == 1 ? 1 : 0,
             $folderObject !== null ? GeneralUtility::md5int($folderObject->getCombinedIdentifier()) : '',
-            $treeName !== null ? $treeName : $this->treeName
-        );
+            $treeName ?? $this->treeName
+        ];
         return implode('_', $parts);
     }