From a16b018e9dd7eb892c32e96c74b1155fc93fa1cd Mon Sep 17 00:00:00 2001
From: Armand Bahi <armand.bahi@veremes.com>
Date: Wed, 9 Jan 2019 14:27:09 +0100
Subject: [PATCH] Gestion de fichiers multiples en POST

---
 .../web_service/ws/Querys.class.inc           | 53 +++----------------
 1 file changed, 7 insertions(+), 46 deletions(-)

diff --git a/src/module_vmap/web_service/ws/Querys.class.inc b/src/module_vmap/web_service/ws/Querys.class.inc
index 5a835e75..8780bb04 100644
--- a/src/module_vmap/web_service/ws/Querys.class.inc
+++ b/src/module_vmap/web_service/ws/Querys.class.inc
@@ -15,8 +15,9 @@ require_once 'Vmap.class.inc';
 require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
 require_once 'Query.class.inc';
 require_once 'BusinessObject.class.inc';
-require_once(dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.inc');
-require_once(dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/phpUtil.inc');
+require_once (dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.inc');
+require_once (dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/phpUtil.inc');
+require_once (dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/files/Files_manager.class.inc');
 require_once 'vmlib/logUtil.inc';
 
 require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/Vm.class.inc';
@@ -52,8 +53,7 @@ class Querys extends Vmap {
         $this->aValues['getGroup'] = false;
         $this->oConnection = new Connection($this->aValues, $this->aProperties);
 
-        // error_log('$_FILES: '. print_r($_FILES, true));
-        // error_log('$aValues: '. print_r($this->aValues, true));
+        error_log('$_FILES: '. print_r($_FILES, true));
     }
 
     /**
@@ -1637,50 +1637,11 @@ class Querys extends Vmap {
         // Fichiers à uploader ?
         if (!empty($_FILES) && !empty($this->aValues['my_vitis_id'])) {
 
-            // Création du dossier contenneur
-            $sDirPath = $this->createElementFilesFolder($sBusinessObjectId, $this->aValues['my_vitis_id']);
-            if (!is_dir($sDirPath)) {
-                $oError = new VitisError(1, "Unable to acces to the business object direrctory :" . $sDirPath);
-                $aXmlRacineAttribute['status'] = 0;
-                $sMessage = $oError->asDocument('', 'vitis', $this->aValues['sEncoding'], True, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']);
-                return $sMessage;
-            }
-
             // Écriture du fichier
+            $oFileManager = new Files_manager($this->aProperties);
             foreach ($_FILES as $sName => $aFile) {
-
-                $sDirColumnPath = $sDirPath . '/' . $sName;
-                if (!is_dir($sDirColumnPath)) {
-                    mkdir($sDirColumnPath, 0777, true);
-                }
-
-                // Fichiers multiples
-                if (is_array($aFile['name'])){
-
-                    $this->aValues[$sName] = "";
-                    for ($i=0; $i < count($aFile['name']); $i++) {
-
-                        // Remplace la valeur en base par le nom du fichier
-                        if (empty($this->aValues[$sName])) {
-                            $this->aValues[$sName] = $aFile['name'][$i];
-                        } else {
-                            $this->aValues[$sName] .= '|' . $aFile['name'][$i];
-                        }
-
-                        // Écrit le fichier dans son enplacement
-                        uploadFile($sName, "", $sDirColumnPath . "/" . $aFile['name'][$i], $aFile['size'][$i], $aFile['tmp_name'][$i]);
-                    }
-
-                }
-                // Fichier simple
-                else {
-
-                    // Remplace la valeur en base par le nom du fichier
-                    $this->aValues[$sName] = $aFile['name'];
-
-                    // Écrit le fichier dans son enplacement
-                    uploadFile($sName, "", $sDirColumnPath . "/" . $aFile['name'], $aFile['size']);
-                }
+                $aUploadReturn = $oFileManager->uploadInWsDataDir('vitis', $sBusinessObjectId, $this->aValues['my_vitis_id'], $sName, 'documents');
+                $this->aValues[$sName] = $aUploadReturn['field_value'];
             }
 
             $this->genericPut($bo_schema, $bo_table, $bo_id_field);
-- 
GitLab