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":
$rss = new rss();
$rss->display();
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 "
";
$sql = "SELECT text FROM projects ORDER BY rank";
$result = $this->db->query($sql);
while ($entry = $result->fetch_object()) {
echo $entry->text;
}
echo "
";
}
private function list_projects() {
$sql = "SELECT title FROM projects ORDER BY rank";
$result = $this->db->query($sql);
while ($entry = $result->fetch_object()) {
echo "