Podcast-server/feed.php

65 lines
3.2 KiB
PHP

<?php
header('Content-Type: application/rss+xml; charset=utf-8');
require_once 'includes/db.php';
require_once 'includes/functions.php';
$site_title = getSetting($pdo, 'site_title');
$site_description = "The official podcast of " . $site_title;
$banner_image = getSetting($pdo, 'banner_image');
$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? "https" : "http";
$host = $_SERVER['HTTP_HOST'];
$base_url = $protocol . "://" . $host . PROJECT_ROOT_URL;
$banner_url = $base_url . "/assets/uploads/images/" . ($banner_image ?: 'default-banner.jpg');
if ($banner_image === 'default-banner.jpg' || empty($banner_image)) {
$banner_url = "https://images.unsplash.com/photo-1478737270239-2f02b77fc618?auto=format&fit=crop&q=80&w=1400&h=1400";
}
$stmt = $pdo->query("SELECT * FROM episodes ORDER BY release_date DESC");
$episodes = $stmt->fetchAll();
echo '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
?>
<rss version="2.0"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title><?php echo htmlspecialchars($site_title); ?></title>
<link><?php echo $base_url; ?>/</link>
<atom:link href="<?php echo $base_url; ?>/feed.php" rel="self" type="application/rss+xml" />
<language>en-us</language>
<itunes:author><?php echo htmlspecialchars($site_title); ?></itunes:author>
<itunes:summary><?php echo htmlspecialchars($site_description); ?></itunes:summary>
<description><?php echo htmlspecialchars($site_description); ?></description>
<itunes:owner>
<itunes:name><?php echo htmlspecialchars($site_title); ?></itunes:name>
<itunes:email>admin@example.com</itunes:email>
</itunes:owner>
<itunes:image href="<?php echo $banner_url; ?>" />
<itunes:explicit>no</itunes:explicit>
<itunes:category text="Religion &amp; Spirituality">
<itunes:category text="Christianity" />
</itunes:category>
<?php foreach ($episodes as $episode):
$audio_url = $base_url . "/assets/uploads/audio/" . $episode['audio_file'];
$file_path = __DIR__ . "/assets/uploads/audio/" . $episode['audio_file'];
$file_size = file_exists($file_path) ? filesize($file_path) : 0;
?>
<item>
<title><?php echo htmlspecialchars($episode['title']); ?></title>
<itunes:author><?php echo htmlspecialchars($site_title); ?></itunes:author>
<itunes:summary><?php echo htmlspecialchars(strip_tags($episode['description'])); ?></itunes:summary>
<description><![CDATA[<?php echo nl2br(htmlspecialchars($episode['description'])); ?>]]></description>
<itunes:image href="<?php echo $banner_url; ?>" />
<enclosure url="<?php echo $audio_url; ?>" length="<?php echo $file_size; ?>" type="audio/mpeg" />
<guid isPermaLink="false"><?php echo $audio_url; ?></guid>
<pubDate><?php echo date(DATE_RSS, strtotime($episode['release_date'])); ?></pubDate>
<itunes:explicit>no</itunes:explicit>
</item>
<?php endforeach; ?>
</channel>
</rss>