]>
Commit | Line | Data |
---|---|---|
93b640b0 JP |
1 | <?php |
2 | /* Generic Site Classes | |
3 | * 2007/04/09 Joe Presbrey <presbrey@mit.edu> | |
4 | */ | |
5 | ||
6 | class Site { | |
543352cb | 7 | var $URI, $ARGV; |
d7499d0f | 8 | function __construct($uri) { |
543352cb JP |
9 | $this->URI = $uri; |
10 | $this->ARGV = array_merge( | |
d7499d0f JP |
11 | array_prepend_keys($_COOKIE,'c_'), |
12 | array_prepend_keys($_FILES,'f_'), | |
13 | array_prepend_keys($_GET,'g_'), | |
14 | array_prepend_keys($_POST,'p_')); | |
15 | } | |
16 | function Start() { | |
17 | if (isset($_SESSION)) { | |
543352cb JP |
18 | $this->ARGV = array_merge( |
19 | $this->ARGV, | |
d7499d0f JP |
20 | array_prepend_keys($_SESSION,'s_')); |
21 | } | |
22 | } | |
23 | function Run($MODULE, $METHOD) { | |
93b640b0 | 24 | $nCalls = 0; |
b842dc21 | 25 | if (file_exists(strtolower('site/'.$MODULE.'.php'))) { |
93b640b0 JP |
26 | require_once strtolower('site/'.$MODULE.'.php'); |
27 | if (class_exists($MODULE)) { | |
d7499d0f | 28 | $page = new $MODULE($this, $METHOD); |
b842dc21 JP |
29 | $page->Start(); |
30 | $handlers = $page->get_handlers($METHOD); | |
543352cb | 31 | foreach($this->ARGV as $argk=>$argv) { |
f185cadb JP |
32 | if (in_array($argk, $handlers) && |
33 | false !== $page->Run($argk)) { | |
93b640b0 JP |
34 | $nCalls++; |
35 | } | |
36 | } | |
9d568c7b | 37 | if ($nCalls == 0 && is_callable(array($page, '_default'))) { |
d7499d0f | 38 | $page->Run('_default'); |
93b640b0 JP |
39 | $nCalls++; |
40 | } | |
b842dc21 | 41 | $page->Finish(); |
93b640b0 JP |
42 | } |
43 | } | |
44 | return $nCalls; | |
45 | } | |
b842dc21 | 46 | function Finish() {} |
93b640b0 JP |
47 | } |
48 | ||
49 | class Page { | |
543352cb | 50 | var $SITE, $METHOD, $URI; |
d7499d0f | 51 | function __construct($site, $method) { |
543352cb JP |
52 | $this->SITE = $site; |
53 | $this->METHOD = $method; | |
54 | foreach($site->ARGV as $k=>$v) | |
d7499d0f | 55 | $this->$k = $v; |
543352cb | 56 | $this->URI = $site->URI; |
b842dc21 JP |
57 | } |
58 | function get_handlers() { | |
543352cb JP |
59 | $handlers = isset($this->handlers[$this->METHOD]) ? |
60 | $this->handlers[$this->METHOD] : array(); | |
93b640b0 | 61 | return $handlers; |
93b640b0 | 62 | } |
b842dc21 | 63 | function has_handler($handler) { |
543352cb JP |
64 | return isset($this->handlers[$this->METHOD]) ? |
65 | in_array($handler, $this->handlers[$this->METHOD]) : false; | |
b842dc21 JP |
66 | } |
67 | ||
68 | function Start() {} | |
d7499d0f | 69 | function Run($handler) { |
46d82986 | 70 | if (is_callable(array($this, $handler))) { |
d7499d0f | 71 | return array(0, call_user_func(array($this, $handler))); |
46d82986 JP |
72 | } else { |
73 | return false; | |
74 | } | |
b842dc21 JP |
75 | } |
76 | function Finish() {} | |
93b640b0 | 77 | } |