Deprecation: #108810 - BackendUtility localization-related methods 

See forge#108810

Description 

The following methods in \TYPO3\CMS\Backend\Utility\BackendUtility have been deprecated in favor of new methods in \TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository :

  • BackendUtility::getRecordLocalization() - use LocalizationRepository::getRecordTranslation() instead
  • BackendUtility::getExistingPageTranslations() - use LocalizationRepository::getPageTranslations() instead
  • BackendUtility::translationCount() - use LocalizationRepository::getRecordTranslations() instead

See Feature: #108799 - LocalizationRepository methods for fetching record translations 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 LocalizationRepository and use the new methods. The new methods return \TYPO3\CMS\Core\Domain\RawRecord objects instead of plain arrays.

getRecordLocalization() 

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();
}
Copied!

getExistingPageTranslations() 

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);
Copied!

translationCount() 

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);
Copied!