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