Files
2026-10-06 19:40:28 +02:00

78 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
namespace In2code\Femanager\UserFunc;
use In2code\Femanager\DataProvider\CountryDataProvider;
use In2code\Femanager\DataProvider\CountryZonesDataProvider;
use In2code\Femanager\DataProvider\FallbackCountryDataProvider;
use TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectItems;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class StaticInfoTables
{
public function isStaticInfoTablesInstalled(): bool
{
return ExtensionManagementUtility::isLoaded('static_info_tables');
}
public function getStatesOptions(array $data, TcaSelectItems $tcaSelectItems)
{
if (ExtensionManagementUtility::isLoaded('static_info_tables')) {
$countryZonesDataProvider = GeneralUtility::makeInstance(CountryZonesDataProvider::class);
$country = $data['row']['country'] ?? null;
if (is_array($country)) {
if (count($country) > 0) {
$country = array_values($country)[0];
} else {
$country = null;
}
}
if (empty($country)) {
$data['items'] = [
[
'LLL:EXT:femanager/Resources/Private/Language/locallang_db.xlf:pleaseChooseCountry',
''
]
];
} else {
$countryZones = $countryZonesDataProvider->getCountryZonesForCountryIso3($country);
if (empty($countryZones)) {
$data['items'] = [
[
'LLL:EXT:femanager/Resources/Private/Language/locallang_db.xlf:noZonesForThisCountry',
''
]
];
} else {
foreach ($countryZones as $countryZone) {
$data['items'][] = [$countryZone->getLocalName(), $countryZone->getIsoCode()];
}
}
}
} else {
$data['items'][] = ['Error: static_info_tables is not installed', ''];
}
}
public function getCountryOptions(array $data, TcaSelectItems $tcaSelectItems)
{
if (ExtensionManagementUtility::isLoaded('static_info_tables')) {
$countryDataProvider = GeneralUtility::makeInstance(CountryDataProvider::class);
$countries = $countryDataProvider->getCountries();
foreach ($countries as $country) {
$data['items'][] = [$country->getShortNameEn(), $country->getIsoCodeA3()];
}
} else {
$fallbackCountryDataProvider = GeneralUtility::makeInstance(FallbackCountryDataProvider::class);
$countries = $fallbackCountryDataProvider->getCountries();
foreach ($countries as $key => $name) {
$data['items'][] = [$name, $key];
}
}
}
}