From d45e6e75a52b3fc1908a7954151b8579d2d000b7 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Tue, 5 Oct 2004 13:55:46 +0000
Subject: [PATCH] Poursuite du nettoyage generer_url_document & IMG

---
 ecrire/inc_documents.php3 |  4 ++-
 ecrire/inc_logos.php3     | 17 ++++-------
 inc-calcul-outils.php3    | 59 ++++++++++++++++++++++++++-------------
 inc-public-global.php3    |  5 ++++
 spip_image.php3           | 14 ----------
 5 files changed, 53 insertions(+), 46 deletions(-)

diff --git a/ecrire/inc_documents.php3 b/ecrire/inc_documents.php3
index cd4d38872f..938599b177 100644
--- a/ecrire/inc_documents.php3
+++ b/ecrire/inc_documents.php3
@@ -16,7 +16,7 @@ include_ecrire ("inc_admin.php3");
 // Vignette pour les documents lies
 //
 
-function vignette_par_defaut($type_extension) {
+function vignette_par_defaut($type_extension, $size=true) {
 
 	$filename = _DIR_IMG_ICONES . "$type_extension";
 
@@ -32,6 +32,8 @@ function vignette_par_defaut($type_extension) {
 	if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut-dist.gif")) 
 	$v = _DIR_IMG_ICONES . "/defaut-dist.gif";
 
+	if (!$size) return $v;
+
 	if ($size = @getimagesize($v)) {
 		$largeur = $size[0];
 		$hauteur = $size[1];
diff --git a/ecrire/inc_logos.php3 b/ecrire/inc_logos.php3
index 703af794be..0842624c8d 100644
--- a/ecrire/inc_logos.php3
+++ b/ecrire/inc_logos.php3
@@ -375,30 +375,25 @@ function reduire_image_logo($img, $taille = 120, $taille_y=0) {
 	if (!$taille_y)
 		$taille_y = $taille;
 
-	// recuperer le nom du fichier
+	// recuperer le nom du fichier (est-ce encore utilise ?)
 	if (eregi("src=\'([^']+)\'", $img, $regs)) $logo = $regs[1];
 	if (eregi("align=\'([^']+)\'", $img, $regs)) $align = $regs[1];
 	if (eregi("name=\'([^']+)\'", $img, $regs)) $name = $regs[1];
 	if (eregi("hspace=\'([^']+)\'", $img, $regs)) $espace = $regs[1];
-
+	spip_log($img);
 	if (!$logo)
 		$logo = $img; // [(#LOGO_ARTICLE|fichier|reduire_image{100})]
 
-
-	if (ereg("^../",$logo))
-		$logo = substr($logo,3);
-
-	if (ereg("^" . _DIR_IMG, $logo))
-		$img = substr($logo,strlen(_DIR_IMG));
-	else { $img = $logo; $logo = _DIR_IMG . $logo;}
+	if (ereg("^../",$logo))	$logo = substr($logo,3);
+	if (!ereg("^" . _DIR_IMG, $logo)) $logo = _DIR_IMG . $logo;
 
 	if (@file_exists($logo) AND
-	eregi("^(.*)\.(jpg|gif|png)$", $img, $regs)) {
+	eregi("\.(jpg|gif|png)$", $logo, $regs)) {
 		include_local('inc-public-global.php3');
 		$nom = $regs[1];
 		$format = $regs[2];
 		$suffixe = '-'.$taille.'x'.$taille_y;
-		$cache_folder=  _DIR_IMG . creer_repertoire(_DIR_IMG, 'cache'.$suffixe);
+		$cache_folder= creer_repertoire_documents('cache'.$suffixe);
 		$preview = creer_vignette($logo, $taille, $taille_y, $format, $cache_folder.$nom.$suffixe);
 
 		if ($preview) {
diff --git a/inc-calcul-outils.php3 b/inc-calcul-outils.php3
index dfc39d9e77..cd203decab 100644
--- a/inc-calcul-outils.php3
+++ b/inc-calcul-outils.php3
@@ -199,27 +199,46 @@ function calcul_branche ($generation) {
 	}
 }
 
+# fonction appelée par la balise #LOGO_DOCUMENT
+
 function calcule_document($id_document, $doubdoc, &$doublons){
-  if ($doubdoc && $id_document) $doublons["documents"] .= ', ' . $id_document;
-  $row = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = $id_document"));
-  if (!$row) return '';
-  if ($id_vignette = $row['id_vignette']) {
-		if ($row_vignette = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_vignette"))) {
-			if (@file_exists($row_vignette['fichier']))
-				return generer_url_document($id_vignette);
-			}
-  } else if ($row['mode'] == 'vignette') {
-	return generer_url_document($id_document);
-  }
-// si pas de vignette, utiliser la vignette par defaut
-// ou essayer de creer une preview (images)
-  list($extension) = @spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE id_type = " .$row['id_type']));
-  if (!ereg(",$extension,", ','.lire_meta('formats_graphiques').',')) {
-	list($url, $w, $h) = vignette_par_defaut($extension);
-	return $url;
-  } else {
-	return 'spip_image.php3?vignette='.rawurlencode(str_replace('../', '', $row['fichier']));
-  }
+	if ($doubdoc && $id_document) $doublons["documents"] .= ', ' . $id_document;
+
+	if (!($row = spip_abstract_select(array('id_type', 'id_vignette', 'fichier', 'mode'), array('documents AS documents'), array("id_document = $id_document"))))
+// pas de document. Ne devrait pas arriver
+		return ''; 
+
+	list($id_type, $id_vignette, $fichier, $mode) = spip_abstract_fetch($row);
+	if ($id_vignette) {
+		if ($res = spip_abstract_select(array('fichier'), array('documents AS documents'), array("id_document = $id_vignette"))) {
+			list($fichier) = spip_abstract_fetch($res);
+			if (@file_exists($fichier))
+			  return generer_url_document($id_vignette);
+#			  return ($fichier); # en std g_u_d fait ça
+		}
+	} else if ($mode == 'vignette') 
+			  return generer_url_document($id_document);
+# return $fichier; # en std g_u_d fait ça
+
+// calcul de l'extension par tous les moyens
+	if ($id_type) {
+		list($ext) = spip_abstract_fetch(spip_abstract_select(array('extension'), array('types_documents AS documents'), array("id_type = " . intval($id_type))));
+	} else {
+		eregi('\.([a-z0-9]+)$', $fichier, $regs);
+		$ext = $regs[1];
+	}
+// Pas de vignette mais une extension:
+// prendre la vignette de celle-ci dans IMG/icones sauf si on peut faire mieux
+	$formats = ','.lire_meta('formats_graphiques').',';
+	if ((strpos($formats, ",$ext,") === false) || 
+	    !$fichier || (lire_meta("creer_preview") != 'oui')) {
+		return  vignette_par_defaut($ext ? $ext : 'txt', false);
+	}
+// on peut faire mieux dans le cas des images: une previsualisation
+// on devrait verifier que le fichier existe dans IMG/vignette
+// et sinon lancer creer_vignette (qui fera un UPDATE sur spip_documents)
+// mais on risque de dépasser le temps alloue au processus
+	return 'spip_image.php3?vignette='.rawurlencode(str_replace('../', '', $fichier));
 }
 
 
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index 7235c526b4..f9124deca9 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -352,4 +352,9 @@ function creer_repertoire($base, $subdir) {
 	return ($ok? "$subdir/" : '');
 }
 
+function creer_repertoire_documents($ext) {
+# est-il bien raisonnable d'accepter de creer si creer_rep retourne '' ?
+	return  _DIR_IMG . creer_repertoire(_DIR_IMG, $ext);
+}
+
 ?>
diff --git a/spip_image.php3 b/spip_image.php3
index df8bd6bb54..576d8af607 100644
--- a/spip_image.php3
+++ b/spip_image.php3
@@ -7,11 +7,6 @@ include_ecrire("inc_charsets.php3");
 include_ecrire("inc_meta.php3");
 include_ecrire("inc_admin.php3");
 
-function creer_repertoire_documents($ext) {
-# est-il bien raisonnable d'accepter de creer si creer_rep retourne '' ?
-	return  _DIR_IMG . creer_repertoire(_DIR_IMG, $ext);
-}
-
 function copier_document($ext, $orig, $source) {
 	$dest = creer_repertoire_documents($ext) .
 		ereg_replace("[^.a-zA-Z0-9_=-]+", "_", 
@@ -210,12 +205,8 @@ function ajout_image($source, $dest) {
 //
 
 function ajout_doc($orig, $source, $mode, $id_document, $titre_automatique=true) {
-	$doc_vignette=''; $titre_vignette=''; $descriptif_vignette=''; 
-
 	global $hash_id_auteur, $hash, $id_article, $type;
 
-	//die ("<li>$orig<li>$source<li>$dest<li>$mode<li>$id_document");
-
 	//
 	// Securite
 	//
@@ -290,11 +281,6 @@ function ajout_doc($orig, $source, $mode, $id_document, $titre_automatique=true)
 				$id_document = $id_document_lie; // pour que le 'return' active le bon doc.
 			}
 
-			if ($doc_vignette){
-				$query = "UPDATE spip_documents SET id_vignette=$doc_vignette, titre='', descriptif='' WHERE id_document=$id_document";
-				spip_query($query);
-			}
-
 	// Creer la vignette
 			if ($mode == 'document' AND lire_meta('creer_preview') == 'oui'
 			    AND ereg(",$ext,", ','.lire_meta('formats_graphiques').',')) {
-- 
GitLab