diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php index 9e47388dce966548b06442f69acf1e9f3c9b4010..9fecf5ccf2db3859774358b284ce92c5de59d959 100644 --- a/ecrire/inc/flock.php +++ b/ecrire/inc/flock.php @@ -184,19 +184,19 @@ function jeune_fichier($fichier, $n) // http://doc.spip.org/@supprimer_fichier function supprimer_fichier($fichier, $lock=true) { if (!@file_exists($fichier)) - return; + return true; if ($lock) { // verrouiller le fichier destination if (!$fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) - return; + return false; // liberer le verrou spip_fclose_unlock($fp); } // supprimer - @unlink($fichier); + return @unlink($fichier); } // Supprimer brutalement, si le fichier existe // http://doc.spip.org/@spip_unlink diff --git a/ecrire/inc/meta.php b/ecrire/inc/meta.php index 11f908ba1decd7cea70f2d71d948c86f13332479..7a5b15daf1027def758d58bfd35b559c2fd6da20 100644 --- a/ecrire/inc/meta.php +++ b/ecrire/inc/meta.php @@ -19,23 +19,28 @@ if (!defined("_ECRIRE_INC_VERSION")) return; function inc_meta_dist() { // Lire les meta, en cache si present, valide et lisible - if ($old = jeune_fichier(_FILE_META, 1<<24) + if ($new = jeune_fichier(_FILE_META, 1<<24) # AND (@filemtime(_FILE_META) > @filemtime(_DIR_RESTREINT . '.svn/entries')) AND lire_fichier(_FILE_META, $meta)) $GLOBALS['meta'] = @unserialize($meta); // sinon lire en base - if (!$GLOBALS['meta']) $old = !lire_metas(); + if (!$GLOBALS['meta']) $new = !lire_metas(); // renouveller l'alea au besoin if (test_espace_prive() AND $GLOBALS['meta'] - AND (time() > _RENOUVELLE_ALEA + @$GLOBALS['meta']['alea_ephemere_date'])) { + AND (time() >/* _RENOUVELLE_ALEA + */ @$GLOBALS['meta']['alea_ephemere_date'])) { + // si on n'a pas l'acces en ecriture sur le cache, + // ne pas renouveller l'alea sinon le cache devient faux + if (supprimer_fichier(_FILE_META)) { include_spip('inc/acces'); renouvelle_alea(); + $new = false; + } else spip_log("impossible d'ecrire dans " . _FILE_META); } - // et refaire le cache si on a pu lire + // et refaire le cache si on a du lire en base - if (!$old) ecrire_fichier(_FILE_META, serialize($GLOBALS['meta'])); + if (!$new) ecrire_fichier(_FILE_META, serialize($GLOBALS['meta'])); } // fonctions aussi appelees a l'install ==> spip_query en premiere requete