Beispiel #1
0
 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();
         }
     }
 }
Beispiel #2
0
 /**
  * show original value in an IFrame - for form safety
  *
  */
 function originalValue()
 {
     $cid = trim(JRequest::getVar('cid', ""));
     $language_id = JRequest::getInt('lang', 0);
     if ($cid == "") {
         echo JText::_("Invalid paramaters");
         return;
     }
     $translation_id = 0;
     $contentid = intval($cid);
     $catid = $this->_catid;
     global $mainframe;
     $user =& JFactory::getUser();
     $db =& JFactory::getDBO();
     $actContentObject = null;
     if (isset($catid) && $catid != "") {
         $contentElement = $this->_joomfishManager->getContentElement($catid);
         JLoader::import('models.ContentObject', JOOMFISH_ADMINPATH);
         $actContentObject = new ContentObject($language_id, $contentElement);
         $actContentObject->loadFromContentID($contentid);
     }
     $fieldname = JRequest::getString('field', '');
     // get the view
     $this->view =& $this->getView('translate');
     // Set the layout
     $this->view->setLayout('originalvalue');
     // Assign data for view - should really do this as I go along
     $this->view->assignRef('actContentObject', $actContentObject);
     $this->view->assignRef('field', $fieldname);
     $this->view->display();
 }
 /**
  * Overwritten update function to enable storage of translated information.
  * Based on the configuration in the content elements the automatic storage of
  * information is activated or not. It is important that this upgraded method will ensure
  * that all information will be written into the translation table. Only in the case that the
  * default language is choosen the information will be updated directly within the original tables.
  * To make sure that all other information will be written into the tables as expected the
  * statements will be manipulated as needed.
  *
  * @param	string	table name
  * @param	object	instance with information to store
  * @param	string	primary key name of table
  * @param	boolean	update fields with null or not
  * @param	boolean	passthru without storing information in a translation table
  */
 function updateObject($table, &$object, $keyName, $updateNulls = true, $passthru = false)
 {
     $pfunc = $this->_profile();
     global $_JOOMFISH_MANAGER;
     if (isset($_JOOMFISH_MANAGER)) {
         $this->_setLanguage($language);
     }
     $conf =& JFactory::getConfig();
     $default_lang = $conf->getValue('config.defaultlang');
     // if the currect language is the site default language the translations will not be updated!
     $passthru = $language == $default_lang;
     if (!$passthru && isset($_JOOMFISH_MANAGER)) {
         $actContentObject = null;
         if (isset($table) && $table != "") {
             $tableName = ereg_replace('^#__', '', $table);
             if ($table != "#__jf_content") {
                 // *** QUESTION ***//
                 // IS THIS TEST APPROPRIATE HERE - I THINK IT MEANS YOU CAN'T DO A FIRST TRANSLATION FOR A TABLE VIA THE FRONT END
                 // ** TEST BEFORE 1.8 **//
                 //if ($this->translatedContentAvailable($table)) {
                 $contentElement = $_JOOMFISH_MANAGER->getContentElement($tableName);
                 if (isset($contentElement)) {
                     include_once JPATH_ADMINISTRATOR . "/components/com_joomfish/models/ContentObject.php";
                     $actContentObject = new ContentObject($_JOOMFISH_MANAGER->getLanguageID($language), $contentElement);
                     if (isset($object->{$keyName})) {
                         $actContentObject->loadFromContentID($object->{$keyName});
                         $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 ($_JOOMFISH_MANAGER->getCfg("frontEndPublish")) {
                             $user =& JFactory::getUser();
                             $access = new stdClass();
                             $access->canPublish = $user->authorize('com_content', 'publish', 'content', 'all');
                             if ($access->canPublish) {
                                 $actContentObject->setPublished($actContentObject->published);
                             }
                         }
                         $actContentObject->store();
                         if ($_JOOMFISH_MANAGER->getCfg("transcaching", 1)) {
                             // clean the cache!
                             $cache = $_JOOMFISH_MANAGER->getCache($language);
                             $cache->clean();
                         }
                     }
                 }
             }
             //}
         }
         $pfunc = $this->_profile($pfunc);
         return parent::updateObject($table, $object, $keyName, $updateNulls);
     } else {
         return parent::updateObject($table, $object, $keyName, $updateNulls);
     }
 }
Beispiel #4
0
 /**
  * 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);
     }
 }
Beispiel #5
0
    /**
     * render content state information
     */
    function renderContentState()
    {
        $joomFishManager = JoomFishManager::getInstance();
        $output = '';
        $alertContent = false;
        if (array_key_exists('unpublished', $this->contentInfo) && is_array($this->contentInfo['unpublished'])) {
            $alertContent = true;
        }
        ob_start();
        ?>
		<table class="adminlist">
			<tr>
				<th><?php 
        echo JText::_("UNPUBLISHED CONTENT ELEMENTS");
        ?>
</th>
				<th style="text-align: center;"><?php 
        echo JText::_("Language");
        ?>
</th>
				<th style="text-align: center;"><?php 
        echo JText::_("Publish");
        ?>
</th>
			</tr>
			<?php 
        $k = 0;
        if ($alertContent) {
            $curReftable = '';
            foreach ($this->contentInfo['unpublished'] as $ceInfo) {
                $contentElement = $joomFishManager->getContentElement($ceInfo['catid']);
                // Trap for content elements that may have been removed
                if (is_null($contentElement)) {
                    $name = "<span style='font-style:italic'>" . JText::sprintf("CONTENT_ELEMENT_MISSING", $ceInfo["reference_table"]) . "</span>";
                } else {
                    $name = $contentElement->Name;
                }
                if ($ceInfo["reference_table"] != $curReftable) {
                    $curReftable = $ceInfo["reference_table"];
                    $k = 0;
                    ?>
			<tr><td colspan="3"><strong><?php 
                    echo $name;
                    ?>
</strong></td></tr>
						<?php 
                }
                JLoader::import('models.ContentObject', JOOMFISH_ADMINPATH);
                $contentObject = new ContentObject($ceInfo['language_id'], $contentElement);
                $contentObject->loadFromContentID($ceInfo['reference_id']);
                $link = 'index2.php?option=com_joomfish&amp;task=translate.edit&amp;&amp;catid=' . $ceInfo['catid'] . '&cid[]=0|' . $ceInfo['reference_id'] . '|' . $ceInfo['language_id'];
                $hrefEdit = "<a href='" . $link . "'>" . $contentObject->title . "</a>";
                $link = 'index2.php?option=com_joomfish&amp;task=translate.publish&amp;catid=' . $ceInfo['catid'] . '&cid[]=0|' . $ceInfo['reference_id'] . '|' . $ceInfo['language_id'];
                $hrefPublish = '<a href="' . $link . '"><img src="images/publish_x.png" width="12" height="12" border="0" alt="" /></a>';
                ?>
			<tr class="row<?php 
                echo $k;
                ?>
">
				<td align="left"><?php 
                echo $hrefEdit;
                ?>
</td>
				<td style="text-align: center;"><?php 
                echo $ceInfo['language'];
                ?>
</td>
					<td style="text-align: center;"><?php 
                echo $hrefPublish;
                ?>
</td>
			</tr>
					<?php 
                $k = 1 - $k;
            }
        } else {
            ?>
			<tr class="row0">
				<td colspan="3"><?php 
            echo JText::_("No unpublished translations found");
            ?>
</td>
			</tr>
					<?php 
        }
        ?>
		</table>
		<?php 
        $output .= ob_get_clean();
        return $output;
    }
Beispiel #6
0
 /**
  * Adds the translation toolbar button to the toolbar based on the
  * given parameters.
  *
  */
 public function addToolbar()
 {
     //check if we are in backend
     $app = JFactory::getApplication();
     if (!$app->isAdmin()) {
         return;
     }
     $doc = JFactory::getDocument();
     $falangManager = FalangManager::getInstance();
     $input = JFactory::getApplication()->input;
     $option = $input->get('option', false, 'cmd');
     $view = $input->get('view', false, 'cmd');
     $task = $input->get('task', false, 'cmd');
     $layout = $input->get('layout', 'default', 'string');
     if (!$option || !$view && !$task || !$layout) {
         return;
     }
     $mapping = $this->loadComponent();
     if (!isset($mapping)) {
         return;
     }
     //GET KEY FROM CONTENT ELEMENT
     $id = $input->get($mapping[2], 0, 'int');
     if (empty($id)) {
         return;
     }
     //Load ToolBar
     $bar = JToolBar::getInstance('toolbar');
     //Load Language
     $languages = $this->getLanguages();
     // @deprecated used for Joomla 2.5
     //TODO use library ?
     $bar->addButtonPath(JPATH_PLUGINS . '/system/falangquickjump/toolbar/button/');
     $buttontype = 'itrPopup';
     $width = '95%';
     $height = '99%';
     //Add Stylesheet for button icons
     JHTML::_('stylesheet', 'administrator/components/com_falang/assets/css/falang.css', array(), false);
     //Add button by language
     foreach ($languages as $language) {
         //get Falang Object info
         $contentElement = $falangManager->getContentElement($mapping[1]);
         JLoader::import('models.ContentObject', FALANG_ADMINPATH);
         $actContentObject = new ContentObject($language->lang_id, $contentElement);
         $actContentObject->loadFromContentID($id);
         $class = "quickmodal ";
         //-1 not exist, 0 old , 1 uptodate
         switch ($actContentObject->state) {
             case 1:
                 $class .= "uptodate";
                 break;
             case 0:
                 $class .= "old";
                 break;
             case -1:
                 $class .= "notexist";
                 break;
             default:
                 $class .= "notexist";
                 break;
         }
         $publish = isset($actContentObject->published) && $actContentObject->published == 1 ? " icon-publish" : " icon-unpublish";
         //free and paid mmust be on 1 line
         /* >>> [FREE] >>> */
         $url = 'index.php?option=com_falang&task=translate.editfree&tmpl=component&direct=1';
         /* <<< [FREE] <<< */
         $bar->appendButton($buttontype, 'falang-quicktranslate-' . $language->lang_id, $language->title, $url, $width, $height, null, null, null, null, $language->image, $class, $publish);
     }
 }
 /**
  * Overwritten update function to enable storage of translated information.
  * Based on the configuration in the content elements the automatic storage of
  * information is activated or not. It is important that this upgraded method will ensure
  * that all information will be written into the translation table. Only in the case that the
  * default language is choosen the information will be updated directly within the original tables.
  * To make sure that all other information will be written into the tables as expected the
  * statements will be manipulated as needed.
  * 
  * @param	string	table name
  * @param	object	instance with information to store
  * @param	string	primary key name of table
  * @param	boolean	update fields with null or not
  * @param	boolean	passthru without storing information in a translation table
  */
 function updateObject($table, &$object, $keyName, $updateNulls = true, $passthru = false)
 {
     global $mosConfig_lang, $mosConfig_defaultLang, $_JOOMFISH_MANAGER;
     // if the currect language is the site default language the translations will not be updated!
     $passthru = $mosConfig_lang == $mosConfig_defaultLang;
     if (!$passthru && isset($_JOOMFISH_MANAGER)) {
         $actContentObject = null;
         if (isset($table) && $table != "") {
             $tableName = ereg_replace('^#__', '', $table);
             // *** QUESTION ***//
             // IS THIS TEST APPROPRIATE HERE - I THINK IT MEANS YOU CAN'T DO A FIRST TRANSLATION FOR A TABLE VIA THE FRONT END
             // ** TEST BEFORE 1.8 **//
             //if ($this->translatedContentAvailable($table)) {
             $contentElement = $_JOOMFISH_MANAGER->getContentElement($tableName);
             if (isset($contentElement)) {
                 $actContentObject = new ContentObject($_JOOMFISH_MANAGER->getLanguageID($mosConfig_lang), $contentElement);
                 if (isset($object->{$keyName})) {
                     $actContentObject->loadFromContentID($object->{$keyName});
                     $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 ($_JOOMFISH_MANAGER->getCfg("frontEndPublish")) {
                         global $acl;
                         $user =& JFactory::getUser();
                         $access = new stdClass();
                         $access->canPublish = $acl->acl_check('action', 'publish', 'users', $user->usertype, 'content', 'all');
                         if ($access->canPublish) {
                             $actContentObject->setPublished($actContentObject->published);
                         }
                     }
                     $actContentObject->store();
                 }
             }
             //}
         }
         return $this->_db->updateObject($table, $object, $keyName, $updateNulls);
     } else {
         return $this->_db->updateObject($table, $object, $keyName, $updateNulls);
     }
 }
Beispiel #8
0
 /**
  * Overwritten update function to enable storage of translated information.
  * Based on the configuration in the content elements the automatic storage of
  * information is activated or not. It is important that this upgraded method will ensure
  * that all information will be written into the translation table. Only in the case that the
  * default language is choosen the information will be updated directly within the original tables.
  * To make sure that all other information will be written into the tables as expected the
  * statements will be manipulated as needed.
  *
  * @param	string	table name
  * @param	object	instance with information to store
  * @param	string	primary key name of table
  * @param	boolean	update fields with null or not
  * @param	boolean	passthru without storing information in a translation table
  */
 function updateObject($table, &$object, $keyName, $updateNulls = true, $passthru = false)
 {
     $pfunc = $this->_profile();
     $jfManager = JoomFishManager::getInstance();
     if (isset($jfManager)) {
         $this->_setLanguage($language);
     }
     $conf = JFactory::getConfig();
     $default_lang = $conf->getValue('config.defaultlang');
     // 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) {
             jimport('joomla.html.parameter');
             $testparams = new JParameter($test->attribs);
             $testlang = $testparams->get('language', false);
             if ($testlang == $language) {
                 // no translation should be created
                 $language = $default_lang;
             }
         }
     }
     // if the currect language is the site default language the translations will not be updated!
     $passthru = $language == $default_lang;
     if (!$passthru && isset($jfManager)) {
         $actContentObject = null;
         if (isset($table) && $table != "") {
             $tableName = preg_replace('/^#__/', '', $table);
             if ($table != "#__jf_content") {
                 $contentElement = $jfManager->getContentElement($tableName);
                 if (isset($contentElement)) {
                     include_once JPATH_ADMINISTRATOR . "/components/com_joomfish/models/ContentObject.php";
                     $actContentObject = new ContentObject($jfManager->getLanguageID($language), $contentElement);
                     if (isset($object->{$keyName})) {
                         $actContentObject->loadFromContentID($object->{$keyName});
                         $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 ($jfManager->getCfg("frontEndPublish")) {
                             $user = JFactory::getUser();
                             $access = new stdClass();
                             $access->canPublish = $user->authorize('com_content', 'publish', 'content', 'all');
                             if ($access->canPublish) {
                                 $actContentObject->setPublished($actContentObject->published);
                             }
                         }
                         $actContentObject->store();
                         if ($jfManager->getCfg("transcaching", 1)) {
                             // clean the cache!
                             $cache = $jfManager->getCache($language);
                             $cache->clean();
                         }
                     }
                 }
             }
         }
         $pfunc = $this->_profile($pfunc);
         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);
     }
 }