2 /* Generic Site Classes
3 * 2007/04/09 Joe Presbrey <presbrey@mit.edu>
8 function __construct($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_'));
17 if (isset($_SESSION)) {
18 $this->ARGV = array_merge(
20 array_prepend_keys($_SESSION,'s_'));
23 function Run($MODULE, $METHOD) {
25 if (file_exists(strtolower('site/'.$MODULE.'.php'))) {
26 require_once strtolower('site/'.$MODULE.'.php');
27 if (class_exists($MODULE)) {
28 $page = new $MODULE($this, $METHOD);
30 $handlers = $page->get_handlers($METHOD);
31 foreach($this->ARGV as $argk=>$argv) {
32 if (in_array($argk, $handlers) &&
33 false !== $page->Run($argk)) {
37 if ($nCalls == 0 && is_callable(array($page, '_default'))) {
38 $page->Run('_default');
50 var $SITE, $METHOD, $URI;
51 function __construct($site, $method) {
53 $this->METHOD = $method;
54 foreach($site->ARGV as $k=>$v)
56 $this->URI = $site->URI;
58 function get_handlers() {
59 $handlers = isset($this->handlers[$this->METHOD]) ?
60 $this->handlers[$this->METHOD] : array();
63 function has_handler($handler) {
64 return isset($this->handlers[$this->METHOD]) ?
65 in_array($handler, $this->handlers[$this->METHOD]) : false;
69 function Run($handler) {
70 if (is_callable(array($this, $handler))) {
71 return array(0, call_user_func(array($this, $handler)));