/** * Overwritten insert function to enable storage of material created in non-default language. * Note that this creates a translation which is identical to the original - when we update * the original in the default language we then keep the translation (although it will appread out of date!). * * @param string table name * @param object instance with information to store * @param string primary key name of table * @param boolean debug info printed or not * @param boolean passthru without storing information in a translation table */ function updateObject($table, &$object, $keyName, $updateNulls = true, $passthru = false) { $params = JComponentHelper::getParams('com_falang'); //1.4.5 if fronEdition is set to off , keep previous system if ($params->get('frontEndEdition', 0) == 0) { return parent::updateObject($table, $object, $keyName, $updateNulls); } $pfunc = $this->_profile(); $falangManager = FalangManager::getInstance(); $current_lang = JFactory::getLanguage()->getTag(); //default site language $default_lang = JComponentHelper::getParams('com_languages')->get('site'); //we update if content language is set to all language or if content language is current_langauge // check if marked langage of content is the detaul language: if ($table == '#__content' && isset($object->id) && $object->id > 0) { $test = JTable::getInstance("Content"); $test->load($object->id); if ($test->language == '*') { if ($current_lang == $default_lang) { return parent::updateObject($table, $object, $keyName, $updateNulls); } } if ($test->language == $current_lang) { return parent::updateObject($table, $object, $keyName, $updateNulls); } } if (isset($falangManager) && $table != "#__falang_content") { $tableName = preg_replace('/^#__/', '', $table); $contentElement = $falangManager->getContentElement($tableName); if (isset($contentElement) && $contentElement->getFrontEdit() == 1) { include_once JPATH_ADMINISTRATOR . "/components/com_falang/models/ContentObject.php"; $actContentObject = new ContentObject($falangManager->getLanguageID($current_lang), $contentElement); $objectLanguague = isset($object->language) ? $object->language : null; //the object language must be a language tag $languageIsoList = array("*"); foreach ($falangManager->getLanguagesIndexedByCode(false) as $language) { $languageIsoList[] = $language->lang_code; } $validLanguage = in_array($objectLanguague, $languageIsoList); // 1 - si object * => objet joomla si langue cournate et langue en cours sont pareil // 2 - si object a une langue , alors object joolma si la langue de l'object = language en cours $joomlaObject = false; if ($objectLanguague == "*") { if ($current_lang == $default_lang) { $joomlaObject = true; } } if ($objectLanguague == $current_lang) { $joomlaObject = true; } //hikashop woraround // $lkeyName = method_exists($object, 'getKeyName') ? $object->getKeyName() : null; if (!empty($lkeyName) && $validLanguage && isset($objectLanguague) && !$joomlaObject) { $actContentObject->loadFromContentID($object->id); $actContentObject->updateMLContent($object); if (isset($object->state)) { $actContentObject->published = $object->state == 1 ? true : false; } else { if (isset($object->published)) { $actContentObject->published = $object->published == 1 ? true : false; } } $actContentObject->setPublished($actContentObject->published); $actContentObject->store(); return true; } else { //hikashop workaround this update hit. return parent::updateObject($table, $object, $keyName, $updateNulls); } } else { //content element not exist return parent::updateObject($table, $object, $keyName, $updateNulls); } } else { return parent::updateObject($table, $object, $keyName, $updateNulls); } }
/** * Overwritten insert function to enable storage of material created in non-default language. * Note that this creates a translation which is identical to the original - when we update * the original in the default language we then keep the translation (although it will appread out of date!). * * @param string table name * @param object instance with information to store * @param string primary key name of table * @param boolean debug info printed or not * @param boolean passthru without storing information in a translation table */ function updateObject($table, &$object, $keyName, $updateNulls = true, $passthru = false) { $params = JComponentHelper::getParams('com_falang'); $pfunc = $this->_profile(); $falangManager = FalangManager::getInstance(); $current_lang = JFactory::getLanguage()->getTag(); //default site language $default_lang = JComponentHelper::getParams('com_languages')->get('site'); //we update if content language is set to all language or if content language is current_langauge // check if marked langage of content is the detaul language: if ($table == '#__content' && isset($object->id) && $object->id > 0) { $test = JTable::getInstance("Content"); $test->load($object->id); if ($test->language == '*') { if ($current_lang == $default_lang) { return parent::updateObject($table, $object, $keyName, $updateNulls); } } if ($test->language == $current_lang) { return parent::updateObject($table, $object, $keyName, $updateNulls); } } if (isset($falangManager) && $table != "#__falang_content") { $tableName = preg_replace('/^#__/', '', $table); $contentElement = $falangManager->getContentElement($tableName); if (isset($contentElement)) { include_once JPATH_ADMINISTRATOR . "/components/com_falang/models/ContentObject.php"; $actContentObject = new ContentObject($falangManager->getLanguageID($current_lang), $contentElement); //hikashop woraround // $lkeyName = method_exists($object, 'getKeyName') ? $object->getKeyName() : null; if (!empty($lkeyName)) { $actContentObject->loadFromContentID($object->id); $actContentObject->updateMLContent($object); if (isset($object->state)) { $actContentObject->published = $object->state == 1 ? true : false; } else { if (isset($object->published)) { $actContentObject->published = $object->published == 1 ? true : false; } } //if ( $falangManager->getCfg("frontEndPublish")){ if ($params->get('frontEndEdition', 0) == 1) { $user = JFactory::getUser(); $access = new stdClass(); //$access->canPublish = $user->authorize('com_content', 'publish', 'content', 'all'); //if ($access->canPublish) $actContentObject->setPublished($actContentObject->published); $actContentObject->setPublished($actContentObject->published); } //if allow front-end translation if ($params->get('frontEndEdition', 0) == 1) { $actContentObject->store(); } else { $application = JFactory::getApplication(); $application->enqueueMessage(JText::_('PLG_SYSTEM_FALANGDRIVER_FRONT_UPDATE_NOT_AUTHORIZED'), 'notice'); return false; } } else { //hikashop workaround this update hit. return parent::updateObject($table, $object, $keyName, $updateNulls); } } //content element not exist $pfunc = $this->_profile($pfunc); //return parent::updateObject( $table, $object, $keyName, $updateNulls ); return true; } else { return parent::updateObject($table, $object, $keyName, $updateNulls); } }