<?php
// -------------------------------------------
// kirby template FOR all
// Title:  xmlsitemap
// deltas: none - base template

// better sitemap for sites containing onepagers:
// exclude pages from sitemap by intended Template (content file name)
// so You can exclude the templates, that are only for blueprints or for selecting snippets.

// copyright: Jannik Beyerstedt | http://jannikbeyerstedt.de | code@jannikbeyerstedt.de
// license: http://www.gnu.org/licenses/gpl-3.0.txt GPLv3 License

// usage:
// see the readme.md contained in the repository

// version: 1.2.1 (14.10.2016)
// changelog:
// v1.1.0: set ignore arrays in config
// v1.2.0: exclude invisible pages
// v1.2.1: new option to switch exclusion of invisible pages at root level
// -------------------------------------------

$ignore         = c::get('smap_ignoreSite');
$ignoreTemplate = c::get('smap_ignoreTemplate');
$ignoreShowInvisibleAtRoot = c::get('smap_showHiddenPagesAtRootLevel', false);

// send the right header
header('Content-type: text/xml; charset="utf-8"');

// echo the doctype
echo '<?xml version="1.0" encoding="utf-8"?>';

?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php foreach($pages->index() as $p):
  if($ignore !== null && in_array($p->uri(), $ignore)) continue;
  if($ignoreTemplate !== null && in_array($p->intendedTemplate(), $ignoreTemplate) ) continue;
  if($ignoreShowInvisibleAtRoot) {
    // only ignore invisible pages, which are deeper than root level
    if($p->isUnlisted() && $p->depth() > 1) continue;
  } else {
    // ignore all invisible pages
    if($p->isUnlisted() && $p->isHomePage() === false) continue;
  }
?>
  <url>
    <loc><?php echo html($p->url()) ?></loc>
    <lastmod><?php echo $p->modified('c') ?></lastmod>
    <priority><?php echo ($p->isHomePage()) ? 1 : number_format(0.5/$p->depth(), 1) ?></priority>
  </url>
<?php endforeach ?>
</urlset>