Annonces à venir proposées, et dates d'événement au lieu des dates de publication
Retour du commanditaire après le premier envoi réel (juillet 2026) : des annonces à venir n'étaient pas proposées à la coche, et les dates affichées étaient les dates de publication. - Fenêtre « à venir » de 12 mois (FUTURE_HORIZON_MONTHS), démarrant à la fin du mois de la newsletter ou à aujourd'hui si ce mois est passé, en remplacement du plafond « début de fenêtre <= fin du mois ». Idem pour les séances (SEANCE_WINDOW_MARGIN_DAYS de 5 jours supprimée). Ces items sont regroupés dans un bloc « À venir », décochés par défaut. - event_date_label() centralise les libellés du thème (« Le X de H1 à H2 », « Du X au Y », « Jusqu'au X », « X à H ») sur la convention date_de_debut > datetime > post_date. Utilisée par l'export et par la pastille de la liste à cocher, qui affichent donc la même chose. - Tri par date d'événement (sql_event_date_order) et non par date de publication. - Fenêtres de fin « +35 j » et « +3 mois » recalées sur la date d'événement : un événement annoncé plus de 35 jours à l'avance sortait de la fenêtre avant d'avoir eu lieu et manquait dans la newsletter de son propre mois. - merge_selected_items() : une sélection déjà enregistrée est réinjectée dans la liste même si ses items sont sortis de la fenêtre — sans ça, rouvrir puis réenregistrer une ancienne newsletter l'amputait silencieusement. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011w7RzAHv4r1Yahnm2NwDDG
This commit is contained in:
@@ -540,28 +540,27 @@ body { margin: 0 !important; padding: 0 !important; }
|
||||
// ── Date helpers ──────────────────────────────────────────────────────────
|
||||
|
||||
private function format_date_for_category(int $post_id, int $cat_id): string {
|
||||
$window = Thalim_NL_Post_Query::get_window_type($cat_id);
|
||||
|
||||
// Ouvrages : année seule, comme l'affichage des cartes côté front.
|
||||
$date_format = ($cat_id === THALIM_NL_CAT_OUVRAGES) ? 'Y' : 'j F Y';
|
||||
|
||||
if ($window === 'debut_minus35_to_fin') {
|
||||
$raw_debut = get_post_meta($post_id, 'date_de_debut', true) ?: '';
|
||||
$raw_fin = get_post_meta($post_id, 'date_de_fin', true) ?: '';
|
||||
$debut_str = $this->format_raw_date($raw_debut, $date_format);
|
||||
$fin_str = $this->format_raw_date($raw_fin, $date_format);
|
||||
if ($debut_str && $fin_str && $debut_str !== $fin_str) {
|
||||
return $debut_str . '–' . $fin_str;
|
||||
if ($cat_id === THALIM_NL_CAT_OUVRAGES) {
|
||||
$raw_dt = get_post_meta($post_id, 'datetime', true) ?: '';
|
||||
$year = $this->format_raw_date($raw_dt, 'Y');
|
||||
if ($year) {
|
||||
return $year;
|
||||
}
|
||||
return $debut_str ?: $fin_str;
|
||||
$post = get_post($post_id);
|
||||
return $post ? $this->format_raw_date($post->post_date, 'Y') : '';
|
||||
}
|
||||
|
||||
$raw_dt = get_post_meta($post_id, 'datetime', true) ?: '';
|
||||
if ($raw_dt && !str_starts_with($raw_dt, '0000-00-00')) {
|
||||
return $this->format_raw_date($raw_dt, $date_format);
|
||||
// Date de l'événement annoncé (date_de_debut > datetime > date_de_fin),
|
||||
// et non date de publication : « Du X au Y », « Jusqu'au X », « X à H ».
|
||||
$label = Thalim_NL_Post_Query::event_date_label($post_id);
|
||||
if ($label !== '') {
|
||||
return $label;
|
||||
}
|
||||
|
||||
// Aucune date saisie : dernier recours, la date de publication.
|
||||
$post = get_post($post_id);
|
||||
return $post ? $this->format_raw_date($post->post_date, $date_format) : '';
|
||||
return $post ? $this->format_raw_date($post->post_date) : '';
|
||||
}
|
||||
|
||||
private function format_raw_date(string $raw, string $format = 'j F Y'): string {
|
||||
|
||||
Reference in New Issue
Block a user