From 8919664d7e38074d912aecb7ce8238448ebbb525 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Carretero?=
 <frederic.carretero@veremes.com>
Date: Wed, 14 Nov 2018 14:52:53 +0100
Subject: [PATCH] uploadFileToLocal() -> upload d'un fichier vers un chemin
 local.

---
 vas/rest/class/vmlib/phpUtil.inc | 149 +++++++++++++++++++++++++++++++
 1 file changed, 149 insertions(+)

diff --git a/vas/rest/class/vmlib/phpUtil.inc b/vas/rest/class/vmlib/phpUtil.inc
index 0518e96f..9cc1a4ee 100755
--- a/vas/rest/class/vmlib/phpUtil.inc
+++ b/vas/rest/class/vmlib/phpUtil.inc
@@ -1385,4 +1385,153 @@ function getDatePattern($sUserDateFormat, $sDateType) {
     }
     return $Pattern;
 }
+
+/**
+ *This method allow to upload a file on a server.
+ *@file vmlib/phpUtil.inc
+ *@param $sNomObjet Name of the object.
+ *@param $sFileType Type of file needed.
+ *@param $sServerPath New path of the file.
+ *@param $sMaxSize Maximal size of the file.
+ *@return $sErrorMsg The error message.
+ */
+function uploadFileToLocal($sNomObjet, $sFileType, $sServerPath, $sMaxSize) {
+    global $properties, $sFolderLib;
+    loadLang($sFolderLib, $properties["language"], $sFolderLib . "/");
+    $aExtensionPicture = array('gif', 'jpg', 'jpeg', 'png');
+    $aExtensionPictureAndPdf = array('gif', 'jpg', 'jpeg', 'png', 'pdf');
+    $aExtensionFile = array('pdf', 'gif', 'jpg', 'jpeg', 'png', 'txt');
+    $aExtensionZip = array('zip', 'gex');
+    $aExtensionFmw = array('fmw');
+    $aForbiddenExtension = explode('|', str_replace("*.", "", $properties['forbidden_extension']));
+    $sTmpFile = $_FILES[$sNomObjet]['tmp_name'];
+    // Si l'utilisateur n'a indiqué aucun fichier à uploader, il ne se passe rien
+    $sErrorMsg = "";
+
+    if ($sTmpFile == '') {
+        if ($_FILES[$sNomObjet]['name'] != "") {
+            switch ($_FILES[$sNomObjet]['error']) {
+                case "1" :
+                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_UPLOAD_MAX_FILE_SIZE;
+                    break;
+                case "2" :
+                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_MAX_FILE_SIZE;
+                    break;
+                case "3" :
+                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_PARTIAL_DOWNLOAD;
+                    break;
+                case "4" :
+                    $sErrorMsg = ERROR_NO_FILE_DOWNLOADED;
+                    break;
+                case "6" :
+                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_MISSING_TEMP_FOLDER;
+                    break;
+                case "7" :
+                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_WRITING_DISK;
+                    break;
+                case "8" :
+                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_PHP_EXT_SEND;
+                    break;
+            }
+            writeToErrorLog($sErrorMsg);
+        }
+        return $sErrorMsg;
+    }
+    $aTemp = explode("\\", $sServerPath);
+    if (is_uploaded_file($sTmpFile)) {
+        if (!in_array(extension($aTemp[count($aTemp) - 1]), $aForbiddenExtension)) {
+            //Teste si le fichier correspont au format voulu.
+            $bAllowUpload = false;
+            $sFormat = "";
+            switch ($sFileType) {
+                case "image" :
+                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionPicture)) {
+                        $bAllowUpload = true;
+                    } else {
+                        foreach ($aExtensionPicture as $sValue) {
+                            $sFormat .= " " . $sValue;
+                        }
+                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
+                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
+                    }
+                    break;
+                case "image-pdf" :
+                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionPictureAndPdf)) {
+                        $bAllowUpload = true;
+                    } else {
+                        foreach ($aExtensionPictureAndPdf as $sValue) {
+                            $sFormat .= " " . $sValue;
+                        }
+                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
+                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
+                    }
+                    break;
+                case "document" :
+                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionFile)) {
+                        $bAllowUpload = true;
+                    } else {
+                        foreach ($aExtensionFile as $sValue) {
+                            $sFormat .= " " . $sValue;
+                        }
+                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
+                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
+                    }
+                    break;
+                case "zip" :
+                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionZip)) {
+                        $bAllowUpload = true;
+                    } else {
+                        foreach ($aExtensionZip as $sValue) {
+                            $sFormat .= " " . $sValue;
+                        }
+                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
+                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
+                    }
+                    break;
+                case "fmw" :
+                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionFmw)) {
+                        $bAllowUpload = true;
+                    } else {
+                        foreach ($aExtensionFmw as $sValue) {
+                            $sFormat .= " " . $sValue;
+                        }
+                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
+                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
+                    }
+                    break;
+                default :
+
+                    $bAllowUpload = true;
+
+                    break;
+            }
+
+            //Teste si le fichier n'est pas de trop grande taille.
+            if ($_FILES[$sNomObjet]['size'] > $sMaxSize || $_FILES[$sNomObjet]['error'] == 1) {
+                $bAllowUpload = false;
+                if ($_FILES[$sNomObjet]['size'] > $sMaxSize)
+                    $sErrorMsg .= FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . OF_LABEL_PHPUTIL . $_FILES[$sNomObjet]['size'] . ERROR_EXCEED_MAX_SIZE . ' (' . $sMaxSize . LABEL_BYTES_PHPUTIL . ').';
+                if ($_FILES[$sNomObjet]['error'] > $sMaxSize)
+                    $sErrorMsg .= FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_EXCEED_MAX_SIZE_PHP . ' (' . $sMaxSize . LABEL_BYTES_PHPUTIL . ').';
+            }
+            //Lance l'upload.
+            if ($bAllowUpload) {
+                if (!copy($sTmpFile, $sServerPath)) {
+                    writeToErrorLog(ERROR_COPYING_FILE . $_FILES[$sNomObjet]['name'] . ON_SERVER_PHPUTIL . ', ' . $sTmpFile . ', ' . $sServerPath);
+                    $sErrorMsg = ERROR_COPYING_FILE . $_FILES[$sNomObjet]['name'] . ON_SERVER_PHPUTIL . '.';
+                }
+                unlink($sTmpFile);
+                //chmod($sServerPath,755);
+            }
+        } else {
+            writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
+            $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
+        }
+    } else {
+        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_DOWNLOAD_SERVER);
+        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_DOWNLOAD_SERVER . ' (' . ERROR_CODE_PHPUTIL . $_FILES[$sNomObjet]['error'] . ').';
+    }
+
+    return $sErrorMsg;
+}
 ?>
-- 
GitLab