annotate sitemap.php @ 67:37dee99c1f8c

Improve documentation
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Thu, 11 Oct 2012 22:30:07 +0200
parents b7efe2ecbc11
children dd4ddedca4c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
1 <?
51
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 44
diff changeset
2 /**
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 44
diff changeset
3 * @file
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 44
diff changeset
4 * Generates a sitemap
67
37dee99c1f8c Improve documentation
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
5 * @todo reuse functionality from InputParser
51
2cfea6e84694 Documentation update.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 44
diff changeset
6 */
67
37dee99c1f8c Improve documentation
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
7
37dee99c1f8c Improve documentation
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
8 /// The final output variable
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
9 $out = '<?xml version="1.0" encoding="UTF-8"?>';
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
10 $out .= "\n";
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
11 $out .= '<urlset
30
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
12 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
13 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
14 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
15 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
16 ';
44
79f708a48a7c Added a constants include.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
17 include_once 'CacheTimeCheck.inc';
30
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
18
67
37dee99c1f8c Improve documentation
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
19 /// @cond
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
20 $baseDir = dirname(__FILE__);
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
21 $cache = CacheTimeCheck::instance(__FILE__);
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
22 $cache->includeOnce('common-functions.inc', $baseDir);
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
23
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
24
44
79f708a48a7c Added a constants include.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
25 $cache = CacheTimeCheck::instance(__FILE__);
79f708a48a7c Added a constants include.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 31
diff changeset
26 $cache->includeOnce('Options.inc', dirname(__FILE__));
67
37dee99c1f8c Improve documentation
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 62
diff changeset
27 /// @endcond
30
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
28
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
29 $master = new DOMDocument();
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
30 $master->load("master.xml");
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
31
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
32 $options = new Options($master);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
33
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
34 $base = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
35 $base = substr($base, 0, strrpos($base, '/'));
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
36
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
37 $acceptedLanguages = $options->getAcceptedLanguages();
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 foreach($options->getAcceptedLanguages() as $lang) {
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
40 if ($handle = opendir("${lang}")) {
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
41 while (false !== ($entry = readdir($handle))) {
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
42 if (endsWith($entry, '.xml')) {
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
43 $fentry = "${lang}/${entry}";
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
44 $doc = new DOMDocument();
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
45
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
46 if (file_exists($fentry)) {
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
47 $doc->load($fentry);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
48
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
49 $opts = array();
31
f37be50a70cf Fix for more than 1 language.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 30
diff changeset
50 if (count($acceptedLanguages) > 1) {
30
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
51 $opts['lang'] = $lang;
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 $toplevel = $doc->getElementsByTagName("toplevel");
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
55
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
56 if($toplevel->length) {
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
57 $name = substr($entry, 0, -4);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
58
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
59 if ($name != $options->getInputDefault('name')) {
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
60 $opts['name'] = $name;
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
61 }
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 $optstring = opttostring($opts);
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 $location = "${base}/${optstring}";
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
66 $headers = getHeaders($location);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
67
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
68 $location = htmlentities($location);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
69
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
70 $lastmod = $headers["Last-Modified"];
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
71 $lastmod = strtotime($lastmod);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
72 $lastmod = date(DateTime::W3C, $lastmod);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
73
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
74 $out .= "<url>\n";
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
75 $out .= "<loc>${location}</loc>\n";
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
76 $out .= "<lastmod>${lastmod}</lastmod>\n";
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
77 $out .= "</url>\n";
30
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 }
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 closedir($handle);
647b72603b7d Script to autogenerate a sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
83 }
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
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
86 $out .= '</urlset>';
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
87
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
88 header('Content-type: application/xml');
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 44
diff changeset
89 print $out;
62
b7efe2ecbc11 Wrapped everything in inputParser in a class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 53
diff changeset
90 ?>