function jflanguagesType() { $this->values = array(); if (ACYMAILING_J16 && file_exists(JPATH_SITE . DS . 'libraries' . DS . 'joomfish' . DS . 'manager.php') || !ACYMAILING_J16 && file_exists(JPATH_SITE . DS . 'administrator' . DS . 'components' . DS . 'com_joomfish' . DS . 'classes' . DS . 'JoomfishManager.class.php')) { include_once JPATH_SITE . DS . 'components' . DS . 'com_joomfish' . DS . 'helpers' . DS . 'defines.php'; if (!ACYMAILING_J16) { include_once JOOMFISH_ADMINPATH . DS . 'classes' . DS . 'JoomfishManager.class.php'; } else { include_once JPATH_SITE . DS . 'libraries' . DS . 'joomfish' . DS . 'manager.php'; } $jfManager = JoomFishManager::getInstance(); $langActive = $jfManager->getActiveLanguages(); $this->values[] = JHTML::_('select.option', '', JText::_('DEFAULT_LANGUAGE')); foreach ($langActive as $oneLanguage) { $this->values[] = JHTML::_('select.option', $oneLanguage->shortcode . ',' . $oneLanguage->id, $oneLanguage->name); } $this->found = true; } if (empty($this->values) && file_exists(JPATH_SITE . DS . 'components' . DS . 'com_falang' . DS . 'helpers' . DS . 'defines.php') && (include_once JPATH_SITE . DS . 'components' . DS . 'com_falang' . DS . 'helpers' . DS . 'defines.php')) { JLoader::register('FalangManager', FALANG_ADMINPATH . '/classes/FalangManager.class.php'); $fManager = FalangManager::getInstance(); $langActive = $fManager->getActiveLanguages(); $this->values[] = JHTML::_('select.option', '', JText::_('DEFAULT_LANGUAGE')); foreach ($langActive as $oneLanguage) { $this->values[] = JHTML::_('select.option', $oneLanguage->lang_code . ',' . $oneLanguage->lang_id, $oneLanguage->title); } $this->found = true; } }
/** * Constructor for the tasker * * @return joomfishTasker */ public function __construct() { parent::__construct(); $this->registerDefaultTask('show'); $this->act = JRequest::getVar('act', ''); $this->task = JRequest::getVar('task', ''); $this->cid = JRequest::getVar('cid', array(0)); if (!is_array($this->cid)) { $this->cid = array(0); } $this->fileCode = JRequest::getVar('fileCode', ''); $this->_joomfishManager = JoomFishManager::getInstance(); $this->registerTask('show', 'showCElementConfig'); $this->registerTask('detail', 'showElementConfiguration'); $this->registerTask('remove', 'removeContentElement'); $this->registerTask('remove_install', 'removeContentElement'); $this->registerTask('installer', 'showContentElementsInstaller'); $this->registerTask('uploadfile', 'installContentElement'); // Populate data used by controller global $mainframe; $this->_catid = $mainframe->getUserStateFromRequest('selected_catid', 'catid', ''); $this->_select_language_id = $mainframe->getUserStateFromRequest('selected_lang', 'select_language_id', '-1'); $this->_language_id = JRequest::getVar('language_id', $this->_select_language_id); $this->_select_language_id = $this->_select_language_id == -1 && $this->_language_id != -1 ? $this->_language_id : $this->_select_language_id; // Populate common data used by view // get the view $this->view = $this->getView("elements"); // Assign data for view $this->view->assignRef('catid', $this->_catid); $this->view->assignRef('select_language_id', $this->_select_language_id); $this->view->assignRef('task', $this->task); $this->view->assignRef('act', $this->act); }
/** * Method to get the field options for content languages. * * @return array The field option objects. * * @since 11.1 */ protected function getOptions() { $basicoptions = JHtml::_('contentlanguage.existing'); // set default if (!isset($this->value) || empty($this->value) || $this->value == '*') { $jfManager = JoomFishManager::getInstance(); $this->value = $jfManager->getDefaultLanguage(); } return $basicoptions; }
public static function getComponentMapping($modulParam) { $retVal = array(); $jfm = JoomFishManager::getInstance(); $contentElements = $jfm->getContentElements(); foreach ($contentElements as $element) { $componentinfo = $element->getComponentInformation(); $retVal = array_merge($retVal, $componentinfo); } return $retVal; }
function jflanguagesType() { $this->values = array(); if (@(include_once JPATH_SITE . DS . 'components' . DS . 'com_joomfish' . DS . 'helpers' . DS . 'defines.php')) { include_once JOOMFISH_ADMINPATH . DS . 'classes' . DS . 'JoomfishManager.class.php'; $jfManager = JoomFishManager::getInstance(); $langActive = $jfManager->getActiveLanguages(); $this->values[] = JHTML::_('select.option', '', JText::_('DEFAULT_LANGUAGE')); foreach ($langActive as $oneLanguage) { $this->values[] = JHTML::_('select.option', $oneLanguage->shortcode . ',' . $oneLanguage->id, $oneLanguage->name); } } }
function jfGetOtherLanguages() { // inspired by modules/mod_jflanguageselection $jfManager = JoomFishManager::getInstance(); $jfrouter = JFRoute::getInstance(); $curLang = jfGetCurrentLanguage(); $languages = array(); foreach ($jfManager->getActiveLanguages(true) as $lang) { if ($lang->lang_code != $curLang->lang_code) { $code = $lang->getLanguageCode(); $languages[$code] = $jfrouter->rerouteCurrentUrl($code); } } return $languages; }
/** * Method to get the field options. * * @return array The field option objects. * * @since 11.1 */ protected function getOptions() { // Initialize some field attributes. $client = (string) $this->element['client']; if ($client != 'site' && $client != 'administrator') { $client = 'site'; } // set default if (!isset($this->value) || empty($this->value) || $this->value == '*') { $jfManager = JoomFishManager::getInstance(); $this->value = $jfManager->getDefaultLanguage(); } // Merge any additional options in the XML definition. $options = JLanguageHelper::createLanguageList($this->value, constant('JPATH_' . strtoupper($client)), true, true); return $options; }
function onAfterInitialise() { $mainframe =& JFactory::getApplication(); JFactory::getConfig()->set('sef_suffix', 0); // Store J! router for later use $router =& $mainframe->getRouter(); $mainframe->set('mijosef.global.jrouter', $router); // Activate MijoSEF router $mijosef_router = new JRouterMijosef(); $router->attachParseRule(array($mijosef_router, 'parse')); $router->attachBuildRule(array($mijosef_router, 'build')); // Instantiate JoomFishManager before JFDatabase loading to prevent infinity loop... if (Mijosef::get('utility')->JoomFishInstalled() && class_exists('JoomFishManager')) { JoomFishManager::getInstance(); } // Post varsa yönlendirme $post = JRequest::get('post'); if (is_array($post) && !empty($post)) { return; } // Ajax durumunda yönlendirme yapma $tmpl = JRequest::getCmd('tmpl'); $format = JRequest::getCmd('format'); if ($tmpl == 'component' || $format == 'raw') { return; } // www settings $uri =& JFactory::getURI(); $host =& $uri->getHost(); $redirect = false; $wwwredirect = $this->MijosefConfig->redirect_to_www; if ($wwwredirect != 0) { if ($wwwredirect == 1 && strpos($host, 'www') !== 0) { $redirect = true; $uri->setHost('www.' . $host); } elseif ($wwwredirect == 2 && strpos($host, 'www') === 0) { $redirect = true; $uri->setHost(substr($host, 4, strlen($host))); } } if ($redirect === true) { $mainframe->redirect($uri->toString()); $mainframe->close(); } }
/** * Get a list of the available menus. * * @return array An array of the available menus (from the menu types table). * @since 1.6 */ public static function getMenus() { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('a.*, SUM(b.home) AS home'); $query->from('#__menu_types AS a'); $query->leftJoin('#__menu AS b ON b.menutype = a.menutype AND b.home != 0 AND (b.language=\'*\' OR b.language=\'' . JoomFishManager::getDefaultLanguage() . '\')'); $query->select('b.language'); $query->leftJoin('#__languages AS l ON l.lang_code = language'); $query->select('l.image'); $query->select('l.sef'); $query->select('l.title_native'); $query->where('(b.client_id = 0 OR b.client_id IS NULL)'); //sqlsrv change $query->group('a.id, a.menutype, a.description, a.title, b.menutype,b.language,l.image,l.sef,l.title_native'); $db->setQuery($query); $result = $db->loadObjectList(); return $result; }
/** * PHP 4 constructor for the tasker * * @return joomfishTasker */ function __construct() { parent::__construct(); $this->registerDefaultTask('showTranslate'); $this->act = JRequest::getVar('act', ''); $this->task = JRequest::getVar('task', ''); $this->cid = JRequest::getVar('cid', array(0)); if (!is_array($this->cid)) { $this->cid = array(0); } $this->fileCode = JRequest::getVar('fileCode', ''); $this->_joomfishManager =& JoomFishManager::getInstance(); $this->registerTask('overview', 'showTranslate'); $this->registerTask('edit', 'editTranslation'); $this->registerTask('apply', 'saveTranslation'); $this->registerTask('save', 'saveTranslation'); $this->registerTask('publish', 'publishTranslation'); // NB the method will check on task $this->registerTask('unpublish', 'publishTranslation'); $this->registerTask('remove', 'removeTranslation'); $this->registerTask('preview', 'previewTranslation'); $this->registerTask('orphans', 'showOrphanOverview'); $this->registerTask('orphandetail', 'showOrphanDetail'); $this->registerTask('removeorphan', 'removeOrphan'); // Populate data used by controller global $mainframe; $this->_catid = $mainframe->getUserStateFromRequest('selected_catid', 'catid', ''); $this->_select_language_id = $mainframe->getUserStateFromRequest('selected_lang', 'select_language_id', '-1'); $this->_language_id = JRequest::getVar('language_id', $this->_select_language_id); $this->_select_language_id = $this->_select_language_id == -1 && $this->_language_id != -1 ? $this->_language_id : $this->_select_language_id; // Populate common data used by view // get the view $this->view =& $this->getView("translate"); $model =& $this->getModel('translate'); $this->view->setModel($model, true); // Assign data for view $this->view->assignRef('catid', $this->_catid); $this->view->assignRef('select_language_id', $this->_select_language_id); $this->view->assignRef('task', $this->task); $this->view->assignRef('act', $this->act); }
function JreviewsParseRoute($segments) { $vars = array(); # Load own uri to overcome Joomla encoding issues with Greek params $uri = cmsFramework::_getUri(); // Fix for Joomfish. Remove the language segment from the url if (class_exists('JoomFishManager')) { $lang = JFactory::getLanguage(); $language = $lang->getTag(); $jfm = JoomFishManager::getInstance(); $lang_shortcode = $jfm->getLanguageCode($language); if (strstr($uri, '/' . $lang_shortcode . '/')) { $uri = str_replace('/' . $lang_shortcode . '/', '/', $uri); } } $new_segments = cmsFramework::_parseSefRoute($uri); if (end($new_segments) == 'index.php') { $new_segments = $segments; } // Remove Joomla language segment from url if (isset($_GET['language']) && $_GET['language'] != '' && strlen($new_segments[0]) == 2) { $new_segments[0] = 'index.php'; } # Fix for sef without mod rewrite. Without it the sort urls don't work. // Remove the Itemid related segments when mod rewrite is disabled and Itemid exists if ($new_segments[0] == 'index.php' && $new_segments[1] != 'component') { foreach ($new_segments as $key => $segment) { if (!in_array(str_replace(' ', '+', $segment), $segments) && !in_array(JreviewsStrReplaceOnce('-', ':', urlencode($segment)), $segments)) { unset($new_segments[$key]); } } } if (count($new_segments) >= 3 && isset($new_segments[0]) && $new_segments[0] == 'index.php' && isset($new_segments[1]) && $new_segments[1] == 'component' && isset($new_segments[2]) && $new_segments[2] == 'jreviews') { array_shift($new_segments); array_shift($new_segments); array_shift($new_segments); } $vars['url'] = implode('/', $new_segments); return $vars; }
public static function getTranslateParams($type = '', $original, $translation, $fieldname, $fields = null) { JoomFishManager::addIncludePath(JOOMFISH_LIBPATH . DS . 'translateparams', 'translateparams'); JoomFishManager::addIncludePath(JOOMFISH_LIBPATH . DS . 'contentelement' . DS . 'contentelements', 'translateparams'); $paramsclass = "TranslateParams_" . $type; if (!class_exists($paramsclass)) { // Search for the class file in the include paths. jimport('joomla.filesystem.path'); if ($path = JPath::find(JoomFishManager::addIncludePath('', 'translateparams'), strtolower($type) . '.php')) { include_once $path; } else { if ($path = JPath::find(JoomFishManager::addIncludePath('', 'translateparams'), $paramsclass . '.php')) { include_once $path; } } } if (!class_exists($paramsclass)) { jimport('joomfish.translateparams.translateparams'); $paramsclass = "TranslateParams"; } return new $paramsclass($original, $translation, $fieldname, $fields); }
/** * Deletes the selected translations (only the translations of course) * @return string message */ function _removeTranslation($catid, $cid) { $message = ''; $db = JFactory::getDBO(); foreach ($cid as $cid_row) { list($translationid, $contentid, $language_id) = explode('|', $cid_row); $jfManager = JoomFishManager::getInstance(); $contentElement = $jfManager->getContentElement($catid); $contentTable = $contentElement->getTableName(); $contentid = intval($contentid); $translationid = intval($translationid); // safety check -- complete overkill but better to be safe than sorry // get the translation details JLoader::import('models.JFContent', JOOMFISH_ADMINPATH); $translation = new jfContent($db); $translation->load($translationid); if (!isset($translation) || $translation->id == 0) { $this->setState('message', JText::sprintf('NO_SUCH_TRANSLATION', $translationid)); continue; } // make sure translation matches the one we wanted if ($contentid != $translation->reference_id) { $this->setState('message', JText::_('Something dodgy going on here')); continue; } $sql = "DELETE from #__jf_content WHERE reference_table='{$catid}' and language_id={$language_id} and reference_id={$contentid}"; $db->setQuery($sql); $db->query(); if ($db->getErrorNum() != 0) { $this->setError(JText::_('Something dodgy going on here')); JError::raiseWarning(400, JTEXT::_('No valid table information: ') . $db->getErrorMsg()); continue; } else { $this->setState('message', JText::_('Translation successfully deleted')); } } return $message; }
/** * Sets up ContentElement Cache - mainly used for data to determine primary key id for tablenames ( and for * future use to allow tables to be dropped from translation even if contentelements are installed ) */ function _setupContentElementCache() { $db =& JFactory::getDBO(); // Make usre table exists otherwise create it. $db->setQuery("CREATE TABLE IF NOT EXISTS `#__jf_tableinfo` ( `id` int(11) NOT NULL auto_increment, `joomlatablename` varchar(100) NOT NULL default '', `tablepkID` varchar(100) NOT NULL default '', PRIMARY KEY (`id`)) TYPE=MyISAM"); $db->query(); // clear out existing data $db->setQuery("DELETE FROM `#__jf_tableinfo`"); $db->query(); $joomfishManager =& JoomFishManager::getInstance(); $contentElements = $joomfishManager->getContentElements(true); $sql = "INSERT INTO `#__jf_tableinfo` (joomlatablename,tablepkID) VALUES "; $firstTime = true; foreach ($contentElements as $contentElement) { $tablename = $contentElement->getTableName(); $refId = $contentElement->getReferenceID(); $sql .= $firstTime ? "" : ","; $sql .= " ('" . $tablename . "', '" . $refId . "')"; $firstTime = false; } $db->setQuery($sql); $db->query(); }
function _plgListingAfterSave(&$model) { // Limit running this for new/edited listings. Not deletion of images or other listing actions. if ($this->c->name == 'listings' && in_array($this->c->action, array('_save'))) { include_once PATH_ROOT . 'administrator' . DS . 'components' . DS . 'com_joomfish' . DS . 'models' . DS . 'ContentObject.php'; $lang =& JFactory::getLanguage(); $language = $lang->getTag(); $jfm =& JoomFishManager::getInstance(); $contentElement = $jfm->getContentElement('content'); $actContentObject = new ContentObject($jfm->getLanguageID($language), $contentElement); $object = (object) $model->data['Listing']; $actContentObject->loadFromContentID($object->id); $actContentObject->copyContentToTranslation($object, $object); $actContentObject->setPublished($this->autoPublishTranslation); //Automatically publishes the translations $actContentObject->store(); if ($jfm->getCfg("transcaching", 1)) { // clean the cache! $cache = $jfm->getCache($language); $cache->clean(); } } }
public function getInput() { if (JPath::find(JPATH_SITE . DS . 'components' . DS . 'com_joomfish' . DS . 'helpers', 'defines.php')) { require_once JPATH_SITE . DS . 'components' . DS . 'com_joomfish' . DS . 'helpers' . DS . 'defines.php'; jimport('joomfish.manager'); } else { JError::raiseNotice('no_jf_component', JText::_('Joom!Fish component not installed correctly. Plugin not executed')); } $jfm = JoomFishManager::getInstance(); $activeLanguages = $jfm->getLanguagesIndexedById(); $value = $this->value; if (!is_array($value)) { $default = ""; $value = array(); foreach ($activeLanguages as $key => $val) { $value[$key] = $val->lang_id . "::" . $default . $val->sef; } } $indexedvalues = array(); foreach ($value as $val) { list($key, $val) = explode("::", $val, 2); $indexedvalues[$key] = $val; } $html = "<fieldset style='clear:left'><table>"; $html .= "<tr style='font-weight:bold;'><td>" . JText::_('JFIELD_LANGUAGE_LABEL') . "</td><td>" . JText::_('JFIELD_LANGUAGE_LABEL') . "</td></tr>"; foreach ($activeLanguages as $key => $val) { $html .= "<tr>"; $html .= '<td>' . $val->name . '</td><td>'; $prefix = array_key_exists($val->lang_id, $indexedvalues) ? $indexedvalues[$val->lang_id] : "lang-" . $val->sef; $idprefix = $val->lang_id . "::" . $prefix; $html .= "<input type='text' length='10' maxlength='50' id='sefprefix" . $val->lang_id . "' onblur='document.getElementById(\"hiddensefprefix" . $val->lang_id . "\").value=\"" . $val->lang_id . "::\"+this.value;' value='" . $prefix . "' />"; $html .= "<input type='hidden' id='hiddensefprefix" . $val->lang_id . "' name='" . $this->name . "[]' value='" . $idprefix . "' />"; $html .= "</td></tr>"; } $html .= "</table></fieldset>"; return $html; }
/** * Overloaded bind function * * @param array $array Named array * @param mixed $ignore An optional array or space separated list of properties to ignore while binding. * * @return mixed Null if operation was satisfactory, otherwise returns an error * * @see JTable::bind * @since 11.1 */ public function bind($array, $ignore = '') { // Verify that the default home menu is not unset if ($this->home == '1' && ($this->language == '*' || $this->language == JoomFishManager::getDefaultLanguage()) && $array['home'] == '0') { $this->setError(JText::_('JLIB_DATABASE_ERROR_MENU_CANNOT_UNSET_DEFAULT_DEFAULT')); return false; } //Verify that the default home menu set to "all" languages" is not unset if ($this->home == '1' && ($this->language == '*' || $this->language == JoomFishManager::getDefaultLanguage()) && $array['language'] != '*' && $array['language'] != JoomFishManager::getDefaultLanguage()) { $this->setError(JText::_('JLIB_DATABASE_ERROR_MENU_CANNOT_UNSET_DEFAULT')); return false; } // Verify that the default home menu is not unpublished if ($this->home == '1' && ($this->language == '*' || $this->language == JoomFishManager::getDefaultLanguage()) && $array['published'] != '1') { $this->setError(JText::_('JLIB_DATABASE_ERROR_MENU_UNPUBLISH_DEFAULT_HOME')); return false; } if (isset($array['params']) && is_array($array['params'])) { $registry = new JRegistry(); $registry->loadArray($array['params']); $array['params'] = (string) $registry; } return JTableNested::bind($array, $ignore); }
function fetchElement($name, $value, &$node, $control_name) { if (JPath::find(JPATH_SITE . DS . 'components' . DS . 'com_joomfish' . DS . 'helpers', 'defines.php')) { require_once JPATH_SITE . DS . 'components' . DS . 'com_joomfish' . DS . 'helpers' . DS . 'defines.php'; require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_joomfish' . DS . 'classes' . DS . 'JoomfishManager.class.php'; } else { JError::raiseNotice('no_jf_component', JText::_('Joom!Fish component not installed correctly. Plugin not executed')); } $jfm = JoomFishManager::getInstance(); $activeLanguages = $jfm->getLanguagesIndexedById(); if (!is_array($value)) { $default = ""; $value = array(); foreach ($activeLanguages as $key => $val) { $value[$key] = $val->id . "::" . $default . $val->shortcode; } } $indexedvalues = array(); foreach ($value as $val) { list($key, $val) = split("::", $val, 2); $indexedvalues[$key] = $val; } $html = "<fieldset><table>"; $html .= "<tr style='font-weight:bold;'><td>" . JText::_("Language") . "</td><td>" . JText::_("Prefix") . "</td></tr>"; foreach ($activeLanguages as $key => $val) { $html .= "<tr>"; $html .= '<td>' . $val->name . '</td><td>'; $prefix = array_key_exists($val->id, $indexedvalues) ? $indexedvalues[$val->id] : "lang-" . $val->shortcode; $idprefix = $val->id . "::" . $prefix; $html .= "<input type='text' length='10' maxlength='50' id='sefprefix" . $val->id . "' onblur='document.getElementById(\"hiddensefprefix" . $val->id . "\").value=\"" . $val->id . "::\"+this.value;' value='" . $prefix . "' />"; $html .= "<input type='hidden' id='hiddensefprefix" . $val->id . "' name='" . $control_name . '[' . $name . '][]' . "' value='" . $idprefix . "' />"; $html .= "</td></tr>"; } $html .= "</table></fieldset>"; return $html; }
/** * This method creates an overview of unpublished translations independed of the content element * @return array of unpublished translations or null */ private function _testUnpublisedTranslations() { $db = JFactory::getDBO(); $unpublishedTranslations = null; $sql = "select jfc.reference_table, jfc.reference_id, jfc.language_id, jfl.title as language" . "\n from #__jf_content as jfc, #__languages as jfl" . "\n where jfc.published=0 and jfc.language_id = jfl.lang_id" . "\n group by jfc.reference_table, jfc.reference_id, jfc.language_id" . "\n limit 0, 50"; $db->setQuery($sql); if ($rows = $db->loadObjectList()) { foreach ($rows as $row) { $unpublished = array(); $unpublished['reference_table'] = $row->reference_table; $unpublished['catid'] = $row->reference_table; $unpublished['reference_id'] = $row->reference_id; $unpublished['language_id'] = $row->language_id; $unpublished['language'] = $row->language; $unpublishedTranslations[] = $unpublished; } } $sqlnative = $db->getQuery(true); $sqlnative->select('jfc.reference_table, jfc.reference_id, jfc.translation_id, jfc.language AS langcode, jfl.title AS language, jfl.lang_id AS language_id'); $sqlnative->from('#__jf_translationmap AS jfc'); $sqlnative->join('', '#__languages AS jfl ON jfc.language = jfl.lang_code'); $celements = JoomFishManager::getInstance()->getContentElements(); $where = array(); foreach ($celements as $contentElement) { if ($contentElement->getTarget() == "native") { $sqlnative->leftJoin('#__' . $contentElement->getTableName() . ' AS jf' . $contentElement->getTableName() . ' ON jfc.reference_table=\'' . $contentElement->getTableName() . '\'' . ' AND jf' . $contentElement->getTableName() . '.' . $contentElement->getReferenceId() . '= jfc.translation_id' . ' AND jf' . $contentElement->getTableName() . '.' . $contentElement->getPublishedField() . '=0'); $where[] = 'jf' . $contentElement->getTableName() . '.' . $contentElement->getPublishedField() . '=0'; $sqlnative->select('jf' . $contentElement->getTableName() . '.' . $contentElement->getPublishedField() . ' AS published'); } } $where = implode(' OR ', $where); $sqlnative->where($where); $db->setQuery($sqlnative); if ($rowsnative = $db->loadObjectList()) { foreach ($rowsnative as $row) { $unpublished = array(); $unpublished['reference_table'] = $row->reference_table; $unpublished['catid'] = $row->reference_table; $unpublished['reference_id'] = $row->reference_id; $unpublished['language_id'] = $row->language_id; $unpublished['language'] = $row->language; $unpublishedTranslations[] = $unpublished; } } return $unpublishedTranslations; }
function _determineLanguage($getLang = null, $redir = false, $useMainLang = false) { // set the language for JoomFish if (SEFTools::JoomFishInstalled()) { $sefConfig =& SEFConfig::getConfig(); $registry =& JFactory::getConfig(); // Check if the Jfrouter is enabled $jfrouterEnabled = JPluginHelper::isEnabled('system', 'jfrouter'); // save the default language of the site if needed if (!$jfrouterEnabled) { $locale = $registry->getValue('config.language'); $GLOBALS['mosConfig_defaultLang'] = $locale; $registry->setValue("config.defaultlang", $locale); } // get instance of JoomFishManager to obtain active language list and config values $jfm =& JoomFishManager::getInstance(); // Get language from request if (!empty($getLang)) { $lang = $getLang; } // Try to get language code from JF cookie if ($sefConfig->jfLangCookie) { $jfCookie = JRequest::getVar('jfcookie', null, 'COOKIE'); if (isset($jfCookie['lang'])) { $cookieCode = $jfCookie['lang']; } } // Try to find language from browser settings if ($sefConfig->jfBrowserLang && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $active_iso = array(); $active_isocountry = array(); $active_code = array(); $activeLanguages = $jfm->getActiveLanguages(); if (count($activeLanguages) > 0) { foreach ($activeLanguages as $alang) { $active_iso[] = $alang->iso; if (preg_match('/[_-]/i', $alang->iso)) { $iso = str_replace('_', '-', $alang->iso); $isocountry = explode('-', $iso); $active_isocountry[] = $isocountry[0]; } $active_code[] = $alang->shortcode; } // figure out which language to use - browser languages are based on ISO codes $browserLang = explode(',', $_SERVER["HTTP_ACCEPT_LANGUAGE"]); foreach ($browserLang as $blang) { if (in_array($blang, $active_iso)) { $client_lang = $blang; break; } $shortLang = substr($blang, 0, 2); if (in_array($shortLang, $active_isocountry)) { $client_lang = $shortLang; break; } // compare with code if (in_array($shortLang, $active_code)) { $client_lang = $shortLang; break; } } if (!empty($client_lang)) { if (strlen($client_lang) == 2) { $browserCode = SEFTools::getLangLongCode($client_lang); } else { $browserCode = $client_lang; } } } } if (!$jfrouterEnabled && $redir && $sefConfig->langPlacement != _COM_SEF_LANG_DOMAIN && (isset($cookieCode) || isset($browserCode)) && $sefConfig->mainLanguage != '0') { if (isset($cookieCode)) { $sc = SEFTools::getLangCode($cookieCode); } else { $sc = SEFTools::getLangCode($browserCode); } // Check the referer to see if we should redirect $shouldRedir = false; if (isset($_SERVER['HTTP_REFERER'])) { $refUri = new JURI($_SERVER['HTTP_REFERER']); $uri = JURI::getInstance(); $refHost = $refUri->getHost(); $host = $uri->getHost(); if ($refHost != $host) { $shouldRedir = true; } } else { $shouldRedir = true; } if ($shouldRedir) { if (!empty($lang) && $sc != $lang || empty($lang) && $sc != $sefConfig->mainLanguage) { // Redirect to correct site $mainframe =& JFactory::getApplication(); $href = JRoute::_('index.php?lang=' . $sc, false); $mainframe->redirect($href); exit; } } } // Check if language is selected if (empty($lang) && !$jfrouterEnabled) { // If route and query string are empty, use the main language // note: removed && $redir - it was not possible to switch language to main language // on other page than homepage (let's see if it causes any other problem) // note: added $useMainLang - now it should work for both the VM checkout and using // main language with component's own router if ($useMainLang && (empty($code) || !JLanguage::exists($code))) { if ($sefConfig->mainLanguage != '0') { $code = SEFTools::GetLangLongCode($sefConfig->mainLanguage); } } // 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($browserCode)) { $code = $browserCode; } } // Get language from configuration if needed if (empty($code) || !JLanguage::exists($code)) { if ($sefConfig->mainLanguage != '0') { $code = SEFTools::GetLangLongCode($sefConfig->mainLanguage); } } // Get default language if needed if (empty($code) || !JLanguage::exists($code)) { $code = $registry->getValue('config.language'); } } // get language long code if needed if (empty($code)) { if (empty($lang)) { return; } $code = SEFTools::getLangLongCode($lang); } if (!empty($code)) { $jfrparams = $registry->getValue('jfrouter.params'); // set the site language $resetLang = false; if ($code != SEFTools::getLangLongCode()) { if (!$jfrouterEnabled || $jfrouterEnabled && $jfrparams->get('sefordomain', 'sefprefix') == 'sefprefix') { $language =& JFactory::getLanguage(); $language->setLanguage($code); $language->load(); // set the backward compatible language $backLang = $language->getBackwardLang(); $GLOBALS['mosConfig_lang'] = $backLang; $registry->setValue("config.lang", $backLang); $resetLang = true; } } // set joomfish language if needed if ($resetLang || !$jfrouterEnabled) { $jfLang = TableJFLanguage::createByJoomla($code); $registry->setValue("joomfish.language", $jfLang); // set some more variables $mainframe =& JFactory::getApplication(); $registry->setValue("config.multilingual_support", true); $mainframe->setUserState('application.lang', $jfLang->code); $registry->setValue("config.jflang", $jfLang->code); $registry->setValue("config.lang_site", $jfLang->code); $registry->setValue("config.language", $jfLang->code); $registry->setValue("joomfish.language", $jfLang); // overwrite global config with values from $jfLang if set to in JoomFish $jfparams = JComponentHelper::getParams("com_joomfish"); $overwriteGlobalConfig = $jfparams->get('overwriteGlobalConfig', 0); if ($overwriteGlobalConfig) { // We should overwrite additional global variables based on the language parameter configuration $langParams = new JParameter($jfLang->params); $paramarray = $langParams->toArray(); foreach ($paramarray as $key => $val) { $registry->setValue("config." . $key, $val); if (defined("_JLEGACY")) { $name = 'mosConfig_' . $key; $GLOBALS[$name] = $val; } } } // set the cookie with language if (!$jfrouterEnabled && $sefConfig->jfLangCookie || $jfrouterEnabled && $jfrparams->get('enableCookie', 1)) { setcookie("lang", "", time() - 1800, "/"); setcookie("jfcookie", "", time() - 1800, "/"); setcookie("jfcookie[lang]", $code, time() + 24 * 3600, '/'); } } } } }
/** * */ function checkstatus() { $type = JRequest::getString('type', ''); $phase = JRequest::getInt('phase', 1); $statecheck_i = JRequest::getInt('statecheck_i', -1); $htmlResult = JText::_('MANAGEMENT_INTRO'); $link = ''; // get the view $this->_view = $this->getView("statistics"); $this->_model = $this->getModel('statistics'); switch ($type) { case 'translation_status': $message = ''; $session = JFactory::getSession(); $translationStatus = $session->get('translationState', array()); $translationStatus = $this->_model->testTranslationStatus($translationStatus, $phase, $statecheck_i, $message); $session->set('translationState', $translationStatus); $htmlResult = $this->_view->renderTranslationStatusTable($translationStatus, $message); if ($phase <= 3) { $link = 'index3.php?option=com_joomfish&task=statistics.check&type=translation_status&phase=' . $phase; if ($statecheck_i > -1) { $link .= '&statecheck_i=' . $statecheck_i; } } else { $session->set('translationState', null); } break; case 'original_status': $message = ''; $session = JFactory::getSession(); $originalStatus = $session->get('originalStatus', array()); $langCodes = array(); $jfManager = JoomFishManager::getInstance(); $languages = $jfManager->getLanguages(false); foreach ($languages as $lang) { $langCodes[] = $lang->getLanguageCode(); } $originalStatus = $this->_model->testOriginalStatus($originalStatus, $phase, $statecheck_i, $message, $languages); $session->set('originalStatus', $originalStatus); $htmlResult = $this->_view->renderOriginalStatusTable($originalStatus, $message, $langCodes); if ($phase <= 2) { $link = 'index3.php?option=com_joomfish&task=statistics.check&type=original_status&phase=' . $phase; if ($statecheck_i > -1) { $link .= '&statecheck_i=' . $statecheck_i; } } else { $session->set('originalStatus', null); } break; } // Set the layout $this->_view->setLayout('result'); $this->_view->assignRef('htmlResult', $htmlResult); $this->_view->assignRef('reload', $link); $this->_view->display(); }
/** * Version information of the component * */ public function version() { return JoomFishManager::getVersion(); }
function shSetJfLanguage($requestlang) { if (empty($requestlang)) { return; } // get instance of JoomFishManager to obtain active language list and config values $jfm =& JoomFishManager::getInstance(); $activeLanguages = $jfm->getActiveLanguages(); // get the name of the language file for joomla $jfLang = TableJFLanguage::createByShortcode($requestlang, true); // set Joomfish stuff // Get the global configuration object global $mainframe; $registry =& JFactory::getConfig(); $params = $registry->getValue("jfrouter.params"); $enableCookie = empty($params) ? 1 : $params->get('enableCookie', 1); if ($enableCookie) { setcookie("lang", "", time() - 1800, "/"); setcookie("jfcookie", "", time() - 1800, "/"); setcookie("jfcookie[lang]", $jfLang->shortcode, time() + 24 * 3600, '/'); } $GLOBALS['iso_client_lang'] = $jfLang->shortcode; $GLOBALS['mosConfig_lang'] = $jfLang->code; $mainframe->setUserState('application.lang', $jfLang->code); $registry->setValue("config.jflang", $jfLang->code); $registry->setValue("config.lang_site", $jfLang->code); $registry->setValue("config.language", $jfLang->code); $registry->setValue("joomfish.language", $jfLang); // Force factory static instance to be updated if necessary $lang =& JFactory::getLanguage(); if ($jfLang->code != $lang->getTag()) { $lang = JFactory::_createLanguage(); } $lang16 =& shjlang16Helper::getLanguage(); if ($jfLang->code != $lang16->getTag()) { $lang16 = Jlanguage16::createLanguage(); } // overwrite with the valued from $jfLang $params = new JParameter($jfLang->params); $paramarray = $params->toArray(); foreach ($paramarray as $key => $val) { $registry->setValue("config." . $key, $val); if (defined("_JLEGACY")) { $name = 'mosConfig_' . $key; $GLOBALS[$name] = $val; } } // set our own data $GLOBALS['shMosConfig_lang'] = $lang->get('backwardlang', 'english'); $GLOBALS['shMosConfig_locale'] = $jfLang->code; $GLOBALS['shMosConfig_shortcode'] = $jfLang->shortcode; }
/** * Testing if old installation is found and upgraded? * This method is rebuild and checks now for old JoomFish installations not MambelFish anymore! * @return int 0 := component not installed, 1 := installed but not upgraded, 2 := installed and upgraded */ private function _testOldInstall() { $db = JFactory::getDBO(); $oldInstall = 0; $db->setQuery("SHOW TABLES LIKE '%jf_%'"); $db->query(); $rows = $db->loadResultArray(); foreach ($rows as $row) { if (preg_match('/mbf_content/i', $row)) { $oldInstall = 1; break; } } $jfManager = JoomFishManager::getInstance(); if ($oldInstall == 1 && $jfManager->getCfg('mbfupgradeDone')) { $oldInstall = 2; } return $oldInstall; }
/** * Constructor */ function __construct() { //jimport('JoomfishManager.class'); $this->_joomfishManager =& JoomFishManager::getInstance(); }
/** * This method copies originals content items to one selected language * * @param unknown_type $original2languageInfo * @param unknown_type $phase * @param unknown_type $statecheck_i * @param unknown_type $message * @return array Information result array */ function copyOriginalToLanguage($original2languageInfo, &$phase, &$state_catid, $language_id, $overwrite, &$message) { $db = JFactory::getDBO(); $jfManager = JoomFishManager::getInstance(); $sql = ''; switch ($phase) { case 1: $original2languageInfo = array(); $sql = "select distinct CONCAT('" . $db->getPrefix() . "',reference_table) from #__jf_content"; $db->setQuery($sql); $tablesWithTranslations = $db->loadResultArray(); $sql = "SHOW TABLES"; $db->setQuery($sql); $tables = $db->loadResultArray(); $allContentElements = $jfManager->getContentElements(); foreach ($allContentElements as $catid => $ce) { $ceInfo = array(); $ceInfo['name'] = $ce->Name; $ceInfo['catid'] = $catid; $ceInfo['total'] = '??'; $ceInfo['existing'] = '??'; $ceInfo['processed'] = '0'; $ceInfo['copied'] = '0'; $ceInfo['copy'] = false; $contentTable = $ce->getTable(); $tablename = $db->getPrefix() . $contentTable->Name; if (in_array($tablename, $tables)) { // get total count of table entries $sql = 'SELECT COUNT(*) FROM ' . $tablename . ' AS c'; if ($contentTable->Filter != '') { $sql .= ' WHERE ' . $contentTable->Filter; } $db->setQuery($sql); $ceInfo['total'] = $db->loadResult(); } $original2languageInfo[$catid] = $ceInfo; } $phase = 1; // stays with 1 as the second phase needs the bottom to be clicked $message = JText::_('COPY2LANGUAGE_INFO'); break; case 2: if ($state_catid != '') { // removing all content information which are not to be copied! $celements = explode(',', $state_catid); if (count($celements) < count($original2languageInfo)) { $shortList = array(); foreach ($celements as $element) { $shortList[$element] = $original2languageInfo[$element]; } $original2languageInfo = $shortList; } } $phase = 3; case 3: if ($state_catid != '') { $celements = explode(',', $state_catid); // copy the information per content element file, starting with the first in the list $catid = array_shift($celements); $catidCompleted = false; // coyping the information from the selected content element if ($catid != '' && $language_id != 0) { // get's the config settings on how to store original files $storeOriginalText = $jfManager->getCfg('storageOfOriginal') == 'md5' ? false : true; // make sure we are only transfering data within parts (max 100 items at a time) $ceInfo =& $original2languageInfo[$catid]; if (intval($ceInfo['processed']) < intval($ceInfo['total'])) { $contentElement = $jfManager->getContentElement($catid); $db->setQuery($contentElement->createContentSQL($language_id, null, $ceInfo['processed'], 10, array())); $rows = $db->loadObjectList(); if ($db->getErrorNum()) { JError::raiseError(500, JTEXT::_('Invalid Content SQL : ') . $db->getErrorMsg()); return false; } else { for ($i = 0; $i < count($rows); $i++) { $contentObject = new ContentObject($language_id, $contentElement); $contentObject->readFromRow($rows[$i]); if ($overwrite || $contentObject->translation_id == 0) { $contentObject->copyContentToTranslation($rows[$i], $rows[$i]); $contentObject->store(); $ceInfo['copied'] += 1; } $rows[$i] = $contentObject; } $ceInfo['processed'] += $i; if ($ceInfo['processed'] >= $ceInfo['total']) { $catidCompleted = true; } } } } if ($catidCompleted) { if (count($celements) > 0) { $state_catid = implode(',', $celements); } else { $state_catid = ''; } } } $message = JText::_('COPY2LANGUAGE_PROCESS'); if ($state_catid == '') { $phase = 4; // Successfully finished phase 3 $message = JText::_('COPY2LANGUAGE_COMPLETED'); } break; } return $original2languageInfo; }
','clear');"><span class="icon-32-delete"></span><?php echo JText::_('Delete'); ?> </a> <?php } } ?> </td> </tr> <?php } else { // Special Params handling // if translated value is blank then we always copy across the original value $joomFishManager =& JoomFishManager::getInstance(); if ($joomFishManager->getCfg('copyparams', 1) && $translationContent->value == "") { $translationContent->value = $field->originalValue; } ?> <tr class="<?php echo "row{$k}"; ?> "> <td colspan="3"> <table class='translateparams'> <tr> <td valign="top" style="text-align:center!important"><?php echo JText::_('ORIGINAL'); ?> </td>
/** * Method to initialize the language depended image (flag) browser * The browser is initialized with the default root path based on the Joomfish configuration * @param $tpl */ public function filebrowser($tpl = null) { $document = JFactory::getDocument(); $livesite = JURI::base(); $document->addStyleSheet($livesite . 'components/com_joomfish/assets/css/joomfish.css'); $document->addStyleSheet(JURI::root(true) . '/media/media/css/popup-imagelist.css'); JHtml::_('behavior.modal'); JHTML::script('com_joomfish/joomfish.mootools.js', true, true); $jfManager = JoomFishManager::getInstance(); $root = $jfManager->getCfg('directory_flags'); $current = JRequest::getVar('current', ''); if ($current != '') { $root = dirname($current); } // remove leading / in case it exists $root = preg_replace('/^\\/(.*)/', "\$1", $root); $flagField = JRequest::getVar('flagField', ''); $folder = JRequest::getVar('folder', $root, 'default', 'path'); $type = JRequest::getCmd('type', 'image'); if (JString::trim($folder) == "") { $path = JPATH_SITE . DS . JPath::clean('/'); } else { $path = JPATH_SITE . DS . JPath::clean($folder); } JPath::check($path); $title = JText::_('BROWSE_LANGUAGE_FLAGS'); $filter = '.jpg|png|gif|xcf|odg|bmp|jpeg'; if (JFolder::exists($path)) { $folderList = JFolder::folders($path); $filesList = JFolder::files($path, $filter); } if (!empty($folder)) { $parent = substr($folder, 0, strrpos($folder, '/')); } else { $parent = ''; } $this->assignRef('folders', $folderList); $this->assignRef('files', $filesList); $this->assignRef('parent', $parent); $this->assignRef('path', $folder); $this->assignRef('type', $type); $this->assignRef('title', $title); $this->assignRef('flagField', $flagField); parent::display($tpl); }
if (!JoomfishExtensionHelper::isJoomFishActive()) { return; } $db = JFactory::getDBO(); $db->_profile("langmod", true); // Include the helper functions only once JLoader::import('helper', dirname(__FILE__), 'jfmodule'); JLoader::register('JoomFishVersion', JOOMFISH_ADMINPATH . DS . 'version.php'); $type = trim($params->get('type', 'rawimages')); $layout = JModuleHelper::getLayoutPath('mod_jflanguageselection', $type); $inc_jf_css = intval($params->get('inc_jf_css', 1)); $type = trim($params->get('type', 'dropdown')); $show_active = intval($params->get('show_active', 1)); $spacer = trim($params->get('spacer', ' ')); jimport('joomla.filesystem.file'); $jfManager = JoomFishManager::getInstance(); $langActive = $jfManager->getActiveLanguages(true); // setup Joomfish plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('joomfish'); $dispatcher->trigger('onAfterModuleActiveLanguages', array(&$langActive)); $outString = ''; if (!isset($langActive) || count($langActive) == 0) { // No active languages => nothing to show :-( return; } // check for unauthorised access to inactive language $curLanguage = JFactory::getLanguage(); if (!array_key_exists($curLanguage->getTag(), $langActive)) { reset($langActive); //$currentlang = current($langActive);
/** * Description * * @access public * @return int The number of rows returned from the most recent query. */ function getNumRows($cur = null, $translate = true, $language = null) { $count = parent::getNumRows($cur); if (!$translate) { return $count; } // setup Joomfish plugins $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('joomfish'); // must allow fall back for contnent table localisation to work $allowfallback = true; $refTablePrimaryKey = ""; $reference_table = ""; $ids = ""; $jfm =& JoomFishManager::getInstance(); $this->_setLanguage($language); $registry =& JFactory::getConfig(); $defaultLang = $registry->getValue("config.defaultlang"); if ($defaultLang == $language) { $rows = array($count); $dispatcher->trigger('onBeforeTranslation', array(&$rows, $ids, $reference_table, $language, $refTablePrimaryKey, $this->_getRefTables(), $this->_sql, $allowfallback)); $count = $rows[0]; return $count; } $rows = array($count); $dispatcher->trigger('onBeforeTranslation', array(&$rows, $ids, $reference_table, $language, $refTablePrimaryKey, $this->_getRefTables(), $this->_sql, $allowfallback)); $dispatcher->trigger('onAfterTranslation', array(&$rows, $ids, $reference_table, $language, $refTablePrimaryKey, $this->_getRefTables(), $this->_sql, $allowfallback)); $count = $rows[0]; return $count; }