/**
     * @param array $fieldArray
     * @throws XMLImportDBException
     */
    public static function updateMdd( $fieldArray )
    {
        if ( empty( $fieldArray ) )
            throw new XMLImportDBException( "Empty field array : no data extracted from XML file" );

        XMLImportMonitor::log( 'Update database', 'info' );

        //Begin transaction
        XMLImportDB::beginQuery();

        //Save Article
        $articleConditions = self::saveDB( 'article', $fieldArray );

        self::buildArticleRelatedContent( $articleConditions, $fieldArray );

        self::buildArticleTaxonomy( $articleConditions, $fieldArray );

        self::buildTranslationsRequest( $articleConditions, $fieldArray );

        XMLImportMonitor::setMonitorData( 'article_id', $articleConditions['id'] );

        //Commit transaction
        XMLImportDB::commitQuery();
    }
    /**
     * @param string $file
     * @param string $publisher
     * @param \Exception $exception
     * @param int $errorLevel
     * @throws Exception
     */
    public function triggerException( $file, $publisher, $exception, $errorLevel )
    {
        XMLImportMonitor::log( $exception->getMessage(), 'error' );

        XMLImportMonitor::setMonitorData( 'status_xml_mdd', $errorLevel );
        XMLImportMonitor::setMonitorData( 'status_mdd_ez', -1 );

        // get number of tries
        $nbOfTry = XMLImportMonitor::getMonitorData( 'nb_of_retry' );

        // if number of tries >= max_attemps
        if( $nbOfTry <= XMLImportMonitor::MAX_ATTEMPTS )
        {
            // else put that article in quarantaine and send an alert
            $this->appendAlert($publisher, $file, $exception->getMessage());
            $this->fileHandler->quarantaineFiles( $publisher, $file );
        }

        throw new Exception( "F : $file - P : $publisher | " . $exception->getMessage() );
    }
    /**
     * @param string $publisher
     * @param string $xmlFile
     * @param array $blobedFiles
     */
    public function archiveFiles( $publisher, $xmlFile, $blobedFiles )
    {
        $this->buildArchiveFolder( $publisher );

        $rootImport             = $this->importINI->variable( 'XMLImportSettings', 'RootImport' );
        $publisherFolder        = "$rootImport/{$this->rootImportFolder}/$publisher";
        $publisherArchiveFolder = "$publisherFolder/archived";

        self::handleModeUATFile( "$publisherFolder/$xmlFile", "$publisherArchiveFolder/$xmlFile" );

        XMLImportMonitor::log( "Archive xml file : $publisherFolder/$xmlFile => $publisherArchiveFolder/$xmlFile", 'info' );
        XMLImportMonitor::setMonitorData('nb_of_retry', 0);

        foreach ( $blobedFiles as $blobedFile )
        {
            $tmpFile = str_replace( "$publisherFolder/", '', $blobedFile );

            if ( $tmpFile == $blobedFile )
            {
                XMLImportMonitor::log( "Unarchivable blobed file : $blobedFile", 'warning' );
            }
            else
            {
                self::handleModeUATFile( "$publisherFolder/$tmpFile", "$publisherArchiveFolder/$tmpFile" );
                XMLImportMonitor::log( "Archive blobed file : $publisherFolder/$tmpFile => $publisherArchiveFolder/$tmpFile", 'info' );
            }
        }
    }