/** * Discover the element * * @return bool True on success */ public function discoverElement() { // Save the hierarchy first, if ($this->isNew() || NenoSettings::get('discovering_element_0') == $this->id) { NenoHelper::setSetupState(JText::sprintf('COM_NENO_INSTALLATION_MESSAGE_PARSING_GROUP', $this->groupName)); $level = '1.1'; } else { $level = '1.2'; } $this->persist(); $elementId = $this->id; if (empty($this->tables) && empty($this->languageFiles)) { NenoHelper::setSetupState(JText::sprintf('COM_NENO_INSTALLATION_MESSAGE_CONTENT_NOT_DETECTED', $this->getGroupName()), 1, 'warning'); $level = 0; $elementId = 0; } NenoSettings::set('installation_level', $level); NenoSettings::set('discovering_element_0', $elementId); }
/** * Discover the element * * @return bool True on success */ public function discoverElement() { NenoHelper::setSetupState(JText::sprintf('COM_NENO_INSTALLATION_MESSAGE_PARSING_GROUP_TABLE', $this->group->getGroupName(), $this->getTableName()), 2); if ($this->translate) { // Check if there are children not discovered $field = NenoContentElementField::load(array('discovered' => 0, 'table_id' => $this->id, '_limit' => 1, 'translate' => 1)); if (!empty($field)) { NenoSettings::set('installation_level', '2.1'); NenoSettings::set('discovering_element_1.1', $this->id); } else { NenoSettings::set('discovering_element_1.1', 0); $this->setDiscovered(true)->persist(); } } else { NenoHelper::setSetupState(JText::sprintf('COM_NENO_INSTALLATION_MESSAGE_TABLE_TOO_MANY_RECORDS', $this->group->getGroupName(), $this->getTableName()), 2, 'error'); } }
/** * Persist all the translations * * @param array|null $recordId Record id to just load that row * @param string|null $language Language tag * * @return bool True on success */ public function persistTranslations($recordId = null, $language = null) { if ($this->translate) { $commonData = array('contentType' => NenoContentElementTranslation::DB_STRING, 'contentId' => $this->getId(), 'content' => $this, 'state' => NenoContentElementTranslation::NOT_TRANSLATED_STATE, 'timeAdded' => new DateTime(), 'comment' => $this->comment); if ($language !== null) { $languageData = new stdClass(); $languageData->lang_code = $language; $languages = array($languageData); } else { $languages = NenoHelper::getLanguages(false); } $defaultLanguage = NenoSettings::get('source_language'); $this->translations = array(); $strings = $this->getStrings($recordId); $primaryKeyData = $this->getTable()->getPrimaryKey(); $translationmethods = NenoHelper::getTranslationMethodsByTableId($this->table->getId()); if (!empty($strings)) { foreach ($strings as $string) { $progressCounters = $this->getProgressCounters(); if (!NenoSettings::get('installation_completed')) { NenoHelper::setSetupState(JText::sprintf('COM_NENO_INSTALLATION_MESSAGE_PARSING_GROUP_TABLE_FIELD_PROGRESS', $this->getTable()->getGroup()->getGroupName(), $this->getTable()->getTableName(), $this->getFieldName(), $progressCounters['processed'], $progressCounters['total']), 3); } if ($string['state'] == 1 || $string['state'] == 0 && NenoSettings::get('copy_unpublished', 1) || $string['state'] == -2 && NenoSettings::get('copy_trashed', 0)) { foreach ($languages as $language) { if ($defaultLanguage !== $language->lang_code) { $commonData['language'] = $language->lang_code; $commonData['string'] = $string['string']; // If the string is empty or is a number, let's mark as translated. if (empty($string['string']) || is_numeric($string['string'])) { $commonData['state'] = NenoContentElementTranslation::TRANSLATED_STATE; } else { $commonData['state'] = NenoContentElementTranslation::NOT_TRANSLATED_STATE; } $translation = new NenoContentElementTranslation($commonData); $sourceData = array(); $fieldBreakpoint = array(); foreach ($primaryKeyData as $primaryKey) { $field = self::getFieldByTableAndFieldName($this->getTable(), $primaryKey); $fieldData = array('field' => $field, 'value' => $string[$primaryKey]); $sourceData[] = $fieldData; $fieldBreakpoint[$primaryKey] = $string[$primaryKey]; } // Save breakpoint into the database NenoSettings::set('field_breakpoint', json_encode($fieldBreakpoint)); $translation->setSourceElementData($sourceData); // If the translation does not exists already, let's add it if ($translation->existsAlready()) { $translation = NenoContentElementTranslation::getTranslationBySourceElementData($sourceData, $language->lang_code, $this->getId()); $translation->setElement($this); if ($translation->refresh()) { $translation->persist(); } } $translationMethods = $translation->getTranslationMethods(); if (empty($translationMethods[$language->lang_code])) { if (!empty($translationmethods[$language->lang_code])) { $translationMethodsTr = $translationmethods[$language->lang_code]; foreach ($translationMethodsTr as $translationMethodTr) { $translation->addTranslationMethod($translationMethodTr->translation_method_id); } } } $translation->persist(); $this->translations[] = $translation; } } } } NenoSettings::set('field_breakpoint', null); } } else { for ($i = 0; $i < count($this->translations); $i++) { $translation = $this->translations[$i]; /* @var $translation NenoContentElementTranslation */ $translation->refresh(); $this->translations[$i] = $translation; } } return true; }
/** * Discover the element * * @return bool True on success */ public function discoverElement() { NenoHelper::setSetupState(JText::sprintf('COM_NENO_INSTALLATION_MESSAGE_PARSING_GROUP_TABLE', $this->group->getGroupName(), $this->getFilename()), 2); // Check if there are children not discovered $languageString = NenoContentElementLanguageString::load(array('discovered' => 0, '_limit' => 1, 'languagefile_id' => $this->id)); if (empty($languageString)) { $this->setDiscovered(true)->persist(); } else { NenoSettings::set('installation_level', '2.2'); NenoSettings::set('discovering_element_1.2', $this->id); } }
/** * Discover the element * * @return bool True on success */ public function discoverElement() { NenoHelper::setSetupState(JText::sprintf('COM_NENO_INSTALLATION_MESSAGE_PARSING_GROUP_TABLE_FIELD', $this->getTable()->getGroup()->getGroupName(), $this->getTable()->getTableName(), $this->getFieldName()), 3); if ($this->persistTranslations() === true) { $this->setDiscovered(true)->persist(); } }