Exemplo n.º 1
0
 /**
  * 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();
 }
Exemplo n.º 2
0
 /**
  * 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();
 }
Exemplo n.º 3
0
 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();
 }
Exemplo n.º 4
0
 /**
  * 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');
 }
Exemplo n.º 5
0
 /**
  * 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);
 }
Exemplo n.º 6
0
 /**
  * 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();
     }
 }
Exemplo n.º 7
0
 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;
 }
Exemplo n.º 8
0
 /**
  * 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');
     }
 }
Exemplo n.º 9
0
 /**
  * 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;
 }
Exemplo n.º 10
0
 /**
  * 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);
     }
 }
Exemplo n.º 11
0
 /**
  * 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;
 }
Exemplo n.º 12
0
 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);
 }
Exemplo n.º 13
0
 /**
  * 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');
     }
 }
Exemplo n.º 14
0
 /**
  * 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();
 }