/** * Show confirmation before moving anything * * @return void */ public function show() { $input = JFactory::getApplication()->input; // Overwrite the view $input->set('view', 'moveelementconfirm'); $groups = $input->get('groups', array(), 'array'); $tables = $input->get('tables', array(), 'array'); $files = $input->get('files', array(), 'files'); // If a group is selected then load all the elements from that group if (!empty($groups)) { foreach ($groups as $groupId) { $group = NenoContentElementGroup::getGroup($groupId); // Handle tables $groupTables = $group->getTables(); if (!empty($groupTables)) { /* @var $groupTable NenoContentElementGroup */ foreach ($groupTables as $groupTable) { // Add the table id to the tables array $tables[] = $groupTable->getId(); } } // Handle files $groupFiles = $group->getLanguageFiles(); if (!empty($groupFiles)) { /* @var $groupFile NenoContentElementLanguageFile */ foreach ($groupFiles as $groupFile) { // Add the file id to the files array $files[] = $groupFile->getId(); } } } } // Remove duplicates array_unique($tables); array_unique($files); // Load table info if (!empty($tables)) { foreach ($tables as $key => $table) { $tables[$key] = NenoContentElementTable::load($table); } } // Load files info if (!empty($files)) { foreach ($files as $key => $file) { $files[$key] = NenoContentElementLanguageFile::load($file); } } // Show output // Get the view /* @var $view NenoViewMoveElementConfirm */ $view = $this->getView('MoveElementConfirm', 'html'); $view->groups = NenoHelper::convertNenoObjectListToJObjectList(NenoHelper::getGroups()); // Assign data from the model $view->tables = NenoHelper::convertNenoObjectListToJObjectList($tables); $view->files = NenoHelper::convertNenoObjectListToJObjectList($files); // Display the view $view->display(); }
/** * Execute the task * * @param array $taskData Task data * * @return bool True on success, false otherwise */ public function run($taskData) { if (!empty($taskData['language'])) { $languageTag = $taskData['language']; $groups = NenoHelper::getGroups(false); /* @var $group NenoContentElementGroup */ foreach ($groups as $group) { $group->generateContentForLanguage($languageTag); } // Publish language content $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->update('#__languages')->set('published = 1')->where('lang_code = ' . $db->quote($languageTag)); $db->setQuery($query); $db->execute(); } }
/** * {@inheritdoc} * * @return array */ public function getItems() { $this->setState('list.limit', 0); $groups = NenoHelper::getGroups(true); return $groups; }
/** * Load group data * * @return void */ protected function getGroupData() { $groups = NenoHelper::getGroups(false); /* @var $group NenoContentElementGroup */ foreach ($groups as $key => $group) { $groups[$key] = $group->prepareDataForView(); } $this->groups = $groups; }
/** * 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; }