diff options
author | ahriman <ahriman@falte.red> | 2018-12-03 19:22:25 -0500 |
---|---|---|
committer | ahriman <ahriman@falte.red> | 2018-12-03 19:22:25 -0500 |
commit | 0ae8cbf5c0b1a198b963490985b7738392ebcb97 (patch) | |
tree | b2c77ae72c6b717e2b97492065196ac5ffb2d9e2 /wiki/inc/Action/Sitemap.php | |
parent | f57f6cc5a2d159f90168d292437dc4bd8cd7f934 (diff) | |
download | site-0ae8cbf5c0b1a198b963490985b7738392ebcb97.tar.gz |
installed dokuwiki, added to navbar, updated news
Diffstat (limited to 'wiki/inc/Action/Sitemap.php')
-rw-r--r-- | wiki/inc/Action/Sitemap.php | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/wiki/inc/Action/Sitemap.php b/wiki/inc/Action/Sitemap.php new file mode 100644 index 0000000..025c515 --- /dev/null +++ b/wiki/inc/Action/Sitemap.php @@ -0,0 +1,65 @@ +<?php + +namespace dokuwiki\Action; + +use dokuwiki\Action\Exception\FatalException; + +/** + * Class Sitemap + * + * Generate an XML sitemap for search engines. Do not confuse with Index + * + * @package dokuwiki\Action + */ +class Sitemap extends AbstractAction { + + /** @inheritdoc */ + public function minimumPermission() { + return AUTH_NONE; + } + + /** + * Handle sitemap delivery + * + * @author Michael Hamann <michael@content-space.de> + * @throws FatalException + * @inheritdoc + */ + public function preProcess() { + global $conf; + + if($conf['sitemap'] < 1 || !is_numeric($conf['sitemap'])) { + throw new FatalException(404, 'Sitemap generation is disabled'); + } + + $sitemap = \Sitemapper::getFilePath(); + if(\Sitemapper::sitemapIsCompressed()) { + $mime = 'application/x-gzip'; + } else { + $mime = 'application/xml; charset=utf-8'; + } + + // Check if sitemap file exists, otherwise create it + if(!is_readable($sitemap)) { + \Sitemapper::generate(); + } + + if(is_readable($sitemap)) { + // Send headers + header('Content-Type: ' . $mime); + header('Content-Disposition: attachment; filename=' . utf8_basename($sitemap)); + + http_conditionalRequest(filemtime($sitemap)); + + // Send file + //use x-sendfile header to pass the delivery to compatible webservers + http_sendfile($sitemap); + + readfile($sitemap); + exit; + } + + throw new FatalException(500, 'Could not read the sitemap file - bad permissions?'); + } + +} |