Mercurial > SimpleWebPresenter
annotate Page.inc @ 93:8aadd7a23b68
Moved some functionality from common-functions into Http class.
Reorganized Validator into a class hierarchy.
Added functionality for validating with a buffer in addition to URLs.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 18 Oct 2012 16:44:48 +0200 |
| parents | 1d4c980f4255 |
| children | 2370f4450983 |
| 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 |
|
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
|
11 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
|
12 { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
13 public $headers = array(); |
|
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 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
|
15 |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
16 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
|
17 { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
18 $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
|
19 } |
|
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 |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
88
diff
changeset
|
21 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
|
22 { |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
88
diff
changeset
|
23 $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
|
24 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
25 |
|
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 __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
|
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 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
|
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 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
31 |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 /** |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
33 * Master class for generating a page |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
34 */ |
|
81
2a8e2f571b24
Make Page abstract.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
80
diff
changeset
|
35 abstract class Page |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
36 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
37 private $cache; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
38 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
39 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
40 * Constructs a page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
41 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
42 * @param $cache optionally sets a cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
43 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
44 function __construct($cache = null) |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
45 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
46 $this->setCache($cache); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
47 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
48 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
49 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
50 * Set the cache |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
51 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
52 * @param $cache The cache object |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
53 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
54 protected function setCache($cache) |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
55 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
56 $this->cache = $cache; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
57 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
58 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
59 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
60 * Get the cache |
|
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 * @return The cache object |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
63 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
64 protected function getCache() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
65 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
66 return $this->cache; |
|
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 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
69 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
70 * Decide wether or not this page may be compressed. |
|
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 * 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
|
73 * 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
|
74 * function. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
75 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
76 * @return bool if this page may be compressed |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
77 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
78 function mayCompress() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
79 { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
80 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
|
81 return false; |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
82 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
|
83 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
84 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
85 /** |
|
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
|
86 * 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
|
87 * |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
88 * 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
|
89 * 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
|
90 * |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
91 * @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
|
92 */ |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
93 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
|
94 { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
95 if (!VALIDATE) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
96 return false; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
97 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
|
98 return !$_GET['novalidate']; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
99 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
|
100 return false; |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
101 //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
|
102 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
|
103 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
104 |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
105 |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
106 /** |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
107 * Turns on compression for this page |
|
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 * @note This may not be reversed |
|
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 startCompression() |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
112 { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
113 ob_start("ob_gzhandler"); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
114 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
115 |
|
80
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
116 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
117 * Generates the actual content of the page |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
118 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
119 * @return the content buffer |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
120 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
121 abstract function generateContent(); |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
122 |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
123 /** |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
124 * 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
|
125 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
126 * @return bool if this page may be cached |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
127 */ |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
128 abstract function cacheCheck(); |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
129 |
|
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 * Generates an appropriate response to the request. |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
132 * |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
133 * Eg. 302 NOT CHANGED, error message or the actual content |
|
88904282b888
Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
78
diff
changeset
|
134 */ |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
135 function genPage() |
|
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 if ($this->cacheCheck()) { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
138 $this->cache->CheckHttpModified(); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
139 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
140 $res = $this->generateContent(); |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
141 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
|
142 /* |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
143 $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
|
144 $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
|
145 */ |
|
8aadd7a23b68
Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
91
diff
changeset
|
146 $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
|
147 if (!$validator->check()) |
|
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
148 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
|
149 } |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
150 if ($this->mayCompress()) { |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
151 $this->startCompression(); |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
152 } |
|
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
|
153 $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
|
154 if ($t === "string") { |
|
88
7a9c45b53866
Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
86
diff
changeset
|
155 $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
|
156 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
157 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
|
158 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
|
159 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
160 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
|
161 } |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
162 |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
163 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
|
164 { |
|
b9654b9c4a66
Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
81
diff
changeset
|
165 $res = $this->genPage(); |
|
91
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
88
diff
changeset
|
166 foreach ($res->headers as $header => $value) { |
|
1d4c980f4255
Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
88
diff
changeset
|
167 header("${header}: ${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
|
168 } |
|
78
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
169 print $res; |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
170 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
171 |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
172 |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
173 } |
|
7c68015b211a
Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
174 ?> |
