diff --git a/e107_core/shortcodes/single/languagelinks.php b/e107_core/shortcodes/single/languagelinks.php new file mode 100644 index 000000000..cbc165c14 --- /dev/null +++ b/e107_core/shortcodes/single/languagelinks.php @@ -0,0 +1,118 @@ + + * + * + * + * + * + * + * + * + * + * + * + * @param string $parm + */ +function languagelinks_shortcode($parm = '') +{ + if(!defined('LANGLINKS_SEPARATOR')) + { + define('LANGLINKS_SEPARATOR', ' | '); + } + + $tmp = explode('|', $parm, 2); + $parm = $tmp[0]; + $parms = array(); + if(isset($tmp[1])) parse_str($tmp[1], $parms); + + // ignore Query string if required by parms or external code, false by default + if(!defined('LANGLINKS_NOQUERY')) + { + define('LANGLINKS_NOQUERY', isset($parms['noquery'])); + } + + if(!defined('LANGLINKS_HOME')) + { + define('LANGLINKS_HOME', isset($parms['home'])); + } + + /*require_once(e_HANDLER.'language_class.php'); + $slng = new language;*/ + $slng = e107::getLanguage(); + + if(!empty($parm)) + { + $languageList = explode(',', $parm); + } + else + { + $languageList = $slng->installed(); + sort($languageList); + } + + if(count($languageList) < 2) + { + return; + } + + foreach($languageList as $languageFolder) + { + $code = $slng->convert($languageFolder); + $name = $slng->toNative($languageFolder); + //$subdom = (isset($cursub[2])) ? $cursub[0] : ''; + + if(e107::getPref('multilanguage_subdomain')) + { + $code = ($languageFolder == e107::getPref('sitelanguage')) ? 'www.' : $code; + if(LANGLINKS_HOME) + $link = str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, SITEURL); + else + $link = (!LANGLINKS_NOQUERY) + ? str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, e_REQUEST_URL) // includes query string + : str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, e_REQUEST_SELF); // excludes query string + } + else + { + // TODO - switch to elan=Language query when possible (now it'll break the old DOT query string format) + if(LANGLINKS_HOME) + $link = SITEURL.'?elan='.$languageFolder; + else + $link = (!LANGLINKS_NOQUERY) ? e_REQUEST_SELF.'?['.$code.']'.e_QUERY : e_REQUEST_SELF.'?elan='.$languageFolder; + } + $class = ($languageFolder == e_LANGUAGE) ? 'languagelink_active' : 'languagelink'; e_dump($languageFolder, $class); + $ret[] = "\n{$name}"; + } + + return implode(LANGLINKS_SEPARATOR, $ret); +} \ No newline at end of file diff --git a/e107_core/shortcodes/single/languagelinks.sc b/e107_core/shortcodes/single/languagelinks.sc deleted file mode 100644 index a1594dbe3..000000000 --- a/e107_core/shortcodes/single/languagelinks.sc +++ /dev/null @@ -1,48 +0,0 @@ -//convert($languageFolder); - $name = $slng->toNative($languageFolder); - //$subdom = (isset($cursub[2])) ? $cursub[0] : ''; - - if(varset($pref['multilanguage_subdomain'])) - { - $code = ($languageFolder == $pref['sitelanguage']) ? 'www.' : $code; - $link = (e_QUERY) - ? str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, e_SELF).'?'.e_QUERY - : str_replace($_SERVER['HTTP_HOST'], $code.'.'.e_DOMAIN, e_SELF); - } - else - { - $link = (e_QUERY) ? e_SELF.'?['.$code.']'.e_QUERY : e_SELF.'?['.$code.']'; - } - $class = ($languageFolder == e_LANGUAGE) ? 'languagelink_active' : 'languagelink'; - $ret[] = "\n{$name}"; -} - -return implode(LANGLINKS_SEPARATOR, $ret); \ No newline at end of file