From a7af879db2f6e0c467f572f172fc6fddb996075a Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sat, 7 Jan 2006 14:13:47 +0000 Subject: [PATCH] decongestion de spip_image grace au script generique spip_action.php --- .gitattributes | 1 + ecrire/inc_logos.php3 | 32 ++++---- ecrire/inc_spip_action_iconifier.php | 117 +++++++++++++++++++++++++++ ecrire/inc_spip_image.php | 96 ---------------------- 4 files changed, 133 insertions(+), 113 deletions(-) create mode 100644 ecrire/inc_spip_action_iconifier.php diff --git a/.gitattributes b/.gitattributes index 336afb3853..bf568778d8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -315,6 +315,7 @@ ecrire/inc_recherche.php -text ecrire/inc_rubriques_edit.php -text ecrire/inc_sites_edit.php -text ecrire/inc_sites_tous.php -text +ecrire/inc_spip_action_iconifier.php -text ecrire/inc_spip_action_purger.php -text ecrire/inc_spip_action_test_dirs.php -text ecrire/inc_spip_cal.php -text diff --git a/ecrire/inc_logos.php3 b/ecrire/inc_logos.php3 index 4d9a740f4f..cbf2b6b0b4 100644 --- a/ecrire/inc_logos.php3 +++ b/ecrire/inc_logos.php3 @@ -63,18 +63,19 @@ function afficher_boite_logo($type, $id_objet, $id, $texteon, $texteoff, $redire if ($spip_display != 4) { + include_ecrire('inc_session'); echo "<p>"; debut_cadre_relief("image-24.gif"); echo "<div class='verdana1' style='text-align: center;'>"; $desc = decrire_logo($logon); - afficher_logo($logon, $texteon, $desc, $id_objet, $id, $redirect); + afficher_logo($logon, $texteon, $desc, $redirect); if ($desc AND $texteoff) { echo "<br /><br />"; $desc = decrire_logo($logoff); - afficher_logo($logoff, $texteoff, $desc, $id_objet, $id, $redirect); + afficher_logo($logoff, $texteoff, $desc, $redirect); } - + echo "</div>"; fin_cadre_relief(); echo "</p>"; @@ -82,12 +83,10 @@ function afficher_boite_logo($type, $id_objet, $id, $texteon, $texteoff, $redire } -function afficher_logo($racine, $titre, $logo, $id_objet, $id, $redirect) { +function afficher_logo($racine, $titre, $logo, $redirect) { global $connect_id_auteur; global $clean_link, $spip_lang_right; - include_ecrire('inc_session'); - if (!$redirect) $redirect = $clean_link->getUrl(); echo "<b>"; @@ -98,32 +97,31 @@ function afficher_logo($racine, $titre, $logo, $id_objet, $id, $redirect) { if ($logo) { list ($fichier, $taille) = $logo; - $hash = calculer_action_auteur("effacer $fichier"); + $hash = calculer_action_auteur("iconifier $fichier"); echo "<p><center><div><a href='"._DIR_IMG.$fichier."'>"; echo reduire_image_logo(_DIR_IMG.$fichier, 170); echo "</a></div>"; echo debut_block_invisible(md5($titre)); echo $taille; - echo "\n<br />[<a href='", generer_url_public("spip_image", "$id_objet=$id&action=effacer&doc=$fichier&hash_id_auteur=$connect_id_auteur&hash=$hash&redirect=".urlencode($redirect)), "'>",_T('lien_supprimer'),"</a>]"; + echo "\n<br />[<a href='", generer_url_public('spip_action.php', "action=iconifier&doc=$fichier&hash_id_auteur=$connect_id_auteur&hash=$hash&redirect=".urlencode($redirect)), "'>",_T('lien_supprimer'),"</a>]"; echo fin_block(); echo "</center></p>"; } else { - $hash = calculer_action_auteur("ajouter $racine"); + $hash = calculer_action_auteur("iconifier $racine"); echo debut_block_invisible(md5($titre)); - echo "\n\n<form action='" . generer_url_public("spip_image","") . "' method='POST' + echo "\n\n<form action='" . generer_url_public('spip_action.php') . "' method='POST' ENCTYPE='multipart/form-data'> <div>"; - echo "\n<INPUT NAME='redirect' TYPE=Hidden VALUE='$redirect' />"; - echo "\n<INPUT NAME='$id_objet' TYPE=Hidden VALUE='$id' />"; - echo "\n<INPUT NAME='hash_id_auteur' TYPE=Hidden VALUE='$connect_id_auteur' />"; - echo "\n<INPUT NAME='hash' TYPE=Hidden VALUE='$hash' />"; - echo "\n<INPUT NAME='action' TYPE=Hidden VALUE='ajouter' />"; - echo "\n<INPUT NAME='doc' TYPE=Hidden VALUE='$racine' />"; + echo "\n<input name='redirect' type='hidden' value='$redirect' />"; + echo "\n<input name='hash_id_auteur' type='hidden' value='$connect_id_auteur' />"; + echo "\n<input name='hash' type='hidden' value='$hash' />"; + echo "\n<input name='action' type='hidden' value='iconifier' />"; + echo "\n<input name='doc' type='hidden' value='$racine' />"; echo "\n"._T('info_telecharger_nouveau_logo')."<br />"; - echo "\n<INPUT NAME='image' type='File' class='forml' style='font-size:9px;' SIZE=15>"; + echo "\n<input name='image' type='File' class='forml' style='font-size:9px;' size='15'>"; echo "<div align='", $GLOBALS['spip_lang_right'], "'>"; echo "\n<input name='sousaction1' type='submit' value='", _T('bouton_telecharger'), diff --git a/ecrire/inc_spip_action_iconifier.php b/ecrire/inc_spip_action_iconifier.php new file mode 100644 index 0000000000..1d7f35d988 --- /dev/null +++ b/ecrire/inc_spip_action_iconifier.php @@ -0,0 +1,117 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_ecrire("inc_session"); # verifier_action_auteur + +function spip_action_iconifier_dist() +{ + global $action, $hash, $hash_id_auteur, $doc, $image; + + if (!verifier_action_auteur("$action $doc", $hash, $hash_id_auteur)) + die ($action . '!!!'); + + if ($_SERVER['REQUEST_METHOD'] == 'POST') + spip_image_ajouter_dist(); + else spip_image_effacer_dist(); + $link = new Link(_DIR_RESTREINT_ABS . $GLOBALS['redirect']); + redirige_par_entete($link->getUrl($GLOBALS['ancre'])); + +} + +function spip_image_effacer_dist() { + + global $doc; + if (!strstr($doc, "..")) + @unlink(_DIR_IMG . $doc); +} + +// +// Ajouter un logo +// + +// $source = $_FILES[0] +// $dest = arton12.xxx +function spip_image_ajouter_dist() { + global $sousaction2, $source, $doc; + + include_ecrire('inc_getdocument'); + if (!$sousaction2) { + if (!$_FILES) $_FILES = $GLOBALS['HTTP_POST_FILES']; + $source = (is_array($_FILES) ? array_pop($_FILES) : ""); + } + if ($source) { + $f =_DIR_DOC . $doc . '.tmp'; + + if (!is_array($source)) + // fichier dans upload/ + $source = @copy(_DIR_TRANSFERT . $source, $f); + else { + // Intercepter une erreur a l'envoi + if (check_upload_error($source['error'])) + $source =""; + else + // 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) + + $source = deplacer_fichier_upload($source['tmp_name'], $f); + } + } + if (!$source) + spip_log("pb de copie pour $f"); + else { + + $size = @getimagesize($f); + $type = decoder_type_image($size[2], true); + + if ($type) { + $poids = filesize($f); + if (_LOGO_MAX_SIZE > 0 + AND $poids > _LOGO_MAX_SIZE*1024) { + @unlink ($f); + check_upload_error(6, + _T('info_logo_max_poids', + array('maxi' => taille_en_octets(_LOGO_MAX_SIZE*1024), + 'actuel' => taille_en_octets($poids)))); + } + + if (_LOGO_MAX_WIDTH * _LOGO_MAX_HEIGHT + AND ($size[0] > _LOGO_MAX_WIDTH + OR $size[1] > _LOGO_MAX_HEIGHT)) { + @unlink ($f); + check_upload_error(6, + _T('info_logo_max_taille', + array( + 'maxi' => + _T('info_largeur_vignette', + array('largeur_vignette' => _LOGO_MAX_WIDTH, + 'hauteur_vignette' => _LOGO_MAX_HEIGHT)), + 'actuel' => + _T('info_largeur_vignette', + array('largeur_vignette' => $size[0], + 'hauteur_vignette' => $size[1])) + ))); + } + @rename ($f, _DIR_DOC . $doc . ".$type"); + } + else { + @unlink ($f); + check_upload_error(6, + _T('info_logo_format_interdit', + array ('formats' => 'GIF, JPG, PNG')) + ); + } + + } +} +?> diff --git a/ecrire/inc_spip_image.php b/ecrire/inc_spip_image.php index 0014745631..664508203d 100644 --- a/ecrire/inc_spip_image.php +++ b/ecrire/inc_spip_image.php @@ -68,102 +68,6 @@ function spip_image_joindre_dist() redirige_par_entete($link->getUrl($ancre)); } -// -// Ajouter un logo -// - -// $source = $_FILES[0] -// $dest = arton12.xxx -function spip_image_ajouter_dist() { - global $sousaction2, $source, $doc; - global $action, $hash, $hash_id_auteur; - - if (!verifier_action_auteur("$action $doc", $hash, $hash_id_auteur)) - die ($action . '!!!'); - - include_ecrire('inc_getdocument'); - if (!$sousaction2) { - if (!$_FILES) $_FILES = $HTTP_POST_FILES; - $source = (is_array($_FILES) ? array_pop($_FILES) : ""); - } - if ($source) { - $f =_DIR_DOC . $doc . '.tmp'; - - if (!is_array($source)) - // fichier dans upload/ - $source = @copy(_DIR_TRANSFERT . $source, $f); - else { - // Intercepter une erreur a l'envoi - if (check_upload_error($source['error'])) - $source =""; - else - // 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) - - $source = deplacer_fichier_upload($source['tmp_name'], $f); - } - } - if (!$source) - spip_log("pb de copie pour $f"); - else { - - $size = @getimagesize($f); - $type = decoder_type_image($size[2], true); - - if ($type) { - $poids = filesize($f); - if (_LOGO_MAX_SIZE > 0 - AND $poids > _LOGO_MAX_SIZE*1024) { - @unlink ($f); - check_upload_error(6, - _T('info_logo_max_poids', - array('maxi' => taille_en_octets(_LOGO_MAX_SIZE*1024), - 'actuel' => taille_en_octets($poids)))); - } - - if (_LOGO_MAX_WIDTH * _LOGO_MAX_HEIGHT - AND ($size[0] > _LOGO_MAX_WIDTH - OR $size[1] > _LOGO_MAX_HEIGHT)) { - @unlink ($f); - check_upload_error(6, - _T('info_logo_max_taille', - array( - 'maxi' => - _T('info_largeur_vignette', - array('largeur_vignette' => _LOGO_MAX_WIDTH, - 'hauteur_vignette' => _LOGO_MAX_HEIGHT)), - 'actuel' => - _T('info_largeur_vignette', - array('largeur_vignette' => $size[0], - 'hauteur_vignette' => $size[1])) - ))); - } - @rename ($f, _DIR_DOC . $doc . ".$type"); - } - else { - @unlink ($f); - check_upload_error(6, - _T('info_logo_format_interdit', - array ('formats' => 'GIF, JPG, PNG')) - ); - } - - } - $link = new Link(_DIR_RESTREINT_ABS . $GLOBALS['redirect']); - redirige_par_entete($link->getUrl($GLOBALS['ancre'])); -} - - -function spip_image_effacer_dist() { - global $action, $hash, $hash_id_auteur, $doc; - if (!verifier_action_auteur("$action $doc", $hash, $hash_id_auteur)) - die ($action . '!!!'); - - if (!strstr($doc, "..")) - @unlink(_DIR_IMG . $doc); - $link = new Link(_DIR_RESTREINT_ABS . $GLOBALS['redirect']); - redirige_par_entete($link->getUrl($GLOBALS['ancre'])); -} // // Creation automatique de vignette -- GitLab