Feature: #68895 - Introduced hook in BackendUserAuthentication::getDefaultUploadFolder¶
See forge#68895
Description¶
It is now possible to change the upload folder returned by BackendUserAuthentication::getDefaultUploadFolder()
by
registering a hook. This makes it possible to set a different upload folder for fields with direct upload enabled in the
backend.
Register own getDefaultUploadFolder hook¶
To use your own hook to manipulate the upload folder you need to register the function in ext_localconf.php
of
your extension.
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['getDefaultUploadFolder'][] =
\Vendor\MyExtension\Hooks\DefaultUploadFolder::class . '->getDefaultUploadFolder';
Example getDefaultUploadFolder hook¶
<?php
namespace Vendor\MyExtension\Hooks;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Resource\Folder;
/**
* Class DefaultUploadFolder
*/
class DefaultUploadFolder {
/**
* Get default upload folder
*
* If there is a folder present with the same name as the last part of the table name use that folder.
*
* @param array $params
* @param BackendUserAuthentication $backendUserAuthentication
* @return Folder
*/
public function getDefaultUploadFolder($params, BackendUserAuthentication $backendUserAuthentication) {
/** @var Folder $uploadFolder */
$uploadFolder = $params['uploadFolder'];
$pid = $params['pid'];
$table = $params['table'];
$field = $params['field'];
$matches = [];
if (!empty($uploadFolder) && preg_match('/_([a-z]+)$/', $table, $matches)) {
$folderName = $matches[1];
if ($uploadFolder->hasFolder($folderName)) {
$uploadFolder = $uploadFolder->getSubfolder($folderName);
}
}
return $uploadFolder;
}
}