X-Git-Url: http://git.cyclocoop.org/?p=lhc%2Fweb%2Fclavette_www.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Ffiltres_images_lib_mini.php;h=468d6190b5dd5bf034c52009912bf106b529b989;hp=03620a1cc15b2677f9711c8ac3670baaa1417073;hb=cc641eb476987612f6d6df1a5417c1c5582a8ab8;hpb=7d84a490677fb716a1fd4df260f8eab35f6a8506 diff --git a/www/ecrire/inc/filtres_images_lib_mini.php b/www/ecrire/inc/filtres_images_lib_mini.php index 03620a1..468d619 100644 --- a/www/ecrire/inc/filtres_images_lib_mini.php +++ b/www/ecrire/inc/filtres_images_lib_mini.php @@ -3,7 +3,7 @@ /* *************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2014 * + * Copyright (c) 2001-2016 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -145,6 +145,11 @@ function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cr } else { // enlever le timestamp eventuel $source=preg_replace(',[?][0-9]+$,','',$source); + if (strpos($source,"?")!==false + AND strncmp($source,_DIR_IMG,strlen(_DIR_IMG))==0 + AND file_exists($f=preg_replace(',[?].*$,','',$source))){ + $source = $f; + } $fichier = $source; } @@ -508,8 +513,8 @@ function _image_gd_output($img,$valeurs, $qualite=_IMG_GD_QUALITE){ function reconstruire_image_intermediaire($fichier_manquant){ $reconstruire = array(); $fichier = $fichier_manquant; - while ( - !@file_exists($fichier) + while (strpos($fichier,"://")===false + and !@file_exists($fichier) AND lire_fichier($src = "$fichier.src",$source) AND $valeurs=unserialize($source) AND ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...) @@ -528,10 +533,29 @@ function reconstruire_image_intermediaire($fichier_manquant){ ramasse_miettes($fichier_manquant); } -// http://doc.spip.org/@ramasse_miettes -function ramasse_miettes($fichier){ - if (!lire_fichier($src = "$fichier.src",$source) - OR !$valeurs=unserialize($source)) return; +/** + * Indique qu'un fichier d'image calculé est à conserver + * + * Permet de rendre une image définitive et de supprimer les images + * intermédiaires à son calcul. + * + * Supprime le fichier de contrôle de l’image cible (le $fichier.src) + * ce qui indique que l'image est définitive. + * + * Remonte ensuite la chaîne des fichiers de contrôle pour supprimer + * les images temporaires (mais laisse les fichiers de contrôle permettant + * de les reconstruire). + * + * @param string $fichier + * Chemin du fichier d'image calculé + **/ +function ramasse_miettes($fichier) { + if (strpos($fichier,"://")!==false + or !lire_fichier($src = "$fichier.src", $source) + or !$valeurs = unserialize($source) + ) { + return; + } spip_unlink($src); # on supprime la reference a sa source pour marquer cette image comme non intermediaire while ( ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...) @@ -558,8 +582,10 @@ function image_graver($img){ if (strlen($fichier) < 1) $fichier = $img; # si jamais le fichier final n'a pas ete calcule car suppose temporaire - if (!@file_exists($fichier)) + # et qu'il ne s'agit pas d'une URL + if (strpos($fichier,"://")===false and !@file_exists($fichier)) { reconstruire_image_intermediaire($fichier); + } ramasse_miettes($fichier); return $img; // on ne change rien }