/* 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 https://specs.opds.io/opds-1.2#25-complete-acquisition-feeds
*/
$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('Y-m-d\TH:i:s\Z') ?>
if($isCrawlable){ ?> } ?>
Standard Ebooks= SITE_URL ?>
foreach($entries as $entry){ ?>
= Template::OpdsAcquisitionEntry(['entry' => $entry]) ?>
} ?>