From 3b034cb25972a0ea751e82ab52feb8393dba426b Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sun, 2 Oct 2005 17:52:41 +0000
Subject: [PATCH] repermettre la selection des logos dans upload/

---
 ecrire/inc_getdocument.php3 | 22 +++++++++------
 ecrire/inc_logos.php3       | 56 ++++++++++++++++++-------------------
 spip_image.php3             | 28 +++++++------------
 3 files changed, 51 insertions(+), 55 deletions(-)

diff --git a/ecrire/inc_getdocument.php3 b/ecrire/inc_getdocument.php3
index 4035fb8e35..409546a5dd 100644
--- a/ecrire/inc_getdocument.php3
+++ b/ecrire/inc_getdocument.php3
@@ -361,7 +361,7 @@ function ajouter_un_document ($source, $nom_envoye, $type_lien, $id_lien, $mode,
 
 /* STOCKER LES DOCUMENTS INCONNUS AU FORMAT .ZIP */
 			$ext = 'zip';
-			spip_log("Extension $ext");
+
 			if (!$row = spip_fetch_array(spip_query(
 			"SELECT * FROM spip_types_documents
 			WHERE extension='zip' AND upload='oui'"))) {
@@ -593,7 +593,7 @@ function joindre2($arg, $mode, $type, $id, $id_document,$hash, $hash_id_auteur,
 				   array('name' => basename($arg),
 					 'tmp_name' => $arg)
 				   ), 'distant', $type, $id, $id_document,
-			     $hash, $hash_id_auteur, $redirect, &$actifs);
+			     $hash, $hash_id_auteur, $redirect, $actifs);
 }
 
 // Cas d'un fichier transmis
@@ -830,13 +830,19 @@ function corriger_extension($ext) {
 // $dest = arton12.xxx
 function ajout_logo($source, $dest) {
 
-	// Intercepter une erreur d'upload
-	if (check_upload_error($source['error'])) return;
+	if (!$source) return;
+	if (!is_array($source))
+		$f = _DIR_TRANSFERT . $source; // fichier dans upload/
+	else {
+		// Intercepter une erreur a l'envoi
+		if (check_upload_error($source['error'])) return;
+
+		// analyse le type de l'image (on ne fait pas confiance au nom de
+		// fichier envoye par le browser : pour les Macs c'est plus sur)
+		$f =_DIR_DOC . $dest . '.tmp';
+		deplacer_fichier_upload($source['tmp_name'], $f);
+	}
 
-	// analyse le type de l'image (on ne fait pas confiance au nom de
-	// fichier envoye par le browser : pour les Macs c'est plus sur)
-	$f =_DIR_DOC . $dest . '.tmp';
-	deplacer_fichier_upload($source['tmp_name'], $f);
 	$size = @getimagesize($f);
 	$type = decoder_type_image($size[2], true);
 
diff --git a/ecrire/inc_logos.php3 b/ecrire/inc_logos.php3
index e7518cff28..c1ccdb91f3 100644
--- a/ecrire/inc_logos.php3
+++ b/ecrire/inc_logos.php3
@@ -87,7 +87,7 @@ function afficher_boite_logo($type, $id_objet, $id, $texteon, $texteoff) {
 function afficher_logo($racine, $titre, $logo, $id_objet, $id) {
 	global $connect_id_auteur;
 	global $couleur_foncee, $couleur_claire;
-	global $clean_link;
+	global $clean_link, $spip_lang_right;
 
 	include_ecrire('inc_admin.php3');
  
@@ -101,7 +101,7 @@ function afficher_logo($racine, $titre, $logo, $id_objet, $id) {
 
 	if ($logo) {
 		list ($fichier, $taille) =  $logo;
-		$hash = calculer_action_auteur("supp_logo $fichier");
+		$hash = calculer_action_auteur("effacer_logo $fichier");
 
 		echo "<p><center><div><a href='"._DIR_IMG.$fichier."'>";
 		echo reduire_image_logo(_DIR_IMG.$fichier, 170);
@@ -110,7 +110,7 @@ function afficher_logo($racine, $titre, $logo, $id_objet, $id) {
 		echo $taille;
 		echo "\n<br />[<a href='../spip_image.php3?";
 		echo "$id_objet=$id&";
-		echo "image_supp=$fichier&hash_id_auteur=$connect_id_auteur&hash=$hash&redirect=".urlencode($redirect)."'>"._T('lien_supprimer')."</A>]";
+		echo "action=effacer_logo&amp;chemin=$fichier&amp;hash_id_auteur=$connect_id_auteur&amp;hash=$hash&amp;redirect=".urlencode($redirect)."'>"._T('lien_supprimer')."</a>]";
 		echo fin_block();
 		echo "</center></p>";
 	}
@@ -119,43 +119,41 @@ function afficher_logo($racine, $titre, $logo, $id_objet, $id) {
 		echo debut_block_invisible(md5($titre));
 
 		echo "\n\n<FORM ACTION='../spip_image.php3' METHOD='POST'
-			ENCTYPE='multipart/form-data'>";
-		echo "\n<INPUT NAME='redirect' TYPE=Hidden VALUE='$redirect'>";
-		echo "\n<INPUT NAME='$id_objet' TYPE=Hidden VALUE='$id'>";
-		echo "\n<INPUT NAME='hash_id_auteur' TYPE=Hidden VALUE='$connect_id_auteur'>";
-		echo "\n<INPUT NAME='hash' TYPE=Hidden VALUE='$hash'>";
-		echo "\n<INPUT NAME='ajout_logo' TYPE=Hidden VALUE='oui'>";
-		echo "\n<INPUT NAME='logo' TYPE=Hidden VALUE='$racine'>";
-		if (tester_upload()){
-			echo "\n"._T('info_telecharger_nouveau_logo')."<BR>";
-			echo "\n<INPUT NAME='image' TYPE=File CLASS='forml' style='font-size:9px;' SIZE=15>";
-			echo "\n <div align='right'><INPUT NAME='ok' TYPE=Submit VALUE='"._T('bouton_telecharger')."' CLASS='fondo' style='font-size:9px;'></div>";
+			ENCTYPE='multipart/form-data'>
+			<div>";
+		echo "\n<INPUT NAME='redirect' TYPE=Hidden VALUE='$redirect' />";
+		echo "\n<INPUT NAME='$id_objet' TYPE=Hidden VALUE='$id' />";
+		echo "\n<INPUT NAME='hash_id_auteur' TYPE=Hidden VALUE='$connect_id_auteur' />";
+		echo "\n<INPUT NAME='hash' TYPE=Hidden VALUE='$hash' />";
+		echo "\n<INPUT NAME='action' TYPE=Hidden VALUE='ajout_logo' />";
+		echo "\n<INPUT NAME='logo' TYPE=Hidden VALUE='$racine' />";
+		echo "\n"._T('info_telecharger_nouveau_logo')."<br />";
+		echo "\n<INPUT NAME='image' type='File' class='forml' style='font-size:9px;' SIZE=15>";
+		echo "<div align='",  $GLOBALS['spip_lang_right'], "'>";
+		echo "\n<input name='sousaction1' type='submit' value='",
+		  _T('bouton_telecharger'),
+		  "' class='fondo' style='font-size:9px' /></div>";
+		if (!$GLOBALS['flag_upload']) {
+				echo _T('info_installer_images_dossier');
 		} else {
-
 			$myDir = opendir(_DIR_TRANSFERT);
 			while($entryName = readdir($myDir)){
 				if (!ereg("^\.",$entryName) AND eregi("(gif|jpg|png)$",$entryName)){
 					$entryName = addslashes($entryName);
-					$afficher .= "\n<OPTION VALUE='" .
-						_DIR_TRANSFERT .
-						"$entryName'>$entryName";
+					$afficher .= "\n<option value='$entryName'>$entryName</option>";
 				}
 			}
 			closedir($myDir);
 
-			if (strlen($afficher) > 10){
-				echo "\n"._T('info_selectionner_fichier_2');
-				echo "\n<SELECT NAME='image' CLASS='forml' SIZE=1>";
-				echo $afficher;
-				echo "\n</SELECT>";
-				echo "\n  <INPUT NAME='ok' TYPE=Submit VALUE='"._T('bouton_choisir')."' CLASS='fondo'>";
-			} else {
-				echo _T('info_installer_images_dossier');
-			}
-
+			echo "\n<div style='text-align: left'>"._T('info_selectionner_fichier').":</div>";
+			echo "\n<SELECT NAME='chemin' CLASS='forml' size='1'>";
+			echo $afficher;
+			echo "\n</SELECT>";
+			echo "<div align='",  $GLOBALS['spip_lang_right'], "'>";
+			echo "\n<input name='sousaction2' type='submit' value='"._T('bouton_choisir')."' CLASS='fondo'  style='font-size:9px' /></div>";
 		}
 		echo fin_block();
-		echo "</FORM>\n";
+		echo "</div></FORM>\n";
 	}
 
 	echo "</font>";
diff --git a/spip_image.php3 b/spip_image.php3
index 93cb942889..29d69a7587 100644
--- a/spip_image.php3
+++ b/spip_image.php3
@@ -56,28 +56,18 @@ if ($test_vignette)
      else spip_log("spip_image ne connait pas $fonc");
    }
 // Ajout d'un logo
-else if ($ajout_logo == "oui" and $logo) {
-
-  // Recuperer les variables d'upload
-  if (!$_FILES)
-    $_FILES = &$HTTP_POST_FILES;
-  if (!is_array($_FILES))
-    $_FILES = array();
-  foreach ($_FILES as $id => $file) {
-    if ($file['error'] == 4 /* UPLOAD_ERR_NO_FILE */)
-      unset ($_FILES[$id]);
-  }
-	if ($desc = array_pop($_FILES)
-	AND verifier_action_auteur("ajout_logo $logo",
-	$hash, $hash_id_auteur))
+else if ($action == 'ajout_logo') {
+
+  if (!$_FILES) $_FILES = $HTTP_POST_FILES;
+  $desc = $sousaction2 ? $chemin : (is_array($_FILES) ? array_pop($_FILES) : "");
+  if ($desc AND verifier_action_auteur("$action $logo", $hash, $hash_id_auteur))
 		ajout_logo($desc, $logo);
 }
 
 // Suppression d'un logo
-else if ($image_supp) {
-	if (verifier_action_auteur("supp_logo $image_supp",
-	$hash, $hash_id_auteur))
-		effacer_logo($image_supp);
+else if ($action = "effacer_logo") {
+	if (verifier_action_auteur("$action $chemin", $hash, $hash_id_auteur))
+		effacer_logo($chemin);
 }
 
 // Suppression d'un document et de sa vignette
@@ -94,6 +84,8 @@ else if ($doc_rotate) {
 		tourner_document($var_rot, $doc_rotate, $convert_command);
 }
 
+ else spip_log("spip_image: action inconnue");
+
 //
 // Retour a l'envoyeur
 //
-- 
GitLab