/**
* Notes:
*
* - *All* OPDS feeds must contain a `rel="http://opds-spec.org/crawlable"` link pointing to the `/feeds/opds/all` feed.
* - The `` element is required to note this as a "Complete Acquisition Feeds"; see .
*/
/**
* @var string $id
* @var string $url
* @var string $parentUrl
* @var string $title
* @var ?string $subtitle
* @var DateTimeImmutable $updated
* @var array $entries
*/
$isCrawlable = $isCrawlable ?? false;
$subtitle = $subtitle ?? null;
// Note that the XSL stylesheet gets stripped during `se clean` when we generate the feed.
// `se clean` will also start adding empty namespaces everywhere if we include the stylesheet declaration first.
// We have to add it programmatically when saving the feed file.
print("\n");
?>
xmlns:fh="http://purl.org/syndication/history/1.0" } ?>>
= SITE_URL . Formatter::EscapeXml($id) ?>
= Formatter::EscapeXml($title) ?>
if($subtitle !== null){ ?>
= Formatter::EscapeXml($subtitle) ?>
} ?>
= SITE_URL ?>/images/logo.png
= $updated->format(Enums\DateTimeFormat::Iso->value) ?>
if($isCrawlable){ ?>
} ?>
Standard Ebooks
= SITE_URL ?>
foreach($entries as $entry){ ?>
= Template::OpdsAcquisitionEntry(['entry' => $entry]) ?>
} ?>