Mercurial > SimpleWebPresenter
annotate Page.inc @ 99:d98e315308cd
Improved caching of flag and sitemap.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Sun, 14 Sep 2014 21:11:27 +0200 |
| parents | 2370f4450983 |
| children | 0a33803ee026 |
| rev | line source |
|---|---|
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 <? |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 include_once 'ScriptIncludeCache.inc'; |
|
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__); |
|
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('OnlineBufferValidator.inc', $baseDir); |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
8 $cache->includeOnce('Options.inc', $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; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
60 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
61 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
62 * Constructs a page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
63 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
64 * @param $cache optionally sets a cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
65 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
66 function __construct($cache = null) |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
67 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
68 $this->setCache($cache); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
69 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
70 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
71 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
72 * Set the cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
73 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
74 * @param $cache The cache object |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
75 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
76 protected function setCache($cache) |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
77 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
78 $this->cache = $cache; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
79 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
80 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
81 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
82 * Get the cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
83 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
84 * @return The cache object |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
85 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
86 protected function getCache() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
87 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
88 return $this->cache; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
89 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
90 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
91 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
92 * Decide wether or not this page may be compressed. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
93 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
94 * 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
|
95 * 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
|
96 * function. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
97 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
98 * @return bool if this page may be compressed |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
99 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
100 function mayCompress() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
101 { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
102 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
|
103 return false; |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
104 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
|
105 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
106 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
107 /** |
|
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
|
108 * 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
|
109 * |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
110 * 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
|
111 * 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
|
112 * |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
113 * @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
|
114 */ |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
115 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
|
116 { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
117 if (!VALIDATE) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
118 return false; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
119 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
|
120 return !$_GET['novalidate']; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
121 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
|
122 return false; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
123 //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
|
124 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
|
125 } |
|
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 |
|
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 /** |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
129 * Turns on compression for this page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
130 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
131 * @note This may not be reversed |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
132 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
133 function startCompression() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
134 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
135 ob_start("ob_gzhandler"); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
136 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
137 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
138 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
139 * Generates the actual content of the page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
140 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
141 * @return the content buffer |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
142 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
143 abstract function generateContent(); |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
144 |
|
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 * 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
|
147 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
148 * @return bool if this page may be cached |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
149 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
150 abstract function cacheCheck(); |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
151 |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
152 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
153 * Generates an appropriate response to the request. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
154 * |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
155 * 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
|
156 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
157 function genPage() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
158 { |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
159 $cacheable = $this->cacheCheck(); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
160 if ($cacheable == Cacheable::YES) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
161 if (!CheckHttpModified($this->cache)) |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
162 return false; |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
163 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
164 $res = $this->generateContent(); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
165 if ($cacheable == Cacheable::UNDETERMINED) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
166 $cacheable = $this->cacheCheck(); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
167 if ($cacheable == Cacheable::YES) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
168 if (!CheckHttpModified($this->cache)) |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
169 return false; |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
170 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
171 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
172 |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
173 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
|
174 /* |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
175 $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
|
176 $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
|
177 */ |
|
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
178 $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
|
179 if (!$validator->check()) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
180 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
|
181 } |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
182 if ($this->mayCompress()) { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
183 $this->startCompression(); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
184 } |
|
86
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
185 $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
|
186 if ($t === "string") { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
187 $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
|
188 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
189 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
|
190 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
|
191 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
192 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
|
193 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
194 |
|
94
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
195 /** |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
196 * 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
|
197 * |
|
2370f4450983
Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
93
diff
changeset
|
198 * 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
|
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 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
|
201 { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
202 $res = $this->genPage(); |
|
99
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
203 if ($res) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
204 foreach ($res->headers as $header => $value) { |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
205 header("${header}: ${value}"); |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
206 } |
|
d98e315308cd
Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
94
diff
changeset
|
207 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
|
208 } |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
209 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
210 |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
211 |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
212 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
213 ?> |
