annotate Page.inc @ 94:2370f4450983

Document functions and move a few functions to more appropriate places.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Thu, 18 Oct 2012 17:33:34 +0200
parents 8aadd7a23b68
children d98e315308cd
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__);
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 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
155 * Eg. 302 NOT CHANGED, error message or the actual content
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 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
159 if ($this->cacheCheck()) {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
160 $this->cache->CheckHttpModified();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
161 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
162 $res = $this->generateContent();
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
163 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
164 /*
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
165 $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
166 $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
167 */
8aadd7a23b68 Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 91
diff changeset
168 $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
169 if (!$validator->check())
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
170 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
171 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
172 if ($this->mayCompress()) {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
173 $this->startCompression();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
174 }
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
175 $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
176 if ($t === "string") {
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
177 $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
178 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
179 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
180 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
181 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
182 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
183 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
184
94
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
185 /**
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
186 * 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
187 *
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
188 * 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
189 */
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
190 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
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 $res = $this->genPage();
91
1d4c980f4255 Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 88
diff changeset
193 foreach ($res->headers as $header => $value) {
1d4c980f4255 Change the way headers are set.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 88
diff changeset
194 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
195 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
196 print $res;
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
197 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
198
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
199
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
200 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
201 ?>