diff --git a/ecrire/action/iconifier.php b/ecrire/action/iconifier.php index 69eb4f88bbfe000a78c03c31efce9a10f8de6daf..15f3ebc51e4c8f9f7d35e073b4d93ecbc99bb7e0 100644 --- a/ecrire/action/iconifier.php +++ b/ecrire/action/iconifier.php @@ -79,7 +79,7 @@ function action_spip_image_effacer_dist($arg) { * @param string $source * Chemin du logo uploadé sur le serveur en attente d'utilisation **/ -function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { +function action_spip_image_ajouter_dist($arg,$sousaction2,$source,$return=false) { global $formats_logos; include_spip('inc/documents'); @@ -87,6 +87,7 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { if (!$_FILES) $_FILES = $GLOBALS['HTTP_POST_FILES']; $source = (is_array($_FILES) ? array_pop($_FILES) : ""); } + $erreur = ""; if (!$source) spip_log("spip_image_ajouter : source inconnue"); else { @@ -97,7 +98,7 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { $source = @copy(determine_upload() . $source, $f); else { // Intercepter une erreur a l'envoi - if (check_upload_error($source['error'])) + if ($erreur = check_upload_error($source['error'],"",$return)) $source =""; else // analyse le type de l'image (on ne fait pas confiance au nom de @@ -117,37 +118,42 @@ function action_spip_image_ajouter_dist($arg,$sousaction2,$source) { if (_LOGO_MAX_SIZE > 0 AND $poids > _LOGO_MAX_SIZE*1024) { spip_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)))); + $erreur = _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 + elseif (_LOGO_MAX_WIDTH * _LOGO_MAX_HEIGHT AND ($size[0] > _LOGO_MAX_WIDTH OR $size[1] > _LOGO_MAX_HEIGHT)) { spip_unlink ($f); - check_upload_error(6, - _T('info_logo_max_poids', - 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])) - ))); + $erreur = _T('info_logo_max_poids', + 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_LOGOS . $arg . ".$type"); + else + @rename ($f, _DIR_LOGOS . $arg . ".$type"); } else { spip_unlink ($f); - check_upload_error(6,_T('info_logo_format_interdit', - array('formats' => join(', ', $formats_logos)))); + $erreur = _T('info_logo_format_interdit', + array('formats' => join(', ', $formats_logos))); } } + if ($erreur){ + if ($return) + return $erreur; + else + check_upload_error(6,$erreur); + } } ?> diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index ed3c03a45f508185be166259f4fd26750a0109d6..634a55a270fe11bb8d652b768ee0ae7bfa511bf3 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -205,7 +205,7 @@ function deplacer_fichier_upload($source, $dest, $move=false) { // et true si erreur = pas de fichier // pour les autres erreurs affiche le message d'erreur et meurt // http://doc.spip.org/@check_upload_error -function check_upload_error($error, $msg='') { +function check_upload_error($error, $msg='', $return=false) { global $spip_lang_right; if (!$error) return false; @@ -239,8 +239,10 @@ function check_upload_error($error, $msg='') { } spip_log ("erreur upload $error"); + if ($return) + return $msg; - if(_request("iframe")=="iframe") { + if(_request("iframe")=="iframe") { echo "<div class='upload_answer upload_error'>$msg</div>"; exit; } diff --git a/prive/formulaires/editer_logo.php b/prive/formulaires/editer_logo.php index a20ac0fae0366b4a6f7f0255b729ee78c6dccefa..607556ea0f1e675eaac25d9d49b146f71ff1eb3f 100644 --- a/prive/formulaires/editer_logo.php +++ b/prive/formulaires/editer_logo.php @@ -214,8 +214,10 @@ function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour='', $op $logo = $chercher_logo($id_objet, $_id_objet, $etat); if ($logo) spip_unlink($logo[0]); - $ajouter_image($type.$etat.$id_objet," ",$file); - $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle + if ($err = $ajouter_image($type.$etat.$id_objet," ",$file,true)) + $res['message_erreur'] = $err; + else + $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle set_request('logo_up',' '); } }