Deprecation: #100597 - BackendUtility methods getThumbnailUrl() and getLinkToDataHandlerAction()

See forge#100597

Description

The methods \TYPO3\CMS\Backend\Utility\BackendUtility::getThumbnailUrl() and \TYPO3\CMS\Backend\Utility\BackendUtility::getLinkToDataHandlerAction() have been marked as deprecated.

Impact

Calling those methods will trigger a PHP deprecation level log warning.

Affected installations

TYPO3 installations with custom extensions using those methods. The extension scanner will report usages as strong match.

Migration

Instead of calling BackendUtility::getThumbnailUrl(), inject and use the \TYPO3\CMS\Core\Resource\ResourceFactory directly:

// before
$url = BackendUtility::getThumbnailUrl(2004, [
    'width' => 20,
    'height' => 13,
    '_context' => ProcessedFile::CONTEXT_IMAGEPREVIEW
]);

// after
$url = $this->resourceFactory
    ->getFileObject(2004)
    ->process(ProcessedFile::CONTEXT_IMAGEPREVIEW, ['width' => 20, 'height' => 13])
    ->getPublicUrl();

Instead of calling BackendUtility::getLinkToDataHandlerAction(), inject and use the \TYPO3\CMS\Backend\Routing\UriBuilder directly:

// before
$url = BackendUtility::getLinkToDataHandlerAction(
    '&cmd[pages][123][localize]=10',
    (string)$uriBuilder->buildUriFromRoute('some_route')
);

// after
$url = (string)$this->uriBuilder->buildUriFromRoute(
    'tce_db',
    [
        'cmd' => [
            'pages' => [
                123 => [
                    'localize' => 10,
                ],
            ],
        ],
        'redirect' => (string)$uriBuilder->buildUriFromRoute('some_route'),
    ]
);

In case the second paramter $redirectUrl was omitted, getLinkToDataHandlerAction automatically used the current request URI as the return URL. In case you relied on this, make sure the redirect parameter is set to $request->getAttribute('normalizedParams')->getRequestUri().