Valider 410e89c3 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Une fonction ecrire_fichier_calcule_si_modifie() pour ecrire les fichier...

Une fonction ecrire_fichier_calcule_si_modifie() pour ecrire les fichier produit automatiquement uniquement si leur contenu md5 change (on passe par un fichier intermediaire suffixe par .last qui reste tel quel si il n'est pas different du contenu deja existant)
+ utilisation dans la fonction produire_fond_statique()
parent 9ef22910
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+2 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -4646,15 +4646,8 @@ function produire_fond_statique($fond, $contexte = array(), $options = array(),
			// mais on peut mettre un md5 du contenu, ce qui donne un aperu rapide si la feuille a change ou non
			$comment .= "}\n   md5:" . md5($contenu) . " */\n";
		}
		// et ecrire le fichier
		ecrire_fichier($filename . ".last", $comment . $contenu);
		// regarder si on recopie
		if (!file_exists($filename)
			or md5_file($filename) !== md5_file($filename . ".last")
		) {
			@copy($filename . ".last", $filename);
			clearstatcache(true, $filename); // eviter que PHP ne reserve le vieux timestamp
		}
		// et ecrire le fichier si il change
		ecrire_fichier_calcule_si_modifie($filename, $comment . $contenu, false, true);
	}

	return timestamp($filename);
+28 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -322,6 +322,34 @@ function ecrire_fichier_securise($fichier, $contenu, $ecrire_quand_meme = false,
	return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
}


/**
 * @param string $fichier
 * @param string $contenu
 * @param bool $force
 * @return bool
 */
function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force=false, $use_copy=false) {
	$fichier_tmp = $fichier . '.last';
	if (!ecrire_fichier($fichier_tmp, $contenu, true)){
		return false;
	}
	if ($force
	  or !file_exists($fichier)
		or md5_file($fichier) != md5_file($fichier_tmp)) {
		if ($use_copy) {
			@copy($fichier_tmp, $fichier);
		}
		else {
			@rename($fichier_tmp, $fichier);
		}
		// eviter que PHP ne reserve le vieux timestamp
		clearstatcache(true, $fichier);
	}
	return true;
}


/**
 * Lire un fichier encapsulé en PHP
 *