tkr/templates/feed/atom.php
2025-06-14 14:17:49 -04:00

47 lines
1.8 KiB
PHP

<?php /** @var ConfigModel $config */ ?>
<?php /** @var array $ticks */ ?>
<?php
$siteTitle = htmlspecialchars($config->siteTitle);
$siteUrl = htmlspecialchars($config->baseUrl);
$basePath = htmlspecialchars($config->basePath);
$updated = date(DATE_ATOM, strtotime($ticks[0]['timestamp'] ?? 'now'));
header('Content-Type: application/atom+xml; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><?= "$siteTitle Atom Feed" ?></title>
<link rel="self"
type="application/atom+xml"
title="<?php echo htmlspecialchars($config->siteTitle, ENT_XML1, 'UTF-8') ?> Atom Feed"
href="<?php echo htmlspecialchars($siteUrl . $basePath, ENT_XML1, 'UTF-8') ?>feed/atom">
<link rel="alternate" href="<?= $siteUrl . $basePath ?>">
<updated><?= $updated ?></updated>
<id><?= $siteUrl . $basePath . 'feed/atom'?></id>
<author>
<name><?= $siteTitle ?></name>
</author>
<?php foreach ($ticks as $tick):
[$date, $time] = explode(' ', $tick['timestamp']);
$dateParts = explode('-', $date);
$timeParts = explode(':', $time);
[$year, $month, $day] = $dateParts;
[$hour, $minute, $second] = $timeParts;
$tickPath = "$year/$month/$day/$hour/$minute/$second";
$tickUrl = htmlspecialchars($siteUrl . $basePath . "tick/$tickPath", ENT_XML1, 'UTF-8');
$tickTime = date(DATE_ATOM, strtotime($tick['timestamp']));
$tickTitle = htmlspecialchars($tick['tick'], ENT_XML1, 'UTF-8');
$tickContent = Util::escape_and_linkify($tick['tick'], ENT_XML1, false);
?>
<entry>
<title><?= $tickTitle ?></title>
<link rel="alternate" type="text/html" href="<?= $tickUrl ?>"/>
<id><?= $tickUrl ?></id>
<updated><?= $tickTime ?></updated>
<content type="html"><?= $tickContent ?></content>
</entry>
<?php endforeach; ?>
</feed>