Beispiel #1
0
 /**
  * {@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;
 }
Beispiel #2
0
 /**
  * {@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;
 }
Beispiel #3
0
 /**
  * {@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;
 }
Beispiel #4
0
 /**
  * {@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;
 }
Beispiel #5
0
 /**
  * {@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;
 }
Beispiel #6
0
 /**
  * {@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();
 }
Beispiel #7
0
 /**
  * {@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();
 }