Files
cms-core/Documentation/Changelog/14.2/Deprecation-108810-BackendUtilityLocalizationMethods.rst

104 lines
3.3 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _deprecation-108810-1738253894:
==================================================================
Deprecation: #108810 - BackendUtility localization-related methods
==================================================================
See :issue:`108810`
Description
===========
The following methods in :php:`\TYPO3\CMS\Backend\Utility\BackendUtility` have
been deprecated in favor of new methods in
:php:`\TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository`:
* :php:`BackendUtility::getRecordLocalization()` - use
:php:`LocalizationRepository::getRecordTranslation()` instead
* :php:`BackendUtility::getExistingPageTranslations()` - use
:php:`LocalizationRepository::getPageTranslations()` instead
* :php:`BackendUtility::translationCount()` - use
:php:`LocalizationRepository::getRecordTranslations()` instead
See :ref:`feature-108799-1738094060` for details of the new methods.
Impact
======
Calling any of the deprecated methods triggers a deprecation-level log entry.
The methods will be removed in TYPO3 v15.0 and result in a fatal PHP
error.
The extension scanner reports usages as a **strong** match.
Affected installations
======================
Instances or extensions that directly call any of the deprecated methods are
affected.
Migration
=========
Inject :php-short:`\TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository`
and use the new methods. The new methods return
:php:`\TYPO3\CMS\Core\Domain\RawRecord` objects instead of plain arrays.
getRecordLocalization()
-----------------------
.. code-block:: php
use TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository;
use TYPO3\CMS\Backend\Utility\BackendUtility;
// Before
$translations = BackendUtility::getRecordLocalization($table, $uid, $languageId);
if (is_array($translations) && !empty($translations)) {
$translation = $translations[0];
}
// After
$translation = $this->localizationRepository->getRecordTranslation($table, $uid, $languageId);
if ($translation !== null) {
// $translation is a RawRecord object
$translatedUid = $translation->getUid();
}
getExistingPageTranslations()
-----------------------------
.. code-block:: php
use TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository;
use TYPO3\CMS\Backend\Utility\BackendUtility;
// Before
$pageTranslations = BackendUtility::getExistingPageTranslations($pageUid);
// After
// Returns an array of RawRecord objects indexed by language ID
$pageTranslations = $this->localizationRepository->getPageTranslations($pageUid);
translationCount()
------------------
.. code-block:: php
use TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository;
use TYPO3\CMS\Backend\Utility\BackendUtility;
// Before
$message = BackendUtility::translationCount($table, $uid . ':' . $pid, 'Found %s translation(s)');
// or just counting
$count = (int)BackendUtility::translationCount($table, $uid . ':' . $pid);
// After
$translations = $this->localizationRepository->getRecordTranslations($table, $uid);
$count = count($translations);
$message = sprintf('Found %s translation(s)', $count);
.. index:: PHP-API, FullyScanned, ext:backend