/** * {@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(); }
/** * {@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} * * @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; }
public function remove() { if ($this->loadStringsFromFile()) { /* @var $languageString NenoContentElementLanguageString */ foreach ($this->languageStrings as $languageString) { $languageString->remove(); } } return parent::remove(); }
/** * {@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() { // 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; }
/** * {@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(); }
/** * {@inheritdoc} * * @return bool */ public function remove() { $translations = $this->getTranslations(); /* @var $translation NenoContentElementTranslation */ foreach ($translations as $translation) { $translation->remove(); } return parent::remove(); }