--- /dev/null
+<?php
+/* Generic Site Classes
+ * 2007/04/09 Joe Presbrey <presbrey@mit.edu>
+ */
+
+class Site {
+ function Start() {}
+ function Finish() {}
+
+ function Call($MODULE, $METHOD) {
+ $nCalls = 0;
+ if (file_exists('site/'.$MODULE.'.php')) {
+ require_once strtolower('site/'.$MODULE.'.php');
+ if (class_exists($MODULE)) {
+ $object = new $MODULE;
+ $object->Start();
+ $handlers = $object->get_handlers($METHOD);
+ switch ($METHOD) {
+ case 'GET':
+ case 'get':
+ $argv = array_merge($_COOKIE, $_FILES, $_POST, $_GET, isset($_SESSION)?$_SESSION:array()); break;
+ case 'POST':
+ case 'post':
+ default:
+ $argv = array_merge($_COOKIE, $_FILES, $_GET, $_POST, isset($_SESSION)?$_SESSION:array()); break;
+ }
+ foreach($handlers as $handler) {
+ if (isset($argv[$handler]) &&
+ is_callable($object, $handler)) {
+ call_user_func_array(array($object, $handler), $argv);
+ $nCalls++;
+ }
+ }
+ if ($nCalls == 0 && is_callable($object, 'default')) {
+ call_user_func_array(array($object, $handler), $argv);
+ $nCalls++;
+ }
+ $object->Finish();
+ }
+ }
+ return $nCalls;
+ }
+}
+
+class Page {
+ function Start() {}
+ function Finish() {}
+
+ function get_handlers($method) {
+ $handlers = isset($this->handlers[$method]) ?
+ $this->handlers[$method] :
+ array('default');
+ return $handlers;
+ //return array_map(
+ // create_function('$a','return "_'.$method.'_".$a;'),
+ // $this->handlers[$method]);
+ }
+}