annotate Page.inc @ 100:0a33803ee026

Setting variant correctly.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Sat, 27 Sep 2014 10:54:58 +0200
parents d98e315308cd
children adf7b11921f4
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 {
100
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
113 //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
114 $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
115 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
116 return false;
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
117 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
118 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
119
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
120 /**
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
121 * 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
122 *
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 * 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
124 * 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
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 * @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
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 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
129 {
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
130 if (!VALIDATE)
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
131 return false;
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
132 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
133 return !$_GET['novalidate'];
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('HTTP_USER_AGENT', $_SERVER))
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
135 return false;
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
136 //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
137 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
138 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
139
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 /**
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
142 * Turns on compression for this page
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
143 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
144 * @note This may not be reversed
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
145 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
146 function startCompression()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
147 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
148 ob_start("ob_gzhandler");
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
80
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 * Generates the actual content of the page
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 * @return the content buffer
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 abstract function generateContent();
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 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
159 * 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
160 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
161 * @return bool if this page may be cached
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 abstract function cacheCheck();
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 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
166 * Generates an appropriate response to the request.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
167 *
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
168 * 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
169 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
170 function genPage()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
171 {
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
172 $cacheable = $this->cacheCheck();
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
173 if ($cacheable == Cacheable::YES) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
174 if (!CheckHttpModified($this->cache))
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
175 return false;
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
176 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
177 $res = $this->generateContent();
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
178 if ($cacheable == Cacheable::UNDETERMINED) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
179 $cacheable = $this->cacheCheck();
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
180 if ($cacheable == Cacheable::YES) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
181 if (!CheckHttpModified($this->cache))
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
182 return false;
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
183 }
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
184 }
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
185
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
186 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
187 /*
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
188 $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
189 $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
190 */
8aadd7a23b68 Moved some functionality from common-functions into Http class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 91
diff changeset
191 $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
192 if (!$validator->check())
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
193 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
194 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
195 if ($this->mayCompress()) {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
196 $this->startCompression();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
197 }
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
198 $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
199 if ($t === "string") {
88
7a9c45b53866 Add possibility to validate using validator.w3.org
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 86
diff changeset
200 $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
201 }
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
202 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
203 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
204 }
100
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
205 if ($variants = $this->getVariants()) {
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
206 $res->setHeader('Vary', join(",", $variants));
0a33803ee026 Setting variant correctly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 99
diff changeset
207 }
86
b9654b9c4a66 Make headers a part of the content, rather than setting them directly.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 81
diff changeset
208 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
209 }
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
94
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
211 /**
2370f4450983 Document functions and move a few functions to more appropriate places.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 93
diff changeset
212 * 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
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 * 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
215 */
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
216 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
217 {
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 $res = $this->genPage();
99
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
219 if ($res) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
220 foreach ($res->headers as $header => $value) {
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
221 header("${header}: ${value}");
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
222 }
d98e315308cd Improved caching of flag and sitemap.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 94
diff changeset
223 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
224 }
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
225 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
226
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 ?>