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;
}
Exemple #2
1
 /**
  * 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;
 }
Exemple #3
0
 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'];
 }
Exemple #4
0
 /**
  * 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];
 }
Exemple #5
0
 /**
  * @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);
         }
     }
 }
Exemple #6
0
 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;
 }
Exemple #7
0
 /**
  * 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);
 }
Exemple #8
0
 /**
  * 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);
 }
Exemple #9
0
 /**
  * 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);
     }
 }
Exemple #11
0
 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();
 }
Exemple #12
0
 /**
  * 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;
 }
Exemple #13
0
 /**
  * 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 . '&amp;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;
 }
Exemple #15
0
 /**
  * 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);
 }
Exemple #16
0
 /**
  * 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;
 }
Exemple #17
0
 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);
 }
Exemple #18
0
 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');
         }
     }
 }
Exemple #19
0
 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;
 }
Exemple #22
0
 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);
 }
Exemple #23
0
 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();
 }
Exemple #24
0
 /**
  * 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;
     }
 }
Exemple #25
0
 /**
  * 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]);
             }
         }
     }
 }
Exemple #26
0
 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);
 }
Exemple #27
0
 /**
  * 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');
        }
    }
Exemple #29
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'));
     }
 }