/** * Find a job and creates it. * * @param string $toLanguage JISO Language format * @param string $translationMethod Translation Method chosen * * @return NenoJob|null It will return a NenoJob object if there are translations pending or null if there aren't any. */ public static function createJob($toLanguage, $translationMethod) { /* @var $db NenoDatabaseDriverMysqlx */ $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('id')->from('#__neno_content_element_translations AS tr')->where(array('language = ' . $db->quote($toLanguage), 'state = ' . NenoContentElementTranslation::NOT_TRANSLATED_STATE, 'EXISTS (SELECT 1 FROM #__neno_content_element_translation_x_translation_methods AS trtm WHERE tr.id = trtm.translation_id AND translation_method_id = ' . $translationMethod . ')', 'NOT EXISTS (SELECT 1 FROM #__neno_jobs_x_translations AS jt WHERE tr.id = jt.translation_id)')); $db->setQuery($query); $translationObjects = $db->loadArray(); $job = null; if (!empty($translationObjects)) { $jobData = array('fromLanguage' => NenoSettings::get('source_language'), 'toLanguage' => $toLanguage, 'state' => self::JOB_STATE_GENERATED, 'createdTime' => new DateTime(), 'translationMethod' => $translationMethod); $job = new NenoJob($jobData); $job->setTranslations($translationObjects)->persist(); NenoTaskMonitor::addTask('job_sender'); } return $job; }