]>
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 { | |
7 | function Start() {} | |
93b640b0 JP |
8 | function Call($MODULE, $METHOD) { |
9 | $nCalls = 0; | |
b842dc21 | 10 | if (file_exists(strtolower('site/'.$MODULE.'.php'))) { |
93b640b0 JP |
11 | require_once strtolower('site/'.$MODULE.'.php'); |
12 | if (class_exists($MODULE)) { | |
b842dc21 JP |
13 | $page = new $MODULE($this, $METHOD); |
14 | $page->Start(); | |
15 | $handlers = $page->get_handlers($METHOD); | |
93b640b0 JP |
16 | switch ($METHOD) { |
17 | case 'GET': | |
18 | case 'get': | |
19 | $argv = array_merge($_COOKIE, $_FILES, $_POST, $_GET, isset($_SESSION)?$_SESSION:array()); break; | |
20 | case 'POST': | |
21 | case 'post': | |
22 | default: | |
23 | $argv = array_merge($_COOKIE, $_FILES, $_GET, $_POST, isset($_SESSION)?$_SESSION:array()); break; | |
24 | } | |
25 | foreach($handlers as $handler) { | |
26 | if (isset($argv[$handler]) && | |
b842dc21 | 27 | false !== $page->Call($handler, $argv)) { |
93b640b0 JP |
28 | $nCalls++; |
29 | } | |
30 | } | |
b842dc21 JP |
31 | echo $nCalls; |
32 | print_r($page); | |
33 | if ($nCalls == 0 && is_callable($page, '_default')) { | |
34 | $page->Call('_default', $argv); | |
93b640b0 JP |
35 | $nCalls++; |
36 | } | |
b842dc21 | 37 | $page->Finish(); |
93b640b0 JP |
38 | } |
39 | } | |
40 | return $nCalls; | |
41 | } | |
b842dc21 | 42 | function Finish() {} |
93b640b0 JP |
43 | } |
44 | ||
45 | class Page { | |
b842dc21 JP |
46 | var $site, $method; |
47 | function __construct($site, $method) { | |
48 | $this->site = $site; | |
49 | $this->method = $method; | |
50 | } | |
51 | function get_handlers() { | |
52 | $handlers = isset($this->handlers[$this->method]) ? | |
53 | $this->handlers[$this->method] : array(); | |
93b640b0 | 54 | return $handlers; |
93b640b0 | 55 | } |
b842dc21 JP |
56 | function has_handler($handler) { |
57 | return isset($this->handlers[$this->method]) ? in_array($handler, $this->handlers[$this->method]) : false; | |
58 | } | |
59 | ||
60 | function Start() {} | |
61 | function Call($handler, $argv) { | |
62 | if (is_callable(array($this, $handler))) | |
63 | return array(0, call_user_func_array(array($this, $handler), $argv)); | |
64 | else return false; | |
65 | } | |
66 | function Finish() {} | |
93b640b0 | 67 | } |