function getMenuParams($id) { static $params = array(); if (!isset($params[$id])) { $params[$id] = AcesefUtility::getMenu()->getParams($id); } return $params[$id]; }
function getSefStatus() { static $status; if (!isset($status)) { $JoomlaConfig =& JFactory::getConfig(); $status = array(); $status['version_checker'] = (bool) $this->AcesefConfig->version_checker; $status['php'] = (bool) version_compare(PHP_VERSION, '5.2.0', '>'); $status['s_mod_rewrite'] = ''; if (function_exists('apache_get_modules')) { $modules = apache_get_modules(); $status['s_mod_rewrite'] = (bool) in_array('mod_rewrite', $modules); } $status['sef'] = (bool) $JoomlaConfig->getValue('sef'); $status['mod_rewrite'] = (bool) $JoomlaConfig->getValue('sef_rewrite'); $status['htaccess'] = false; if (file_exists(JPATH_ROOT . DS . '.htaccess')) { $filesize = filesize(JPATH_ROOT . DS . '.htaccess'); $status['htaccess'] = (bool) ($filesize > 2060); } $status['live_site'] = $JoomlaConfig->getValue('live_site'); if (AcesefUtility::JoomFishInstalled()) { $status['jfrouter'] = JPluginHelper::isEnabled('system', 'jfrouter'); } $status['acesef'] = (bool) $this->AcesefConfig->mode; $status['plugin'] = JPluginHelper::isEnabled('system', 'acesef'); $status['generate_sef'] = (bool) $this->AcesefConfig->generate_sef; } return $status; }
function determineLanguage($get_lang = null) { // Set the language for JoomFish if (AcesefUtility::JoomFishInstalled()) { $registry = JFactory::getConfig(); // save the default language of the site if needed $locale = $registry->get('config.language'); $GLOBALS['mosConfig_defaultLang'] = $locale; $registry->set("config.defaultlang", $locale); // Get language from request if (!empty($get_lang)) { $lang = $get_lang; } // Try to get language code from JF cookie if ($this->AcesefConfig->joomfish_cookie) { $jf_cookie = JRequest::getVar('jfcookie', null, 'COOKIE'); if (isset($jf_cookie['lang'])) { $cookieCode = $jf_cookie['lang']; } } // Try to find language from browser settings if ($this->AcesefConfig->joomfish_browser && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && class_exists('JoomFishManager')) { $active_iso = array(); $active_isocountry = array(); $active_code = array(); $active_languages = JoomFishManager::getInstance()->getActiveLanguages(); if (count($active_languages) > 0) { foreach ($active_languages as $a_lang) { $active_iso[] = $a_lang->iso; if (preg_match('/[_-]/i', $a_lang->iso)) { $iso = str_replace('_', '-', $a_lang->iso); $isocountry = explode('-', $iso); $active_isocountry[] = $isocountry[0]; } $active_code[] = $a_lang->shortcode; } // figure out which language to use - browser languages are based on ISO codes $browser_lang = explode(',', $_SERVER["HTTP_ACCEPT_LANGUAGE"]); foreach ($browser_lang as $b_lang) { if (in_array($b_lang, $active_iso)) { $client_lang = $b_lang; break; } $short_lang = substr($b_lang, 0, 2); if (in_array($short_lang, $active_isocountry)) { $client_lang = $short_lang; break; } // compare with code if (in_array($short_lang, $active_code)) { $client_lang = $short_lang; break; } } if (!empty($client_lang)) { if (strlen($client_lang) == 2) { $browser_code = self::getLangLongCode($client_lang); } else { $browser_code = $client_lang; } } } } // Check if language is selected if (empty($lang)) { if (empty($code) || !JLanguage::exists($code)) { if ($this->AcesefConfig->joomfish_main_lang != '0') { $code = self::getLangLongCode($this->AcesefConfig->joomfish_main_lang); } } // Try to get language code from JF cookie if (empty($code) || !JLanguage::exists($code)) { if (isset($cookieCode)) { $code = $cookieCode; } } // Try to get language from browser if needed if (empty($code) || !JLanguage::exists($code)) { if (isset($browser_code)) { $code = $browser_code; } } // Get language from configuration if needed if (empty($code) || !JLanguage::exists($code)) { if ($this->AcesefConfig->joomfish_main_lang != '0') { $code = self::getLangLongCode($this->AcesefConfig->joomfish_main_lang); } } // Get default language if needed if (empty($code) || !JLanguage::exists($code)) { $code = $registry->get('config.language'); } } // get language long code if needed if (empty($code)) { if (empty($lang)) { return; } $code = self::getLangLongCode($lang); } if (!empty($code)) { // set the site language $reset_lang = false; if ($code != self::getLangLongCode()) { $language = JFactory::getLanguage(); $language->setLanguage($code); $language->load(); // set the backward compatible language $back_lang = $language->getBackwardLang(); $GLOBALS['mosConfig_lang'] = $back_lang; $registry->set("config.lang", $back_lang); $reset_lang = true; } // set joomfish language if needed if ($reset_lang) { $jf_lang = TableJFLanguage::createByJoomla($code); $registry->set("joomfish.language", $jf_lang); // set some more variables $mainframe = JFactory::getApplication(); $registry->set("config.multilingual_support", true); $mainframe->setUserState('application.lang', $jf_lang->code); $registry->set("config.jflang", $jf_lang->code); $registry->set("config.lang_site", $jf_lang->code); $registry->set("config.language", $jf_lang->code); $registry->set("joomfish.language", $jf_lang); // overwrite global config with values from $jf_lang if set to in JoomFish $jf_params = JComponentHelper::getParams("com_joomfish"); $overwriteGlobalConfig = $jf_params->get('overwriteGlobalConfig', 0); if ($overwriteGlobalConfig) { // We should overwrite additional global variables based on the language parameter configuration $lang_params = new JParameter($jf_lang->params); $param_array = $lang_params->toArray(); foreach ($param_array as $key => $val) { $registry->set("config." . $key, $val); if (defined("_JLEGACY")) { $name = 'mosConfig_' . $key; $GLOBALS[$name] = $val; } } } // set the cookie with language if ($this->AcesefConfig->joomfish_cookie) { setcookie("lang", "", time() - 1800, "/"); setcookie("jfcookie", "", time() - 1800, "/"); setcookie("jfcookie[lang]", $code, time() + 24 * 3600, '/'); } } } } }