GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Pull Request — master (#1139)
by
unknown
12:39
created

sitemap.xml.php ➔ buildSitemapNode()   A

Complexity

Conditions 4
Paths 8

Size

Total Lines 18
Code Lines 13

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 4
eloc 13
nc 8
nop 4
dl 0
loc 18
rs 9.2
1
<?php
2
/**
3
 * The dynamic Google Sitemap builder.
4
 *
5
 * http://[...]/sitemap.xml.php
6
 * http://[...]/sitemap.xml.php?gz=1
7
 * http://[...]/sitemap.xml
8
 * http://[...]/sitemap.gz
9
 * http://[...]/sitemap.xml.gz
10
 *
11
 * The Google Sitemap protocol is described here:
12
 * http://www.google.com/webmasters/sitemaps/docs/en/protocol.html
13
 *
14
 * PHP Version 5.4
15
 *
16
 * This Source Code Form is subject to the terms of the Mozilla Public License,
17
 * v. 2.0. If a copy of the MPL was not distributed with this file, You can
18
 * obtain one at http://mozilla.org/MPL/2.0/.
19
 *
20
 * @category  phpMyFAQ
21
 * @package   SEO
22
 * @author    Matteo Scaramuccia <[email protected]>
23
 * @copyright 2006-2014 phpMyFAQ Team
24
 * @license   http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
25
 * @link      http://www.phpmyfaq.de
26
 * @since     2006-06-26
27
 */
28
29
use Symfony\Component\HttpFoundation\Response;
30
31
define('PMF_SITEMAP_GOOGLE_CHANGEFREQ_ALWAYS', 'always');
32
define('PMF_SITEMAP_GOOGLE_CHANGEFREQ_HOURLY', 'hourly');
33
define('PMF_SITEMAP_GOOGLE_CHANGEFREQ_DAILY', 'daily');
34
define('PMF_SITEMAP_GOOGLE_CHANGEFREQ_WEEKLY', 'weekly');
35
define('PMF_SITEMAP_GOOGLE_CHANGEFREQ_MONTHLY', 'monthly');
36
define('PMF_SITEMAP_GOOGLE_CHANGEFREQ_YEARLY', 'yearly');
37
define('PMF_SITEMAP_GOOGLE_CHANGEFREQ_NEVER', 'never');
38
define('PMF_SITEMAP_GOOGLE_MAX_URL_LENGTH', 2048);
39
define('PMF_SITEMAP_GOOGLE_MAX_URLS', 50000);
40
define('PMF_SITEMAP_GOOGLE_MAX_FILE_LENGTH', 10485760); // 10MB
41
define('PMF_SITEMAP_GOOGLE_PRIORITY_MIN', '0.0');
42
define('PMF_SITEMAP_GOOGLE_PRIORITY_MAX', '1.0');
43
define('PMF_SITEMAP_GOOGLE_PRIORITY_DEFAULT', '0.5');
44
45
46
define('PMF_SITEMAP_GOOGLE_GET_GZIP', 'gz');
47
define('PMF_SITEMAP_GOOGLE_GET_INDEX', 'idx');
48
define('PMF_SITEMAP_GOOGLE_FILENAME', 'sitemap.xml');
49
define('PMF_SITEMAP_GOOGLE_FILENAME_GZ', 'sitemap.xml.gz');
50
define('PMF_SITEMAP_GOOGLE_INDEX_FILENAME', 'sitemap_index.xml');
51
52
define('PMF_ROOT_DIR', __DIR__);
53
define('IS_VALID_PHPMYFAQ', null);
54
55
//
56
// Bootstrapping
57
//
58
require 'inc/Bootstrap.php';
59
60
//
61
// Initalizing static string wrapper
62
//
63
PMF_String::init('en');
64
65
// {{{ Functions
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
66
function buildSitemapNode($location, $lastmod = null, $changeFreq = null, $priority = null)
67
{
68
    if (!isset($lastmod)) {
69
        $lastmod = PMF_Date::createIsoDate($_SERVER['REQUEST_TIME'], DATE_W3C, false);
70
    }
71
    if (!isset($changeFreq)) {
72
        $changeFreq = PMF_SITEMAP_GOOGLE_CHANGEFREQ_DAILY;
73
    }
74
    $node =
75
         '<url>'
76
        .'<loc>'.PMF_String::htmlspecialchars($location).'</loc>'
77
        .'<lastmod>'.$lastmod.'</lastmod>'
78
        .'<changefreq>'.$changeFreq.'</changefreq>'
79
        .(isset($priority) ? '<priority>'.$priority.'</priority>' : '')
80
        .'</url>';
81
82
    return $node;
83
}
84
85
//
86
// Future improvements
87
// WHEN a User PMF Sitemap will be:
88
//   a. bigger than 10MB (!)
89
//   b. w/ more than 50K URLs (!)
90
// we'll manage this issue using a Sitemap Index Files produced by this PHP code
91
// including Sitemap URLs always produced by this same PHP code (see PMF_SITEMAP_GOOGLE_GET_INDEX)
92
//
93
94
$oFaq = new PMF_Faq($faqConfig);
95
// Load the faq
96
$items = $oFaq->getTopTenData(PMF_SITEMAP_GOOGLE_MAX_URLS - 1);
97
$visitsMax = 0;
98
$visitMin  = 0;
99
if (count($items) > 0) {
100
    $visitsMax = $items[0]['visits'];
101
    $visitMin  = $items[count($items)-1]['visits'];
102
}
103
104
// Sitemap header
105
$sitemap =
106
     '<?xml version="1.0" encoding="UTF-8"?>'
107
    .'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"'
108
    .' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
109
    .' xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84'
110
    .' http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">';
111
// 1st entry: the faq server itself
112
$sitemap .= buildSitemapNode(
113
    $faqConfig->get('main.referenceURL'),
114
    PMF_Date::createIsoDate($_SERVER['REQUEST_TIME'], DATE_W3C, false),
115
    PMF_SITEMAP_GOOGLE_CHANGEFREQ_DAILY,
116
    PMF_SITEMAP_GOOGLE_PRIORITY_MAX
117
);
118
           
119
// nth entry: each faq
120
foreach ($items as $item) {
121
    $priority = PMF_SITEMAP_GOOGLE_PRIORITY_DEFAULT;
122
    if (($visitsMax - $visitMin) > 0) {
123
        $priority = sprintf('%.1f', PMF_SITEMAP_GOOGLE_PRIORITY_DEFAULT * (1 + (($item['visits'] - $visitMin)/($visitsMax - $visitMin))));
124
    }
125
    // a. We use plain PMF urls w/o any SEO schema
126
    $link = str_replace($_SERVER['SCRIPT_NAME'], '/index.php', $item['url']);
127
    // b. We use SEO PMF urls
128 View Code Duplication
    if (PMF_SITEMAP_GOOGLE_USE_SEO) {
129
        if (isset($item['thema'])) {
130
            $oL = new PMF_Link($link, $faqConfig);
131
            $oL->itemTitle = $item['thema'];
132
            $link = $oL->toString();
133
        }
134
    }
135
    $sitemap .= buildSitemapNode(
136
        $faqConfig->get('main.referenceURL').$link,
137
        PMF_Date::createIsoDate($item['date'], DATE_W3C),
138
        // @todo: manage changefreq node with the info provided by faqchanges,
139
        // if this will not add a big load to the server (+1 query/faq)
140
        PMF_SITEMAP_GOOGLE_CHANGEFREQ_DAILY,
141
        $priority
142
    );
143
}
144
145
$sitemap .= '</urlset>';
146
147
$response = new Response;
148
149
$getgezip = PMF_Filter::filterInput(INPUT_GET, PMF_SITEMAP_GOOGLE_GET_GZIP, FILTER_VALIDATE_INT);
150
if (!is_null($getgezip) && (1 == $getgezip)) {
151
    if (function_exists('gzencode')) {
152
        $sitemapGz = gzencode($sitemap);
153
        $response->headers->set('Content-Type', 'application/x-gzip');
154
        $response->headers->set('Content-Disposition', 'attachment; filename="' . PMF_SITEMAP_GOOGLE_FILENAME_GZ . '"');
155
        $response->headers->set('Content-Length', strlen($sitemapGz));
156
        $response->setContent($sitemapGz);
157
    } else {
158
        $response->setStatusCode(404);
159
    }
160
} else {
161
    $response->headers->set('Content-Type', 'text/xml');
162
    $response->headers->set('Content-Disposition', 'inline; filename="' . PMF_SITEMAP_GOOGLE_FILENAME . '"');
163
    $response->headers->set('Content-Length', PMF_String::strlen($sitemap));
164
    $response->setContent($sitemap);
165
}
166
167
$response->send();
168
169
$faqConfig->getDb()->close();
170