Fix W3C validator errors: duplicate guids and missing atom:link self

- Recurring events share one UID across all occurrences (confirmed via
  the API: same UID, different start dates), which produced duplicate
  <guid> values the RSS spec forbids. Suffix the guid with the
  occurrence's start date to make it unique per occurrence.
- Add atom:link rel="self" to the channel, per the validator's
  recommendation, in both the PHP and Python implementations.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
para
2026-09-25 23:49:31 +02:00
co-authored by Claude Sonnet 5
parent 13ea82e347
commit 13e5c94ee7
4 changed files with 29 additions and 8 deletions
+7 -2
View File
@@ -56,10 +56,14 @@ function build_events_feed(): string
$meta = format_event_meta($item);
$description = ($meta !== '' ? '<p>' . htmlspecialchars($meta, ENT_QUOTES, 'UTF-8') . '</p>' : '')
. full_body_html($item);
// Un evenement recurrent partage le meme UID sur toutes ses
// occurrences (memes UID, dates differentes) : on suffixe le guid
// avec la date de debut pour rester unique par occurrence, comme
// l'exige la spec RSS.
$items[] = [
'title' => $title,
'link' => SITE . '/agenda/' . slugify($title) . '?u=' . rawurlencode($uid),
'guid' => $uid,
'guid' => $uid . '-' . ($item['start'] ?? ''),
'pubDate' => $item['created'] ?? $item['start'] ?? null,
'description' => $description,
];
@@ -68,7 +72,8 @@ function build_events_feed(): string
'Silly.be - Agenda',
SITE . '/agenda',
"Agenda / événements de la commune de Silly (Belgique)",
$items
$items,
'https://sillycone-village.be/silly-rss/agenda.php'
);
}