From 89b1281c1bf768810678fc174373be0cb5a05b25 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Wed, 6 Oct 2004 16:25:50 +0000 Subject: [PATCH] vignettes avec un minimum d'indirections --- ecrire/inc_documents.php3 | 89 +++++++++++++++++++++------------------ spip_image.php3 | 81 ++++++++++++----------------------- 2 files changed, 74 insertions(+), 96 deletions(-) diff --git a/ecrire/inc_documents.php3 b/ecrire/inc_documents.php3 index 938599b177..8c2761989c 100644 --- a/ecrire/inc_documents.php3 +++ b/ecrire/inc_documents.php3 @@ -43,6 +43,26 @@ function vignette_par_defaut($type_extension, $size=true) { } +function vignette_previsu_ou_par_defaut($fichier, $extension) { + // si pas de vignette, utiliser la vignette par defaut + // ou essayer de creer une previsu si permis + $formats = ','.lire_meta('formats_graphiques').','; + if ((strpos($formats, ",$extension,") === false) || + (lire_meta("creer_preview") != 'oui')) { + return vignette_par_defaut($extension ? $extension : 'txt', true); + } else { + return array(($flag_ecrire?'../':'').'spip_image.php3?vignette='.rawurlencode(str_replace('../', '', $fichier)), 0, 0); + } +} + +function document_et_vignette($document) +{ + eregi('\.([a-z0-9]+)$', $document, $regs); + list($fichier, $largeur, $hauteur) = + vignette_previsu_ou_par_defaut($document, $regs[1]); + return "<a href='../$document'><img src='$fichier' border='0'></a>"; +} + // // Integration (embed) multimedia // @@ -233,18 +253,8 @@ function integre_image($id_document, $align, $type_aff) { $hauteur_vignette = $hauteur; } - // si pas de vignette, utiliser la vignette par defaut - // ou essayer de creer une preview (images) - if (!$url_fichier_vignette) { - if (!ereg(",$extension,", ','.lire_meta('formats_graphiques').',')) { - list($url_fichier_vignette, $largeur_vignette, $hauteur_vignette) = vignette_par_defaut($extension); - } else { - $url_fichier_vignette = ($flag_ecrire?'../':'').'spip_image.php3?vignette='.rawurlencode(str_replace('../', '', $fichier)); - } - } - - if ($type_aff=='fichier_vignette') - return $url_fichier_vignette; + if (!$url_fichier_vignette) + list($url_fichier_vignette, $largeur_vignette, $hauteur_vignette) = vignette_previsu_ou_par_defaut($fichier, $extension); if ($url_fichier_vignette) { $vignette = "<img src='$url_fichier_vignette' border='0'"; @@ -375,6 +385,7 @@ function texte_upload_manuel($dir, $inclus = '') { function texte_vignette_document($largeur_vignette, $hauteur_vignette, $fichier_vignette, $fichier_document) { +# spip_log("texte_vignette_document($largeur_vignette, $hauteur_vignette, $fichier_vignette, $fichier_document)"); if ($largeur_vignette > 120) { $rapport = 120.0 / $largeur_vignette; $largeur_vignette = 120; @@ -448,8 +459,6 @@ function afficher_upload($link, $redirect='', $intitule, $inclus = '', $afficher } - - // // Afficher les documents non inclus // (page des articles) @@ -512,14 +521,14 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod $titre = $document->get('titre'); $descriptif = $document->get('descriptif'); $fichier = generer_url_document($id_document); + $fichier = substr($fichier, 3, strlen($fichier)); $largeur = $document->get('largeur'); $hauteur = $document->get('hauteur'); $taille = $document->get('taille'); $date = $document->get('date'); $mode = $document->get('mode'); - - + echo "<div style='text-align:center;'>"; if ($flag_modif) { @@ -582,25 +591,21 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod // // Recuperer la vignette // + if ($id_vignette >0) { - $vignette = fetch_document($id_vignette); - + $vignette = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = $id_vignette"));; if ($vignette) { $fichier_vignette = generer_url_document($id_vignette); - $largeur_vignette = $vignette->get('largeur'); - $hauteur_vignette = $vignette->get('hauteur'); - $taille_vignette = $vignette->get('taille'); + $largeur_vignette = $vignette['largeur']; + $hauteur_vignette = $vignette['hauteur']; + $taille_vignette = $vignette['taille']; echo texte_vignette_document($largeur_vignette, $hauteur_vignette, $fichier_vignette, "../$fichier"); } } - else { - $fichier_vignette = "../spip_image.php3?vignette=$fichier"; - echo "<a href='../$fichier'><img src='$fichier_vignette' border='0'></a>"; - } - echo "</div>"; - + else { echo document_et_vignette($fichier); } + echo "</div>"; if ($flag_modif) { @@ -723,7 +728,6 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod } - //// Documents associes $query = "SELECT * FROM #table AS docs, spip_documents_".$type."s AS l ". "WHERE l.id_$type=$id_article AND l.id_document=docs.id_document ". @@ -787,21 +791,22 @@ function afficher_documents_non_inclus($id_article, $type = "article", $flag_mod if ($id_vignette > 0) { - $vignette = fetch_document($id_vignette); + $vignette = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = $id_vignette"));; if ($vignette) { $fichier_vignette = generer_url_document($id_vignette); - $largeur_vignette = $vignette->get('largeur'); - $hauteur_vignette = $vignette->get('hauteur'); - $taille_vignette = $vignette->get('taille'); + $largeur_vignette = $vignette['largeur']; + $hauteur_vignette = $vignette['hauteur']; + $taille_vignette = $vignette['taille']; } echo "<div style='text-align:center;'>"; echo texte_vignette_document($largeur_vignette, $hauteur_vignette, $fichier_vignette, "../$fichier"); echo "</div>"; } else { - $fichier_vignette = "../spip_image.php3?vignette=$fichier"; - echo "<div style='text-align: center;'><a href='../$fichier'><img src='$fichier_vignette' border='0'></a></div>"; + echo "<div style='text-align: center;'>", + document_et_vignette($fichier), + "</div>"; } @@ -996,12 +1001,12 @@ function afficher_horizontal_document($id_document, $image_link, $redirect_url = // // Recuperer la vignette // - if ($id_vignette) $vignette = fetch_document($id_vignette); + if ($id_vignette) $vignette = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = $id_vignette"));; if ($vignette) { $fichier_vignette = generer_url_document($id_vignette); - $largeur_vignette = $vignette->get('largeur'); - $hauteur_vignette = $vignette->get('hauteur'); - $taille_vignette = $vignette->get('taille'); + $largeur_vignette = $vignette['largeur']; + $hauteur_vignette = $vignette['hauteur']; + $taille_vignette = $vignette['taille']; } echo "<p></p><div style='border: 1px dashed #666666; padding: 5px; background-color: #f0f0f0;'>"; @@ -1362,12 +1367,12 @@ function afficher_case_document($id_document, $image_link, $redirect_url = "", $ // Edition de la vignette // - if ($id_vignette) $vignette = fetch_document($id_vignette); + if ($id_vignette) $vignette = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = $id_vignette"));; if ($vignette) { $fichier_vignette = generer_url_document($id_vignette); - $largeur_vignette = $vignette->get('largeur'); - $hauteur_vignette = $vignette->get('hauteur'); - $taille_vignette = $vignette->get('taille'); + $largeur_vignette = $vignette['largeur']; + $hauteur_vignette = $vignette['hauteur']; + $taille_vignette = $vignette['taille']; } echo "<p></p><div style='border: 1px dashed #666666; padding: 5px; background-color: #f0f0f0;'>"; diff --git a/spip_image.php3 b/spip_image.php3 index debc5cfbbf..4bae55fe94 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -6,10 +6,18 @@ include_ecrire("inc_meta.php3"); include_ecrire("inc_admin.php3"); function copier_document($ext, $orig, $source) { - $dest = creer_repertoire_documents($ext) . + + $dir = creer_repertoire_documents($ext); + $dest = $dir . ereg_replace("[^.a-zA-Z0-9_=-]+", "_", translitteration(ereg_replace("\.([^.]+)$", "", ereg_replace("<[^>]*>", '', basename($orig))))); + /* bientot, en mieux .... + if ((lire_meta("creer_htpasswd")) == 'oui') + {include_ecrire("inc_cron.php3"); + verifier_htaccess($dir); + } + */ # bien vu ? if ($orig == ($dest . '.' . $ext)) return $orig; $n = 0; @@ -26,11 +34,6 @@ function effacer_repertoire_temporaire($nom) { @rmdir($nom); } -function scinder_repertoire_documents($nom) { - eregi('^' . _DIR_IMG . '(.*/)?([^\./]+)\.([a-z0-9]+)$', $nom, $regs); - return $regs; -} - function effacer_image($nom) { global $hash_id_auteur, $hash; @@ -75,10 +78,9 @@ function tester_vignette ($test_vignette) { include_ecrire('inc_logos.php3'); $taille_preview = lire_meta("taille_preview"); if ($taille_preview < 10) $taille_preview = 120; - $loc =_DIR_IMG . "test_$test_vignette"; - if ($preview = creer_vignette(_DIR_IMG . 'test_image.jpg', - $taille_preview, $taille_preview, 'jpg', $loc, $test_vignette, true)) - return ("$loc." . $preview['format']); + if ($preview = creer_vignette(_DIR_IMG . 'test_image.jpg', $taille_preview, $taille_preview, 'jpg', '', "test_$test_vignette", $test_vignette, true)) + + return ($preview['fichier']); } return ''; } @@ -192,7 +194,7 @@ function ajout_image($source, $dest) { // Ajouter un document // -function ajout_doc($orig, $source, $mode, $id_document, $titre_automatique=true) { +function ajout_doc($orig, $source, $mode, $id_document) { global $hash_id_auteur, $hash, $id_article, $type; // @@ -237,7 +239,6 @@ function ajout_doc($orig, $source, $mode, $id_document, $titre_automatique=true) } } - // // Mettre a jour les infos du document uploade // @@ -251,39 +252,25 @@ function ajout_doc($orig, $source, $mode, $id_document, $titre_automatique=true) if ($nouveau) { if (!$mode) $mode = ($type_image AND $type_inclus == 'image') ? 'vignette' : 'document'; - $titre = ereg_replace("\..*$", "", $orig); - $titre = ereg_replace("ecrire/|upload/", "", $titre); - $titre = strtr($titre, "_", " "); - if (!$titre_automatique) $titre = ""; - //$update = "mode='$mode', titre='".addslashes($titre)."', "; $update = "mode='$mode', "; } $query = "UPDATE spip_documents SET $update taille='$taille', largeur='$largeur', hauteur='$hauteur', fichier='$dest_path' ". "WHERE id_document=$id_document"; spip_query($query); - + if ($id_document_lie) { $query = "UPDATE spip_documents SET id_vignette=$id_document WHERE id_document=$id_document_lie"; spip_query($query); $id_document = $id_document_lie; // pour que le 'return' active le bon doc. } - // Creer la vignette if ($mode == 'document' AND lire_meta('creer_preview') == 'oui' AND ereg(",$ext,", ','.lire_meta('formats_graphiques').',')) { include_ecrire('inc_logos.php3'); - $regs = scinder_repertoire_documents($dest_path); - if ($regs) { - $d = lire_meta('taille_preview'); - creer_vignette($dest_path, - $d, - $d, - 'jpg', - creer_repertoire_documents('vignettes').$regs[2].'-s', - 'AUTO', - true); - } + $f = ereg_replace(".$ext$", '-s', basename($dest_path)); + $d = lire_meta('taille_preview'); + creer_vignette($dest_path, $d, $d, 'jpg', 'vignettes', $f, 'AUTO', true); } } } @@ -349,31 +336,18 @@ function gdRotate($imagePath,$rtt){ // // Creation automatique de vignette new style -// -function creer_fichier_vignette($vignette) { - $fichier_vignette = ''; - $regs = scinder_repertoire_documents($vignette); - if ($regs) { - $source = $regs[0]; - $format = $regs[3]; - $destination = creer_repertoire_documents('vignettes').$regs[2].'-s'; // adresse new style - - if (lire_meta("creer_preview") == 'oui') { - $taille_preview = lire_meta("taille_preview"); - if ($taille_preview < 10) $taille_preview = 120; - include_ecrire('inc_logos.php3'); - if ($preview = creer_vignette($source, $taille_preview, $taille_preview, $format, $destination)) - $fichier_vignette = $preview['fichier']; - } - } +// Normalement le test est vérifié donc on ne rend rien sinon - if (!$fichier_vignette) { - include_ecrire('inc_documents.php3'); - list($fichier_vignette) = vignette_par_defaut($format); - if (!$fichier_vignette) - list($fichier_vignette) = vignette_par_defaut('txt'); +function creer_fichier_vignette($vignette) { + if ($vignette && lire_meta("creer_preview") == 'oui') { + eregi('\.([a-z0-9]+)$', $vignette, $regs); + $format = $regs[1]; + $taille_preview = lire_meta("taille_preview"); + if ($taille_preview < 10) $taille_preview = 120; + include_ecrire('inc_logos.php3'); + $preview = creer_vignette($vignette, $taille_preview, $taille_preview, $format, 'vignettes', basename($vignette).'-s'); + return $preview['fichier']; } - return $fichier_vignette; } function supprime_document_et_vignette($doc_supp) { @@ -507,7 +481,6 @@ function afficher_compactes($image_name) { // presenter une interface pour choisir si fichier joint ou decompacter include_ecrire ("inc_presentation.php3"); install_debut_html(_T('upload_fichier_zip')); - echo "<p>"._T('upload_fichier_zip_texte')."</p>"; echo "<p>"._T('upload_fichier_zip_texte2')."</p>"; -- GitLab