Mercurial > SimpleWebPresenter
annotate Sitemap.inc.php @ 134:b6b4a58c7625
Using .inc.php rather than just .inc for include files.
| author | Tom Fredrik Blenning <bfg@bfgconsult.no> |
|---|---|
| date | Sun, 22 Jan 2023 19:22:00 +0100 |
| parents | Sitemap.inc@00255ca89459 |
| children | 60bc8f62384d |
| rev | line source |
|---|---|
|
121
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
1 <?php |
|
134
b6b4a58c7625
Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
133
diff
changeset
|
2 include_once 'ScriptIncludeCache.inc.php'; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
3 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 /// @cond |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 $baseDir = dirname(__FILE__); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
6 $cache = ScriptIncludeCache::instance(__FILE__); |
|
134
b6b4a58c7625
Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
133
diff
changeset
|
7 $cache->includeOnce('Http.inc.php', $baseDir); |
|
b6b4a58c7625
Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
133
diff
changeset
|
8 $cache->includeOnce('Page.inc.php', $baseDir); |
|
b6b4a58c7625
Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
133
diff
changeset
|
9 $cache->includeOnce('common-functions.inc.php', $baseDir); |
|
b6b4a58c7625
Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
133
diff
changeset
|
10 $cache->includeOnce('CacheTimeCheck.inc.php', $baseDir); |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
11 /// @endcond |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
12 |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
13 class SimpleCache extends Cache { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
14 private $time; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
15 |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
16 function __construct($time = 0) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
17 $this->time = $time; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
18 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
19 function getNewest() { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
20 return $this->time; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
21 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
22 }; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
23 |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
24 function cmp_length_lex($a, $b) |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
25 { |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
26 if ($a == $b) { |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
27 return 0; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
28 } |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
29 $la = strlen($a); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
30 $lb = strlen($b); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
31 if ($la == $lb) { |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
32 return ($la < $lb) ? -1 : 1; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
33 } |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
34 return ($a < $b) ? -1 : 1; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
35 } |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
36 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
37 |
|
74
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
38 /** |
|
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
39 * Functionality for generating a sitemap |
|
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
40 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
74
diff
changeset
|
41 class Sitemap extends Page |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
42 { |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
43 private $master; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
44 private $options; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
45 |
|
74
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
46 /** |
|
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
47 * Constructs a sitemap object from a master document |
|
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
48 * |
|
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
49 * @param $path location of master document |
|
1d5166aba2c5
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
73
diff
changeset
|
50 */ |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
51 function __construct($path) { |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
52 $this->master = new DOMDocument(); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
53 $this->master->load($path); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
54 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
55 $this->options = new Options($this->master); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
56 $this->lastmod=0; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
57 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
58 |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
74
diff
changeset
|
59 function cacheCheck() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
74
diff
changeset
|
60 { |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
61 if ($this->lastmod == 0) |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
62 return Cacheable::UNDETERMINED; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
63 else |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
64 return Cacheable::YES; |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
74
diff
changeset
|
65 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
74
diff
changeset
|
66 |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
67 function mayValidate() |
|
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
68 { |
|
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
69 return false; |
|
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
70 } |
|
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
71 |
|
133
00255ca89459
Generate URLs with correct protocol based on forwarded proto.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
131
diff
changeset
|
72 private function processDir($dir, $lang, $acceptedLanguages, $baseurl) { |
|
112
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
73 $urls = array(); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
74 |
|
124
6766250a0baa
Support for parameters as directory structure.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
122
diff
changeset
|
75 $base=basePath(); |
|
6766250a0baa
Support for parameters as directory structure.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
122
diff
changeset
|
76 $base=$_SERVER['DOCUMENT_ROOT']; |
|
6766250a0baa
Support for parameters as directory structure.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
122
diff
changeset
|
77 |
|
6766250a0baa
Support for parameters as directory structure.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
122
diff
changeset
|
78 if ($handle = opendir($base . "/${dir}")) { |
|
112
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
79 while (false !== ($entry = readdir($handle))) { |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
80 if (endsWith($entry, '.xml')) { |
|
124
6766250a0baa
Support for parameters as directory structure.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
122
diff
changeset
|
81 $fentry = $base . "/${dir}/${entry}"; |
|
112
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
82 $doc = new DOMDocument(); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
83 |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
84 if (file_exists($fentry)) { |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
85 $doc->load($fentry); |
|
113
d547cae319f0
Fix missing closing XML tag.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
112
diff
changeset
|
86 |
|
112
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
87 $opts = array(); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
88 if (count($acceptedLanguages) > 1) { |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
89 $opts['lang'] = $lang; |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
90 } |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
91 |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
92 $toplevel = $doc->getElementsByTagName("toplevel"); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
93 |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
94 if($toplevel->length) { |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
95 $name = substr($entry, 0, -4); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
96 |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
97 if ($name != $this->options->getInputDefault('name')) { |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
98 $opts['name'] = $name; |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
99 } |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
100 |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
101 $optstring = genUrl($opts, array(), array('lang', 'name')); |
|
131
6b882fb6ea46
Do not add '/' at end if we have encoded all params.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
124
diff
changeset
|
102 $location = "${baseurl}${optstring}"; |
|
112
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
103 array_push($urls, $location); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
104 } |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
105 } |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
106 } |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
107 } |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
108 closedir($handle); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
109 } |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
110 return $urls; |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
111 } |
|
113
d547cae319f0
Fix missing closing XML tag.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
112
diff
changeset
|
112 |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
74
diff
changeset
|
113 function generateContent() { |
|
112
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
114 |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
115 /// The final output variable |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
116 $out = '<?xml version="1.0" encoding="UTF-8"?>'; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
117 $out .= "\n"; |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
118 $out .= '<?xml-stylesheet type="text/xsl" href="/css/gss.xsl"?>'; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
119 $out .= "\n"; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
120 $out .= '<urlset |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
121 xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
122 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
123 xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
124 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
125 '; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
126 |
|
133
00255ca89459
Generate URLs with correct protocol based on forwarded proto.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
131
diff
changeset
|
127 $proto= $_SERVER["REQUEST_SCHEME"]; |
|
00255ca89459
Generate URLs with correct protocol based on forwarded proto.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
131
diff
changeset
|
128 if (array_key_exists('HTTP_X_FORWARDED_PROTO', $_SERVER)) { |
|
00255ca89459
Generate URLs with correct protocol based on forwarded proto.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
131
diff
changeset
|
129 $proto=$_SERVER['HTTP_X_FORWARDED_PROTO']; |
|
00255ca89459
Generate URLs with correct protocol based on forwarded proto.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
131
diff
changeset
|
130 } |
|
00255ca89459
Generate URLs with correct protocol based on forwarded proto.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
131
diff
changeset
|
131 $base = $proto ."://". $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; |
|
96
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
132 $l = strrpos($base, '/'); |
|
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
133 if ($l) |
|
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
134 $base = substr($base, 0, $l); |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
135 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
136 $acceptedLanguages = $this->options->getAcceptedLanguages(); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
137 |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
138 $urls = array(); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
139 |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
140 foreach($this->options->getAcceptedLanguages() as $lang) { |
|
112
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
141 $urls=array_merge($urls, |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
142 $this->processDir($lang, $lang, |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
143 $acceptedLanguages, $base) |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
144 ); |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
145 $urls=array_merge($urls, |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
146 $this->processDir("common", $lang, |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
147 $acceptedLanguages, $base) |
|
4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
104
diff
changeset
|
148 ); |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
149 } |
|
113
d547cae319f0
Fix missing closing XML tag.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
112
diff
changeset
|
150 |
| 104 | 151 usort($urls, "cmp_length_lex"); |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
152 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
153 foreach($urls as $location) { |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
154 $headers = Http::getHeaders($location, 5); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
155 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
156 $location = htmlentities($location); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
157 |
|
121
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
158 if (array_key_exists('Last-Modified', $headers)) { |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
159 $lastmod = $headers["Last-Modified"]; |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
160 } |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
161 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
162 $n = StatusCodes::codeFromHeader($headers['']); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
163 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
164 if ($n == StatusCodes::HTTP_OK) { |
|
121
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
165 if (isset($lastmod)) { |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
166 |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
167 $lastmod = strtotime($lastmod); |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
168 if ($lastmod > $this->lastmod) { |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
169 $this->lastmod = $lastmod; |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
170 } |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
171 $lastmod = date(DateTime::W3C, $lastmod); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
172 } |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
173 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
174 $out .= "<url>\n"; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
175 $out .= "<loc>${location}</loc>\n"; |
|
121
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
176 if (isset($lastmod)) { |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
177 $out .= "<lastmod>${lastmod}</lastmod>\n"; |
|
e3f97bbf12f3
Better checking for uncommon conditions.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
114
diff
changeset
|
178 } |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
179 $out .= "</url>\n"; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
180 } |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
181 } |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
182 |
|
114
f498ea087d67
Revert wrong xml closing tag.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
113
diff
changeset
|
183 $out .= "</urlset>"; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
184 |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
185 $res = new PageContent($out); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
186 $cache=new SimpleCache($this->lastmod); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
187 $cache->setMaxAge(86400); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
188 $this->setCache($cache); |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
189 $res->setHeader('Content-type', 'application/xml'); |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
190 return $res; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
191 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
192 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
193 ?> |
