"; echo "

Database error:

"; echo "

".mysqli_connect_error()."

"; //Todo: replace with cryptic message echo "
"; exit; } if (empty($_SESSION['zcms_sess'])) $_SESSION['zcms_sess'] = new zcms_session; //Todo: Validate session here, ip, etcetera } static function get_articles_bydate($start, $count) { if (! (is_numeric($start) && is_numeric($count))) return FALSE; $start = intval($start); $count = intval($count); $articles = zcms::$mysql_conn->query("SELECT * FROM zcms_infos ORDER BY info_date LIMIT ".$start.",".$count); if (! $articles) return FALSE; $res = array(); while ($row = $articles->fetch_assoc()) { $res[] = new zcms_info($row["info_id"], $row["info_date"], $row["info_type"], $row["info_title"], $row["info_category"]); } return $res; } static function htmlize_db_text($text) { return nl2br(htmlspecialchars($text)); } } class zcms_session { //Todo: Actually define session data } class zcms_info { public $id; //Info ID public $date; //Info date public $type; //Info type, article, tip, or series public $title; //Info title public $category; //Info category public function get_full_text () { $stmt = zcms::$mysql_conn->prepare("SELECT info_fulltext FROM zcms_info_fulltext WHERE info_id = ?"); $stmt->bind_param("i",$this->id); $stmt->bind_result($fulltext); if (! $stmt->execute()) { $stmt->close(); return FALSE; } if (! $stmt->fetch()) { $stmt->close(); return FALSE; } return zcms::htmlize_db_text($fulltext); } public function __construct($i_id, $i_date, $i_type, $i_title, $i_category) { if (! (is_numeric($i_id) && is_numeric($i_date) && is_numeric($i_type) && is_numeric($i_category))) throw new Exception("ID, Date, Type, and Category are numeric"); $this->id = $i_id; $this->date = $i_date; $this->type = $i_type; $this->title = $i_title; $this->category = $i_category; } } class zcms_info_series extends zcms_info { public $series_id; public $series_seqnum; } ?>