diff options
Diffstat (limited to 'public.php')
-rw-r--r-- | public.php | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/public.php b/public.php index c2de2185f..2cec82962 100644 --- a/public.php +++ b/public.php @@ -1,4 +1,6 @@ <?php + set_include_path(get_include_path() . PATH_SEPARATOR . "include"); + /* remove ill effects of magic quotes */ if (get_magic_quotes_gpc()) { @@ -14,11 +16,8 @@ $_REQUEST = array_map('stripslashes_deep', $_REQUEST); } - $op = $_REQUEST["op"]; - require_once "functions.php"; - if ($op != "share") require_once "sessions.php"; - require_once "modules/backend-rpc.php"; + require_once "sessions.php"; require_once "sanity_check.php"; require_once "config.php"; require_once "db.php"; @@ -32,30 +31,37 @@ $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); - if (!$link) { - if (DB_TYPE == "mysql") { - print mysql_error(); - } - // PG seems to display its own errors just fine by default. - return; + if (!init_connection($link)) return; + + if (ENABLE_GZIP_OUTPUT) { + ob_start("ob_gzhandler"); } - init_connection($link); + function __autoload($class) { + $file = "classes/".strtolower(basename($class)).".php"; + if (file_exists($file)) { + require $file; + } + } - $subop = $_REQUEST["subop"]; - $mode = $_REQUEST["mode"]; + $method = $_REQUEST["op"]; - if ((!$op || $op == "rss" || $op == "dlg") && !$_REQUEST["noxml"]) { - header("Content-Type: application/xml; charset=utf-8"); - } else { - header("Content-Type: text/plain; charset=utf-8"); - } + $handler = new Public_Handler($link, $_REQUEST); - if (ENABLE_GZIP_OUTPUT) { - ob_start("ob_gzhandler"); + if ($handler) { + if ($handler->before()) { + if ($method && method_exists($handler, $method)) { + $handler->$method(); + } else if (method_exists($handler, 'index')) { + $handler->index(); + } + $handler->after(); + return; + } } - handle_public_request($link, $op); + header("Content-Type: text/plain"); + print json_encode(array("error" => array("code" => 7))); // We close the connection to database. db_close($link); |