From 4d31273581db1fcd3af719e271b437648cb279bb Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 10 Jun 2007 22:33:56 +0000 Subject: [PATCH] suppression des id_type de documents, remplaces par extension ; la seule chose que je ne sais pas verifier, c'est la question des sauvegardes/restaurations, surtout avec du code que je ne comprends pas et qui est marque 'a voir' ; a voir, donc :) --- ecrire/action/acceder_document.php | 2 +- ecrire/action/documenter.php | 4 +-- ecrire/action/tourner.php | 2 +- ecrire/balise/formulaire_admin.php | 10 +++--- ecrire/base/create.php | 6 +--- ecrire/base/serial.php | 15 ++++---- ecrire/base/typedoc.php | 6 ++-- ecrire/base/upgrade.php | 23 ++++++++++++- ecrire/exec/documents_liste.php | 55 +++++++++++++++--------------- ecrire/inc/ajouter_documents.php | 14 ++++---- ecrire/inc/chercher_logo.php | 26 +++++++------- ecrire/inc/distant.php | 28 ++++++--------- ecrire/inc/documenter.php | 4 +-- ecrire/inc/documents.php | 47 +++++++++++-------------- ecrire/inc/indexation.php | 3 +- ecrire/inc/legender.php | 12 +++---- ecrire/inc/tourner.php | 5 ++- ecrire/inc_version.php | 2 +- ecrire/public/composer.php | 12 +++---- 19 files changed, 138 insertions(+), 138 deletions(-) diff --git a/ecrire/action/acceder_document.php b/ecrire/action/acceder_document.php index f78bacf6e4..8c8b94cd83 100644 --- a/ecrire/action/acceder_document.php +++ b/ecrire/action/acceder_document.php @@ -63,7 +63,7 @@ function action_acceder_document_dist() { $where = "documents.fichier="._q(set_spip_doc($file)) . ($arg ? " AND documents.id_document=".intval($arg): ''); - $s = spip_query("SELECT documents.id_document, documents.titre, documents.descriptif, documents.distant, documents.fichier, types.mime_type FROM spip_documents AS documents LEFT JOIN spip_types_documents AS types ON documents.id_type=types.id_type WHERE ".$where); + $s = spip_query("SELECT documents.id_document, documents.titre, documents.descriptif, documents.distant, documents.fichier, types.mime_type FROM spip_documents AS documents LEFT JOIN spip_types_documents AS types ON documents.extension=types.extension WHERE ".$where); if (!$doc = spip_fetch_array($s)) { $status = 404; } else { diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php index f36af77a33..80216b9c55 100644 --- a/ecrire/action/documenter.php +++ b/ecrire/action/documenter.php @@ -37,8 +37,8 @@ function action_documenter_post($r) } else { if ($sign) - $x = spip_query("SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document' AND docs.id_type=lestypes.id_type AND lestypes.extension IN ('gif', 'jpg', 'png')"); - else $x = spip_query("SELECT docs.* FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document' AND docs.id_type=lestypes.id_type AND lestypes.extension NOT IN ('gif', 'jpg', 'png')"); + $x = spip_query("SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document' AND docs.extension IN ('gif', 'jpg', 'png')"); + else $x = spip_query("SELECT docs.* FROM spip_documents AS docs, spip_documents_".$type."s AS l WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document' AND docs.extension NOT IN ('gif', 'jpg', 'png')"); while($r = spip_fetch_array($x)) { //supprimer_document_et_vignette($r['id_document']); // on dissocie, mais si le doc est utilise dans le texte, il sera reassocie ..., donc condition sur vu ! diff --git a/ecrire/action/tourner.php b/ecrire/action/tourner.php index 6245b8d6fd..d7cd595ffe 100644 --- a/ecrire/action/tourner.php +++ b/ecrire/action/tourner.php @@ -187,7 +187,7 @@ function gdRotate ($src, $dest, $rtt){ ImageInterlace($dst_img,0); // obligatoire d'enregistrer dans le meme format, puisqu'on change le doc - // mais pas son id_type + // mais pas son extension $save($dst_img,$dest); } diff --git a/ecrire/balise/formulaire_admin.php b/ecrire/balise/formulaire_admin.php index f8f35c8e50..8943a0e73d 100644 --- a/ecrire/balise/formulaire_admin.php +++ b/ecrire/balise/formulaire_admin.php @@ -61,11 +61,11 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { // Ne pas afficher le bouton 'Modifier ce...' si l'objet n'existe pas foreach (array('article', 'breve', 'rubrique', 'mot', 'auteur', 'syndic') as $type) { - $id_type = id_table_objet($type); - if ($n = intval($$id_type)) { - $s = spip_query("SELECT $id_type FROM spip_".table_objet($type)." WHERE $id_type=".$$id_type); + $_id_type = id_table_objet($type); + if ($n = intval($$_id_type)) { + $s = spip_query("SELECT $_id_type FROM spip_".table_objet($type)." WHERE $_id_type=".$n); if ($s AND spip_num_rows($s)) { - $$id_type = $n; + $$_id_type = $n; $objet_affiche = $type; break; } @@ -135,7 +135,7 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { OR $objet_affiche == 'breve' OR $objet_affiche == 'rubrique' OR $objet_affiche == 'syndic') - $preview = spip_num_rows(spip_query("SELECT id_$objet_affiche FROM spip_".table_objet($objet_affiche)." WHERE ".id_table_objet($objet_affiche)."=".$$id_type." AND ((statut IN ('prop', 'prive')) " . (!$p ? '' : "OR (statut='publie' AND date>NOW())") .")")); + $preview = spip_num_rows(spip_query("SELECT id_$objet_affiche FROM spip_".table_objet($objet_affiche)." WHERE ".id_table_objet($objet_affiche)."=".$$_id_type." AND ((statut IN ('prop', 'prive')) " . (!$p ? '' : "OR (statut='publie' AND date>NOW())") .")")); } // diff --git a/ecrire/base/create.php b/ecrire/base/create.php index dd80ddb976..6e26f6c9ca 100644 --- a/ecrire/base/create.php +++ b/ecrire/base/create.php @@ -34,11 +34,7 @@ function creer_base() { spip_mysql_create($k, $v['field'], $v['key'], false); foreach($tables_images as $k => $v) - spip_query_db("INSERT IGNORE INTO spip_types_documents (extension, inclus, titre, id_type) VALUES ('$k', 'image', '" . - (is_numeric($v) ? - (strtoupper($k) . "', $v") : - "$v', 0") . - ")"); + spip_query_db("INSERT IGNORE INTO spip_types_documents (extension, inclus, titre) VALUES ("._q($k).", 'image'," . _q($v).')'); foreach($tables_sequences as $k => $v) spip_query_db("INSERT IGNORE INTO spip_types_documents (extension, titre, inclus) VALUES ('$k', '$v', 'embed')"); diff --git a/ecrire/base/serial.php b/ecrire/base/serial.php index 53a24f89a0..43c9b487ed 100644 --- a/ecrire/base/serial.php +++ b/ecrire/base/serial.php @@ -208,7 +208,8 @@ $spip_rubriques_key = array( $spip_documents = array( "id_document" => "bigint(21) NOT NULL", "id_vignette" => "bigint(21) DEFAULT '0' NOT NULL", - "id_type" => "bigint(21) DEFAULT '0' NOT NULL", +/* "id_type" => "bigint(21) DEFAULT '0' NOT NULL", */ + "extension" => "VARCHAR(10)", "titre" => "text", "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", "descriptif" => "text", @@ -225,24 +226,26 @@ $spip_documents_key = array( "PRIMARY KEY" => "id_document", "KEY id_vignette" => "id_vignette", "KEY mode" => "mode", - "KEY id_type" => "id_type"); + "KEY extension" => "extension"); $spip_documents_join = array( "id_document"=>"id_document", - "id_type"=>"id_type"); + "extension"=>"extension"); $spip_types_documents = array( - "id_type" => "bigint(21) NOT NULL", +/* "id_type" => "bigint(21) NOT NULL", */ + "extension" => "varchar(10)", "titre" => "text", "descriptif" => "text", - "extension" => "varchar(10)", "mime_type" => "varchar(100)", "inclus" => "ENUM('non', 'image', 'embed') NOT NULL DEFAULT 'non'", "upload" => "ENUM('oui', 'non') NOT NULL DEFAULT 'oui'", "maj" => "TIMESTAMP"); $spip_types_documents_key = array( - "PRIMARY KEY" => "id_type", +/* "PRIMARY KEY" => "id_type", "UNIQUE extension" => "extension", +*/ + "PRIMARY KEY" => "extension", "KEY inclus" => "inclus"); $spip_syndic = array( diff --git a/ecrire/base/typedoc.php b/ecrire/base/typedoc.php index 37b00f22ca..fd97463719 100644 --- a/ecrire/base/typedoc.php +++ b/ecrire/base/typedoc.php @@ -18,9 +18,9 @@ global $tables_images, $tables_sequences, $tables_documents, $tables_mime, $mime $tables_images = array( // Images reconnues par PHP - 'jpg' => 1, - 'png' => 2, - 'gif' => 3, + 'jpg' => 'JPEG', + 'png' => 'PNG', + 'gif' =>'GIF', // Autres images (peuvent utiliser le tag <img>) 'bmp' => 'BMP', diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php index 055ee2037d..e4c54d5d56 100644 --- a/ecrire/base/upgrade.php +++ b/ecrire/base/upgrade.php @@ -1385,6 +1385,7 @@ function maj_base($version_cible = 0) { } maj_version('1.935'); } + if (upgrade_vers(1.937, $version_installee, $version_cible)) { // convertir les champs blob des tables spip en champs texte convertir_un_champ_blob_en_text("spip_articles","texte","LONGTEXT"); @@ -1404,8 +1405,28 @@ function maj_base($version_cible = 0) { convertir_un_champ_blob_en_text("spip_syndic_articles","descriptif","LONGTEXT"); convertir_un_champ_blob_en_text("spip_petitions","texte","LONGTEXT"); convertir_un_champ_blob_en_text("spip_ortho_cache","suggest","TEXT"); - maj_version('1.937'); + maj_version('1.938'); + } + + if (upgrade_vers(1.938, $version_installee, $version_cible)) { + // Ajouter un champ extension aux spip_documents, et le + // remplir avec les valeurs ad hoc + spip_query("ALTER TABLE spip_documents ADD extension VARCHAR(10) NOT NULL DEFAULT ''"); + spip_query("ALTER TABLE spip_documents ADD INDEX extension (extension)"); + $s = spip_query("SELECT id_type,extension FROM spip_types_documents"); + while ($t = spip_fetch_array($s)) { + spip_query("UPDATE spip_documents + SET extension="._q($t['extension']) + ." WHERE id_type="._q($t['id_type'])); + } + spip_query("ALTER TABLE spip_documents DROP INDEX id_type, DROP id_type"); + spip_query("ALTER TABLE spip_types_documents DROP INDEX id_type, DROP id_type"); + + ## recreer la PRIMARY KEY sur spip_types_documents.extension + spip_query("ALTER TABLE spip_types_documents ADD PRIMARY KEY (extension)"); + maj_version('1.938'); } + } ?> \ No newline at end of file diff --git a/ecrire/exec/documents_liste.php b/ecrire/exec/documents_liste.php index 9108393369..3f47430294 100644 --- a/ecrire/exec/documents_liste.php +++ b/ecrire/exec/documents_liste.php @@ -41,37 +41,36 @@ fin_boite_info(); debut_droite(); - // recupere les types + // recupere les titres des types $res = spip_query("SELECT * FROM spip_types_documents"); while ($row = spip_fetch_array($res)) - $types[$row['id_type']] = $row; - - $result = spip_query("SELECT docs.id_document AS id_doc, docs.id_type AS type, docs.fichier AS fichier, docs.date AS date, docs.titre AS titre, docs.descriptif AS descriptif, lien.id_rubrique AS id_rub, rubrique.titre AS titre_rub FROM spip_documents AS docs, spip_documents_rubriques AS lien, spip_rubriques AS rubrique WHERE docs.id_document = lien.id_document AND rubrique.id_rubrique = lien.id_rubrique AND docs.mode = 'document' ORDER BY docs.date DESC"); - - while($row=spip_fetch_array($result)){ - $titre=$row['titre']; - $descriptif=$row['descriptif']; - $date=$row['date']; - $id_document=$row['id_doc']; - $id_rubrique=$row['id_rub']; - $titre_rub = typo($row['titre_rub']); - $fichier = $row['fichier']; - - if (!$titre) $titre = _T('info_document').' '.$id_document; - - debut_cadre_relief("doc-24.gif"); - echo "<b>$titre</b> (" . $types[$row['type']]['titre'] . ', ' . affdate($date) . ")"; - if ($descriptif) - echo "<p>".propre($descriptif) . '</p>'; - else - echo "<p><tt>$fichier</tt>" . '</p>'; - - echo "<p>"._T('info_dans_rubrique')." <a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>$titre_rub</a></p>"; - - fin_cadre_relief(); + $types[$row['extension']] = $row; + + $result = spip_query("SELECT docs.id_document AS id_doc, docs.extension AS extension, docs.fichier AS fichier, docs.date AS date, docs.titre AS titre, docs.descriptif AS descriptif, lien.id_rubrique AS id_rub, rubrique.titre AS titre_rub FROM spip_documents AS docs, spip_documents_rubriques AS lien, spip_rubriques AS rubrique WHERE docs.id_document = lien.id_document AND rubrique.id_rubrique = lien.id_rubrique AND docs.mode = 'document' ORDER BY docs.date DESC"); + + while ($row=spip_fetch_array($result)){ + $titre=$row['titre']; + $descriptif=$row['descriptif']; + $date=$row['date']; + $id_document=$row['id_doc']; + $id_rubrique=$row['id_rub']; + $titre_rub = typo($row['titre_rub']); + $fichier = $row['fichier']; + + if (!$titre) $titre = _T('info_document').' '.$id_document; + + debut_cadre_relief("doc-24.gif"); + echo "<b>$titre</b> (" . $types[$row['extension']]['titre'] . ', ' . affdate($date) . ")"; + if ($descriptif) + echo propre($descriptif); + else + echo "<p><tt>$fichier</tt>" . '</p>'; + + echo "<p>"._T('info_dans_rubrique')." <a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>$titre_rub</a></p>"; + fin_cadre_relief(); } - -echo fin_gauche(), fin_page(); + echo fin_gauche(), fin_page(); } + ?> diff --git a/ecrire/inc/ajouter_documents.php b/ecrire/inc/ajouter_documents.php index 00f10d971c..3df8080113 100644 --- a/ecrire/inc/ajouter_documents.php +++ b/ecrire/inc/ajouter_documents.php @@ -56,7 +56,6 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode, # $a['fichier'] est une copie locale du fichier $fichier = $source; - $id_type = $a['id_type']; $taille = $a['taille']; $titre = $a['titre']; $largeur = $a['largeur']; @@ -129,7 +128,7 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode, spip_log("Impossible de copier_document($ext, $nom_envoye, $source)"); return; } - $id_type = $row['id_type']; # numero du type dans spip_types_documents:( + $extension = $row['extension']; $type_inclus_image = ($row['inclus'] == 'image'); // Prevoir traitement specifique pour videos @@ -224,14 +223,15 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode, // passe "mode=document" et "id_document=.." (pas utilise) if (!$id_document) { // Inserer le nouveau doc et recuperer son id_ - $id_document = spip_abstract_insert("spip_documents", "(id_type, titre, date, distant)", "($id_type, " . _q($titre) . ", NOW(), '$distant')"); + $id_document = spip_abstract_insert("spip_documents", "(extension, titre, date, distant)", "("._q($extension).", " . _q($titre) . ", NOW(), '$distant')"); if ($id_lien AND preg_match('/^[a-z0-9_]+$/i', $type_lien) # securite - ) { - spip_abstract_insert("spip_documents_".$type_lien."s", - "(id_document, id_".$type_lien.")", - "($id_document, $id_lien)"); + ) { + spip_abstract_insert("spip_documents_".$type_lien."s", + "(id_document, id_".$type_lien.")", + "($id_document, $id_lien)" + ); } // par defaut (upload ZIP ou ftp) integrer // les images en mode 'vignette' et le reste en mode document diff --git a/ecrire/inc/chercher_logo.php b/ecrire/inc/chercher_logo.php index 19b7263371..12329be333 100644 --- a/ecrire/inc/chercher_logo.php +++ b/ecrire/inc/chercher_logo.php @@ -13,11 +13,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // http://doc.spip.org/@inc_chercher_logo_dist -function inc_chercher_logo_dist($id, $id_type, $mode='on') { +function inc_chercher_logo_dist($id, $_id_objet, $mode='on') { global $formats_logos; # attention au cas $id = '0' pour LOGO_SITE_SPIP : utiliser intval() - $type = type_du_logo($id_type); + $type = type_du_logo($_id_objet); $nom = $type . $mode . intval($id); foreach ($formats_logos as $format) { @@ -29,21 +29,21 @@ function inc_chercher_logo_dist($id, $id_type, $mode='on') { } // http://doc.spip.org/@type_du_logo -function type_du_logo($id_type) { - return isset($GLOBALS['table_logos'][$id_type]) - ? $GLOBALS['table_logos'][$id_type] - : preg_replace(',^id_,', '', $id_type); +function type_du_logo($_id_objet) { + return isset($GLOBALS['table_logos'][$_id_objet]) + ? $GLOBALS['table_logos'][$_id_objet] + : preg_replace(',^id_,', '', $_id_objet); } // Exceptions standards (historique) global $table_logos; $table_logos = array( - 'id_article' => 'art', - 'id_auteur' => 'aut', -# 'id_breve' => 'breve', -# 'id_mot' => 'mot', - 'id_syndic'=> 'site', - 'id_rubrique' => 'rub' - ); + 'id_article' => 'art', + 'id_auteur' => 'aut', +# 'id_breve' => 'breve', +# 'id_mot' => 'mot', + 'id_syndic'=> 'site', + 'id_rubrique' => 'rub' +); ?> diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index 3ad35ad0a3..3a4b4059a4 100644 --- a/ecrire/inc/distant.php +++ b/ecrire/inc/distant.php @@ -282,17 +282,13 @@ function fichier_copie_locale($source) { return $source; } - $extension = ""; // Chercher d'abord le doc dans la table des documents, pour se baser sur son type reel - $t = spip_fetch_array(spip_query("SELECT id_type FROM spip_documents WHERE fichier=" . _q($source) . " AND distant='oui'")); - if ($t) { - $t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE id_type=".$t['id_type'])); - if ($t) - $extension = $t['extension']; - } - + $s = spip_query("SELECT extension FROM spip_documents WHERE fichier=" . _q($source) . " AND distant='oui'"); + if ($t = spip_fetch_array($s)) { + $extension = $t['extension']; + // si la source n'est pas dans la table des documents, on regarde si son extension est connue et autorisee - if (!strlen($extension)) { + } else { $path_parts = pathinfo($source); if (isset($path_parts['extension']) && strlen($path_parts['extension'])){ // verifier que c'est un type autorise @@ -301,8 +297,8 @@ function fichier_copie_locale($source) { $extension = $t['extension']; } } - - if (strlen($extension)) + + if (isset($extension)) return nom_fichier_copie_locale($source, $extension); } @@ -337,32 +333,30 @@ function recuperer_infos_distantes($source, $max=0) { $t = null; if (($mime_type == 'text/plain' OR $mime_type == '') AND preg_match(',\.([a-z0-9]+)(\?.*)?$,', $source, $rext)) { - $t = spip_fetch_array(spip_query("SELECT id_type,extension FROM spip_types_documents WHERE extension=" . _q($rext[1]))); + $t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE extension=" . _q($rext[1]))); } // Autre mime/type (ou text/plain avec fichier d'extension inconnue) if (!$t) - $t = spip_fetch_array(spip_query("SELECT id_type,extension FROM spip_types_documents WHERE mime_type=" . _q($mime_type))); + $t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE mime_type=" . _q($mime_type))); // Toujours rien ? (ex: audio/x-ogg au lieu de application/ogg) // On essaie de nouveau avec l'extension if (!$t AND $mime_type != 'text/plain' AND preg_match(',\.([a-z0-9]+)(\?.*)?$,', $source, $rext)) { - $t = spip_fetch_array(spip_query("SELECT id_type,extension FROM spip_types_documents WHERE extension=" . _q($rext[1]))); + $t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE extension=" . _q($rext[1]))); } if ($t) { spip_log("mime-type $mime_type ok, extension ".$t['extension']); - $a['id_type'] = $t['id_type']; $a['extension'] = $t['extension']; } else { # par defaut on retombe sur '.bin' si c'est autorise spip_log("mime-type $mime_type inconnu"); - $t = spip_fetch_array(spip_query("SELECT id_type,extension FROM spip_types_documents WHERE extension='bin'")); + $t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE extension='bin'")); if (!$t) return false; - $a['id_type'] = $t['id_type']; $a['extension'] = $t['extension']; } diff --git a/ecrire/inc/documenter.php b/ecrire/inc/documenter.php index 2070fc34f0..8b07c36983 100644 --- a/ecrire/inc/documenter.php +++ b/ecrire/inc/documenter.php @@ -29,11 +29,11 @@ function inc_documenter_dist( if (is_int($doc)) { if ($ancre == 'portfolio') { - $lies = spip_query("SELECT docs.*,l.id_$type,l.vu FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes WHERE l.id_$type=$doc AND l.id_document=docs.id_document AND docs.mode='document' AND docs.id_type=lestypes.id_type AND lestypes.extension IN ('gif', 'jpg', 'png') ORDER BY 0+docs.titre, docs.date"); + $lies = spip_query("SELECT docs.*,l.id_$type,l.vu FROM spip_documents AS docs, spip_documents_".$type."s AS l WHERE l.id_$type=$doc AND l.id_document=docs.id_document AND docs.mode='document' AND docs.extension IN ('gif', 'jpg', 'png') ORDER BY 0+docs.titre, docs.date"); $toile = 'toile_claire'; $couleur = 'bordure_claire_'; } else { - $lies = spip_query("SELECT docs.*,l.id_$type,l.vu FROM spip_documents AS docs, spip_documents_".$type."s AS l,spip_types_documents AS lestypes WHERE l.id_$type=$doc AND l.id_document=docs.id_document AND docs.mode='document' AND docs.id_type=lestypes.id_type AND lestypes.extension NOT IN ('gif', 'jpg', 'png') ORDER BY 0+docs.titre, docs.date"); + $lies = spip_query("SELECT docs.*,l.id_$type,l.vu FROM spip_documents AS docs, spip_documents_".$type."s AS l WHERE l.id_$type=$doc AND l.id_document=docs.id_document AND docs.mode='document' AND docs.extension NOT IN ('gif', 'jpg', 'png') ORDER BY 0+docs.titre, docs.date"); $toile = 'toile_gris_fort'; $couleur = 'bordure_grise_'; } diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index f02f12cfb3..75763780da 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -30,12 +30,18 @@ function set_spip_doc($fichier) { // donne le chemin complet du fichier // http://doc.spip.org/@get_spip_doc function get_spip_doc($fichier) { + // fichier distant if (preg_match(',^\w+://,', $fichier)) return $fichier; - else - return (strpos($fichier, _DIR_IMG) === false) - ? _DIR_IMG . $fichier - : $fichier; + + // gestion d'erreurs, fichier='' + if (!strlen($fichier)) + return false; + + // fichier normal + return (strpos($fichier, _DIR_IMG) === false) + ? _DIR_IMG . $fichier + : $fichier; } // http://doc.spip.org/@generer_url_document_dist @@ -107,10 +113,7 @@ function image_pattern($vignette) { // http://doc.spip.org/@document_et_vignette function document_et_vignette($document, $url, $portfolio=false) { - // a supprimer avec spip_types_documents - $extension = spip_fetch_array(spip_query("SELECT extension, mime_type FROM spip_types_documents WHERE id_type=".$document['id_type'])); - $mime = $extension['mime_type']; - $extension = $extension['extension']; + $extension = $document['extension']; $vignette = $document['id_vignette']; if ($vignette) @@ -153,8 +156,10 @@ function document_et_vignette($document, $url, $portfolio=false) { if (!$url) return $image; - else - return "<a href='$url'\n\ttype='$mime'>$image</a>"; + else { + $t = spip_fetch_array(spip_query("SELECT mime_type FROM spip_types_documents WHERE extension="._q($document['extension']))); + return "<a href='$url'\n\ttype='".$t['mime_type']."'>$image</a>"; + } } @@ -286,7 +291,7 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals //$document = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document))); $id_vignette = $document['id_vignette']; - $id_type = $document['id_type']; + $extension = $document['extension']; $titre = $document['titre']; $descriptif = $document['descriptif']; $url = generer_url_document($id_document); @@ -302,9 +307,8 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals $cadre = strlen($titre) ? $titre : basename($document['fichier']); - $result = spip_query("SELECT titre,inclus,extension FROM spip_types_documents WHERE id_type=$id_type"); - if ($letype = @spip_fetch_array($result)) { - $type_extension = $letype['extension']; + $result = spip_query("SELECT titre,inclus FROM spip_types_documents WHERE extension="._q($extension)); + if ($letype = spip_fetch_array($result)) { $type_inclus = $letype['inclus']; $type_titre = $letype['titre']; } @@ -315,19 +319,6 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals $ret = ""; if ($mode == 'document') { - # 'extension', a ajouter dans la base quand on supprimera spip_types_documents - switch ($id_type) { - case 1: - $document['extension'] = "jpg"; - break; - case 2: - $document['extension'] = "png"; - break; - case 3: - $document['extension'] = "gif"; - break; - } - $ret .= "<a id='document$id_document' name='document$id_document'></a>\n"; $ret .= debut_cadre_enfonce("doc-24.gif", true, "", lignes_longues(typo($cadre),20)); @@ -354,7 +345,7 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals . '</div>' . "\n<div class='verdana1' style='text-align: center; color: black;'>\n" . ($type_titre ? $type_titre : - ( _T('info_document').' '.majuscules($type_extension))) + ( _T('info_document').' '.majuscules($extension))) . "</div>"; // Affichage du raccourci <doc...> correspondant diff --git a/ecrire/inc/indexation.php b/ecrire/inc/indexation.php index d43ab2ae49..db263594a0 100644 --- a/ecrire/inc/indexation.php +++ b/ecrire/inc/indexation.php @@ -375,8 +375,7 @@ function indexer_contenu_document ($row, $min_long=3) { global $extracteur; if ($row['mode'] == 'vignette') return; - $extension = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE id_type = ".$row['id_type'])); - $extension = $extension['extension']; + $extension = $row['extension']; // Voir si on sait lire le contenu (eventuellement en chargeant le // fichier extract/pdf.php dans find_in_path() ) diff --git a/ecrire/inc/legender.php b/ecrire/inc/legender.php index b132dec401..e1ad7e556d 100644 --- a/ecrire/inc/legender.php +++ b/ecrire/inc/legender.php @@ -75,7 +75,7 @@ function inc_legender_dist($id_document, $document, $script, $type, $id, $ancre, array('largeur_vignette' => $document['largeur'], 'hauteur_vignette' => $document['hauteur'])); else - $contenu .= taille_en_octets($document['taille']) . ' - '; + $contenu .= taille_en_octets($document['taille']); if ($date) $contenu .= "<br />\n" . affdate($date); @@ -186,8 +186,8 @@ function vignette_formulaire_legender($id_document, $document, $script, $type, $ function formulaire_taille($document) { // (on ne le propose pas pour les images qu'on sait - // lire, id_type<=3), sauf bug, ou document distant - if ($document['id_type'] <= 3 + // lire : gif jpg png), sauf bug, ou document distant + if (in_array($document['extension'], array('gif','jpg','png')) AND $document['hauteur'] AND $document['largeur'] AND $document['distant']!='oui') @@ -195,10 +195,10 @@ function formulaire_taille($document) { $id_document = $document['id_document']; // Donnees sur le type de document - $t = @spip_abstract_fetsel('inclus,extension', - 'spip_types_documents', "id_type=".$document['id_type']); + $extension = $document['extension']; + $t = spip_abstract_fetsel('inclus', + 'spip_types_documents', "extension="._q($extension)); $type_inclus = $t['inclus']; - $extension = $t['extension']; # TODO -- pour le MP3 "l x h pixels" ne va pas if (($type_inclus == "embed" OR $type_inclus == "image") diff --git a/ecrire/inc/tourner.php b/ecrire/inc/tourner.php index ed36e554c3..d6c97926d2 100644 --- a/ecrire/inc/tourner.php +++ b/ecrire/inc/tourner.php @@ -82,7 +82,6 @@ function inc_tourner_dist($id_document, $document, $script, $flag, $type) // http://doc.spip.org/@boutons_rotateurs function boutons_rotateurs($document, $type, $id, $id_document, $script) { global $spip_lang_right; - static $ftype = array(1 => 'jpg', 2 => 'png', 3 => 'gif'); $process = $GLOBALS['meta']['image_process']; @@ -91,8 +90,8 @@ function boutons_rotateurs($document, $type, $id, $id_document, $script) { // n'est pas distante, qu'elle est bien presente dans IMG/ // qu'elle n'a pas de vignette perso ; et qu'on a la bibli ! if ($document['distant']!='oui' - AND isset($ftype[$document['id_type']]) - AND (strpos($GLOBALS['meta']['formats_graphiques'], $ftype[$document['id_type']])!==false) + AND in_array($document['extension'], array('gif', 'jpg', 'png')) + AND (strpos($GLOBALS['meta']['formats_graphiques'], $document['extension'])!==false) AND ($process == 'imagick' OR $process == 'gd2' OR $process == 'convert' diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index 1167d381fe..5278eecb2f 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -299,7 +299,7 @@ $liste_des_statuts = array( // (utilise pour les modifs de la base de donnees) // version de la base -$spip_version = 1.937; +$spip_version = 1.938; // version de spip en chaine // et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php index 83e6cc4e97..663e840e76 100644 --- a/ecrire/public/composer.php +++ b/ecrire/public/composer.php @@ -361,12 +361,12 @@ function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier if (!$id_document) return ''; if ($doubdoc) $doublons["documents"] .= ','.$id_document; - if (!($row = spip_abstract_select(array('id_type', 'id_vignette', 'fichier', 'mode'), array('spip_documents'), array("id_document = $id_document")))) + if (!($row = spip_abstract_select(array('extension', 'id_vignette', 'fichier', 'mode'), array('spip_documents'), array("id_document = $id_document")))) // pas de document. Ne devrait pas arriver return ''; $row = spip_abstract_fetch($row); - $id_type = $row['id_type']; + $extension = $row['extension']; $id_vignette = $row['id_vignette']; $fichier = get_spip_doc($row['fichier']); $mode = $row['mode']; @@ -393,14 +393,12 @@ function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier $y = intval($r[2]); } - // Retrouver l'extension et le type mime + // Retrouver le type mime $ex = spip_abstract_fetch(spip_abstract_select( - array('extension', 'mime_type'), + array('mime_type'), array('spip_types_documents'), - array("id_type = " . intval($id_type)))); - $extension = $ex['extension']; + array("extension = " . _q($extension)))); $mime = $ex['mime_type']; - if (!$extension) $extension = 'txt'; if ($logo AND @file_exists($logo)) { if ($x OR $y) -- GitLab