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