Mercurial > SimpleWebPresenter
annotate Sitemap.inc @ 110:6f5939bf53c3
Set flag cache expiry time to today + 30 days
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Tue, 08 Mar 2016 00:43:48 +0100 |
| parents | a5c37e845d7c |
| children | 4854db07f14f |
| rev | line source |
|---|---|
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 <? |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 include_once 'ScriptIncludeCache.inc'; |
|
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__); |
|
93
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
7 $cache->includeOnce('Http.inc', $baseDir); |
|
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
8 $cache->includeOnce('Page.inc', $baseDir); |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 $cache->includeOnce('common-functions.inc', $baseDir); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
10 $cache->includeOnce('CacheTimeCheck.inc', $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 |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
74
diff
changeset
|
72 function generateContent() { |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
73 /// The final output variable |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
74 $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
|
75 $out .= "\n"; |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
76 $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
|
77 $out .= "\n"; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
78 $out .= '<urlset |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
79 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
|
80 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
|
81 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
|
82 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
|
83 '; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
84 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
85 $base = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; |
|
96
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
86 $l = strrpos($base, '/'); |
|
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
87 if ($l) |
|
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
88 $base = substr($base, 0, $l); |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
89 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
90 $acceptedLanguages = $this->options->getAcceptedLanguages(); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
91 |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
92 $urls = array(); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
93 |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
94 foreach($this->options->getAcceptedLanguages() as $lang) { |
| 95 | 95 if ($handle = opendir(basePath() . "/${lang}")) { |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
96 while (false !== ($entry = readdir($handle))) { |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
97 if (endsWith($entry, '.xml')) { |
| 95 | 98 $fentry = basepath() . "/${lang}/${entry}"; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
99 $doc = new DOMDocument(); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
100 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
101 if (file_exists($fentry)) { |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
102 $doc->load($fentry); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
103 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
104 $opts = array(); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
105 if (count($acceptedLanguages) > 1) { |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
106 $opts['lang'] = $lang; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
107 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
108 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
109 $toplevel = $doc->getElementsByTagName("toplevel"); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
110 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
111 if($toplevel->length) { |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
112 $name = substr($entry, 0, -4); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
113 |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
114 if ($name != $this->options->getInputDefault('name')) { |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
115 $opts['name'] = $name; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
116 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
117 |
|
96
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
118 $optstring = genUrl($opts, array(), array('lang', 'name')); |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
119 |
|
96
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
120 $location = "${base}${optstring}/"; |
|
c7de7a4641d7
Generate humanreadable urls for sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
95
diff
changeset
|
121 |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
122 array_push($urls, $location); |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
123 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
124 } |
|
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 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
127 closedir($handle); |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
128 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
129 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
130 |
| 104 | 131 usort($urls, "cmp_length_lex"); |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
132 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
133 foreach($urls as $location) { |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
134 $headers = Http::getHeaders($location, 5); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
135 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
136 $location = htmlentities($location); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
137 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
138 $lastmod = $headers["Last-Modified"]; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
139 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
140 $n = StatusCodes::codeFromHeader($headers['']); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
141 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
142 if ($n == StatusCodes::HTTP_OK) { |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
143 $lastmod = strtotime($lastmod); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
144 if ($lastmod > $this->lastmod) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
145 $this->lastmod = $lastmod; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
146 } |
|
98
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
147 $lastmod = date(DateTime::W3C, $lastmod); |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
148 |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
149 $out .= "<url>\n"; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
150 $out .= "<loc>${location}</loc>\n"; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
151 $out .= "<lastmod>${lastmod}</lastmod>\n"; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
152 $out .= "</url>\n"; |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
153 } |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
154 } |
|
f2d52fed708c
Split retrieval and production of urls.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
96
diff
changeset
|
155 |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
156 $out .= '</urlset>'; |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
157 |
|
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
|
158 $res = new PageContent($out); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
159 $cache=new SimpleCache($this->lastmod); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
160 $cache->setMaxAge(86400); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
98
diff
changeset
|
161 $this->setCache($cache); |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
162 $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
|
163 return $res; |
|
73
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
164 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
165 } |
|
947d53f95ccd
Refactor Sitemap into a separate class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
166 ?> |
