/** * Execute the task * * @param array $taskData Task data * * @return bool True on success, false otherwise */ public function run($taskData) { /* @var $db NenoDatabaseDriverMysqlx */ $db = JFactory::getDbo(); $query = $db->getQuery(true); $extensions = $db->quote(NenoHelper::whichExtensionsShouldBeTranslated()); $query->select('e.*')->from('`#__extensions` AS e')->where(array('e.type IN (' . implode(',', $extensions) . ')', 'e.name NOT LIKE \'%neno\'', 'NOT EXISTS (SELECT 1 FROM #__neno_content_element_groups_x_extensions AS ge WHERE ge.extension_id = e.extension_id)'))->order('name'); $db->setQuery($query); $extensions = $db->loadAssocList(); foreach ($extensions as $extension) { NenoHelper::discoverExtension($extension); } return true; }
/** * Discover extension * * @param integer $extensionId Extension Id * * @return void */ protected function discoverExtension($extensionId) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $extensions = $db->quote(NenoHelper::whichExtensionsShouldBeTranslated()); $query->select('*')->from('#__extensions')->where(array('extension_id = ' . (int) $extensionId, 'type IN (' . implode(',', $extensions) . ')')); $db->setQuery($query); $extensionData = $db->loadAssoc(); if (!empty($extensionData) && strpos($extensionData['element'], 'neno') === false) { NenoHelper::discoverExtension($extensionData); } }
/** * Init percents * * @return void */ protected function initPercents() { $currentPercent = NenoSettings::get('current_percent', 0); if ($currentPercent == 0) { $db = JFactory::getDbo(); $query = $db->getQuery(true); // This means to get a group that haven't been discovered yet $extensions = $db->quote(NenoHelper::whichExtensionsShouldBeTranslated()); $query->clear()->select('COUNT(e.extension_id)')->from('`#__extensions` AS e')->where(array('e.type IN (' . implode(',', $extensions) . ')', 'e.name NOT LIKE \'%neno%\''))->order('name'); $db->setQuery($query, 0, 1); $extensionsCounter = $db->loadResult(); NenoSettings::set('percent_per_extension', 90 / ($extensionsCounter + 1)); } }