FluidTYPO3\Vhs\ViewHelpers\Page\LanguageMenuViewHelper::parseLanguageMenu PHP Метод

parseLanguageMenu() защищенный Метод

Sets all parameter for langMenu
protected parseLanguageMenu ( ) : array
Результат array
    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;
    }