From 13bb8ef5fff8b708b256a35dd1b8e910bc70d5d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Carretero?=
 <frederic.carretero@veremes.com>
Date: Fri, 23 Nov 2018 16:45:53 +0100
Subject: [PATCH] Traitement d'une demande sur FME Server / Cloud

---
 gtf.engine/gtf.engines/Traitement.class.inc | 15 +++++++++---
 gtf.engine/gtf.engines/engine.php           | 27 ++++++++++++++-------
 2 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/gtf.engine/gtf.engines/Traitement.class.inc b/gtf.engine/gtf.engines/Traitement.class.inc
index 042bcbbd..d87dfd36 100755
--- a/gtf.engine/gtf.engines/Traitement.class.inc
+++ b/gtf.engine/gtf.engines/Traitement.class.inc
@@ -136,7 +136,7 @@ class Traitement {
         // table de correspondance entre GTF et le FMW utiliser dans les fonction d'encodage 
         $this->aReplaceGTF = array("\r\n", " ", "(", ")", "$", "&", "@", "°", "'", ",", "\"", "{", "}", "[", "]", ";", "/", "\\", "é", "à");
         $this->aReplaceFME = array("<lf>", "<space>", "<openparen>", "<closeparen>", "<dollar>", "<amp>", "<at>", "<u00b0>", "<apos>", "<comma>", "<quote>", "<opencurly>", "<closecurly>", "<openbracket>", "<closebracket>", "<semicolon>", "<solidus>", "<backslash>", "<u00e9>", "<u00e0>");
-        writeToLog(str_replace('[this->sFmwFileName]', $this->sFmwFileName, str_replace('[sParams]', $sParams, INFO_RESOURCES)), $this->sRobotLogFile);
+        //writeToLog(str_replace('[this->sFmwFileName]', $this->sFmwFileName, str_replace('[sParams]', $sParams, INFO_RESOURCES)), $this->sRobotLogFile);
     }
 
     /**
@@ -737,9 +737,16 @@ class Traitement {
             copy($sFmwFilePath, $sRepositoryFmwFilePath);
             // Supprime le fichier de l'ancienne version du projet (GTF + Fme Server).
             if ($aWorkspace['version'] > 0) {
-                $sRepositoryOldFmwFileName = pathinfo($this->sFmwFileName, PATHINFO_FILENAME) . '_v' . --$aWorkspace['version'] . '.' . pathinfo($this->sFmwFileName, PATHINFO_EXTENSION);
-                unlink($this->aProperties["workspace_dir"] . "/" . pathinfo($this->sFmwFileName, PATHINFO_DIRNAME) . "/" . $sRepositoryOldFmwFileName);
-                //$oFmeServer->serviceRequest('repositories/' . $sRepository . '/items/' . $sRepositoryOldFmwFileName, 'delete');
+                $sOldFmwFileName = pathinfo($this->sFmwFileName, PATHINFO_FILENAME) . '_v' . --$aWorkspace['version'] . '.' . pathinfo($this->sFmwFileName, PATHINFO_EXTENSION);
+                $sOldFmwFilePath = $this->aProperties["workspace_dir"] . "/" . pathinfo($this->sFmwFileName, PATHINFO_DIRNAME) . "/" . $sOldFmwFileName;
+                if (file_exists($sOldFmwFilePath))
+                    unlink($sOldFmwFilePath);
+                //$oFmeServer->serviceRequest('repositories/' . $sRepository . '/items/' . $sOldFmwFileName, 'delete');
+                // S3 -> copie du fichier avec la dernière version et suppression de l'ancien.
+                if ($this->aProperties['fileS3Uploader'] === true) {
+                    deleteFileFromWsDataDirTree('gtf', 'workspace', $aWorkspace['workspace_id'], 'fme', $sOldFmwFileName);
+                    copyFileInWsDataDir ('gtf', 'workspace', $aWorkspace['workspace_id'], 'fme', pathinfo($this->sFmwFileName, PATHINFO_BASENAME), $sRepositoryFmwFileName);
+                }
             }
         }
         // Upload du fichier .fmw.
diff --git a/gtf.engine/gtf.engines/engine.php b/gtf.engine/gtf.engines/engine.php
index de4ebb04..4d7af46b 100755
--- a/gtf.engine/gtf.engines/engine.php
+++ b/gtf.engine/gtf.engines/engine.php
@@ -268,14 +268,14 @@ if ($ErrorLicense == "0") {
                                     $sWorkspaceDir = $properties["workspace_dir"] . '/' . $aDemande['workspace_id'];
                                     if (file_exists($sWorkspaceDir))
                                         clearDir($sWorkspaceDir);
-                                    mkdir($sWorkspaceDir, 0777, true);
-                                    mkdir($sWorkspaceDir . '/fme', 0777, true);
-                                    $aTree = getDirectoryInfosFromWsDataDir('gtf', 'workspace', $aDemande['workspace_id'], 'fme');
-                                    if (!empty($aTree)) {
-                                        if (!empty($aTree[0]['content'])) {
-                                            foreach($aTree[0]['content'] as $aFile) {
-                                                $sFmwFileContent = getFileContentInWsDataDir("gtf", "workspace", $aDemande['workspace_id'], 'fme', $aFile['filename']);
-                                                file_put_contents($sWorkspaceDir . '/fme/' . $aFile['filename'], $sFmwFileContent);
+                                    if (mkdir($sWorkspaceDir . '/fme', 0777, true)) {
+                                        $aTree = getDirectoryInfosFromWsDataDir('gtf', 'workspace', $aDemande['workspace_id'], 'fme');
+                                        if (!empty($aTree)) {
+                                            if (!empty($aTree[0]['content'])) {
+                                                foreach($aTree[0]['content'] as $aFile) {
+                                                    $sFmwFileContent = getFileContentInWsDataDir("gtf", "workspace", $aDemande['workspace_id'], 'fme', $aFile['filename']);
+                                                    file_put_contents($sWorkspaceDir . '/fme/' . $aFile['filename'], $sFmwFileContent);
+                                                }
                                             }
                                         }
                                     }
@@ -842,7 +842,16 @@ function TesteHeureCreuse($sHeureMin, $sHeureMax) {
  */
 function updateOrder($iOrderId, $iStatut, $sExecutionDate, $sLogUrl = null, $iNbSec = null, $sResultUrl = null) {
     // Variables globales.
-    global $oBd, $properties, $aSql;
+    global $oBd, $properties, $aSql, $aDemande;
+    // Suppression du répertoire temporaire du projet.
+    if ($properties['fileS3Uploader'] === true) {
+        $aStatus = array(2, 3, 4, 6, 7);
+        if (in_array($iStatut, $aStatus)) {
+            $sWorkspacePath = $properties['workspace_dir'] . '/' . $aDemande['workspace_id'];
+            if (file_exists($sWorkspacePath))
+                clearDir($sWorkspacePath);
+        }
+    }
     // Requete d'update de la demande.
     if (empty($sLogUrl))
         $sLogUrl = null;
-- 
GitLab