]> andersk Git - sql-web.git/blame - lib/joe/site.lib.php
git-svn-id: svn://presbrey.mit.edu/php/lib@127 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 {
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 29 $page->Start();
eb021b33
JP
30 $handlers = array_intersect(
31 $page->get_handlers($METHOD),
32 array_keys($this->ARGV));
33 foreach($handlers as $handler) {
34 if (false !== $page->Run($handler)) {
93b640b0
JP
35 $nCalls++;
36 }
37 }
9d568c7b 38 if ($nCalls == 0 && is_callable(array($page, '_default'))) {
d7499d0f 39 $page->Run('_default');
93b640b0
JP
40 $nCalls++;
41 }
b842dc21 42 $page->Finish();
93b640b0
JP
43 }
44 }
45 return $nCalls;
46 }
b842dc21 47 function Finish() {}
93b640b0
JP
48}
49
50class Page {
543352cb 51 var $SITE, $METHOD, $URI;
d7499d0f 52 function __construct($site, $method) {
543352cb
JP
53 $this->SITE = $site;
54 $this->METHOD = $method;
55 foreach($site->ARGV as $k=>$v)
d7499d0f 56 $this->$k = $v;
543352cb 57 $this->URI = $site->URI;
b842dc21
JP
58 }
59 function get_handlers() {
543352cb
JP
60 $handlers = isset($this->handlers[$this->METHOD]) ?
61 $this->handlers[$this->METHOD] : array();
93b640b0 62 return $handlers;
93b640b0 63 }
b842dc21 64 function has_handler($handler) {
543352cb
JP
65 return isset($this->handlers[$this->METHOD]) ?
66 in_array($handler, $this->handlers[$this->METHOD]) : false;
b842dc21
JP
67 }
68
69 function Start() {}
d7499d0f 70 function Run($handler) {
46d82986 71 if (is_callable(array($this, $handler))) {
d7499d0f 72 return array(0, call_user_func(array($this, $handler)));
46d82986
JP
73 } else {
74 return false;
75 }
b842dc21
JP
76 }
77 function Finish() {}
93b640b0 78}
This page took 0.27201 seconds and 5 git commands to generate.