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