]> andersk Git - sql-web.git/blob - lib/joe/site.lib.php
PHP: generic site class
[sql-web.git] / lib / joe / site.lib.php
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 }
This page took 0.064981 seconds and 5 git commands to generate.