function action_dater_post($r) { include_spip('inc/date'); $type = $r[2]; $id = $r[1]; if (!isset($_REQUEST['avec_redac'])) { $date = dater_table($id, $type); } else { if (_request('avec_redac') == 'non') $annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0; else { $annee_redac = _request('annee_redac'); $mois_redac = _request('mois_redac'); $jour_redac = _request('jour_redac'); $heure_redac = _request('heure_redac'); $minute_redac = _request('minute_redac'); if ($annee_redac<>'' AND $annee_redac < 1001) $annee_redac += 9000; } $date = format_mysql_date($annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac); include_spip('inc/modifier'); revision_article($r[1],array("date_redac" => $date)); } // a priori fait doublon avec instituer_xx utilise dans dater_table() // mais on laisse pour ne pas introduire de bug dans cette branche if (($type == 'article') AND $GLOBALS['meta']["post_dates"] == "non") { $t = sql_fetsel("statut, id_rubrique", "spip_articles", "id_article=$id"); if ($t['statut'] == 'publie') { include_spip('inc/rubriques'); if (strtotime($date) > time()) depublier_branche_rubrique_if($t['id_rubrique']); else publier_branche_rubrique($t['id_rubrique']); calculer_prochain_postdate(); } } }
// cf. public/assembler.php) echo pipeline('affichage_final' . _PIPELINE_SUFFIX, $page['texte']); if ($lang) { lang_select(); } // l'affichage de la page a pu lever des erreurs (inclusion manquante) // il faut tester a nouveau $debug = (_request('var_mode') == 'debug' or $tableau_des_temps) ? array(1) : array(); // Appel au debusqueur en cas d'erreurs ou de demande de trace // at last if ($debug) { // en cas d'erreur, retester l'affichage if ($html and ($affiche_boutons_admin or $debug)) { $var_mode_affiche = _request('var_mode_affiche'); $GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = $var_mode_affiche == 'validation' ? $page['texte'] : ""; echo erreur_squelette(false); } } else { if (isset($GLOBALS['meta']['date_prochain_postdate']) and $GLOBALS['meta']['date_prochain_postdate'] <= time()) { include_spip('inc/rubriques'); calculer_prochain_postdate(true); } // Effectuer une tache de fond ? // si _DIRECT_CRON_FORCE est present, on force l'appel if (defined('_DIRECT_CRON_FORCE')) { cron(); } // sauver le cache chemin si necessaire save_path_cache(); } }
/** * Recalcule des héritages de rubriques * * Recalcule le statut des rubriques, les langues héritées et la date * du prochain article post-daté * * Cette fonction est appelée après importation: elle calcule les meta-donnes * resultantes et remet de la coherence au cas où la base importée en manquait * * Cette fonction doit etre invoquée sans processus concurrent potentiel. * * @return void **/ function calculer_rubriques() { calculer_rubriques_publiees(); // Apres chaque (de)publication // recalculer les langues utilisees sur le site $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); // Sauver la date de la derniere mise a jour (pour menu_rubriques) ecrire_meta("date_calcul_rubriques", date("U")); // on calcule la date du prochain article post-date calculer_prochain_postdate(); }
/** * Mise à jour 13135 : réparer le calcul des rubriques ayant des articles postdatés */ function maj_13135() { include_spip('inc/rubriques'); calculer_prochain_postdate(); // supprimer les eventuels vieux cache plugin qui n'utilisaient pas _chemin @spip_unlink(_CACHE_PLUGINS_OPT); @spip_unlink(_CACHE_PLUGINS_FCT); }
function cache_valide(&$page, $date) { $now = $_SERVER['REQUEST_TIME']; // Apparition d'un nouvel article post-date ? if (isset($GLOBALS['meta']['post_dates']) and $GLOBALS['meta']['post_dates'] == 'non' and isset($GLOBALS['meta']['date_prochain_postdate']) and $now > $GLOBALS['meta']['date_prochain_postdate']) { spip_log('Un article post-date invalide le cache'); include_spip('inc/rubriques'); calculer_prochain_postdate(true); } if (defined('_VAR_NOCACHE') and _VAR_NOCACHE) { return -1; } if (isset($GLOBALS['meta']['cache_inhib']) and $_SERVER['REQUEST_TIME'] < $GLOBALS['meta']['cache_inhib']) { return -1; } if (defined('_NO_CACHE')) { return (_NO_CACHE == 0 and !isset($page['texte'])) ? 1 : _NO_CACHE; } // pas de cache ? on le met a jour, sauf pour les bots (on leur calcule la page sans mise en cache) if (!$page or !isset($page['texte']) or !isset($page['entetes']['X-Spip-Cache'])) { return _IS_BOT ? -1 : 1; } // controle de la signature if ($page['sig'] !== cache_signature($page)) { return _IS_BOT ? -1 : 1; } // #CACHE{n,statique} => on n'invalide pas avec derniere_modif // cf. ecrire/public/balises.php, balise_CACHE_dist() if (!isset($page['entetes']['X-Spip-Statique']) or $page['entetes']['X-Spip-Statique'] !== 'oui') { // Cache invalide par la meta 'derniere_modif' // sauf pour les bots, qui utilisent toujours le cache if (!_IS_BOT and $GLOBALS['derniere_modif_invalide'] and isset($GLOBALS['meta']['derniere_modif']) and $date < $GLOBALS['meta']['derniere_modif']) { return 1; } } // Sinon comparer l'age du fichier a sa duree de cache $duree = intval($page['entetes']['X-Spip-Cache']); $cache_mark = isset($GLOBALS['meta']['cache_mark']) ? $GLOBALS['meta']['cache_mark'] : 0; if ($duree == 0) { return -1; } else { if (!_IS_BOT and $date + $duree < $now or $date < $cache_mark) { return _IS_BOT ? -1 : 1; } else { return 0; } } }
function cache_valide(&$page, $date) { if (isset($GLOBALS['var_nocache']) AND $GLOBALS['var_nocache']) return -1; if (defined('_NO_CACHE')) return (_NO_CACHE==0 AND !isset($page['texte']))?1:_NO_CACHE; if (!$page OR !isset($page['texte']) OR !isset($page['entetes']['X-Spip-Cache'])) return 1; // #CACHE{n,statique} => on n'invalide pas avec derniere_modif // cf. ecrire/public/balises.php, balise_CACHE_dist() if (!isset($page['entetes']['X-Spip-Statique']) OR $page['entetes']['X-Spip-Statique'] !== 'oui') { // Cache invalide par la meta 'derniere_modif' // sauf pour les bots, qui utilisent toujours le cache if (!_IS_BOT AND $GLOBALS['derniere_modif_invalide'] AND $date < $GLOBALS['meta']['derniere_modif']) return 1; // Apparition d'un nouvel article post-date ? if ($GLOBALS['meta']['post_dates'] == 'non' AND isset($GLOBALS['meta']['date_prochain_postdate']) AND time() > $GLOBALS['meta']['date_prochain_postdate']) { spip_log('Un article post-date invalide le cache'); include_spip('inc/rubriques'); ecrire_meta('derniere_modif', time()); calculer_prochain_postdate(); return 1; } } // Sinon comparer l'age du fichier a sa duree de cache $duree = intval($page['entetes']['X-Spip-Cache']); if ($duree == 0) #CACHE{0} return -1; else if ($date + $duree < time()) return 1; else return 0; }
function cache_valide(&$page, $date) { if (defined('_VAR_NOCACHE') and _VAR_NOCACHE) { return -1; } if (isset($GLOBALS['meta']['cache_inhib']) and $_SERVER['REQUEST_TIME'] < $GLOBALS['meta']['cache_inhib']) { return -1; } if (defined('_NO_CACHE')) { return (_NO_CACHE == 0 and !isset($page['texte'])) ? 1 : _NO_CACHE; } if (!$page or !isset($page['texte']) or !isset($page['entetes']['X-Spip-Cache'])) { return 1; } // #CACHE{n,statique} => on n'invalide pas avec derniere_modif // cf. ecrire/public/balises.php, balise_CACHE_dist() if (!isset($page['entetes']['X-Spip-Statique']) or $page['entetes']['X-Spip-Statique'] !== 'oui') { // Cache invalide par la meta 'derniere_modif' // sauf pour les bots, qui utilisent toujours le cache if (!_IS_BOT and $GLOBALS['derniere_modif_invalide'] and $date < $GLOBALS['meta']['derniere_modif']) { return 1; } // Apparition d'un nouvel article post-date ? if ($GLOBALS['meta']['post_dates'] == 'non' and isset($GLOBALS['meta']['date_prochain_postdate']) and time() > $GLOBALS['meta']['date_prochain_postdate']) { spip_log('Un article post-date invalide le cache'); include_spip('inc/rubriques'); ecrire_meta('derniere_modif', time()); calculer_prochain_postdate(); return 1; } } // Sinon comparer l'age du fichier a sa duree de cache $duree = intval($page['entetes']['X-Spip-Cache']); if ($duree == 0) { #CACHE{0} return -1; } else { if ($date + $duree < time()) { return 1; } else { return 0; } } }