/** * {@inheritdoc} * * @return bool */ public function persist() { // Update word counter $this->wordCounter = str_word_count($this->getString()); if ($this->contentType == self::DB_STRING) { /* @var $field NenoContentElementField */ $field = $this->element; if ($field instanceof NenoContentElementField) { $this->string = $field->applyFilter($this->string); } } if ($this->getState() == self::TRANSLATED_STATE) { $this->timeCompleted = new DateTime(); } // Check if this record is new $isNew = $this->isNew(); if (!$isNew) { // Updating changed time $this->timeChanged = new DateTime(); } // Only execute this task when the translation is new and there are no records about how to find it. if (parent::persist()) { $db = JFactory::getDbo(); $query = $db->getQuery(true); if ($isNew && $this->contentType == self::DB_STRING) { if (!empty($this->sourceElementData)) { $query->insert('#__neno_content_element_fields_x_translations')->columns(array('field_id', 'translation_id', 'value')); $inserted = array(); // Loop through the data foreach ($this->sourceElementData as $sourceData) { /* @var $field NenoContentElementField */ $field = $sourceData['field']; $fieldValue = $sourceData['value']; // Checks if this row has been inserted already if (!in_array($field->getId() . '|' . $this->getId(), $inserted)) { $query->values($field->getId() . ',' . $this->getId() . ',' . $db->quote($fieldValue)); $inserted[] = $field->getId() . '|' . $this->getId(); } } $db->setQuery($query); $db->execute(); } } $query->clear()->delete('#__neno_content_element_translation_x_translation_methods')->where('translation_id = ' . $this->id); $db->setQuery($query); $db->execute(); if (!empty($this->translationMethods)) { $query->clear()->insert('#__neno_content_element_translation_x_translation_methods')->columns(array('translation_id', 'translation_method_id', 'ordering')); foreach ($this->translationMethods as $key => $translationMethod) { $query->values($this->id . ',' . $translationMethod->id . ',' . ($key + 1)); } $db->setQuery($query); $db->execute(); } $this->originalText = $this->loadOriginalText(); parent::persist(); if ($this->state == self::TRANSLATED_STATE) { $this->moveTranslationToTarget($this->language); } return true; } return false; }
/** * {@inheritdoc} * * @return boolean */ public function persist() { $isNew = $this->isNew(); $result = parent::persist(); // Check if the saving process has been completed successfully if ($result) { NenoLog::log('Group data added or modified successfully', 2); if (!empty($this->extensions)) { $db = JFactory::getDbo(); $deleteQuery = $db->getQuery(true); $deleteQuery->delete('#__neno_content_element_groups_x_extensions')->where('group_id = ' . $this->getId()); $db->setQuery($deleteQuery); $db->execute(); $insertQuery = $db->getQuery(true); $insertQuery->clear()->insert('#__neno_content_element_groups_x_extensions')->columns(array('extension_id', 'group_id')); foreach ($this->extensions as $extension) { $insertQuery->values((int) $extension . ',' . $this->getId()); } $db->setQuery($insertQuery); $db->execute(); } // check whether or not this group should have translation methods (For unknown groups we set them as do not translate) if ($isNew && !empty($this->tables) && is_array($this->tables)) { $fileFound = false; /* @var $table NenoContentElementTable */ foreach ($this->tables as $table) { if (file_exists($table->getContentElementFilename())) { $fileFound = true; break; } } // if it has no file, let's assign manual translation. if (!$fileFound) { $this->assignedTranslationMethods = array(); $languages = NenoHelper::getLanguages(false); foreach ($languages as $language) { $translationMethod = new stdClass(); $translationMethod->lang = $language->lang_code; $translationMethod->translation_method_id = 1; $translationMethod->lang = 1; $this->assignedTranslationMethods[] = $translationMethod; } } } if (!empty($this->assignedTranslationMethods)) { $db = JFactory::getDbo(); $deleteQuery = $db->getQuery(true); $insertQuery = $db->getQuery(true); $insert = false; $insertQuery->insert('#__neno_content_element_groups_x_translation_methods')->columns(array('group_id', 'lang', 'translation_method_id', 'ordering')); foreach ($this->assignedTranslationMethods as $translationMethod) { if (!empty($translationMethod->lang)) { $deleteQuery->clear()->delete('#__neno_content_element_groups_x_translation_methods')->where(array('group_id = ' . $this->id, 'lang = ' . $db->quote($translationMethod->lang))); $db->setQuery($deleteQuery); $db->execute(); if (!empty($translationMethod)) { $insert = true; $insertQuery->values($this->id . ',' . $db->quote($translationMethod->lang) . ', ' . $db->quote($translationMethod->translation_method_id) . ', ' . $db->quote($translationMethod->ordering)); } } } if ($insert) { $db->setQuery($insertQuery); $db->execute(); } } if (!empty($this->languageFiles)) { /* @var $languageFile NenoContentElementLanguageFile */ foreach ($this->languageFiles as $languageFile) { $languageFile->setGroup($this); $languageFile->persist(); } } if (!empty($this->tables)) { /* @var $table NenoContentElementTable */ foreach ($this->tables as $table) { $table->setGroup($this); $table->persist(); } } } return $result; }
/** * {@inheritdoc} * * @return boolean */ public function persist() { // If the table has been marked as translatable, let's check for the content element file if ($this->translate) { $this->checkTranslatableStatusFromContentElementFile(); } $result = parent::persist(); if ($result) { /* @var $db NenoDatabaseDriverMysqlx */ $db = JFactory::getDbo(); // If the table has been marked as translated if ($this->translate) { // Creates shadow tables and copy the content on it $db->createShadowTables($this->tableName); } /* @var $field NenoContentElementField */ foreach ($this->fields as $field) { $field->setTable($this)->setTranslate($field->isTranslatable() && $this->isTranslate())->persist(); if ($field->getFieldName() === 'language' && $this->isTranslate()) { $languages = NenoHelper::getTargetLanguages(); $defaultLanguage = NenoSettings::get('source_language'); foreach ($languages as $language) { if ($language->lang_code != $defaultLanguage) { $db->deleteContentElementsFromSourceTableToShadowTables($this->tableName, $language->lang_code); } } } } } return $result; }
/** * {@inheritdoc} * * @return bool */ public function persist() { if (parent::persist()) { if (!empty($this->languageStrings)) { /* @var $languageString NenoContentElementLanguageString */ foreach ($this->languageStrings as $languageString) { $languageString->setLanguageFile($this)->persist(); } } } return false; }
/** * {@inheritdoc} * * @return boolean */ public function persist() { $result = parent::persist(); // Check if the saving process has been completed successfully if ($result) { NenoLog::log('Group data added or modified successfully', 2); if (!empty($this->extensions)) { $db = JFactory::getDbo(); $deleteQuery = $db->getQuery(true); $deleteQuery->delete('#__neno_content_element_groups_x_extensions')->where('group_id = ' . $this->getId()); $db->setQuery($deleteQuery); $db->execute(); $insertQuery = $db->getQuery(true); $insertQuery->clear()->insert('#__neno_content_element_groups_x_extensions')->columns(array('extension_id', 'group_id')); foreach ($this->extensions as $extension) { $insertQuery->values((int) $extension . ',' . $this->getId()); } $db->setQuery($insertQuery); $db->execute(); } if (!empty($this->assignedTranslationMethods)) { $db = JFactory::getDbo(); $deleteQuery = $db->getQuery(true); $insertQuery = $db->getQuery(true); $insert = false; $insertQuery->insert('#__neno_content_element_groups_x_translation_methods')->columns(array('group_id', 'lang', 'translation_method_id', 'ordering')); foreach ($this->assignedTranslationMethods as $translationMethod) { $deleteQuery->clear()->delete('#__neno_content_element_groups_x_translation_methods')->where(array('group_id = ' . $this->id, 'lang = ' . $db->quote($translationMethod->lang))); $db->setQuery($deleteQuery); $db->execute(); if (!empty($translationMethod)) { $insert = true; $insertQuery->values($this->id . ',' . $db->quote($translationMethod->lang) . ', ' . $db->quote($translationMethod->translation_method_id) . ', ' . $db->quote($translationMethod->ordering)); } } if ($insert) { $db->setQuery($insertQuery); $db->execute(); } } if (!empty($this->languageFiles)) { /* @var $languageFile NenoContentElementLanguageFile */ foreach ($this->languageFiles as $languageFile) { $languageFile->setGroup($this); $languageFile->persist(); } } if (!empty($this->tables)) { /* @var $table NenoContentElementTable */ foreach ($this->tables as $table) { $table->setGroup($this); $table->persist(); } } } return $result; }
/** * {@inheritdoc} * * @return bool */ public function persist() { if ($this->isNew()) { $this->filter = 'RAW'; // If this field name has a established filter, let's set it if (isset(self::$filterMapByFieldName[strtolower($this->fieldName)])) { $this->filter = self::$filterMapByFieldName[strtolower($this->fieldName)]; } } return parent::persist(); }
/** * {@inheritdoc} * * @return bool */ public function persist() { if ($this->translate) { $this->checkTranslatableStatusFromContentElementFile(); } if ($this->isNew()) { $this->filter = 'RAW'; // If this field name has a established filter, let's set it if (isset(self::$filterMapByFieldName[strtolower($this->fieldName)])) { $this->filter = self::$filterMapByFieldName[strtolower($this->fieldName)]; } } return parent::persist(); }