コード例 #1
0
ファイル: dashboard.php プロジェクト: javigomez/neno
 /**
  * {@inheritdoc}
  *
  *
  * @return array
  */
 public function getItems()
 {
     /* @var $db NenoDatabaseDriverMysqlx */
     $db = JFactory::getDbo();
     $db->setQuery($this->getListQuery());
     $languages = $db->loadObjectListMultiIndex('lang_code');
     $items = array();
     foreach ($languages as $language) {
         $translated = 0;
         $queued = 0;
         $changed = 0;
         $untranslated = 0;
         $item = new stdClass();
         $item->lang_code = $language[0]->lang_code;
         $item->comment = $language[0]->comment;
         $item->published = $language[0]->published;
         $item->title = $language[0]->title;
         $item->image = $language[0]->image;
         $item->errors = NenoHelper::getLanguageErrors((array) $language[0]);
         $item->isInstalled = NenoHelper::isCompletelyInstall($item->lang_code);
         foreach ($language as $internalItem) {
             switch ($internalItem->state) {
                 case NenoContentElementTranslation::TRANSLATED_STATE:
                     $translated = (int) $internalItem->word_count;
                     break;
                 case NenoContentElementTranslation::QUEUED_FOR_BEING_TRANSLATED_STATE:
                     $queued = (int) $internalItem->word_count;
                     break;
                 case NenoContentElementTranslation::SOURCE_CHANGED_STATE:
                     $changed = (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->translationMethods = NenoHelper::getLanguageDefault($item->lang_code);
         $items[] = $item;
     }
     return $items;
 }
コード例 #2
0
ファイル: dashboard.php プロジェクト: javigomez/neno
 /**
  * Task to get a confirmation language
  *
  * @return void
  */
 public function confirmationMessageForLanguageDeletion()
 {
     $input = $this->input;
     $language = $input->getString('language');
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $query->select('*')->update('#__languages')->where('lang_code = ' . $db->quote($language));
     $db->setQuery($query);
     $languageData = $db->loadAssoc();
     $languageErrors = NenoHelper::getLanguageErrors($languageData);
     $displayData = new stdClass();
     $displayData->error = false;
     $displayData->messages = $languageErrors;
     if (empty($languageErrors)) {
         // Calculate statistics
         $query->clear()->select('COUNT(*)')->from('#__neno_content_element_translations')->where('language = ' . $db->quote($language));
         $db->setQuery($query);
         $counter = $db->loadResult();
         $displayData->messages[] = JText::sprintf('COM_NENO_DASHBOARD_DELETE_LANGUAGE', $counter);
     } else {
         $displayData->error = true;
     }
     echo JLayoutHelper::render('messages', $displayData, JPATH_NENO_LAYOUTS);
 }
コード例 #3
0
ファイル: controller.php プロジェクト: andresmaeso/neno
 /**
  * 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();
 }
コード例 #4
0
ファイル: helper.php プロジェクト: andresmaeso/neno
 /**
  * Get language configuration data
  *
  * @return array
  */
 public static function getLanguageConfigurationData()
 {
     /* @var $db NenoDatabaseDriverMysqlx */
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $default = NenoSettings::get('source_language');
     $subquery1 = $db->getQuery(true);
     $subquery2 = $db->getQuery(true);
     $subquery2->select('tr2.*')->from('#__neno_content_element_translations AS tr2')->where('content_type = ' . $db->quote('lang_string'));
     $subquery1->select('tr.*')->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 t.id = f.table_id')->where(array('content_type = ' . $db->quote('db_string'), 'f.translate = 1', 't.translate = 1'))->union($subquery2);
     $query->select(array('l.lang_code', 'l.published', 'l.title', 'l.image', 'tr.state', 'SUM(tr.word_counter) AS word_count', 'lc.comment'))->from('#__languages AS l')->leftJoin('#__neno_language_external_translators_comments AS lc ON l.lang_code = lc.language')->leftJoin('(' . (string) $subquery1 . ') AS tr ON tr.language = l.lang_code')->where('l.lang_code <> ' . $db->quote($default))->group(array('l.lang_code', 'tr.state'))->order('lang_code');
     $db->setQuery($query);
     $languages = $db->loadObjectListMultiIndex('lang_code');
     $items = array();
     if (!empty($languages)) {
         foreach ($languages as $language) {
             $translated = 0;
             $queued = 0;
             $changed = 0;
             $untranslated = 0;
             $item = new stdClass();
             $item->lang_code = $language[0]->lang_code;
             $item->comment = $language[0]->comment;
             $item->published = $language[0]->published;
             $item->title = $language[0]->title;
             $item->image = $language[0]->image;
             $item->errors = NenoHelper::getLanguageErrors((array) $language[0]);
             $item->isInstalled = NenoHelper::isCompletelyInstall($item->lang_code);
             foreach ($language as $internalItem) {
                 switch ($internalItem->state) {
                     case NenoContentElementTranslation::TRANSLATED_STATE:
                         $translated = (int) $internalItem->word_count;
                         break;
                     case NenoContentElementTranslation::QUEUED_FOR_BEING_TRANSLATED_STATE:
                         $queued = (int) $internalItem->word_count;
                         break;
                     case NenoContentElementTranslation::SOURCE_CHANGED_STATE:
                         $changed = (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->translationMethods = NenoHelper::getLanguageDefault($item->lang_code);
             $items[] = $item;
         }
     }
     $languagesOnLanguageTable = array_keys($languages);
     $knownLanguages = JFactory::getLanguage()->getKnownLanguages();
     $defaultTranslationsMethods = NenoHelper::getDefaultTranslationMethods();
     foreach ($knownLanguages as $languageTag => $languageInfo) {
         if ($languageTag != $default && !in_array($languageTag, $languagesOnLanguageTable)) {
             $languagesData = new stdClass();
             $languagesData->lang_code = $languageInfo['tag'];
             $languagesData->title = $languageInfo['name'];
             $languagesData->translationMethods = $defaultTranslationsMethods;
             $languagesData->errors = NenoHelper::getLanguageErrors((array) $languagesData);
             $languagesData->placement = 'dashboard';
             $languagesData->image = NenoHelper::getLanguageImage($languageInfo['tag']);
             $languagesData->published = NenoHelper::isLanguagePublished($languageInfo['tag']);
             $languagesData->comment = NenoHelper::getLanguageTranslatorComment($languageInfo['tag']);
             $items[] = $languagesData;
         }
     }
     return $items;
 }
コード例 #5
0
ファイル: installation.php プロジェクト: andresmaeso/neno
 /**
  * Get data for the installation step
  *
  * @param   int $step Step number
  *
  * @return stdClass
  */
 protected function getDataForStep($step)
 {
     $data = new stdClass();
     switch ($step) {
         case 1:
             $languages = NenoHelper::findLanguages(true);
             $data->select_widget = JHtml::_('select.genericlist', $languages, 'source_language', null, 'iso', 'name', NenoSettings::get('source_language'));
             break;
         case 3:
             $language = JFactory::getLanguage();
             $default = NenoSettings::get('source_language');
             $knownLanguages = $language->getKnownLanguages();
             $languagesData = array();
             $defaultTranslationsMethods = NenoHelper::getDefaultTranslationMethods();
             $db = JFactory::getDbo();
             $query = $db->getQuery(true);
             $query->insert('#__neno_content_language_defaults')->columns(array('lang', 'translation_method_id', 'ordering'));
             $insert = false;
             foreach ($knownLanguages as $key => $knownLanguage) {
                 if ($knownLanguage['tag'] != $default) {
                     $insert = true;
                     $languagesData[$key] = $knownLanguage;
                     $languagesData[$key]['lang_code'] = $knownLanguage['tag'];
                     $languagesData[$key]['title'] = $knownLanguage['name'];
                     $languagesData[$key]['translationMethods'] = $defaultTranslationsMethods;
                     $languagesData[$key]['errors'] = NenoHelper::getLanguageErrors($languagesData[$key]);
                     $languagesData[$key]['placement'] = 'installation';
                     $languagesData[$key]['image'] = NenoHelper::getLanguageImage($knownLanguage['tag']);
                     $languagesData[$key]['published'] = NenoHelper::isLanguagePublished($knownLanguage['tag']);
                     $languagesData[$key]['comment'] = NenoHelper::getLanguageTranslatorComment($knownLanguage['tag']);
                     foreach ($defaultTranslationsMethods as $ordering => $defaultTranslationsMethod) {
                         $query->values($db->quote($knownLanguage['tag']) . ',' . $defaultTranslationsMethod->id . ',' . ($ordering + 1));
                     }
                 }
             }
             if ($insert) {
                 $db->setQuery($query);
                 $db->execute();
             }
             $data->languages = $languagesData;
             break;
         case 4:
             /* @var $db NenoDatabaseDriverMysqlx */
             $db = JFactory::getDbo();
             $query = $db->getQuery(true);
             $tablesIgnored = NenoHelper::getDoNotTranslateTables();
             /* @var $config \Joomla\Registry\Registry */
             $config = JFactory::getConfig();
             $query->select('DISTINCT TABLE_NAME')->from('INFORMATION_SCHEMA.COLUMNS')->where(array('COLUMN_NAME = ' . $db->quote('language'), 'TABLE_SCHEMA = ' . $db->quote($config->get('db')), 'TABLE_NAME NOT LIKE ' . $db->quote('%neno%'), 'TABLE_NAME NOT LIKE ' . $db->quote('%\\_\\_%'), 'TABLE_NAME NOT LIKE ' . $db->quote('%menu')));
             $db->setQuery($query);
             $tables = $db->loadArray();
             $tablesFound = array();
             foreach ($tables as $table) {
                 if (!in_array(str_replace($db->getPrefix(), '#__', $table), $tablesIgnored)) {
                     $sourceLanguage = NenoSettings::get('source_language');
                     $sourceLanguageParts = explode('-', $sourceLanguage);
                     $query->clear()->select(array('COUNT(*) AS counter', 'language', $db->quote($table) . ' AS `table`'))->from($db->quoteName($table))->where(array('language <> ' . $db->quote('*'), 'language <> ' . $db->quote(''), 'language <> ' . $db->quote($sourceLanguage), 'language <> ' . $db->quote($sourceLanguageParts[0])))->group('language');
                     $db->setQuery($query);
                     $recordsFound = $db->loadObjectList();
                     if (!empty($recordsFound)) {
                         $tablesFound = array_merge($tablesFound, $recordsFound);
                     }
                 }
             }
             $data->tablesFound = $tablesFound;
             break;
         case 5:
             $groups = NenoHelper::getGroups();
             /* @var $group NenoContentElementGroup */
             foreach ($groups as $key => $group) {
                 $group->getTables();
                 $groups[$key] = $group->prepareDataForView();
             }
             $data->groups = $groups;
             break;
     }
     return $data;
 }