Skip to content

Commit

Permalink
[TASK] Use site languages for file variants overview
Browse files Browse the repository at this point in the history
This avoids the deprecated "sys_language" table which is removed in
TYPO3v12.

See https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/11.3/Deprecation-94165-SysLanguageDatabaseTable.html
  • Loading branch information
mbrodala committed Mar 26, 2024
1 parent 7cf1883 commit 295cc90
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions Classes/FormEngine/FieldWizard/FileVariantsOverviewWizard.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
use T3G\AgencyPack\FileVariants\Service\ResourcesService;
use TYPO3\CMS\Backend\Form\AbstractNode;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;

/**
Expand All @@ -42,13 +44,6 @@ public function render(): array
{
$result = $this->initializeResultArray();

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_language');
$languages = [];
$languageRecords = $queryBuilder->select('uid', 'title', 'language_isocode')->from('sys_language')->executeQuery();
while ($language = $languageRecords->fetchAssociative()) {
$languages[(int)$language['uid']] = $language['title'] . ' (' . $language['language_isocode'] . ')';
}

// no parent - we are in default language
$parentField = (int)$this->data['databaseRow']['l10n_parent'][0];
if ($parentField === 0) {
Expand All @@ -60,8 +55,9 @@ public function render(): array
$queryBuilder->createNamedParameter((int)$this->data['databaseRow']['uid'], \PDO::PARAM_INT)
))->executeQuery();
while ($translation = $translations->fetchAssociative()) {
$siteLanguage = $this->findSiteLanguageById((int)$translation['sys_language_uid']);
$result['html'] .= '<p class="t3-sysfile-translation">';
$result['html'] .= '<span>' . $languages[(int)$translation['sys_language_uid']] . '</span>';
$result['html'] .= '<span>' . $siteLanguage->getTitle() . '</span>';
$result['html'] .= $resourcesService->generatePreviewImageHtml((int)$translation['file'], 't3-tceforms-sysfile-translation-imagepreview');
$result['html'] .= '</p>';
}
Expand All @@ -72,4 +68,17 @@ public function render(): array

return $result;
}

private function findSiteLanguageById(int $siteLanguageId): SiteLanguage
{
foreach (GeneralUtility::makeInstance(SiteFinder::class)->getAllSites() as $site) {
foreach ($site->getAllLanguages() as $id => $language) {
if ($siteLanguageId === $id) {
return $language;
}
}
}

throw new \InvalidArgumentException(sprintf('No site language with ID "%d"', $siteLanguageId), 1711465624);
}
}

0 comments on commit 295cc90

Please sign in to comment.