annotate Page.inc @ 81:2a8e2f571b24

Make Page abstract.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Fri, 12 Oct 2012 18:24:06 +0200
parents 88904282b888
children b9654b9c4a66
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__);
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
7 $cache->includeOnce('Options.inc', dirname(__FILE__));
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
8 /// @endcond
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
9
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
10 /**
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
11 * Master class for generating a page
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
12 */
81
2a8e2f571b24 Make Page abstract.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 80
diff changeset
13 abstract class Page
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
14 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
15 private $cache;
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
16
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
17 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
18 * Constructs a page
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
19 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
20 * @param $cache optionally sets a cache
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
21 */
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
22 function __construct($cache = null)
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
23 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
24 $this->setCache($cache);
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
25 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
26
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
27 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
28 * Set the cache
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
29 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
30 * @param $cache The cache object
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
31 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
32 protected function setCache($cache)
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
33 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
34 $this->cache = $cache;
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
35 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
36
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
37 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
38 * Get the cache
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
39 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
40 * @return The cache object
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
41 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
42 protected function getCache()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
43 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
44 return $this->cache;
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
45 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
46
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
47 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
48 * Decide wether or not this page may be compressed.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
49 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
50 * 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
51 * 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
52 * function.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
53 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
54 * @return bool if this page may be compressed
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
55 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
56 function mayCompress()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
57 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
58 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
59 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
60
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
61 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
62 * Turns on compression for this page
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
63 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
64 * @note This may not be reversed
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
65 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
66 function startCompression()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
67 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
68 ob_start("ob_gzhandler");
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
69 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
70
80
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
71 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
72 * Generates the actual content of the page
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
73 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
74 * @return the content buffer
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
75 */
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
76 abstract function generateContent();
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
77
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
78 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
79 * 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
80 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
81 * @return bool if this page may be cached
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 abstract function cacheCheck();
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 /**
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
86 * Generates an appropriate response to the request.
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
87 *
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
88 * Eg. 302 NOT CHANGED, error message or the actual content
88904282b888 Documentation fixes.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 78
diff changeset
89 */
78
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
90 function genPage()
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
91 {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
92 if ($this->cacheCheck()) {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
93 $this->cache->CheckHttpModified();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
94 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
95 $res = $this->generateContent();
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
96 if ($this->mayCompress()) {
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
97 $this->startCompression();
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 print $res;
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
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
102
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
103 }
7c68015b211a Common source for all page generators.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
104 ?>