model = new model(); $config = parse_ini_file($this->config_file, true); $this->db = new mysqli( $config['database']['domain'], $config['database']['user'], $config['database']['password'], $config['database']['database']); if (mysqli_connect_errno()) { echo "Problem connecting to database: "; echo mysqli_connect_error(); exit(); } $this->recaptcha_publickey = $config['recaptcha']['publickey']; $this->recaptcha_privatekey = $config['recaptcha']['privatekey']; $this->title = $config['site']['default_title']; $this->home_link = $config['site']['home_link']; } public function query() { $args = func_get_args(); $statement = $this->db->prepare($args[0]); $args = array_slice($args, 1); call_user_func_array(array($statement, 'bind_param'), &$args); $statement->execute(); $return = array(); $statement->store_result(); $row = array(); $data = $statement->result_metadata(); $fields = array(); $fields[0] = &$statement; while($field = $data->fetch_field()) { $fields[] = &$row[$field->name]; } call_user_func_array("mysqli_stmt_bind_result", $fields); $i = 0; while ($statement->fetch()) { foreach ($row as $key=>$value) $return[$i][$key] = $value; $i++; } $statement->free_result(); return $return; } public static function determine_type() { if (isset($_GET['page']) && is_numeric($_GET['page'])) { return 'page'; } else if (isset($_GET['year'])) { return 'archive'; } else if (isset($_GET['note'])) { return 'note'; } else if ($_SERVER['REQUEST_URI'] == '/') { return 'index'; } else if (isset($_GET['project'])) { return 'project'; } else if (isset($_GET['rss'])) { return 'rss'; } else if (isset($_GET['challenge'])) { return 'captcha'; } } public function init() { switch (cms::determine_type()) { case 'index': $index = new index(); $index->display(); break; case 'project': $project = new project(); $project->display(); break; case 'note': require_once("model/note.php"); $note = new note(); require_once("view/note.php"); break; case 'page': require_once("model/page.php"); $page = new page(); require_once("view/page.php"); break; case "rss": require_once("model/rss.php"); $rss = new rss(); require_once("view/rss.php"); break; case 'archive': $archive = new archive; $archive->display(); break; case "captcha": $captcha = new captcha; $captcha->display(); break; } } } class index extends cms { public function display() { require_once("view/index.php"); } protected function display_exhibits() { echo "
Empty set (0.00 sec)"; } } } class notFound extends Exception { public function __construct() { header('HTTP/1.0 404 Not Found'); ob_end_clean(); include('404.php'); exit(); } } class captcha extends cms { public function display() { $challenge = $_GET['challenge']; $response = $_GET['response']; $remoteip = $_SERVER['REMOTE_ADDR']; $curl = curl_init('http://api-verify.recaptcha.net/verify?'); curl_setopt ($curl, CURLOPT_POST, 4); curl_setopt ($curl, CURLOPT_POSTFIELDS, "privatekey=$this->recaptcha_privatekey&remoteip=$remoteip&challenge=$challenge&response=$response"); $result = curl_exec ($curl); curl_close ($curl); } } ?>