Mercurial > SimpleWebPresenter
annotate sitemap.php @ 30:647b72603b7d
Script to autogenerate a sitemap.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Sun, 30 Sep 2012 03:39:32 +0200 |
| parents | |
| children | f37be50a70cf |
| rev | line source |
|---|---|
|
30
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 <? |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 header('Content-type: application/xml'); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
3 print '<?xml version="1.0" encoding="UTF-8"?>'; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 print "\n"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 ?> |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
6 <urlset |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
7 xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
8 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
10 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
11 <? |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
12 include_once('php/Options.inc'); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
13 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
14 function startswith($haystack, $needle) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
15 return strpos($haystack, $needle) === 0; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
16 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
17 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
18 function endsWith($haystack, $needle) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
19 $l = strlen($haystack) - strlen($needle); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
20 return strrpos($haystack, $needle) === $l; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
21 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
22 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
23 function getHeaders($url) |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
24 { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
25 $response = http_head($url, array("timeout"=>1), $info); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
26 $headers = array(); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
27 $str = explode("\n", $response); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
28 foreach($str as $kv) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
29 $p = strpos($kv, ":"); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
30 if ($p) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
31 $key = substr($kv, 0, $p); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 $value = trim(substr($kv, $p + 1)); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
33 $headers[$key] = $value; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
34 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
35 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
36 return $headers; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
37 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
38 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
39 function opttostring($opts) |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
40 { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
41 $str = ''; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
42 foreach (array_keys($opts) as $key) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
43 $value = $opts[$key]; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
44 if ($str) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
45 $str .= "&${key}=${value}"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
46 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
47 else { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
48 $str = "?${key}=${value}"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
49 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
50 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
51 return $str; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
52 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
53 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
54 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
55 $master = new DOMDocument(); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
56 $master->load("master.xml"); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
57 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
58 $options = new Options($master); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
59 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
60 $base = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
61 $base = substr($base, 0, strrpos($base, '/')); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
62 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
63 $acceptedLanguages = $options->getAcceptedLanguages(); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
64 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
65 foreach($options->getAcceptedLanguages() as $lang) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
66 if ($handle = opendir("${lang}")) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
67 while (false !== ($entry = readdir($handle))) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
68 if (endsWith($entry, '.xml')) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
69 $fentry = "${lang}/${entry}"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
70 $doc = new DOMDocument(); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
71 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
72 if (file_exists($fentry)) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
73 $doc->load($fentry); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
74 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
75 $opts = array(); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
76 if ($acceptedLanguages->length > 1) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
77 $opts['lang'] = $lang; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
78 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
79 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
80 $toplevel = $doc->getElementsByTagName("toplevel"); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
81 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
82 if($toplevel->length) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
83 $name = substr($entry, 0, -4); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
84 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
85 if ($name != $options->getInputDefault('name')) { |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
86 $opts['name'] = $name; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
87 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
88 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
89 $optstring = opttostring($opts); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
90 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
91 $location = "${base}/${optstring}"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
92 $headers = getHeaders($location); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
93 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
94 $location = htmlentities($location); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
95 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
96 $lastmod = $headers["Last-Modified"]; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
97 $lastmod = strtotime($lastmod); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
98 $lastmod = date(DateTime::W3C, $lastmod); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
99 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
100 print "<url>\n"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
101 print "<loc>${location}</loc>\n"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
102 print "<lastmod>${lastmod}</lastmod>\n"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
103 print "</url>\n"; |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
104 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
105 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
106 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
107 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
108 closedir($handle); |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
109 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
110 } |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
111 |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
112 ?> |
|
647b72603b7d
Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
113 </urlset> |
