annotate Page.inc @ 91:1d4c980f4255

Change the way headers are set. Disabled validation for non-html pages.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 18 Oct 2012 00:28:48 +0200
parents 7a9c45b53866
children 8aadd7a23b68
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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__);
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
7 $cache->includeOnce('Options.inc', $baseDir);
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
8 $cache->includeOnce('Validator.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()) {
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
142 $request = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
143 $validator = new Validator($request);
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
144 if (!$validator->check())
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
145 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
146 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
147 if ($this->mayCompress()) {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
148 $this->startCompression();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
149 }
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
150 $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
151 if ($t === "string") {
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
152 $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
153 }
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 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
155 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
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 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
158 }
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 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
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 $res = $this->genPage();
91
1d4c980f4255 Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 88
diff changeset
163 foreach ($res->headers as $header => $value) {
1d4c980f4255 Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 88
diff changeset
164 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
165 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
166 print $res;
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
167 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
168
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
169
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 ?>