示例#1
0
 /**
  * Install language
  *
  * @return void
  */
 public function installLanguage()
 {
     $input = $this->input;
     $updateId = $input->post->getInt('update');
     $language = $input->post->getString('language');
     $placement = $input->post->getCmd('placement');
     if (NenoHelper::installLanguage($updateId, $placement != 'dashboard')) {
         /* @var $db NenoDatabaseDriverMysqlx */
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select(array('l.lang_code', 'l.published', 'l.title', 'l.image', 'tr.state', 'SUM(tr.word_counter) AS word_count'))->from('#__languages AS l')->leftJoin('#__neno_content_element_translations AS tr ON tr.language = l.lang_code')->where('l.lang_code = ' . $db->quote($language))->group(array('l.lang_code', 'tr.state'))->order('lang_code');
         $db->setQuery($query);
         $languages = $db->loadObjectListMultiIndex('lang_code');
         $item = new stdClass();
         foreach ($languages as $language) {
             $translated = 0;
             $queued = 0;
             $changed = 0;
             $untranslated = 0;
             $item->lang_code = $language[0]->lang_code;
             $item->published = $language[0]->published;
             $item->title = $language[0]->title;
             $item->image = $language[0]->image;
             $item->errors = NenoHelper::getLanguageErrors((array) $language[0]);
             $item->translationMethods = NenoHelper::getLanguageDefault($item->lang_code);
             // If the language was installed from the dashboard, let's add a task to set all the shadow tables structure
             if ($placement == 'dashboard') {
                 // Add task to
                 NenoTaskMonitor::addTask('language', array('language' => $item->lang_code));
                 // Create menu structure for this language
                 NenoHelper::createMenuStructureForLanguage($item->lang_code);
             }
             $item->isInstalled = NenoHelper::isCompletelyInstall($language[0]->lang_code);
             foreach ($language as $internalItem) {
                 switch ($internalItem->state) {
                     case NenoContentElementTranslation::TRANSLATED_STATE:
                         $untranslated = (int) $internalItem->word_count;
                         break;
                     case NenoContentElementTranslation::QUEUED_FOR_BEING_TRANSLATED_STATE:
                         $untranslated = (int) $internalItem->word_count;
                         break;
                     case NenoContentElementTranslation::SOURCE_CHANGED_STATE:
                         $untranslated = (int) $internalItem->word_count;
                         break;
                     case NenoContentElementTranslation::NOT_TRANSLATED_STATE:
                         $untranslated = (int) $internalItem->word_count;
                         break;
                 }
             }
             $item->wordCount = new stdClass();
             $item->wordCount->translated = $translated;
             $item->wordCount->queued = $queued;
             $item->wordCount->changed = $changed;
             $item->wordCount->untranslated = $untranslated;
             $item->wordCount->total = $translated + $queued + $changed + $untranslated;
             $item->placement = $placement;
         }
         echo JLayoutHelper::render('languageconfiguration', get_object_vars($item), JPATH_NENO_LAYOUTS);
     } else {
         echo 'err';
     }
     JFactory::getApplication()->close();
 }
示例#2
0
 /**
  * Validate installation step 1
  *
  * @return bool
  */
 protected function validateStep1()
 {
     $input = $this->input;
     $sourceLanguage = $input->post->get('source_language');
     $app = JFactory::getApplication();
     if (!empty($sourceLanguage)) {
         $language = JFactory::getLanguage();
         $knownLanguagesTags = array_keys($language->getKnownLanguages());
         if (!in_array($sourceLanguage, $knownLanguagesTags)) {
             $db = JFactory::getDbo();
             $query = $db->getQuery(true);
             $query->select('update_id')->from('#__updates')->where('element = ' . $db->quote('pkg_' . $sourceLanguage))->order('update_id DESC');
             $db->setQuery($query, 0, 1);
             $updateId = $db->loadResult();
             if (!empty($updateId)) {
                 if (!NenoHelper::installLanguage($updateId)) {
                     $app->enqueueMessage('There was an error install language. Please try again later.', 'error');
                     return false;
                 }
             }
         }
         // Once the language is installed, let's mark it as default
         JLoader::register('LanguagesModelInstalled', JPATH_ADMINISTRATOR . '/components/com_languages/models/installed.php');
         /* @var $model LanguagesModelInstalled */
         $model = JModelLegacy::getInstance('Installed', 'LanguagesModel');
         // If the language has been marked as default, let's save that on the settings
         if ($model->publish($sourceLanguage)) {
             NenoSettings::set('source_language', $sourceLanguage, true);
         }
         return true;
     }
     $app->enqueueMessage('Error getting source language', 'error');
     return false;
 }