protected function parseLanguageMenu()
{
$order = $this->arguments['order'] ? GeneralUtility::trimExplode(',', $this->arguments['order']) : '';
$labelOverwrite = $this->arguments['labelOverwrite'];
if (!empty($labelOverwrite)) {
$labelOverwrite = GeneralUtility::trimExplode(',', $this->arguments['labelOverwrite']);
}
$languageMenu = [];
$tempArray = [];
$tempArray[0] = ['label' => $this->arguments['defaultLanguageLabel'], 'flag' => $this->arguments['defaultIsoFlag']];
$select = 'uid, title, flag';
$from = 'sys_language';
$where = '1=1' . $this->cObj->enableFields('sys_language');
$sysLanguage = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($select, $from, $where);
foreach ($sysLanguage as $value) {
$tempArray[$value['uid']] = ['label' => $value['title'], 'flag' => $value['flag']];
}
// reorders languageMenu
if (false === empty($order)) {
foreach ($order as $value) {
$languageMenu[$value] = $tempArray[$value];
}
} else {
$languageMenu = $tempArray;
}
// overwrite of label
if (false === empty($labelOverwrite)) {
$i = 0;
foreach ($languageMenu as $key => $value) {
$languageMenu[$key]['label'] = $labelOverwrite[$i];
$i++;
}
}
// Select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$pageArray = [];
$table = 'pages_language_overlay';
$whereClause = 'pid=' . $this->getPageUid() . ' ';
$whereClause .= $GLOBALS['TSFE']->sys_page->enableFields($table);
$sysLang = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('DISTINCT sys_language_uid', $table, $whereClause);
if (false === empty($sysLang)) {
foreach ($sysLang as $val) {
$pageArray[$val['sys_language_uid']] = $val['sys_language_uid'];
}
}
foreach ($languageMenu as $key => $value) {
$current = $GLOBALS['TSFE']->sys_language_uid === (int) $key ? 1 : 0;
$inactive = $pageArray[$key] || (int) $key === $this->defaultLangUid ? 0 : 1;
$url = $this->getLanguageUrl($key);
if (true === empty($url)) {
$url = GeneralUtility::getIndpEnv('REQUEST_URI');
}
$languageMenu[$key]['current'] = $current;
$languageMenu[$key]['inactive'] = $inactive;
$languageMenu[$key]['url'] = $url;
$languageMenu[$key]['flagSrc'] = $this->getLanguageFlagSrc($value['flag']);
if (true === (bool) $this->arguments['hideNotTranslated'] && true === (bool) $inactive) {
unset($languageMenu[$key]);
}
}
return $languageMenu;
}