Failed Conditions
Push — stable ( 017e16...b83837 )
by
unknown
07:54 queued 02:55
created

Sitemap   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
dl 0
loc 52
rs 10
c 0
b 0
f 0
wmc 7
lcom 0
cbo 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A minimumPermission() 0 3 1
B preProcess() 0 36 6
1
<?php
2
3
namespace dokuwiki\Action;
4
5
use dokuwiki\Action\Exception\FatalException;
6
7
/**
8
 * Class Sitemap
9
 *
10
 * Generate an XML sitemap for search engines. Do not confuse with Index
11
 *
12
 * @package dokuwiki\Action
13
 */
14
class Sitemap extends AbstractAction {
15
16
    /** @inheritdoc */
17
    public function minimumPermission() {
18
        return AUTH_NONE;
19
    }
20
21
    /**
22
     * Handle sitemap delivery
23
     *
24
     * @author Michael Hamann <[email protected]>
25
     * @throws FatalException
26
     * @inheritdoc
27
     */
28
    public function preProcess() {
29
        global $conf;
30
31
        if($conf['sitemap'] < 1 || !is_numeric($conf['sitemap'])) {
32
            throw new FatalException('Sitemap generation is disabled', 404);
33
        }
34
35
        $sitemap = Sitemap::getFilePath();
0 ignored issues
show
Bug introduced by
The method getFilePath() does not seem to exist on object<dokuwiki\Action\Sitemap>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
36
        if(Sitemap::sitemapIsCompressed()) {
0 ignored issues
show
Bug introduced by
The method sitemapIsCompressed() does not seem to exist on object<dokuwiki\Action\Sitemap>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
37
            $mime = 'application/x-gzip';
38
        } else {
39
            $mime = 'application/xml; charset=utf-8';
40
        }
41
42
        // Check if sitemap file exists, otherwise create it
43
        if(!is_readable($sitemap)) {
44
            Sitemap::generate();
0 ignored issues
show
Bug introduced by
The method generate() does not seem to exist on object<dokuwiki\Action\Sitemap>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
45
        }
46
47
        if(is_readable($sitemap)) {
48
            // Send headers
49
            header('Content-Type: ' . $mime);
50
            header('Content-Disposition: attachment; filename=' . \dokuwiki\Utf8\PhpString::basename($sitemap));
51
52
            http_conditionalRequest(filemtime($sitemap));
53
54
            // Send file
55
            //use x-sendfile header to pass the delivery to compatible webservers
56
            http_sendfile($sitemap);
57
58
            readfile($sitemap);
59
            exit;
60
        }
61
62
        throw new FatalException('Could not read the sitemap file - bad permissions?');
63
    }
64
65
}
66