From 3c1f6127fe5f6b51510597a4ee9f22bea5b79dc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Carretero?= <frederic.carretero@veremes.com> Date: Mon, 19 Nov 2018 11:22:45 +0100 Subject: [PATCH] =?UTF-8?q?deleteDirectoryInWsDataDir()=20->=20Supprime=20?= =?UTF-8?q?un=20r=C3=A9pertoire=20dans=20"ws=5Fdata"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vas/rest/class/vmlib/phpUtil.inc | 68 ++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/vas/rest/class/vmlib/phpUtil.inc b/vas/rest/class/vmlib/phpUtil.inc index 2435bfbb..67f9e08b 100755 --- a/vas/rest/class/vmlib/phpUtil.inc +++ b/vas/rest/class/vmlib/phpUtil.inc @@ -1498,4 +1498,72 @@ function createEmptyFileInWsDataDir($sModule, $sObject, $mId, $sField = '', $sFi } return $sErrorMsg; } + + /** + *This method delete a directory in ws_data. + *@file vmlib/phpUtil.inc + *@param $sModule Name of the module. + *@param $sObject Name of the object. + *@param $mId Id of the current object. + *@param $sField field name (generally DB column name). + *@param $sDirectoryName Name of the directory to delete. + *@return $sErrorMsg The error message. + */ +function deleteDirectoryInWsDataDir($sModule, $sObject, $mId, $sField = '', $sDirectoryName = '') { + global $properties; + $sErrorMsg = ''; + $sDestDir = $properties['ws_data_dir'] . "/" . $sModule . "/" . $sObject . "/" . $mId; + if(!empty($sField)) + $sDestDir .= "/" . $sField; + if ($properties['fileS3Uploader'] === true) { + require_once ("aws_sdk/aws-autoloader.php"); + $s3 = new Aws\S3\S3Client(array( + 'version'=>'latest', + 'region'=> $properties['fileS3UploaderRegion'], + 'profile'=> $properties['fileS3UploaderProfil'], + 'debug' => false + )); + $sBucket = $properties['fileS3UploaderBucket']; + $sPrefix = ""; + if (strpos($sBucket, "/") > -1){ + $aBucket = explode("/", $sBucket ); + $sBucket = $aBucket[0]; + $sPrefix = implode("/", array_slice($aBucket, 1)); + } + $sServerPath = str_replace($properties["vas_home"], $sPrefix, $sDestDir); + // Suppression du slash de début de ligne (sinon création d'un répertoire vide sur S3). + if (strpos($sServerPath, '/') === 0) + $sServerPath = substr($sServerPath, 1); + if (!empty($sDirectoryName)) + $sServerPath .= '/' . $sDirectoryName; + // Suppression du répertoire. + try { + $oAwsResult = $s3->listObjects(array( + 'Bucket' => $sBucket, + 'Prefix' => $sServerPath + )); + // Suppression de chaque fichier. + foreach($oAwsResult->get('Contents') as $aKey) { + $aResult = $s3->deleteObject(array( + 'Bucket' => $sBucket, + 'Key' => $aKey['Key'] + )); + } + } + catch(Aws\S3\Exception\S3Exception $e) { + writeToErrorLog($e->getMessage()); + } + } + else { + // Suppression du répertoire. + $sDirectoryPath = $sDestDir . '/' . $sDirectoryName; + if (is_dir($sDirectoryPath)) { + if (!cleardir($sDirectoryPath)) { + writeToErrorLog(ERROR_DELETING_DIRECTORY . $sDestDir); + return ERROR_DELETING_DIRECTORY . $sDestDir; + } + } + } + return $sErrorMsg; +} ?> -- GitLab