Skip to content
Extraits de code Groupes Projets
Valider 57c9947c rédigé par Antoine Pitrou's avatar Antoine Pitrou
Parcourir les fichiers

nouveaux types pour versions récentes de getimagesize

+ modifs code transparentes (diplo-crash-test ?)
parent 61bf8b8d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
IMG/icones/aiff-dist.png -text IMG/icones/aiff-dist.png -text
IMG/icones/asf-dist.png -text IMG/icones/asf-dist.png -text
IMG/icones/avi-dist.png -text IMG/icones/avi-dist.png -text
IMG/icones/bmp.png -text
IMG/icones/bz2-dist.png -text IMG/icones/bz2-dist.png -text
IMG/icones/css-dist.png -text IMG/icones/css-dist.png -text
IMG/icones/defaut-dist.png -text IMG/icones/defaut-dist.png -text
......
IMG/icones/bmp.png

2,49 ko

...@@ -3,6 +3,17 @@ ...@@ -3,6 +3,17 @@
include ("inc.php3"); include ("inc.php3");
include_local ("inc_documents.php3"); include_local ("inc_documents.php3");
$redirect_url = new Link('article_documents.php3');
if ($id_document) $redirect_url->addVar('id_document', $id_document);
if ($id_article) $redirect_url->addVar('id_article', $id_article);
$redirect_url = $redirect_url->getUrl();
$image_link = new Link('../spip_image.php3');
if ($id_article) $image_link->addVar('id_article', $id_article);
$id_doc_actif = $id_document;
// //
// editable ? // editable ?
// //
...@@ -26,20 +37,6 @@ if (!$flag_editable) { ...@@ -26,20 +37,6 @@ if (!$flag_editable) {
// Gerer les modifications // Gerer les modifications
// //
if ($new == "oui") {
mysql_query("INSERT spip_documents (id_vignette, titre) ".
"VALUES ('$id_vignette', 'nouveau document')");
$id_document = mysql_insert_id();
if ($id_article) {
mysql_query("INSERT spip_documents_articles (id_document, id_article) ".
"VALUES ($id_document, $id_article)");
}
}
// eventuel triangle a garder deplie
$id_doc_actif = $id_document;
if ($modif_document == 'oui') { if ($modif_document == 'oui') {
$titre = addslashes(corriger_caracteres($titre)); $titre = addslashes(corriger_caracteres($titre));
$descriptif = addslashes(corriger_caracteres($descriptif)); $descriptif = addslashes(corriger_caracteres($descriptif));
...@@ -49,15 +46,15 @@ if ($modif_document == 'oui') { ...@@ -49,15 +46,15 @@ if ($modif_document == 'oui') {
// transformer en vignette/document // transformer en vignette/document
if ($transformer_image == 'document') { if ($transformer_image == 'document') {
mysql_query("UPDATE spip_documents SET mode='document' WHERE id_document=$id_document"); mysql_query("UPDATE spip_documents SET mode='document' WHERE id_document=$id_document");
} else if ($transformer_image == 'vignette') { }
// est-ce qu'on met aussi id_vignette=0 ? (Non : on garde une trace de l'id_vignette en cas else if ($transformer_image == 'vignette') {
// d'aller-retour document -> vignette -> document mysql_query("UPDATE spip_documents SET mode='vignette', id_vignette=0 WHERE id_document=$id_document");
mysql_query("UPDATE spip_documents SET mode='vignette' WHERE id_document=$id_document");
} }
// //
// Affichage // Affichage
// //
$query = "SELECT titre FROM spip_articles WHERE id_article = $id_article"; $query = "SELECT titre FROM spip_articles WHERE id_article = $id_article";
$result = mysql_query($query); $result = mysql_query($query);
if ($art = mysql_fetch_object($result)) { if ($art = mysql_fetch_object($result)) {
...@@ -90,7 +87,7 @@ if ($documents_lies) { ...@@ -90,7 +87,7 @@ if ($documents_lies) {
reset($documents_lies); reset($documents_lies);
while (list(, $id_document) = each($documents_lies)) { while (list(, $id_document) = each($documents_lies)) {
echo "<tr><td>\n"; echo "<tr><td>\n";
afficher_document($id_document, $id_doc_actif); afficher_document($id_document, $image_link, $redirect_url, $id_doc_actif == $id_document);
echo "</td></tr>\n"; echo "</td></tr>\n";
} }
echo "<tr><td height='10'>&nbsp;</td></tr>\n"; echo "<tr><td height='10'>&nbsp;</td></tr>\n";
...@@ -123,7 +120,7 @@ if ($images_liees) { ...@@ -123,7 +120,7 @@ if ($images_liees) {
reset($images_liees); reset($images_liees);
while (list(, $id_document) = each($images_liees)) { while (list(, $id_document) = each($images_liees)) {
echo "<tr><td>\n"; echo "<tr><td>\n";
afficher_document($id_document, $id_doc_actif); afficher_document($id_document, $image_link, $redirect_url, $id_doc_actif == $id_document);
echo "</td></tr>\n"; echo "</td></tr>\n";
} }
echo "<tr><td height='10'>&nbsp;</td></tr>\n"; echo "<tr><td height='10'>&nbsp;</td></tr>\n";
...@@ -144,11 +141,11 @@ echo "</td></tr></table>\n"; ...@@ -144,11 +141,11 @@ echo "</td></tr></table>\n";
echo debut_boite_info(); echo debut_boite_info();
$link = new Link('../spip_image.php3'); $link = $image_link;
$link->addVar('redirect', $redirect_url);
$link->addVar('hash', calculer_action_auteur("ajout_doc")); $link->addVar('hash', calculer_action_auteur("ajout_doc"));
$link->addVar('hash_id_auteur', $connect_id_auteur); $link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('ajout_doc', 'oui'); $link->addVar('ajout_doc', 'oui');
$link->addVar('id_article', $id_article);
afficher_upload($link, 'T&eacute;l&eacute;charger depuis votre ordinateur&nbsp;:'); afficher_upload($link, 'T&eacute;l&eacute;charger depuis votre ordinateur&nbsp;:');
......
...@@ -375,6 +375,12 @@ function creer_base() { ...@@ -375,6 +375,12 @@ function creer_base() {
"(3, 'gif', 'Image GIF', 'image')"; "(3, 'gif', 'Image GIF', 'image')";
mysql_query($query); mysql_query($query);
$query = "INSERT IGNORE spip_types_documents (extension, titre, inclus) VALUES ".
"('bmp', 'Image BMP', 'image'), ".
"('psd', 'Image Photoshop', 'image'), ".
"('tif', 'Image TIFF', 'image')";
mysql_query($query);
$query = "INSERT IGNORE spip_types_documents (extension, titre) VALUES ". $query = "INSERT IGNORE spip_types_documents (extension, titre) VALUES ".
"('txt', 'Document texte'), ". "('txt', 'Document texte'), ".
"('htm', 'Fichier HTML'), ". "('htm', 'Fichier HTML'), ".
...@@ -399,6 +405,7 @@ function creer_base() { ...@@ -399,6 +405,7 @@ function creer_base() {
"('tgz', 'Archive TGZ'), ". "('tgz', 'Archive TGZ'), ".
"('swf', 'Animation Flash')"; "('swf', 'Animation Flash')";
mysql_query($query); mysql_query($query);
} }
......
...@@ -56,8 +56,7 @@ function afficher_upload($link, $intitule, $inclus = '') { ...@@ -56,8 +56,7 @@ function afficher_upload($link, $intitule, $inclus = '') {
global $this_link, $connect_statut; global $this_link, $connect_statut;
if (!$link->getVar('redirect')) { if (!$link->getVar('redirect')) {
$my_link = new Link("article_documents.php3"); // faute de mieux pour l'instant (Fil) $link->addVar('redirect', $this_link->getUrl());
$link->addVar('redirect', $my_link->getUrl());
} }
echo "<font face='verdana, arial, helvetica, sans-serif' size='2'>\n"; echo "<font face='verdana, arial, helvetica, sans-serif' size='2'>\n";
...@@ -95,12 +94,14 @@ function afficher_upload($link, $intitule, $inclus = '') { ...@@ -95,12 +94,14 @@ function afficher_upload($link, $intitule, $inclus = '') {
// Afficher un document sous forme de ligne depliable // Afficher un document sous forme de ligne depliable
// //
function afficher_document($id_document, $id_doc_actif = 0) { function afficher_document($id_document, $image_link, $redirect_url = "", $deplier = false) {
global $connect_id_auteur, $connect_statut; global $connect_id_auteur, $connect_statut;
global $couleur_foncee, $couleur_claire; global $couleur_foncee, $couleur_claire;
global $this_link; global $this_link;
global $id_article; global $id_article;
if (!$redirect_url) $redirect_url = $this_link->getUrl();
$document = fetch_document($id_document); $document = fetch_document($id_document);
$id_vignette = $document->get('id_vignette'); $id_vignette = $document->get('id_vignette');
...@@ -121,7 +122,7 @@ function afficher_document($id_document, $id_doc_actif = 0) { ...@@ -121,7 +122,7 @@ function afficher_document($id_document, $id_doc_actif = 0) {
} }
$block = "document $id_document"; $block = "document $id_document";
if ($id_document == $id_doc_actif) if ($deplier)
echo bouton_block_visible($block); echo bouton_block_visible($block);
else else
echo bouton_block_invisible($block); echo bouton_block_invisible($block);
...@@ -136,11 +137,11 @@ function afficher_document($id_document, $id_doc_actif = 0) { ...@@ -136,11 +137,11 @@ function afficher_document($id_document, $id_doc_actif = 0) {
echo "</font>\n"; echo "</font>\n";
echo "<font size='1'>"; echo "<font size='1'>";
$link = new Link('../spip_image.php3');
$link->addVar('redirect', $this_link->getUrl()); $link = $image_link;
$link->addVar('redirect', $redirect_url);
$link->addVar('hash', calculer_action_auteur("supp_doc ".$id_document)); $link->addVar('hash', calculer_action_auteur("supp_doc ".$id_document));
$link->addVar('hash_id_auteur', $connect_id_auteur); $link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('id_article', $id_article);
$link->addVar('doc_supp', $id_document); $link->addVar('doc_supp', $id_document);
echo "[<b><a ".$link->getHref().">SUPPRIMER</a></b>]\n"; echo "[<b><a ".$link->getHref().">SUPPRIMER</a></b>]\n";
...@@ -148,7 +149,7 @@ function afficher_document($id_document, $id_doc_actif = 0) { ...@@ -148,7 +149,7 @@ function afficher_document($id_document, $id_doc_actif = 0) {
echo "</font>\n"; echo "</font>\n";
if ($id_document == $id_doc_actif) if ($deplier)
echo debut_block_visible($block); echo debut_block_visible($block);
else else
echo debut_block_invisible($block); echo debut_block_invisible($block);
...@@ -186,14 +187,14 @@ function afficher_document($id_document, $id_doc_actif = 0) { ...@@ -186,14 +187,14 @@ function afficher_document($id_document, $id_doc_actif = 0) {
if ($type_inclus == 'image') { if ($type_inclus == 'image') {
if ($mode == 'vignette') { if ($mode == 'vignette') {
$link = new Link(); $link = new Link($redirect_url);
$link->addVar('transformer_image','document'); $link->addVar('transformer_image', 'document');
$link->addVar('id_document',$id_document); $link->addVar('id_document', $id_document);
$link_transformer = "<font size='1'>[<b><a ".$link->getHref().">Transformer en document</a></b>]</font>\n"; $link_transformer = "<font size='1'>[<b><a ".$link->getHref().">Transformer en document</a></b>]</font>\n";
} else if ($mode == 'document') { } else if ($mode == 'document') {
$link = new Link(); $link = new Link($redirect_url);
$link->addVar('transformer_image','vignette'); $link->addVar('transformer_image', 'vignette');
$link->addVar('id_document',$id_document); $link->addVar('id_document', $id_document);
$link_transformer = "<font size='1'>[<b><a ".$link->getHref().">Transformer en image affichable</a></b>]</font>\n"; $link_transformer = "<font size='1'>[<b><a ".$link->getHref().">Transformer en image affichable</a></b>]</font>\n";
} }
} }
...@@ -257,7 +258,14 @@ function afficher_document($id_document, $id_doc_actif = 0) { ...@@ -257,7 +258,14 @@ function afficher_document($id_document, $id_doc_actif = 0) {
echo texte_vignette($largeur_vignette, $hauteur_vignette, $fichier_vignette); echo texte_vignette($largeur_vignette, $hauteur_vignette, $fichier_vignette);
echo "<font size='2'>\n"; echo "<font size='2'>\n";
$hash = calculer_action_auteur("supp_doc ".$id_vignette); $hash = calculer_action_auteur("supp_doc ".$id_vignette);
echo "[<a href='../spip_image.php3?redirect=".urlencode("article_documents.php3")."&id_document=$id_document&id_article=$id_article&hash_id_auteur=$connect_id_auteur&hash=$hash&doc_supp=$id_vignette'>";
$link = $image_link;
$link->addVar('redirect', $redirect_url);
$link->addVar('hash', calculer_action_auteur("supp_doc ".$id_vignette));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('doc_supp', $id_vignette);
echo "[<a ".$link->getHref().">";
echo "supprimer la vignette"; echo "supprimer la vignette";
echo "</a>]</font><br>\n"; echo "</a>]</font><br>\n";
echo $raccourci_doc; echo $raccourci_doc;
...@@ -276,14 +284,14 @@ function afficher_document($id_document, $id_doc_actif = 0) { ...@@ -276,14 +284,14 @@ function afficher_document($id_document, $id_doc_actif = 0) {
echo "<div align='left'>\n"; echo "<div align='left'>\n";
$hash = calculer_action_auteur("ajout_doc"); $hash = calculer_action_auteur("ajout_doc");
$link = new Link('../spip_image.php3');
$link->addVar('redirect', $this_link->getUrl()); $link = $image_link;
$link->addVar('redirect', $redirect_url);
$link->addVar('hash', calculer_action_auteur("ajout_doc"));
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('ajout_doc', 'oui'); $link->addVar('ajout_doc', 'oui');
$link->addVar('id_document', $id_document); $link->addVar('id_document', $id_document);
$link->addVar('id_article', $id_article);
$link->addVar('mode', 'vignette'); $link->addVar('mode', 'vignette');
$link->addVar('hash_id_auteur', $connect_id_auteur);
$link->addVar('hash', $hash);
afficher_upload($link, 'Charger une vignette&nbsp;:', 'image'); afficher_upload($link, 'Charger une vignette&nbsp;:', 'image');
echo "</div>\n"; echo "</div>\n";
...@@ -307,10 +315,10 @@ function afficher_document($id_document, $id_doc_actif = 0) { ...@@ -307,10 +315,10 @@ function afficher_document($id_document, $id_doc_actif = 0) {
function pave_documents($id_article) { function pave_documents($id_article) {
global $puce; global $puce;
$result_doc = mysql_query(("SELECT type.extension AS extension, COUNT(doc.id_document) AS cnt $result_doc = mysql_query("SELECT type.extension AS extension, COUNT(doc.id_document) AS cnt
FROM spip_types_documents AS type, spip_documents AS doc, spip_documents_articles AS lien FROM spip_types_documents AS type, spip_documents AS doc, spip_documents_articles AS lien
WHERE lien.id_article=$id_article AND doc.id_document = lien.id_document AND doc.id_type = type.id_type WHERE lien.id_article=$id_article AND doc.id_document = lien.id_document AND doc.id_type = type.id_type
GROUP BY doc.id_type")); GROUP BY doc.id_type");
while ($type = mysql_fetch_object($result_doc)) { while ($type = mysql_fetch_object($result_doc)) {
$documents .= $puce.$type->cnt." ".$type->extension."<br>"; $documents .= $puce.$type->cnt." ".$type->extension."<br>";
$nbdoc += $type->cnt; $nbdoc += $type->cnt;
......
...@@ -12,7 +12,7 @@ define("_ECRIRE_INC_VERSION", "1"); ...@@ -12,7 +12,7 @@ define("_ECRIRE_INC_VERSION", "1");
// (utilise pour les modifs de la base de donnees) // (utilise pour les modifs de la base de donnees)
// //
$spip_version = 1.409; // version de la base $spip_version = 1.410; // version de la base
// dernier tag connu ou date si cvs // dernier tag connu ou date si cvs
if (! ereg('Name: v(.*) ','$Name$', $regs)) if (! ereg('Name: v(.*) ','$Name$', $regs))
......
...@@ -25,6 +25,33 @@ function deplacer_fichier_upload($source, $dest) { ...@@ -25,6 +25,33 @@ function deplacer_fichier_upload($source, $dest) {
} }
//
// Convertit le type numerique retourne par getimagesize() en extension fichier
//
function decoder_type_image($type, $strict = false) {
switch ($type) {
case 1:
return "gif";
case 2:
return "jpg";
case 3:
return "png";
case 4:
return $strict ? "" : "swf";
case 5:
return "psd";
case 6:
return "bmp";
case 7:
case 8:
return "tif";
default:
return "";
}
}
// //
// Ajouter une image (logo) // Ajouter une image (logo)
// //
...@@ -42,13 +69,8 @@ function ajout_image($source, $dest) { ...@@ -42,13 +69,8 @@ function ajout_image($source, $dest) {
// analyse le type de l'image (on ne fait pas confiance au nom de // 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) // fichier envoye par le browser : pour les Macs c'est plus sur)
$size = getimagesize($loc); $size = @getimagesize($loc);
$type = $size[2]; $type = decoder_type_image($size[2], true);
if ($type=="1") $type="gif";
else if ($type=="2") $type="jpg";
else if ($type=="3") $type="png";
else $type = "";
if ($type) { if ($type) {
rename($loc, "$loc.$type"); rename($loc, "$loc.$type");
...@@ -88,8 +110,9 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { ...@@ -88,8 +110,9 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) {
$result = mysql_query($query); $result = mysql_query($query);
if ($row = @mysql_fetch_array($result)) { if ($row = @mysql_fetch_array($result)) {
$id_type = $row['id_type']; $id_type = $row['id_type'];
$type_inclus = $row['inclus'];
} }
else return array(false,0); else return false;
// //
// Preparation // Preparation
...@@ -124,14 +147,14 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { ...@@ -124,14 +147,14 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) {
else else
$dest_path = "IMG/$dest"; $dest_path = "IMG/$dest";
if (!deplacer_fichier_upload($source, $dest_path)) return; if (!deplacer_fichier_upload($source, $dest_path)) return false;
// //
// Recopier le fichier // Recopier le fichier
// //
$size_image = getimagesize($dest_path); $size_image = getimagesize($dest_path);
$type_image = $size_image[2]; $type_image = decoder_type_image($size_image[2]);
if ($type_image) { if ($type_image) {
$largeur = $size_image[0]; $largeur = $size_image[0];
$hauteur = $size_image[1]; $hauteur = $size_image[1];
...@@ -139,7 +162,7 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { ...@@ -139,7 +162,7 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) {
$taille = filesize($dest_path); $taille = filesize($dest_path);
if ($nouveau) { if ($nouveau) {
if (!$mode) $mode = $type_image ? 'vignette' : 'document'; if (!$mode) $mode = ($type_image AND $type_inclus == 'image') ? 'vignette' : 'document';
$titre = ereg_replace("\..*$", "", $orig); $titre = ereg_replace("\..*$", "", $orig);
$titre = ereg_replace("ecrire/|upload/", "", $titre); $titre = ereg_replace("ecrire/|upload/", "", $titre);
$titre = strtr($titre, "_", " "); $titre = strtr($titre, "_", " ");
...@@ -156,25 +179,23 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { ...@@ -156,25 +179,23 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) {
$id_document = $id_document_lie; // pour que le 'return' active le bon doc. $id_document = $id_document_lie; // pour que le 'return' active le bon doc.
} }
return array (true,$id_document) ; // on veut bien effacer le fichier s'il est dans ftp/upload/ return $id_document;
} }
// image_name n'est valide que par POST http, mais pas par la methode ftp/upload // image_name n'est valide que par POST http, mais pas par la methode ftp/upload
// par ailleurs, pour un fichier ftp/upload, il faut effacer l'original nous-memes // par ailleurs, pour un fichier ftp/upload, il faut effacer l'original nous-memes
$effacer_si_ok = false;
if (!$image_name AND $image2) { if (!$image_name AND $image2) {
$image = "ecrire/upload/".$image2; $image = "ecrire/upload/".$image2;
$image_name = $image; $image_name = $image;
$effacer_si_ok = true;
} }
// //
// ajouter un document // ajouter un document
// //
if ($ajout_doc == 'oui') { if ($ajout_doc == 'oui') {
list ($ok, $id_document) = ajout_doc($image_name, $image, $fichier, $mode, $id_document); $id_document = ajout_doc($image_name, $image, $fichier, $mode, $id_document);
} }
...@@ -226,7 +247,7 @@ $redirect_url = "ecrire/" . $vars["redirect"]; ...@@ -226,7 +247,7 @@ $redirect_url = "ecrire/" . $vars["redirect"];
$link = new Link($redirect_url); $link = new Link($redirect_url);
reset($vars); reset($vars);
while (list ($key, $val) = each ($vars)) { while (list ($key, $val) = each ($vars)) {
if (!ereg("^(redirect|image.*|hash.*|ajout.*|doc.*|id_document|transformer.*)$", $key)) { if (!ereg("^(redirect|image.*|hash.*|ajout.*|doc.*|transformer.*)$", $key)) {
$link->addVar($key, $val); $link->addVar($key, $val);
} }
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter