function qtranxf_external_host($host)
{
    $homeinfo = qtranxf_get_home_info();
    return qtranxf_external_host_ex($host, $homeinfo);
}
Esempio n. 2
0
function qtranxf_get_url_for_language($url, $lang, $showLanguage = true)
{
    global $q_config;
    static $url_cache = array();
    //qtranxf_dbg_log('qtranxf_get_url_for_language: $url_cache:',$url_cache);
    if (!isset($url_cache[$url])) {
        $url_cache[$url] = array();
    }
    $urlinfo =& $url_cache[$url];
    //$urlinfo = apply_filters('qtranslate_url_for_language_pre', $urlinfo, $url, $lang, $showLanguage);
    if ($showLanguage) {
        if (isset($urlinfo[$lang])) {
            //qtranxf_dbg_log('qtranxf_get_url_for_language: cached: lang='.$lang.': ',$urlinfo);
            return $urlinfo[$lang];
        }
    } else {
        if (isset($urlinfo['bare'])) {
            //qtranxf_dbg_log('qtranxf_get_url_for_language: cached: bare: ',$urlinfo);
            return $urlinfo['bare'];
        }
    }
    if (isset($urlinfo['language_neutral'])) {
        //qtranxf_dbg_log('qtranxf_get_url_for_language: cached: language_neutral: ',$urlinfo);
        return $urlinfo['language_neutral'];
    }
    $homeinfo = qtranxf_get_home_info();
    if (!isset($urlinfo['url_parsed'])) {
        if (empty($url)) {
            $urlinfo = qtranxf_copy_url_info($q_config['url_info']);
            if (isset($urlinfo['wp-path']) && qtranxf_language_neutral_path($urlinfo['wp-path'])) {
                //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: wp-path: url='.$url.':',$urlinfo);
                $complete = qtranxf_buildURL($urlinfo, $homeinfo);
                if (!isset($url_cache[$complete])) {
                    $url_cache[$complete] = $urlinfo;
                }
                $urlinfo['language_neutral'] = $complete;
                return $complete;
            }
        } else {
            $urlinfo = qtranxf_get_url_info($url);
            // check if it's an external link
            if (!isset($urlinfo['wp-path'])) {
                $urlinfo['language_neutral'] = $url;
                //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: external path: ',$urlinfo);
                return $url;
            }
            if (empty($urlinfo['host'])) {
                if (empty($urlinfo['wp-path'])) {
                    if (empty($urlinfo['query'])) {
                        $urlinfo['language_neutral'] = $url;
                        //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: relative path: ',$urlinfo);
                        return $url;
                    }
                } else {
                    switch ($urlinfo['wp-path'][0]) {
                        case '/':
                            break;
                        case '#':
                            $urlinfo['language_neutral'] = $url;
                            //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: relative hash: ',$urlinfo);
                            return $url;
                        default:
                            $urlinfo['wp-path'] = trailingslashit($q_config['url_info']['wp-path']) . $urlinfo['wp-path'];
                            break;
                    }
                }
            } elseif (qtranxf_external_host_ex($urlinfo['host'], $homeinfo)) {
                $urlinfo['language_neutral'] = $url;
                //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: external host: ',$urlinfo);
                return $url;
            }
            if (qtranxf_language_neutral_path($urlinfo['wp-path'])) {
                $urlinfo['language_neutral'] = $url;
                //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: wp-path: ',$urlinfo);
                return $url;
            }
            qtranxf_url_del_language($urlinfo);
        }
        $urlinfo['url_parsed'] = $url;
    }
    $urlinfo_lang = qtranxf_url_set_language($urlinfo, $lang, $showLanguage);
    $complete = qtranxf_buildURL($urlinfo_lang, $homeinfo);
    //$complete = apply_filters('qtranslate_url_for_language',$complete,$lang,$urlinfo_lang,$homeinfo);
    if ($showLanguage) {
        $urlinfo[$lang] = $complete;
    } else {
        $urlinfo['bare'] = $complete;
    }
    if (!isset($url_cache[$complete])) {
        $url_cache[$complete] = $urlinfo;
    }
    //qtranxf_dbg_log('done: qtranxf_get_url_for_language('.$lang.($showLanguage?', true':', false').'): $urlinfo=',$urlinfo,false);
    return $complete;
}