Example #1
0
 /**
  * {@inheritdoc}
  *
  * @return bool
  */
 public function remove()
 {
     // Get the tables
     $tables = $this->getTables();
     /* @var $table NenoContentElementTable */
     foreach ($tables as $table) {
         $table->remove();
     }
     // Get language strings
     $languageStrings = $this->getLanguageFiles();
     /* @var $languageString NenoContentElementLanguageString */
     foreach ($languageStrings as $languageString) {
         $languageString->remove();
     }
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $query->delete('#__neno_content_element_groups_x_translation_methods')->where('group_id = ' . $this->id);
     $db->setQuery($query);
     $db->execute();
     $query->clear()->delete('#__neno_content_element_groups_x_extensions')->where('group_id = ' . $this->id);
     $db->setQuery($query);
     $db->execute();
     NenoLog::log('Group deleted successfully', 2);
     return parent::remove();
 }
Example #2
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;
 }
Example #3
0
 /**
  * {@inheritdoc}
  *
  * @param   bool $breadcrumb Load breadcrumb
  *
  * @return JObject
  */
 public function prepareDataForView($breadcrumb = false)
 {
     $data = parent::prepareDataForView();
     if ($breadcrumb) {
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         if ($this->contentType === self::DB_STRING) {
             $query->select(array('g.group_name', 't.table_name', 'f.field_name'))->from('#__neno_content_element_translations AS tr')->innerJoin('#__neno_content_element_fields AS f ON tr.content_id = f.id')->innerJoin('#__neno_content_element_tables AS t ON f.table_id = t.id')->innerJoin('#__neno_content_element_groups AS g ON t.group_id = g.id')->where('tr.id = ' . $this->id);
         } else {
             $query->select(array('g.group_name', 'lf.filename', 'ls.constant'))->from('#__neno_content_element_translations AS tr')->innerJoin('#__neno_content_element_language_strings AS ls ON tr.content_id = ls.id')->innerJoin('#__neno_content_element_language_files AS lf ON ls.languagefile_id = lf.id')->innerJoin('#__neno_content_element_groups AS g ON lf.group_id = g.id')->where('tr.id = ' . $this->id);
         }
         $db->setQuery($query);
         $data->breadcrumbs = $db->loadRow();
     }
     return $data;
 }
Example #4
0
 public function remove()
 {
     if ($this->loadStringsFromFile()) {
         /* @var $languageString NenoContentElementLanguageString */
         foreach ($this->languageStrings as $languageString) {
             $languageString->remove();
         }
     }
     return parent::remove();
 }
Example #5
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();
 }
Example #6
0
 /**
  * {@inheritdoc}
  *
  * @return bool
  */
 public function persist()
 {
     // Update word counter
     $this->wordCounter = NenoHelper::getWordCount($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();
     }
     // Ensure JSON string length
     $this->ensureJsonStringsLength();
     // 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();
         if ($this->originalText != '') {
             $this->updateOriginalText();
         }
         if ($this->state == self::TRANSLATED_STATE) {
             $this->moveTranslationToTarget();
         }
         return true;
     }
     return false;
 }
Example #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();
 }
Example #8
0
 /**
  * {@inheritdoc}
  *
  * @return bool
  */
 public function remove()
 {
     $translations = $this->getTranslations();
     /* @var $translation NenoContentElementTranslation */
     foreach ($translations as $translation) {
         $translation->remove();
     }
     return parent::remove();
 }