Mercurial > SimpleWebPresenter
annotate Page.inc @ 108:f2996720e6d6
Embed some flags, support for overriding.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Mon, 07 Mar 2016 20:44:43 +0100 |
| parents | 0a33803ee026 |
| children | adf7b11921f4 |
| 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 ?> |
