function loadMultilangData($prepareElementCallback) { $languages = JLanguageHelper::getLanguages(); $app = JApplication::getInstance('site'); $menu = $app->getMenu(); $config = JFactory::getConfig(); $sef = $config->get('sef', 0); $sefRewrite = $config->get('sef_rewrite', 0); $defaultLangCode = JFactory::getLanguage()->getDefault(); $websites = array(); //$websites['*'] = $menu->getDefault('*'); // TODO add? $languageFilterEnabled = JPluginHelper::isEnabled('system', 'languagefilter'); if (!$languageFilterEnabled || $sef != '1') { // TODO check also if sef is enabled return $websites; } $oldLanguageFilterValue = $app->setLanguageFilter(true); // necessary that $menu->getDefault() works foreach ($languages as $language) { $langCode = $language->lang_code; $default = $menu->getDefault($langCode); if ($default && $default->language == $langCode) { $websites[$langCode] = $prepareElementCallback($language, $langCode, $defaultLangCode, $sefRewrite); } } $app->setLanguageFilter($oldLanguageFilterValue); return $websites; }
/** * Function for getting the list of languages * * @return array Language list */ public static function getList() { $app = JFactory::getApplication(); $languages = JLanguageHelper::getLanguages(); $db = JFactory::getDbo(); $Itemid = $app->input->getInt('Itemid', 0); $uri = new JURI(Juri::current()); $uri->delVar('lang'); $uri->delVar('Itemid'); $location = htmlspecialchars($uri->getQuery()); if (!empty($location)) { $location .= '&'; } if (!$Itemid) { $active = $app->getMenu()->getActive(); if ($active) { $Itemid = $active->id; } } // For every language we load menu items language specific alias and params foreach ($languages as $i => $language) { $db->forceLanguageTranslation = $language->lang_code; RMenu::resetJoomlaMenuItems(); $db->forceLanguageTranslation = false; $languages[$i]->active = $language->lang_code == JFactory::getLanguage()->getTag(); $languages[$i]->link = RRoute::_('index.php?' . $location . 'lang=' . $language->sef . ($Itemid > 0 ? '&Itemid=' . $Itemid : '')); } // After we are done we reset it the way it was RMenu::resetJoomlaMenuItems(); return $languages; }
public function parseLang($vars) { if (Mijosef::getConfig()->multilang == 0) { return; } if (empty($vars['lang'])) { $lang = JRequest::getWord('lang', ''); if (empty($lang)) { return; } $vars['lang'] = $lang; } $languages = JLanguageHelper::getLanguages('sef'); $lang_code = $languages[$vars['lang']]->lang_code; // if current language, don't bother if ($lang_code == JFactory::getLanguage()->getTag()) { //self::checkHomepage($vars['lang']); return; } // Create a cookie $conf = JFactory::getConfig(); $cookie_domain = $conf->get('config.cookie_domain', ''); $cookie_path = $conf->get('config.cookie_path', '/'); setcookie(JUtility::getHash('language'), $lang_code, time() + 365 * 86400, $cookie_path, $cookie_domain); // set the request var JRequest::setVar('language', $lang_code); // set current language jimport('joomla.language.language'); $conf = JFactory::getConfig(); $debug = $conf->get('debug_lang'); $lang = JLanguage::getInstance($lang_code, $debug); JFactory::$language = $lang; self::$_lang = $vars['lang']; }
/** * Get Uri * * @param string $url URL * * @return JUri */ public function getUri($url = 'SERVER') { static $uriArray = array(); if (!array_key_exists($url, $uriArray)) { // This will enable both SEF and non-SEF URI to be parsed properly $router = clone JRouter::getInstance('site'); $uri = clone JUri::getInstance($url); $langCode = JLanguageHelper::detectLanguage(); $lang = $uri->getVar('lang', $langCode); $uri->setVar('lang', $lang); $sefs = JLanguageHelper::getLanguages('lang_code'); if (isset($sefs[$lang])) { $lang = $sefs[$lang]->sef; $uri->setVar('lang', $lang); } $router->setVars(array(), false); $query = $router->parse($uri); $query = array_merge($query, $uri->getQuery(true)); $uri->setQuery($query); // We are removing format because of default value is csv if present and if not set // and we are never going to remember csv page in a browser history anyway $uri->delVar('format'); $uriArray[$url] = $uri; } return $uriArray[$url]; }
/** * @param KCommandContext $context */ public function _actionCopy(KCommandContext $context) { foreach (KRequest::get('get.id', 'raw') as $item_id) { $this->count = 1; $items = array(); $languages = JLanguageHelper::getLanguages(); $model_identifier = clone $context->caller->getIdentifier(); $model_identifier->path = array('model'); $model_identifier->name = KInflector::pluralize($model_identifier->name); $isTranslatable = KService::get($model_identifier)->getTable()->hasBehavior('translatable'); if ($isTranslatable) { foreach ($languages as $language) { JFactory::getLanguage()->setLanguage($language->lang_code); $item = $this->getService($model_identifier)->id($item_id)->getItem(); if ($item->original) { $this->original_language = $language->lang_code; $original = $item; } else { $items[$language->lang_code] = $item; } } } JFactory::getLanguage()->setLanguage($this->original_language); $id = $this->_copyOriginal($original); if ($isTranslatable) { $this->_updateLanguages($id, $items); } } }
public static function getList(&$params) { $lang = JFactory::getLanguage(); $languages = JLanguageHelper::getLanguages(); $db = JFactory::getDBO(); $app = JFactory::getApplication(); $query = $db->getQuery(true); $query->select('id'); $query->select('language'); $query->from($db->nameQuote('#__menu')); $query->where('home=1'); $db->setQuery($query); $homes = $db->loadObjectList('language'); foreach ($languages as $i => &$language) { // Do not display language without frontend UI if (!JLanguage::exists($language->lang_code)) { unset($languages[$i]); } elseif (!isset($homes[$language->lang_code])) { unset($languages[$i]); } else { if ($app->getLanguageFilter()) { $language->active = $language->lang_code == $lang->getTag(); if ($app->getCfg('sef') == '1') { $itemid = isset($homes[$language->lang_code]) ? $homes[$language->lang_code]->id : $homes['*']->id; $language->link = JRoute::_('index.php?lang=' . $language->sef . '&Itemid=' . $itemid); } else { $language->link = 'index.php?lang=' . $language->sef; } } else { $language->link = 'index.php'; } } } return $languages; }
/** * Auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * @since 3.0 */ protected function preprocessForm(JForm $form, $data, $group = 'jevents') { // Association content items $app = JFactory::getApplication(); $assoc = false && JLanguageAssociations::isEnabled() && JFactory::getApplication()->isAdmin(); if ($assoc) { $languages = JLanguageHelper::getLanguages('lang_code'); $addform = new SimpleXMLElement('<form />'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', 'associations'); $fieldset = $fields->addChild('fieldset'); $fieldset->addAttribute('name', 'item_associations'); $fieldset->addAttribute('description', 'COM_JEVENTS_ITEM_ASSOCIATIONS_FIELDSET_DESC'); $add = false; foreach ($languages as $tag => $language) { if (empty($data->language) || $tag != $data->language) { $add = true; $field = $fieldset->addChild('field'); $field->addAttribute('name', $tag); $field->addAttribute('type', 'modal_article'); $field->addAttribute('language', $tag); $field->addAttribute('label', $language->title); $field->addAttribute('translate_label', 'false'); $field->addAttribute('edit', 'true'); $field->addAttribute('clear', 'true'); } } if ($add) { $form->load($addform, false); } } parent::preprocessForm($form, $data, $group); }
/** * Method to get the field input markup. * * @return string The field input markup. * * @since 11.1 */ protected function getInput() { $html = array(); $thisid = $this->id; $values = $this->value; $class = $this->class; $languages = JLanguageHelper::getLanguages(); foreach ($languages as $lang) { $language = new JLanguage($lang->lang_code); $this->class = $class . ($language->isRTL() ? ' rtl' : ' ltr'); $this->element['label'] = $lang->title; $this->name = 'jform[' . $this->fieldname . '][' . $lang->lang_code . ']'; $this->id = $thisid . '_' . $lang->lang_code; $this->value = array_key_exists($lang->lang_code, $values) ? $values[$lang->lang_code] : ''; $html[] = '<div class="control-group">'; $html[] = '<div class="control-label">'; $html[] = parent::getLabel(); $html[] = '</div>'; $html[] = '<div class="controls">'; $html[] = parent::getInput(); $html[] = '</div>'; $html[] = '</div>'; } return implode($html); }
/** * Method to display in frontend the associations for a given article * * @param integer $id Id of the article * * @return array An array containing the association URL and the related language object * * @since __DEPLOY_VERSION__ */ public static function displayAssociations($id) { $return = array(); if ($associations = self::getAssociations($id)) { $levels = JFactory::getUser()->getAuthorisedViewLevels(); $languages = JLanguageHelper::getLanguages(); foreach ($languages as $language) { // Do not display language when no association if (empty($associations[$language->lang_code])) { continue; } // Do not display language without frontend UI if (!array_key_exists($language->lang_code, JLanguageMultilang::getSiteLangs())) { continue; } // Do not display language without specific home menu if (!array_key_exists($language->lang_code, JLanguageMultilang::getSiteHomePages())) { continue; } // Do not display language without authorized access level if (isset($language->access) && $language->access && !in_array($language->access, $levels)) { continue; } $return[$language->lang_code] = array('item' => $associations[$language->lang_code], 'language' => $language); } } return $return; }
public function loadHomepages() { $app = JFactory::getApplication(); if ($app->isAdmin()) { return; } // store default links in each language $defaultLanguage = shGetDefaultLang(); jimport('joomla.language.helper'); $languages = JLanguageHelper::getLanguages(); $menu = JFactory::getApplication()->getMenu(); foreach ($languages as $language) { $menuItem = $menu->getDefault($language->lang_code); if (!empty($menuItem)) { $this->homeLinks[$language->lang_code] = $this->_prepareLink($menuItem, $languages); } } // save default link $this->homeLink = $this->homeLinks[$defaultLanguage]; // find about the "All" languages home link $menuItem = $menu->getDefault('*'); if (!empty($menuItem)) { $this->allLangHomeLink = $this->_prepareLink($menuItem, $languages); } }
public static function getContacts() { $db = JFactory::getDbo(); $query = $db->getQuery(true)->select('u.name, count(cd.language) as counted, MAX(cd.language=' . $db->quote('*') . ') as all_languages')->from('#__users AS u')->join('LEFT', '#__contact_details AS cd ON cd.user_id=u.id')->join('LEFT', '#__languages as l on cd.language=l.lang_code')->where('EXISTS (SELECT * from #__content as c where c.created_by=u.id)')->where('(l.published=1 or cd.language=' . $db->quote('*') . ')')->where('cd.published=1')->group('u.id')->having('(counted !=' . count(JLanguageHelper::getLanguages()) . ' OR all_languages=1)')->having('(counted !=1 OR all_languages=0)'); $db->setQuery($query); return $db->loadObjectList(); }
/** * Detect is this page are frontpage? * * @return boolean Is frontpage? */ public static function isHome() { $langPath = null; $tag = null; $lang = \JFactory::getLanguage(); // For multi language if (\JPluginHelper::isEnabled('system', 'languagefilter')) { $tag = $lang->getTag(); $langCodes = \JLanguageHelper::getLanguages('lang_code'); $langPath = $langCodes[$tag]->sef; } $uri = \JUri::getInstance(); $root = $uri::root(true); // Get site route $route = StringHelper::substr($uri->getPath(), StringHelper::strlen($root)); // Remove index.php $route = str_replace('index.php', '', $route); // If Multiple language enabled, we check first part of URI is language code or not. if ($langPath) { $params = ExtensionHelper::getParams('plg_system_languagefilter'); if ($tag == $lang->getDefault() && $params->get('remove_default_prefix', 0)) { $langPath = ''; } // If route equals lang path, means it is home route. if (trim($route, '/') == $langPath && !$uri->getVar('option')) { return true; } } else { if (!trim($route, '/') && !$uri->getVar('option')) { return true; } } return false; }
/** * there is currently no fu***ing other way to get the short language code in Joomla :( * * @return string */ public static function getLanguageCode() { if (is_null(self::$languageCode)) { $languages = JLanguageHelper::getLanguages('lang_code'); self::$languageCode = $languages[JFactory::getLanguage()->getTag()]->sef; } return self::$languageCode; }
public static function getList(&$params) { $user = JFactory::getUser(); $lang = JFactory::getLanguage(); $app = JFactory::getApplication(); $menu = $app->getMenu(); // Get menu home items $homes = array(); foreach ($menu->getMenu() as $item) { if ($item->home) { $homes[$item->language] = $item; } } // Load associations $assoc = isset($app->menu_associations) ? $app->menu_associations : 0; if ($assoc) { $active = $menu->getActive(); if ($active) { $associations = MenusHelper::getAssociations($active->id); } } $levels = $user->getAuthorisedViewLevels(); $languages = JLanguageHelper::getLanguages(); // Filter allowed languages foreach ($languages as $i => &$language) { // Do not display language without frontend UI if (!JLanguage::exists($language->lang_code)) { unset($languages[$i]); } elseif (!isset($homes[$language->lang_code])) { unset($languages[$i]); } elseif (isset($language->access) && $language->access && !in_array($language->access, $levels)) { unset($languages[$i]); } else { $language->active = $language->lang_code == $lang->getTag(); if ($app->getLanguageFilter()) { if (isset($associations[$language->lang_code]) && $menu->getItem($associations[$language->lang_code])) { $itemid = $associations[$language->lang_code]; if ($app->getCfg('sef') == '1') { $language->link = JRoute::_('index.php?lang=' . $language->sef . '&Itemid=' . $itemid); } else { $language->link = 'index.php?lang=' . $language->sef . '&Itemid=' . $itemid; } } else { if ($app->getCfg('sef') == '1') { $itemid = isset($homes[$language->lang_code]) ? $homes[$language->lang_code]->id : $homes['*']->id; $language->link = JRoute::_('index.php?lang=' . $language->sef . '&Itemid=' . $itemid); } else { $language->link = 'index.php?lang=' . $language->sef; } } } else { $language->link = JRoute::_('&Itemid=' . $homes['*']->id); } } } return $languages; }
/** * Method to get the field input markup. * * @return string The field input markup. * @since 1.6 */ protected function getInput() { $languageSef = array(); $lang_codes = JLanguageHelper::getLanguages('lang_code'); $languageSef[] = JHTML::_('select.option', '', '-' . JText::_('PLG_EASYLANGUAGE_SELECT_LANG') . '-'); foreach ($lang_codes as $lang) { $languageSef[] = JHTML::_('select.option', $lang->sef, $lang->title); } return JHTML::_('select.genericlist', $languageSef, $this->name, '', 'value', 'text', $this->value); }
/** * Method to return the language name for a language taxonomy branch. * * @param string $branchName Language branch name. * * @return string The language title. * * @since 3.6.0 */ public static function branchLanguageTitle($branchName) { $title = $branchName; if ($branchName == '*') { $title = JText::_('JALL_LANGUAGE'); } else { $languages = JLanguageHelper::getLanguages('lang_code'); if (isset($languages[$branchName])) { $title = $languages[$branchName]->title; } } return $title; }
public static function getLanguage($name) { //JSON LANGUAGE*************** $lang = JFactory::getLanguage(); $extension = 'plg_fieldsattachment_' . $name; $base_dir = JPATH_ADMINISTRATOR; //$language_tag = 'en-GB'; $language_tag = JFactory::getLanguage(); $lang = JFactory::getLanguage(); $languages = JLanguageHelper::getLanguages('lang_code'); $language_tag = isset($languages[$lang->getTag()]) ? $languages[$lang->getTag()]->sef : null; $reload = true; $lang->load($extension, $base_dir, $language_tag, $reload); }
public function __construct(&$subject, $config) { // Ensure that constructor is called one time if (!self::$default_lang) { $app = JFactory::getApplication(); $router = $app->getRouter(); if ($app->isSite()) { // setup language data self::$mode_sef = $router->getMode() == JROUTER_MODE_SEF ? true : false; self::$sefs = JLanguageHelper::getLanguages('sef'); self::$lang_codes = JLanguageHelper::getLanguages('lang_code'); self::$default_lang = JComponentHelper::getParams('com_languages')->get('site', 'en-GB'); self::$default_sef = self::$lang_codes[self::$default_lang]->sef; $app->setLanguageFilter(true); $uri = JFactory::getURI(); if (self::$mode_sef) { // Get the route path from the request. $path = JString::substr($uri->toString(), JString::strlen($uri->base())); // Apache mod_rewrite is Off $path = JFactory::getConfig()->get('sef_rewrite') ? $path : JString::substr($path, 10); // Trim any spaces or slashes from the ends of the path and explode into segments. $path = JString::trim($path, '/ '); $parts = explode('/', $path); // The language segment is always at the beginning of the route path if it exists. $sef = $uri->getVar('lang'); if (!empty($parts) && empty($sef)) { $sef = reset($parts); } } else { $sef = $uri->getVar('lang'); } if (isset(self::$sefs[$sef])) { $lang_code = self::$sefs[$sef]->lang_code; // Create a cookie $conf = JFactory::getConfig(); $cookie_domain = $conf->get('config.cookie_domain', ''); $cookie_path = $conf->get('config.cookie_path', '/'); setcookie(JUtility::getHash('language'), $lang_code, time() + 365 * 86400, $cookie_path, $cookie_domain); // set the request var JRequest::setVar('language', $lang_code); } } parent::__construct($subject, $config); // Detect browser feature if ($app->isSite()) { $app->setDetectBrowser($this->params->get('detect_browser', '1') == '1'); } } }
public static function getAssociationsForm($id, $name, $config = array()) { if (!self::hasAssociations()) { return ''; } $app = JFactory::getApplication(); $addform = new SimpleXMLElement('<form />'); $extension = $app->input->getString('extension', 'com_content'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', $name); $fieldset = $fields->addChild('fieldset'); $fieldset->addAttribute('name', 'item_associations'); $fieldset->addAttribute('description', 'COM_CATEGORIES_ITEM_ASSOCIATIONS_FIELDSET_DESC'); $fieldset->addAttribute('addfieldpath', '/administrator/components/com_categories/models/fields'); $hasForm = false; $languages = JLanguageHelper::getLanguages('lang_code'); foreach ($languages as $tag => $language) { if (empty($config['language']) || $tag != $config['language']) { $hasForm = true; $f = $fieldset->addChild('field'); $f->addAttribute('name', $tag); $f->addAttribute('type', 'modal_category'); $f->addAttribute('language', $tag); $f->addAttribute('label', $language->title); $f->addAttribute('translate_label', 'false'); $f->addAttribute('extension', $extension); } } $form = JForm::getInstance($id, $addform->asXML()); if ($hasForm) { $form->load($addform, false); $associations = CategoriesHelper::getAssociations($config['pk'], $extension); if (count($associations)) { foreach ($associations as $tag => $association_id) { $form->setValue($tag, $name, $association_id); } } if ($config['translate_id'] && isset($config['translate'])) { $form->setValue($config['translate'], $name, $config['translate_id']); } } // Render Form $fields = $form->getFieldset('item_associations'); $form = ''; foreach ($fields as $f) { $form .= '<div class="control-group"><div class="control-label">' . $f->label . '</div><div class="controls">' . $f->input . '</div></div>'; } return $form; }
protected function getOptions() { // Initialize variables. $session = JFactory::getSession(); $attr = ''; $lang = ''; // Initialize some field attributes. $attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : ''; // To avoid user's confusion, readonly="true" should imply disabled="true". if ((string) $this->element['readonly'] == 'true' || (string) $this->element['disabled'] == 'true') { $attr .= ' disabled="disabled"'; } $attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : ''; $attr .= $this->multiple ? ' multiple="multiple"' : ''; // Initialize JavaScript field attributes. $attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : ''; $db = JFactory::getDBO(); // get default VM language // get front-end language jimport('joomla.language.helper'); $languages = JLanguageHelper::getLanguages('lang_code'); $siteLang = JFactory::getLanguage()->getTag(); $lang = strtolower(strtr($siteLang, '-', '_')); // generating the query $tables = $db->getTableList(); $dbprefix = $db->getPrefix(); if (in_array($dbprefix . 'virtuemart_category_categories', $tables)) { $db->setQuery("SELECT c.category_name AS name, c.virtuemart_category_id AS id, x.category_parent_id AS parent FROM #__virtuemart_categories_" . $lang . " AS c LEFT JOIN #__virtuemart_category_categories AS x ON x.category_child_id = c.virtuemart_category_id LEFT JOIN #__virtuemart_categories AS cr ON cr.virtuemart_category_id = c.virtuemart_category_id WHERE cr.published = '1' ORDER BY c.category_name, x.category_parent_id ASC"); $results = $db->loadObjectList(); } else { $results = array(); } if (count($results)) { // iterating $temp_options = array(); foreach ($results as $item) { array_push($temp_options, array($item->id, $item->name, $item->parent)); } foreach ($temp_options as $option) { if ($option[2] == 0) { $this->options[] = JHtml::_('select.option', $option[0], $option[1]); $this->recursive_options($temp_options, 1, $option[0]); } } return $this->options; } else { return $this->options; } }
/** * Build the multiple select list for Menu Links/Pages * * @access public * @return array */ public static function getAvailableLanguageOptions() { $knownLangs = JLanguageHelper::getLanguages(); // Get default site language $langParams = JComponentHelper::getParams('com_languages'); // Setup predefined site language $defaultLanguage = @array_shift(explode('-', strtolower($langParams->get('site')))); $langs[] = JHTML::_('select.option', $defaultLanguage, '- ' . JText::_('COM_JMAP_DEFAULT_SITE_LANG') . ' -'); // Create found languages options foreach ($knownLangs as $langObject) { // Extract tag lang $langs[] = JHTML::_('select.option', $langObject->sef, $langObject->title); } return $langs; }
public static function languages($selected = null, $id = 'language', $attribs = array()) { JLoader::import('joomla.language.helper'); $languages = JLanguageHelper::getLanguages('lang_code'); $options = array(); if (isset($attribs['allow_empty'])) { if ($attribs['allow_empty']) { $options[] = JHTML::_('select.option', '', '- ' . JText::_('JALL_LANGUAGE') . ' -'); } } $options[] = JHTML::_('select.option', '*', JText::_('JALL_LANGUAGE')); if (!empty($languages)) { foreach ($languages as $key => $lang) { $options[] = JHTML::_('select.option', $key, $lang->title); } } return self::genericlist($options, $id, $attribs, $selected, $id); }
public function modal() { $source = $this->input->get('source', '', 'string'); $language = $this->input->get('language', '', 'string'); if (empty($language)) { $languages = JLanguageHelper::getLanguages(); $language = isset($languages[0]->lang_code) ? $languages[0]->lang_code : ''; } $this->input->set('view', 'import'); $this->input->set('layout', 'modal'); $model = $this->getModel(); $model->setState($model->getName() . '.source', $source); $model->setState($model->getName() . '.language', $language); $view = $this->getView('import', 'html'); $view->setModel($model, true); $view->setLayout('modal'); $view->modal(); }
/** * Main dispatch method * * @access private * @return boolean */ public function onAfterInitialise() { $app = JFactory::getApplication(); // Avoid operations if plugin is executed in backend if ($app->getClientId()) { return; } // If Joomla 3.4+ and JMAP internal link force always the lang url param using the cookie workaround if ($app->input->get('option') == 'com_jmap' && version_compare(JVERSION, '3.4', '>=')) { $lang = $app->input->get('lang'); $sefs = JLanguageHelper::getLanguages('sef'); $lang_codes = JLanguageHelper::getLanguages('lang_code'); if (isset($sefs[$lang])) { $lang_code = $sefs[$lang]->lang_code; // Create a cookie. $conf = JFactory::getConfig(); $cookie_domain = $conf->get('config.cookie_domain', ''); $cookie_path = $conf->get('config.cookie_path', '/'); setcookie(JApplication::getHash('language'), $lang_code, 86400, $cookie_path, $cookie_domain); $app->input->cookie->set(JApplication::getHash('language'), $lang_code); // Set the request var. $app->input->set('language', $lang_code); // Check if remove default prefix is active and the default language is not the current one $defaultSiteLanguage = JComponentHelper::getParams('com_languages')->get('site', 'en-GB'); $pluginLangFilter = JPluginHelper::getPlugin('system', 'languagefilter'); $removeDefaultPrefix = @json_decode($pluginLangFilter->params)->remove_default_prefix; if ($removeDefaultPrefix && $defaultSiteLanguage != $lang_code) { $uri = JUri::getInstance(); $path = $uri->getPath(); // Force the language SEF code in the path $path = $lang . '/' . ltrim($path, '/'); $uri->setPath($path); } } } // Detect if current request come from a bot user agent if ($this->isBotRequest() && $app->input->get('option') == 'com_jmap') { $this->joomlaConfig->set('sef', false); $_SERVER['REQUEST_METHOD'] = 'POST'; // Set dummy nobot var $app->input->post->set('nobotsef', true); $_POST['nobotsef'] = true; } }
/** * Constructor. * * @param object &$subject The object to observe * @param array $config An optional associative array of configuration settings. * * @since 1.6 */ public function __construct(&$subject, $config) { parent::__construct($subject, $config); $this->app = JFactory::getApplication(); if ($this->app->isSite()) { // Setup language data. $this->mode_sef = $this->app->get('sef', 0); $this->sefs = JLanguageHelper::getLanguages('sef'); $this->lang_codes = JLanguageHelper::getLanguages('lang_code'); $this->default_lang = JComponentHelper::getParams('com_languages')->get('site', 'en-GB'); $levels = JFactory::getUser()->getAuthorisedViewLevels(); foreach ($this->sefs as $sef => $language) { // @todo: In Joomla 2.5.4 and earlier access wasn't set. Non modified Content Languages got 0 as access value // we also check if frontend language exists and is enabled if ($language->access && !in_array($language->access, $levels) || !array_key_exists($language->lang_code, JLanguageMultilang::getSiteLangs())) { unset($this->lang_codes[$language->lang_code]); unset($this->sefs[$language->sef]); } } } }
public static function languages($selected = null, $id = 'language', $attribs = array()) { jimport('joomla.language.helper'); if (version_compare(JVERSION, '1.6', 'ge')) { $languages = JLanguageHelper::getLanguages('lang_code'); $options = array(); if (!empty($languages)) { foreach ($languages as $key => $lang) { $options[] = JHTML::_('select.option', $key, $lang->title); } } } else { $languages = JLanguageHelper::createLanguageList('lang_code'); $options = array(); if (!empty($languages)) { foreach ($languages as $lang) { $options[] = JHTML::_('select.option', $lang['value'], $lang['text']); } } } return self::genericlist($options, $id, $attribs, $selected, $id); }
/** * Gets an array of languages associated with this document. * * In many cases only a two-letter iso language (iso639) is attached to the * document. However, JSolr supports both language (iso639) and region * (iso3166), E.g. en-AU. * This method will attempt to match all the language codes with their * language+region counterparts so it is possible that more than one code * will be returned for the document. * * @return array An array of languages associated with the document. */ public function getLanguage() { if (!$this->get('language')) { $result = $this->extract('-l'); $results = explode("\n", str_replace("\r", "\n", $result)); $array = array(); foreach ($results as $value) { if ($value) { if (JString::strlen($value) == 5) { // assume iso with region $array[] = str_replace('_', '-', $value); } elseif (JString::strlen($value) == 2) { // assume iso without region $found = false; $languages = JLanguageHelper::getLanguages(); while (($language = current($languages)) && !$found) { $parts = explode('-', $language->lang_code); if ($value == \JArrayHelper::getValue($parts, 0)) { if (array_search($language->lang_code, $array) === false) { $array[] = $language->lang_code; } $found = true; } next($languages); } reset($languages); } } } // if no languages could be detected, use the system lang. if (!count($array)) { $array[] = JFactory::getLanguage()->getTag(); } $this->language = $array; } return $this->language; }
function addStandardEditViewCommandsNoValidate($id = 0, $object = null) { $view = vRequest::getCmd('view', vRequest::getCmd('controller', 'tsmart')); if (!class_exists('JToolBarHelper')) { require JPATH_ADMINISTRATOR . DS . 'includes' . DS . 'toolbar.php'; } JToolBarHelper::divider(); if (vmAccess::manager($view . '.edit')) { JToolBarHelper::save(); JToolBarHelper::apply(); } JToolBarHelper::cancel(); //self::showHelp(); //self::showACLPref($view); if ($view != 'shipmentmethod' and $view != 'paymentmethod' and $view != 'media') { $validate = true; } else { $validate = false; } $this->addJsJoomlaSubmitButtonNoValidate($validate); $editView = vRequest::getCmd('view', vRequest::getCmd('controller', '')); $params = JComponentHelper::getParams('com_languages'); $selectedLangue = $params->get('site', 'en-GB'); $this->lang = strtolower(strtr($selectedLangue, '-', '_')); // Get all the published languages defined in Language manager > Content $allLanguages = JLanguageHelper::getLanguages(); foreach ($allLanguages as $jlang) { $languagesByCode[$jlang->lang_code] = $jlang; } // only add if ID and view not null if ($editView and $id and count(tsmConfig::get('active_languages')) > 1) { if ($editView == 'user') { $editView = 'vendor'; } jimport('joomla.language.helper'); $this->lang = vRequest::getVar('vmlang', $this->lang); // list of languages installed in #__extensions (may be more than the ones in the Language manager > Content if the user did not added them) $languages = JLanguageHelper::createLanguageList($selectedLangue, constant('VMPATH_ROOT'), true); $activeVmLangs = tsmConfig::get('active_languages'); $flagCss = ""; foreach ($languages as $k => &$joomlaLang) { if (!in_array($joomlaLang['value'], $activeVmLangs)) { unset($languages[$k]); } else { $key = $joomlaLang['value']; if (!isset($languagesByCode[$key])) { $img = substr($key, 0, 2); //We try a fallback vmdebug('com_tsmart_MISSING_FLAG', $img, $joomlaLang['text']); } else { $img = $languagesByCode[$key]->image; } $image_flag = VMPATH_ROOT . "/media/mod_languages/images/" . $img . ".gif"; $image_flag_url = JURI::root() . "media/mod_languages/images/" . $img . ".gif"; if (!file_exists($image_flag)) { vmerror(tsmText::sprintf('com_tsmart_MISSING_FLAG', $image_flag, $joomlaLang['text'])); } else { $flagCss .= "td.flag-" . $key . ",.flag-" . $key . "{background: url( " . $image_flag_url . ") no-repeat 0 0; padding-left:20px !important;}\n"; } } } JFactory::getDocument()->addStyleDeclaration($flagCss); $this->langList = JHtml::_('select.genericlist', $languages, 'vmlang', 'class="inputbox" style="width:176px;"', 'value', 'text', $selectedLangue, 'vmlang'); if ($editView == 'product') { $productModel = tmsModel::getModel('product'); $childproducts = $productModel->getProductChilds($id) ? $productModel->getProductChilds($id) : ''; } $token = vRequest::getFormToken(); $j = ' jQuery(function($) { var oldflag = ""; $("select#vmlang").chosen().change(function() { langCode = $(this).find("option:selected").val(); flagClass = "flag-"+langCode; jQuery.ajax({ type: "GET", cache: false, dataType: "json", url: "index.php?option=com_tsmart&view=translate&task=paste&format=json&lg="+langCode+"&id=' . $id . '&editView=' . $editView . '&' . $token . '=1", }).done( function(data) { var items = []; var theForm = document.forms["adminForm"]; if(typeof theForm.vmlang==="undefined"){ var input = document.createElement("input"); input.type = "hidden"; input.name = "vmlang"; input.value = langCode; theForm.appendChild(input); } else { theForm.vmlang.value = langCode; } if (data.fields !== "error" ) { if (data.structure == "empty") alert(data.msg); $.each(data.fields , function(key, val) { cible = jQuery("#"+key); if (oldflag !== "") cible.parent().removeClass(oldflag) var tmce_ver = 0; if(typeof window.tinyMCE!=="undefined"){ var tmce_ver=window.tinyMCE.majorVersion; } if (tmce_ver>="4") { if (cible.parent().addClass(flagClass).children().hasClass("mce_editable") && data.structure !== "empty" ) { tinyMCE.get(key).execCommand("mceSetContent", false,val); cible.val(val); } else if (data.structure !== "empty") cible.val(val); } else { if (cible.parent().addClass(flagClass).children().hasClass("mce_editable") && data.structure !== "empty" ) { tinyMCE.execInstanceCommand(key,"mceSetContent",false,val); cible.val(val); } else if (data.structure !== "empty") cible.val(val); } }); } else alert(data.msg);'; if ($editView == 'product' && !empty($childproducts)) { foreach ($childproducts as $child) { $j .= 'jQuery.ajax({ type: "GET", cache: false, dataType: "json", url: "index.php?option=com_tsmart&view=translate&task=paste&format=json&lg="+langCode+"&id=' . $child->tsmart_product_id . '&editView=' . $editView . '&' . $token . '=1", }).done( // $.getJSON( "index.php?option=com_tsmart&view=translate&task=paste&format=json&lg="+langCode+"&id=' . $child->tsmart_product_id . '&editView=' . $editView . '&' . $token . '=1" , function(data) { cible = jQuery("#child' . $child->tsmart_product_id . 'product_name"); if (oldflag !== "") cible.parent().removeClass(oldflag) cible.parent().addClass(flagClass); cible.val(data.fields.product_name); jQuery("#child' . $child->tsmart_product_id . 'slug").val(data.fields["slug"]); } ) '; } } $j .= 'oldflag = flagClass ; } ) }); })'; vmJsApi::addJScript('vmlang', $j); } else { $jlang = JFactory::getLanguage(); $langs = $jlang->getKnownLanguages(); $defautName = $selectedLangue; $flagImg = $selectedLangue; if (isset($languagesByCode[$selectedLangue])) { $defautName = $langs[$selectedLangue]['name']; $flagImg = JHtml::_('image', 'mod_languages/' . $languagesByCode[$selectedLangue]->image . '.gif', $languagesByCode[$selectedLangue]->title_native, array('title' => $languagesByCode[$selectedLangue]->title_native), true); } else { vmWarn(tsmText::sprintf('com_tsmart_MISSING_FLAG', $selectedLangue, $selectedLangue)); } $this->langList = '<input name ="vmlang" type="hidden" value="' . $selectedLangue . '" >' . $flagImg . ' <b> ' . $defautName . '</b>'; } if (JFactory::getApplication()->isSite()) { $bar = JToolBar::getInstance('toolbar'); $bar->appendButton('Link', 'back', 'com_tsmart_LEAVE', 'index.php?option=com_tsmart&manage=0'); } }
function _isHomePage(&$uri, $altered = false) { $home_items = SEFTools::getHomeQueries(); $langs = JLanguageHelper::getLanguages('lang_code'); $config = SEFConfig::getConfig(); $Itemid = $uri->getVar('Itemid'); if (array_key_exists($Itemid, $home_items) && $uri->getPath() == 'index.php') { if ($config->langEnable) { if (strlen($uri->getVar('lang', '')) == 0) { $langTag = $home_items[$Itemid]->language; if (isset($langs[$langTag])) { $uri->setVar('lang', $langs[$langTag]->sef); } else { // Use current language $langTag = JFactory::getLanguage()->getTag(); if (isset($langs[$langTag])) { $uri->setVar('lang', $langs[$langTag]->sef); } } } } // Set the link queries if not already there if (!isset($home_items[$Itemid]->linkQuery)) { $link = new JURI($home_items[$Itemid]->link); $home_items[$Itemid]->linkQuery = $link->getQuery(true); $home_items[$Itemid]->normalizedQuery = null; // Normalize query if an extension is available $option = $link->getVar('option'); if (!is_null($option)) { $extFile = JPATH_ROOT . '/components/com_sef/sef_ext/' . $option . '.php'; if (file_exists($extFile)) { $class = 'SefExt_' . $option; if (!class_exists($class)) { require $extFile; } $sef_ext = new $class(); $link->setVar('Itemid', $Itemid); $sef_ext->beforeCreate($link); $link->delVar('Itemid'); $link->delVar('lang'); $home_items[$Itemid]->normalizedQuery = $link->getQuery(true); $sef_ext = null; } } } // The queries need to match 1:1 (except Itemid and lang(?)), not just the variables present in home item! $uriQuery = $uri->getQuery(true); if (array_key_exists('Itemid', $uriQuery)) { unset($uriQuery['Itemid']); } if (array_key_exists('lang', $uriQuery)) { unset($uriQuery['lang']); } // Check base link $same = $uriQuery == $home_items[$Itemid]->linkQuery; if (!$same && is_array($home_items[$Itemid]->normalizedQuery)) { // Check normalized link $same = $uriQuery == $home_items[$Itemid]->normalizedQuery; } return $same; } return false; }
/** * Delete a manufacturer and its references * * @copyright * @author RolandD * @todo * @see * @access private * @param * @return * @since 4.0 */ private function _deleteShipmentmethod() { $jinput = JFactory::getApplication()->input; $csvilog = $jinput->get('csvilog', null, null); if (!empty($this->virtuemart_shipmentmethod_id)) { $db = JFactory::getDbo(); // Delete translations jimport('joomla.language.helper'); $languages = array_keys(JLanguageHelper::getLanguages('lang_code')); foreach ($languages as $language) { $query = $db->getQuery(true); $query->delete('#__virtuemart_shipmentmethods_' . strtolower(str_replace('-', '_', $language))); $query->where('virtuemart_shipmentmethod_id = ' . $this->virtuemart_shipmentmethod_id); $db->setQuery($query); $csvilog->addDebug(JText::_('COM_CSVI_DEBUG_DELETE_SHIPMENTMETHOD_LANG_XREF'), true); $db->query(); } // Delete shipmentmethod if ($this->_shipmentmethods->delete($this->virtuemart_shipmentmethod_id)) { $csvilog->AddStats('deleted', JText::_('COM_CSVI_DELETE_SHIPMENTMETHOD')); } else { $csvilog->AddStats('incorrect', JText::sprintf('COM_CSVI_SHIPMENTMETHOD_NOT_DELETED', $this->_shipmentmethods->getError())); } } else { $csvilog->AddStats('incorrect', JText::_('COM_CSVI_SHIPMENTMETHOD_NOT_DELETED_NO_ID')); } }