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(); } } }
/** * Calcule la date du prochain article post-daté * * Appelée lorsqu'un (ou plusieurs) article post-daté arrive à terme * ou est redaté * * @param bool $check * true pour affecter le statut des rubriques concernées. * @return void **/ function calculer_prochain_postdate($check = false) { include_spip('base/abstract_sql'); if ($check) { $postdates = $GLOBALS['meta']["post_dates"] == "non" ? "AND A.date <= " . sql_quote(date('Y-m-d H:i:s')) : ''; $r = sql_select("DISTINCT A.id_rubrique AS id", "spip_articles AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique", "R.statut != 'publie' AND A.statut='publie'{$postdates}"); while ($row = sql_fetch($r)) { publier_branche_rubrique($row['id']); } pipeline('trig_calculer_prochain_postdate', ''); } $t = sql_fetsel("date", "spip_articles", "statut='publie' AND date > " . sql_quote(date('Y-m-d H:i:s')), "", "date", "1"); if ($t) { $t = $t['date']; if (!isset($GLOBALS['meta']['date_prochain_postdate']) or $t != $GLOBALS['meta']['date_prochain_postdate']) { ecrire_meta('date_prochain_postdate', strtotime($t)); ecrire_meta('derniere_modif', time()); } } else { effacer_meta('date_prochain_postdate'); ecrire_meta('derniere_modif', time()); } spip_log("prochain postdate: {$t}"); }