From 263f2dff0316e3361695c2542230b1cd3e38fa03 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Tue, 18 May 2021 10:57:26 +0200
Subject: [PATCH] Utiliser archiviste quand on zip un fichier dont l'extension
 est indesirable

---
 action/ajouter_documents.php | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php
index 91f6f74b..58f97116 100644
--- a/action/ajouter_documents.php
+++ b/action/ajouter_documents.php
@@ -432,7 +432,7 @@ function verifier_upload_autorise($source, $mode = '') {
  *     Au format $_FILES
  * @param string $mode
  *     Mode d'inclusion du fichier, si connu
- * @return array
+ * @return array|string
  */
 function fixer_fichier_upload($file, $mode = '') {
 	/**
@@ -475,22 +475,16 @@ function fixer_fichier_upload($file, $mode = '') {
 			// deplacer le fichier tmp_name dans le dossier tmp
 			deplacer_fichier_upload($file['tmp_name'], $tmp, true);
 
-			include_spip('inc/pclzip');
 			$source = _DIR_TMP . basename($tmp_dir) . '.' . $ext;
-			$archive = new PclZip($source);
-
-			$v_list = $archive->create(
-				$tmp,
-				PCLZIP_OPT_REMOVE_PATH,
-				$tmp_dir,
-				PCLZIP_OPT_ADD_PATH,
-				''
-			);
+
+			include_spip('inc/archives');
+			$archive = new Spip\Archives\SpipArchives($source);
+			$res = $archive->emballer([$tmp]);
 
 			effacer_repertoire_temporaire($tmp_dir);
-			if (!$v_list) {
-				spip_log('Echec creation du zip');
-				return false;
+			if (!$res) {
+				spip_log("Echec creation du zip $source", 'medias' . _LOG_ERREUR);
+				return _T('medias:erreur_ecriture_fichier');
 			}
 
 			$row['fichier'] = copier_document($row['extension'], $file['name'], $source, $subdir);
-- 
GitLab