]> andersk Git - sql-web.git/blame - lib/joe/site.lib.php
git-svn-id: svn://presbrey.mit.edu/php/lib@122 a142d4bd-2cfb-0310-9673-cb33a7e74f58
[sql-web.git] / lib / joe / site.lib.php
CommitLineData
93b640b0
JP
1<?php
2/* Generic Site Classes
3 * 2007/04/09 Joe Presbrey <presbrey@mit.edu>
4 */
5
6class Site {
7 function Start() {}
46d82986 8 function Call($MODULE, $METHOD, $ARGP=array()) {
93b640b0 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)) {
46d82986 13 $page = new $MODULE($this, $METHOD, $ARGP);
b842dc21
JP
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 }
9d568c7b 31 if ($nCalls == 0 && is_callable(array($page, '_default'))) {
b842dc21 32 $page->Call('_default', $argv);
93b640b0
JP
33 $nCalls++;
34 }
b842dc21 35 $page->Finish();
93b640b0
JP
36 }
37 }
38 return $nCalls;
39 }
b842dc21 40 function Finish() {}
93b640b0
JP
41}
42
43class Page {
46d82986
JP
44 var $site, $method, $argp;
45 function __construct($site, $method, $argp) {
b842dc21
JP
46 $this->site = $site;
47 $this->method = $method;
46d82986 48 $this->argp = $argp;
b842dc21
JP
49 }
50 function get_handlers() {
51 $handlers = isset($this->handlers[$this->method]) ?
52 $this->handlers[$this->method] : array();
93b640b0 53 return $handlers;
93b640b0 54 }
b842dc21
JP
55 function has_handler($handler) {
56 return isset($this->handlers[$this->method]) ? in_array($handler, $this->handlers[$this->method]) : false;
57 }
58
59 function Start() {}
60 function Call($handler, $argv) {
46d82986
JP
61 if (is_callable(array($this, $handler))) {
62 return array(0, call_user_func(array($this, $handler), $argv));
63 } else {
64 return false;
65 }
b842dc21
JP
66 }
67 function Finish() {}
93b640b0 68}
This page took 0.049391 seconds and 5 git commands to generate.