/** * @param array $articleConditions * @param array $fieldArray * @throws XMLImportDBException */ private static function buildTranslationsRequest( $articleConditions, $fieldArray ) { $translationsRequests = self::filterFields( 'article', 'translations_request', $fieldArray ); $publisherFolderID = $fieldArray['publisher']->calculatedValue; $publisherFolderPath = self::$fileHandler->getPublisherFolderNameFromId($publisherFolderID); $sql = "SELECT `master_language`, `languages` FROM `folder` WHERE `name` = '%s'"; $folderLanguages = XMLImportDB::arrayQuery( sprintf($sql, $publisherFolderPath) ); $allowedLanguages = array(); foreach (json_decode($folderLanguages[0]['languages'], true) as $language) { if (!$language['automatic_request']) { $allowedLanguages[] = $language['country']; } } $date = new \DateTime(); $date = $date->format('Y-m-d H:m:i'); $sql = "INSERT INTO translations_request SET `content_id` = %s, `locale` = '%s', `created_at` = '$date', `already_sent` = 0" . " ON DUPLICATE KEY UPDATE content_id = content_id, already_sent = 3"; foreach($translationsRequests["target_language"] as $translationsRequest) { $locale = $translationsRequest->fieldNode->nodeValue; if (in_array($locale, $allowedLanguages) && $locale !== $folderLanguages[0]['master_language']) { $result = XMLImportDB::query( sprintf($sql, $articleConditions['content_id'], $translationsRequest->fieldNode->nodeValue) ); if ( !$result ) throw new XMLImportDBException( 'Unsetable translations request' ); } } }
/** * Main method called to configure/initialize handler. * Here you may read your data to import * @return void */ public function initialize() { $this->fileHandler->initialize(); }
/** * @param eZINI $importINI * @param string $ftpFolder * @param bool $modeUAT * @return XMLImportFileHandler */ public static function instance ( $importINI, $ftpFolder, $modeUAT ) { if ( !isset(self::$_instance) ) self::$_instance = new self($importINI, $ftpFolder, $modeUAT); return self::$_instance; }