annotate Page.inc @ 111:adf7b11921f4

No compression when debugging. Synchronize caching headers.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Tue, 15 Mar 2016 12:55:42 +0100
parents 0a33803ee026
children df158368051e
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;
100
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
60 private $variants = array();
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
61
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
62 function addVariant($value)
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
63 {
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
64 array_push($this->variants, $value);
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
65 }
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
66
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
67 function getVariants()
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
68 {
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
69 return $this->variants;
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
70 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
71
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
72 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
73 * Constructs a page
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
74 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
75 * @param $cache optionally sets a cache
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
76 */
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
77 function __construct($cache = null)
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
78 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
79 $this->setCache($cache);
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
80 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
81
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
82 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
83 * Set the cache
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
84 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
85 * @param $cache The cache object
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
86 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
87 protected function setCache($cache)
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
88 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
89 $this->cache = $cache;
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
90 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
91
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
92 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
93 * Get the cache
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
94 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
95 * @return The cache object
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
96 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
97 protected function getCache()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
98 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
99 return $this->cache;
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
100 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
101
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
102 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
103 * Decide wether or not this page may be compressed.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
104 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
105 * Normally this is a check for http headers, but some pages
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
106 * eg. pictures may not want to be compressed, and may override this
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
107 * function.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
108 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
109 * @return bool if this page may be compressed
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
110 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
111 function mayCompress()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
112 {
111
adf7b11921f4 No compression when debugging.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
113 if (COMPRESSION_DISABLED)
adf7b11921f4 No compression when debugging.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 100
diff changeset
114 return false;
100
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
115 //We want to add the variant even if we don't serve with compression.
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
116 $this->addVariant('Accept-Encoding');
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
117 if (!array_key_exists('HTTP_ACCEPT_ENCODING', $_SERVER))
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
118 return false;
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
119 return (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'));
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
120 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
121
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
122 /**
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
123 * Decide wether or not this page may be validated.
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
124 *
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
125 * Normally this is a check for the option novalidate, but this may
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
126 * be overridden
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
127 *
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
128 * @return bool if this page may be validated
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
129 */
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
130 function mayValidate()
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
131 {
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
132 if (!VALIDATE)
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
133 return false;
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
134 if (array_key_exists('novalidate', $_GET))
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
135 return !$_GET['novalidate'];
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
136 if (!array_key_exists('HTTP_USER_AGENT', $_SERVER))
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
137 return false;
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
138 //UserAgent should be W3C_Validator/1.3
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
139 return !startswith($_SERVER['HTTP_USER_AGENT'], 'W3C');
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
140 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
141
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
142
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
143 /**
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
144 * Turns on compression for this page
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
145 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
146 * @note This may not be reversed
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
147 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
148 function startCompression()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
149 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
150 ob_start("ob_gzhandler");
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
151 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
152
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
153 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
154 * Generates the actual content of the page
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
155 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
156 * @return the content buffer
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
157 */
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
158 abstract function generateContent();
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
159
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
160 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
161 * Finishes all necessary processing to determine the cacheset of this page.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
162 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
163 * @return bool if this page may be cached
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
164 */
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
165 abstract function cacheCheck();
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
166
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
167 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
168 * Generates an appropriate response to the request.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
169 *
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
170 * Eg. 304 NOT CHANGED, error message or the actual content
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
171 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
172 function genPage()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
173 {
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
174 $cacheable = $this->cacheCheck();
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
175 if ($cacheable == Cacheable::YES) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
176 if (!CheckHttpModified($this->cache))
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
177 return false;
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
178 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
179 $res = $this->generateContent();
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
180 if ($cacheable == Cacheable::UNDETERMINED) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
181 $cacheable = $this->cacheCheck();
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
182 if ($cacheable == Cacheable::YES) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
183 if (!CheckHttpModified($this->cache))
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
184 return false;
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
185 }
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
186 }
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
187
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
188 if ($this->mayValidate()) {
93
8aadd7a23b68 Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 91
diff changeset
189 /*
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
190 $request = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
93
8aadd7a23b68 Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 91
diff changeset
191 $validator = new OnlineUriValidator($request);
8aadd7a23b68 Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 91
diff changeset
192 */
8aadd7a23b68 Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 91
diff changeset
193 $validator = new OnlineBufferValidator($res);
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
194 if (!$validator->check())
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
195 throw new LogicException('The page could be generated, but contained errors');
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
196 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
197 if ($this->mayCompress()) {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
198 $this->startCompression();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
199 }
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
200 $t = gettype($res);
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
201 if ($t === "string") {
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
202 $res = new PageContent($res);
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
203 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
204 elseif (get_class($res) !== "PageContent") {
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
205 throw new InvalidArgumentException("generateContent returned an unexpected type");
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
206 }
100
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
207 if ($variants = $this->getVariants()) {
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
208 $res->setHeader('Vary', join(",", $variants));
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
209 }
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
210 return $res;
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
211 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
212
94
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
213 /**
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
214 * Displays the result from genPage.
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
215 *
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
216 * Printing headers and content.
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
217 */
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
218 function display()
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
219 {
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
220 $res = $this->genPage();
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
221 if ($res) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
222 foreach ($res->headers as $header => $value) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
223 header("${header}: ${value}");
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
224 }
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
225 print $res;
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
226 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
227 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
228
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
229
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
230 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
231 ?>