diff --git a/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc b/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc index a67d55c469a94ff377ac508711a219f5ddc25b18..7f6e6c99528102527c61f6b036ba256fc72c3d93 100644 --- a/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc +++ b/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc @@ -49,7 +49,7 @@ class Files_manager{ *@param $sServerPath New path of the file. *@param $sMaxSize Maximal size of the file. *@param $aFileValues File structure generated by extractFileStruct. - *@return $sErrorMsg The error message or the final file path on success. + *@return $aReturn */ private function uploadFile($sNomObjet, $sFileType, $sServerPath, $sMaxSize, $aFileValues) { loadLang($this->sFolderLib, $this->oProperties["language"], $this->sFolderLib . "/"); @@ -64,10 +64,12 @@ class Files_manager{ ); $aForbiddenExtension = explode('|', str_replace("*.", "", $this->oProperties['forbidden_extension'])); $sTmpFile = ""; + $sFileName = ""; $sErrorMsg = ""; // si pas de aValues il y a eu une erreur pendant l'upload dans tmp du PUT if (!empty($aFileValues)){ $sTmpFile = $aFileValues['tmp_name']; + $sFileName = $aFileValues['name']; // Si l'utilisateur n'a indiqué aucun fichier à uploader, il ne se passe rien if ($sTmpFile == '') { @@ -134,22 +136,31 @@ class Files_manager{ } // si c'est une image avec les infos de taille final on resample - if($sFileType === "image" && (isset($aFileValues["width"]) && isset($aFileValues["height"]))){ - - // Resample l'image - $sTmpFile = pictureResampler($sTmpFile, $aFileValues["width"], $aFileValues["height"], 0, 0, 0, 0, $sFileExtension); - - // Change l'extension de la destination - $sMinFileExtension = $this->extension($sTmpFile); - $aDestPathExt = explode('.', $sServerPath); - array_pop($aDestPathExt); - array_push($aDestPathExt, 'jpg'); - $sServerPath = implode('.', $aDestPathExt); - - if(!$sTmpFile){ - $bAllowUpload = false; - writeToErrorLog(ERROR_COPYING_FILE . $aFileValues['name'] . ON_SERVER_PHPUTIL . ', while resampling picture, ' . $sServerPath); - $sErrorMsg = ERROR_COPYING_FILE . $aFileValues['name'] . ON_SERVER_PHPUTIL . '.'; + if(isset($aFileValues["width"]) && isset($aFileValues["height"])){ + + // Si le fichier est une image + if(@is_array(getimagesize($sTmpFile))){ + + // Resample l'image + $sTmpFile = pictureResampler($sTmpFile, $aFileValues["width"], $aFileValues["height"], 0, 0, 0, 0, $sFileExtension); + + // Change l'extension de la destination + $sMinFileExtension = $this->extension($sTmpFile); + $aDestPathExt = explode('.', $sServerPath); + array_pop($aDestPathExt); + array_push($aDestPathExt, 'jpg'); + $sServerPath = implode('.', $aDestPathExt); + + $aFileExt = explode('.', $sFileName); + array_pop($aFileExt); + array_push($aFileExt, 'jpg'); + $sFileName = implode('.', $aFileExt); + + if(!$sTmpFile){ + $bAllowUpload = false; + writeToErrorLog(ERROR_COPYING_FILE . $aFileValues['name'] . ON_SERVER_PHPUTIL . ', while resampling picture, ' . $sServerPath); + $sErrorMsg = ERROR_COPYING_FILE . $aFileValues['name'] . ON_SERVER_PHPUTIL . '.'; + } } } @@ -169,7 +180,11 @@ class Files_manager{ $sErrorMsg = FILE_LABEL_PHPUTIL . "File" . ERROR_DOWNLOAD_SERVER . '.'; } - return $sErrorMsg; + return array( + 'message' => $sMessage, + 'file_name' => $sFileName, + 'file_path' => $sServerPath + ); } /** @@ -183,23 +198,37 @@ class Files_manager{ $aFileStruc = array(); if (!isset($aValues[$sField . "_name"])){ // Extract From Post $File Struct - $aFileStruc = array( - "name" => $_FILES[$sField]['name'], - "tmp_name" => $_FILES[$sField]['tmp_name'], - "error" => $_FILES[$sField]['error'], - "size" => $_FILES[$sField]['size'] - ); + if (!empty($_FILES[$sField]['name'])) { + $aFileStruc = array( + "name" => $_FILES[$sField]['name'], + "tmp_name" => $_FILES[$sField]['tmp_name'], + "error" => $_FILES[$sField]['error'], + "size" => $_FILES[$sField]['size'] + ); + if (!empty($_FILES[$sField]['width'])) { + $aFileStruc['width'] = $_FILES[$sField]['width']; + } + if (!empty($_FILES[$sField]['height'])) { + $aFileStruc['height'] = $_FILES[$sField]['height']; + } + } // Fichiers multiples - if (!empty($_FILES[$sField][0])) { - $aFileStruc = []; + if (!empty($_FILES[$sField][0]['name'])) { for ($i=0; $i < count($_FILES[$sField]); $i++) { - $aFileStruc[] = array( + $aTmpFileStruc = array( "name" => $_FILES[$sField][$i]['name'], "tmp_name" => $_FILES[$sField][$i]['tmp_name'], "error" => $_FILES[$sField][$i]['error'], "size" => $_FILES[$sField][$i]['size'] ); + if (!empty($_FILES[$sField][$i]['width'])) { + $aTmpFileStruc['width'] = $_FILES[$sField][$i]['width']; + } + if (!empty($_FILES[$sField]['height'])) { + $aTmpFileStruc['height'] = $_FILES[$sField][$i]['height']; + } + array_push($aFileStruc, $aTmpFileStruc); } } @@ -242,7 +271,7 @@ class Files_manager{ *@param $sFileTypeCtrl Type of the document. (set to all to disable this control) *@param $aFileStruct File structure to upload *@param $bCreateThumbnailImage true to create automatically a thumnail image - *@return $sErrorMsg The error message. + *@return $aReturn */ public function uploadInWsDataDir($sModule, $sObject, $mId, $sField, $sContainer = "", $iMaxSize = -1, $sFileTypeCtrl = "all", $aFileStruct = null, $bCreateThumbnail = false){ @@ -324,15 +353,12 @@ class Files_manager{ } } - // Upload du fichier - $sMessage = $this->uploadFile($sField, $sFileTypeCtrl, $sDestPath, $iMaxSize, $aFileStruct); - // Image miniature $sMinDestPath = null; - if ($bCreateThumbnail === true && file_exists($sDestPath)) { + if ($bCreateThumbnail === true && file_exists($aFileStruct['tmp_name'])) { // Si image - if(@is_array(getimagesize($sDestPath))){ + if(@is_array(getimagesize($aFileStruct['tmp_name']))){ $aThumbnailFileStruct = $aFileStruct; $aThumbnailFileStruct["width"] = 200; @@ -340,25 +366,25 @@ class Files_manager{ $aThumbnailFileStruct['tmp_name'] = $aThumbnailFileStruct['tmp_name'] . '.min'; $aDestPathExt = explode('.', $sDestPath); - // Ajoute l'extension à l'image - $aThumbnailFileStruct['tmp_name'] .= '.' . end($aDestPathExt); - // Ajoute .min sur la destination array_splice($aDestPathExt, -1, 0, 'min'); $sMinDestPath = implode('.', $aDestPathExt); // Copie le fichier dans tmp - copy($sDestPath, $aThumbnailFileStruct['tmp_name']); + copy($aFileStruct['tmp_name'], $aThumbnailFileStruct['tmp_name']); // Upload le fichier .min.jpg $this->uploadFile($sField, "image", $sMinDestPath, $iMaxSize, $aThumbnailFileStruct); } } + // Upload du fichier + $aUploadReturn = $this->uploadFile($sField, $sFileTypeCtrl, $sDestPath, $iMaxSize, $aFileStruct); + return array( - 'message' => $sMessage, - 'field_value' => $aFileStruct["name"], - 'file_name' => $aFileStruct["name"], + 'message' => $aUploadReturn['message'], + 'field_value' => $aUploadReturn["file_name"], + 'file_name' => $aUploadReturn["file_name"], 'file_path' => $sDestPath, 'file_min_path' => $sMinDestPath ); @@ -413,7 +439,8 @@ class Files_manager{ } } // Upload du fichier - return $this->uploadFile($sField, $sFileTypeCtrl, $sDestPath, $iMaxSize, $aFileStruct); + $aUploadReturn = $this->uploadFile($sField, $sFileTypeCtrl, $sDestPath, $iMaxSize, $aFileStruct); + return $aUploadReturn['message']; } /** @@ -465,7 +492,8 @@ class Files_manager{ } } // Upload du fichier - return $this->uploadFile($sField, $sFileTypeCtrl, $sDestPath, $iMaxSize, $aFileStruct); + $aUploadReturn = $this->uploadFile($sField, $sFileTypeCtrl, $sDestPath, $iMaxSize, $aFileStruct); + return $aUploadReturn['message']; } /** diff --git a/src/vitis/vas/rest/ws/vitis/Vitis.class.inc b/src/vitis/vas/rest/ws/vitis/Vitis.class.inc index 71bb195fa2183f148586600fd9559754dcb24e04..0cfa33e45373d8146d7043148a37136fbb11ba1b 100644 --- a/src/vitis/vas/rest/ws/vitis/Vitis.class.inc +++ b/src/vitis/vas/rest/ws/vitis/Vitis.class.inc @@ -1574,20 +1574,20 @@ class Vitis extends DbClass { if (in_array($sFieldName, $aUploadFilesCols) || $aUploadFiles === '*') { // width / height - if (!empty($aUploadFilesCols[$sFieldName]['width']) && - !empty($aUploadFilesCols[$sFieldName]['height'])) { + if (!empty($aUploadFiles[$sFieldName]['width']) && + !empty($aUploadFiles[$sFieldName]['height'])) { // Fichier unique if (!empty($_FILES[$sFieldName]['name'])) { - $_FILES[$sFieldName]['width'] = $aUploadFilesCols[$sFieldName]['width']; - $_FILES[$sFieldName]['height'] = $aUploadFilesCols[$sFieldName]['height']; + $_FILES[$sFieldName]['width'] = $aUploadFiles[$sFieldName]['width']; + $_FILES[$sFieldName]['height'] = $aUploadFiles[$sFieldName]['height']; } // Fichiers multiples if (!empty($_FILES[$sFieldName][0]['name'])) { for ($i=0; $i < count($_FILES[$sFieldName]); $i++) { - $_FILES[$sFieldName][$i]['width'] = $aUploadFilesCols[$sFieldName]['width']; - $_FILES[$sFieldName][$i]['height'] = $aUploadFilesCols[$sFieldName]['height']; + $_FILES[$sFieldName][$i]['width'] = $aUploadFiles[$sFieldName]['width']; + $_FILES[$sFieldName][$i]['height'] = $aUploadFiles[$sFieldName]['height']; } } }