Mercurial > SimpleWebPresenter
annotate Page.inc.php @ 136:60bc8f62384d default tip
Use internal URL if available to generate Sitemap.
| author | Tom Fredrik Blenning <bfg@bfgconsult.no> |
|---|---|
| date | Mon, 23 Jan 2023 00:17:36 +0100 |
| parents | b6b4a58c7625 |
| children |
| rev | line source |
|---|---|
|
119
df158368051e
PHP7 compatibility and support for http and https
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
111
diff
changeset
|
1 <?php |
|
134
b6b4a58c7625
Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
119
diff
changeset
|
2 include_once 'ScriptIncludeCache.inc.php'; |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
3 |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 /// @cond |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 $baseDir = dirname(__FILE__); |
|
7c68015b211a
Common source for all page generators.
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:
119
diff
changeset
|
7 $cache->includeOnce('OnlineBufferValidator.inc.php', $baseDir); |
|
b6b4a58c7625
Using .inc.php rather than just .inc for include files.
Tom Fredrik Blenning <bfg@bfgconsult.no>
parents:
119
diff
changeset
|
8 $cache->includeOnce('Options.inc.php', $baseDir); |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 /// @endcond |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
10 |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
11 /** |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
12 * Container for headers and content, used for compounding these |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
13 */ |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
14 class PageContent |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
15 { |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
16 /// The headers for the page |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
17 public $headers = array(); |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
18 /// The content of the page |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
19 public $content; |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
20 |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
21 /** |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
22 * Constructs a PageContent object containing only content |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
23 * |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
24 * @param $content The content of this page |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
25 */ |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
26 function __construct($content = "") |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
27 { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
28 $this->content = $content; |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
29 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
30 |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
31 /** |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
32 * Sets a header |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
33 * |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
34 * @param $headername Name of the header |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
35 * @param $value Value for the header |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
36 */ |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
88
diff
changeset
|
37 function setHeader($headername, $value) |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
38 { |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
88
diff
changeset
|
39 $this->headers[$headername] = $value; |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
40 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
41 |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
42 /** |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
43 * Returns a string representation of this object, containing only |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
44 * the content |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
45 * |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
46 * @return the content of the page |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
47 */ |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
48 function __toString() |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
49 { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
50 return $this->content; |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
51 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
52 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
53 |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
54 /** |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
55 * Master class for generating a page |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
56 */ |
|
81
2a8e2f571b24
Make Page abstract.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
80
diff
changeset
|
57 abstract class Page |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
58 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
59 private $cache; |
|
100
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
60 private $variants = array(); |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
61 |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
62 function addVariant($value) |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
63 { |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
64 array_push($this->variants, $value); |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
65 } |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
66 |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
67 function getVariants() |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
68 { |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
69 return $this->variants; |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
70 } |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
71 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
72 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
73 * Constructs a page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
74 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
75 * @param $cache optionally sets a cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
76 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
77 function __construct($cache = null) |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
78 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
79 $this->setCache($cache); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
80 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
81 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
82 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
83 * Set the cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
84 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
85 * @param $cache The cache object |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
86 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
87 protected function setCache($cache) |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
88 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
89 $this->cache = $cache; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
90 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
91 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
92 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
93 * Get the cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
94 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
95 * @return The cache object |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
96 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
97 protected function getCache() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
98 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
99 return $this->cache; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
100 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
101 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
102 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
103 * Decide wether or not this page may be compressed. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
104 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
105 * Normally this is a check for http headers, but some pages |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
106 * eg. pictures may not want to be compressed, and may override this |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
107 * function. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
108 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
109 * @return bool if this page may be compressed |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
110 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
111 function mayCompress() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
112 { |
|
111
adf7b11921f4
No compression when debugging.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
113 if (COMPRESSION_DISABLED) |
|
adf7b11921f4
No compression when debugging.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
100
diff
changeset
|
114 return false; |
|
100
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
115 //We want to add the variant even if we don't serve with compression. |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
116 $this->addVariant('Accept-Encoding'); |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
117 if (!array_key_exists('HTTP_ACCEPT_ENCODING', $_SERVER)) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
118 return false; |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
119 return (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
120 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
121 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
122 /** |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
123 * Decide wether or not this page may be validated. |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
124 * |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
125 * Normally this is a check for the option novalidate, but this may |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
126 * be overridden |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
127 * |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
128 * @return bool if this page may be validated |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
129 */ |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
130 function mayValidate() |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
131 { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
132 if (!VALIDATE) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
133 return false; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
134 if (array_key_exists('novalidate', $_GET)) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
135 return !$_GET['novalidate']; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
136 if (!array_key_exists('HTTP_USER_AGENT', $_SERVER)) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
137 return false; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
138 //UserAgent should be W3C_Validator/1.3 |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
139 return !startswith($_SERVER['HTTP_USER_AGENT'], 'W3C'); |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
140 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
141 |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
142 |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
143 /** |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
144 * Turns on compression for this page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
145 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
146 * @note This may not be reversed |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
147 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
148 function startCompression() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
149 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
150 ob_start("ob_gzhandler"); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
151 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
152 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
153 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
154 * Generates the actual content of the page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
155 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
156 * @return the content buffer |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
157 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
158 abstract function generateContent(); |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
159 |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
160 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
161 * Finishes all necessary processing to determine the cacheset of this page. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
162 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
163 * @return bool if this page may be cached |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
164 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
165 abstract function cacheCheck(); |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
166 |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
167 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
168 * Generates an appropriate response to the request. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
169 * |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
170 * Eg. 304 NOT CHANGED, error message or the actual content |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
171 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
172 function genPage() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
173 { |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
174 $cacheable = $this->cacheCheck(); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
175 if ($cacheable == Cacheable::YES) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
176 if (!CheckHttpModified($this->cache)) |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
177 return false; |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
178 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
179 $res = $this->generateContent(); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
180 if ($cacheable == Cacheable::UNDETERMINED) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
181 $cacheable = $this->cacheCheck(); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
182 if ($cacheable == Cacheable::YES) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
183 if (!CheckHttpModified($this->cache)) |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
184 return false; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
185 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
186 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
187 |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
188 if ($this->mayValidate()) { |
|
93
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
189 /* |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
190 $request = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
|
93
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
191 $validator = new OnlineUriValidator($request); |
|
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
192 */ |
|
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
193 $validator = new OnlineBufferValidator($res); |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
194 if (!$validator->check()) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
195 throw new LogicException('The page could be generated, but contained errors'); |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
196 } |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
197 if ($this->mayCompress()) { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
198 $this->startCompression(); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
199 } |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
200 $t = gettype($res); |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
201 if ($t === "string") { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
202 $res = new PageContent($res); |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
203 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
204 elseif (get_class($res) !== "PageContent") { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
205 throw new InvalidArgumentException("generateContent returned an unexpected type"); |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
206 } |
|
100
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
207 if ($variants = $this->getVariants()) { |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
208 $res->setHeader('Vary', join(",", $variants)); |
|
0a33803ee026
Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
99
diff
changeset
|
209 } |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
210 return $res; |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
211 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
212 |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
213 /** |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
214 * Displays the result from genPage. |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
215 * |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
216 * Printing headers and content. |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
217 */ |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
218 function display() |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
219 { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
220 $res = $this->genPage(); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
221 if ($res) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
222 foreach ($res->headers as $header => $value) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
223 header("${header}: ${value}"); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
224 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
225 print $res; |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
226 } |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
227 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
228 |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
229 |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
230 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
231 ?> |
