| 
							- <?php
 - 
 - namespace dokuwiki\Action;
 - 
 - use dokuwiki\Action\Exception\FatalException;
 - use dokuwiki\Sitemap\Mapper;
 - use dokuwiki\Utf8\PhpString;
 - 
 - /**
 -  * 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('Sitemap generation is disabled', 404);
 -         }
 - 
 -         $sitemap = Mapper::getFilePath();
 -         if (Mapper::sitemapIsCompressed()) {
 -             $mime = 'application/x-gzip';
 -         } else {
 -             $mime = 'application/xml; charset=utf-8';
 -         }
 - 
 -         // Check if sitemap file exists, otherwise create it
 -         if (!is_readable($sitemap)) {
 -             Mapper::generate();
 -         }
 - 
 -         if (is_readable($sitemap)) {
 -             // Send headers
 -             header('Content-Type: ' . $mime);
 -             header('Content-Disposition: attachment; filename=' . PhpString::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('Could not read the sitemap file - bad permissions?');
 -     }
 - }
 
 
  |