/** * Save a setting * * @return void */ public function saveSetting() { $input = $this->input; $setting = $input->getString('setting'); $newValue = $input->getString('value'); if (NenoSettings::set($setting, $newValue)) { echo 'ok'; } JFactory::getApplication()->close(); }
/** * Task to set value for automatic translations * * @return void */ public function setAutomaticTranslationSetting() { $app = JFactory::getApplication(); $input = $app->input; $setting = $input->post->getString('setting'); $value = $input->post->getInt('value'); if (!empty($setting)) { echo NenoSettings::set($setting, $value) ? 'ok' : 'err'; } else { echo 'err'; } $app->close(); }
public function saveExternalTranslatorsComment() { $input = $this->input; $placement = $input->post->getString('placement'); $comment = $input->post->getHtml('comment', ''); $result = false; $db = JFactory::getDbo(); $query = $db->getQuery(true); switch ($placement) { case 'general': NenoSettings::set('external_translators_notes', $comment); $result = true; break; case 'language': $language = $input->post->getString('language'); $query->select('*')->from('#__neno_language_external_translators_comments')->where('language = ' . $db->quote($language)); $db->setQuery($query); $languageComment = $db->loadObject(); if (empty($languageComment)) { $languageComment = new stdClass(); $languageComment->language = $language; } $languageComment->comment = $comment; if (empty($languageComment->id)) { $db->insertObject('#__neno_language_external_translators_comments', $languageComment, 'id'); } else { $db->updateObject('#__neno_language_external_translators_comments', $languageComment, 'id'); } $result = true; break; case 'string': $translationId = $input->post->getInt('stringId'); /* @var $translation NenoContentElementTranslation */ $translation = NenoContentElementTranslation::load($translationId, false, true); $result = $translation->setComment($comment)->persist(); $allTranslations = $input->post->getBool('alltranslations', false); if ($allTranslations) { $contentId = $input->post->getInt('contentId'); if (!empty($contentId)) { $query->update('#__neno_content_element_translations')->set('comment = ' . $db->quote($comment))->where(array('content_id = ' . $db->quote($contentId), 'content_type = ' . $db->quote($translation->getContentType()), 'language = ' . $db->quote($translation->getLanguage()))); $db->setQuery($query); $db->execute(); $query->clear(); if ($translation->getContentType() == NenoContentElementTranslation::DB_STRING) { $query->update('#__neno_content_element_fields'); } else { $query->update('#__neno_content_element_language_strings'); } // Saving this comment for the future $query->set('comment = ' . $db->quote($comment))->where('id = ' . $db->quote($contentId)); $db->setQuery($query); $db->execute(); } } break; } echo $result ? 'ok' : 'err'; JFactory::getApplication()->close(); }
/** * Publish language switcher * * @throws Exception * * @return void */ public function doNotShowWarningMessage() { NenoSettings::set('show_language_switcher_warning', 0); JFactory::getApplication()->redirect('index.php?option=com_neno&dashboard'); }
/** * 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); }
/** * Set setup state * * @param string $message Message * @param int $level Level * @param string $type Message type * * @return void */ public static function setSetupState($message, $level = 1, $type = 'info') { $db = JFactory::getDbo(); $query = $db->getQuery(true); $percent = NenoSettings::get('current_percent'); if ($level == 1 && $type == 'info') { $percent = $percent + NenoSettings::get('percent_per_extension'); NenoSettings::set('current_percent', $percent); } elseif ($level == '3.1' && $type == 'info') { $level = 3; $percent = $percent + NenoSettings::get('percent_per_content_element'); NenoSettings::set('current_percent', $percent); } $query->select('1')->from('#__neno_installation_messages')->where('message = ' . $db->quote($message)); $db->setQuery($query); $result = $db->loadResult(); if (empty($result)) { $query->clear()->insert('#__neno_installation_messages')->columns(array('message', 'type', 'percent', 'level'))->values($db->quote($message) . ',' . $db->quote($type) . ',' . (int) $percent . ',' . (int) $level); $db->setQuery($query); $db->execute(); } }
protected function ensureDefaultsExists($items) { // Create a simple array with key value of settings $settings = array(); foreach ($items as $item) { $settings[$item->setting_key] = $item->setting_value; } // Related content if (!isset($settings['load_related_content'])) { NenoSettings::set('load_related_content', '0'); $items = $this->getItems(); // Refresh the items } return $items; }
/** * 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'); } }
/** * Validate installation step 3 * * @return bool */ protected function validateStep2() { $input = $this->input; $app = JFactory::getApplication(); $jform = $input->post->get('jform', array(), 'ARRAY'); if (!empty($jform['translation_methods'])) { foreach ($jform['translation_methods'] as $key => $translationMethod) { NenoSettings::set('translation_method_' . ($key + 1), $translationMethod); } return true; } $app->enqueueMessage('', 'error'); return false; }
/** * 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); } }
/** * 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; }
public function saveTranslatorConfig() { $input = $this->input; $translator = $input->post->getString('translator'); $translatorKey = $input->post->getString('translatorKey'); NenoSettings::set('translator', $translator); NenoSettings::set('translator_api_key', $translatorKey); }
/** * Publish language switcher * * @throws Exception * * @return void */ public function doNotShowWarningMessage() { $input = $this->input; $placement = $input->getWord('placement'); NenoSettings::set('show_language_switcher_warning', 0); if ($placement == 'module') { JFactory::getApplication()->redirect('index.php'); } else { JFactory::getApplication()->redirect('index.php?option=com_neno&dashboard'); } }
/** * Toggle show related content setting * * @throws Exception * * @return void */ public function toggleShowRelated() { $currentState = NenoSettings::get('load_related_content'); $newState = 1 - $currentState; NenoSettings::set('load_related_content', $newState); JFactory::getApplication()->close(); }