2 declare(strict_types = 1);
19 use Psr\Http\Message\UriInterface;
50 foreach (
$languages ?? [] as $languageConfiguration) {
51 $languageUid = (int)$languageConfiguration[
'languageId'];
56 $languageConfiguration[
'locale'] ??
'',
57 $baseEntryPoint ?:
new Uri(
'/'),
58 $languageConfiguration
76 public function getBase(): UriInterface
110 if (isset($this->languages[$languageId])) {
111 return $this->languages[$languageId];
113 throw new \InvalidArgumentException(
114 'Language ' . $languageId .
' does not exist on site ' . $this->
getIdentifier() .
'.',
124 return reset($this->languages);
135 $availableLanguages = [];
140 'title' => $this->
getLanguageService()->sL(
'LLL:EXT:core/Resources/Private/Language/locallang_mod_web_list.xlf:multipleLanguages'),
141 'flag' =>
'flags-multiple'
145 $pageTs = $pageTs[
'mod.'][
'SHARED.'] ?? [];
147 $disabledLanguages = GeneralUtility::intExplode(
',', $pageTs[
'disableLanguages'] ??
'',
true);
149 foreach ($this->languages as $language) {
150 if ($user->
checkLanguageAccess($language->getLanguageId()) && !in_array($language->getLanguageId(), $disabledLanguages,
true)) {
151 if ($language->getLanguageId() === 0) {
153 $defaultLanguageLabel =
'LLL:EXT:core/Resources/Private/Language/locallang_mod_web_list.xlf:defaultLanguage';
155 if (isset($pageTs[
'defaultLanguageLabel'])) {
156 $defaultLanguageLabel = $pageTs[
'defaultLanguageLabel'] .
' (' . $defaultLanguageLabel .
')';
158 $defaultLanguageFlag =
'';
159 if (isset($pageTs[
'defaultLanguageFlag'])) {
160 $defaultLanguageFlag =
'flags-' . $pageTs[
'defaultLanguageFlag'];
163 'title' => $defaultLanguageLabel,
164 'flag' => $defaultLanguageFlag,
167 $availableLanguages[$language->getLanguageId()] = $language;
171 return $availableLanguages;
183 throw new \RuntimeException(
'No error handler given for the status code "' . $statusCode .
'".', 1522495102);