= 60) {$second -= 60; $minute ++;} if ($minute >= 60) {$minute -= 60; $hour ++;} if ($hour >= 24) {$day += ($hour / 24); $hour %= 24;} if (!checkdate($month, $day, $year)) return ""; switch ($month) { case 1: $monthname = "Jan"; break; case 2: $monthname = "Feb"; break; case 3: $monthname = "Mar"; break; case 4: $monthname = "Apr"; break; case 5: $monthname = "May"; break; case 6: $monthname = "Jun"; break; case 7: $monthname = "Jul"; break; case 8: $monthname = "Aug"; break; case 9: $monthname = "Sep"; break; case 10: $monthname = "Oct"; break; case 11: $monthname = "Nov"; break; case 12: $monthname = "Dec"; break; default: $monthname = ""; } if ($hour == 0) $hn = 12; else if ($hour > 12) $hn = $hour - 12; else $hn = $hour; $hm = ($hour < 12) ? "am" : "pm"; $fulldate = $monthname . " " . $day . ", " . $year . ", " . $hn . ":" . ($minute < 10 ? "0" : "") . $minute . ":" . ($second < 10 ? "0" : "") . $second . $hm; return $fulldate; } function database_connection($server, $uid, $pwd, $dbname) { $connection = mysql_connect($server, $uid, $pwd); if (!$connection) return 1; $result = mysql_select_db($dbname, $connection); if (!$result) return 2; return 0; } function retrieve_record($recordid) { $recordnumber = (int) $recordid; $query = "SELECT id, added_by, date, time, contents FROM announcements WHERE id = $recordnumber"; $result = mysql_query($query); $data = mysql_fetch_array($result); if (is_array($data)) return $data; else return NULL; } function retrieve_records($amount, $start) { $data = array("count" => 0); $n = (int) $amount; $s = (int) $start; if ($n <= 0 or $s < 0) return $data; $result = mysql_query("SELECT DISTINCT id FROM announcements ORDER BY 1 DESC LIMIT $s, $n"); for ($pos = 0; $pos < $amount; $pos ++) { $x = mysql_fetch_array($result); if (!is_array($x)) break; $newid = $x["id"]; $data[$data["count"]] = retrieve_record($newid); $data["count"] ++; } return $data; } function make_announcement_item($record) { $header = "Announcement number " . $record["id"] . ", posted by " . $record["added_by"] . (($record["date"]) ? " on " . make_date($record["date"], $record["time"]) . " UTC" : ""); $content = $record["contents"]; $header = htmlspecialchars($header); return <<$header
$content HTML_code; } function make_announcements($amount, $start) { $records = retrieve_records($amount, $start); $data = ""; for ($i = 0; $i < $records['count']; $i++) { $record = $records[$i]; if ($data != "") $data .= "


"; $data .= make_announcement_item($record); } return $data; } function error_page() { $text = <<
2032

No aliens, we have a bad server AND WE ADMIT IT.
Nah, just joking... it's probably a database fail, refresh the page and try again.
error_page; return $text; } function get_value($valuename, $default) { $data = $_REQUEST[$valuename]; if ($data === NULL) return $default; else return ((int) $data); } function last_page($page, $pagesize) { $result = mysql_query("SELECT COUNT(*) AS total FROM announcements"); $data = mysql_fetch_array($result); $amount = (int) $data['total']; if (($page * $pagesize) >= $amount) return true; else return false; } function generate_content() { $start = get_value("start", 0); $length = get_value("length", 5); $pageno = ((int) $start) / ((int) $length) + 1; $status = database_connection(/* censored the database connection data, sorry */); if ($status) return error_page(); $announcements = make_announcements($length, $start); $table = '
' . ($pageno == 1 ? "<-- Previous" : ('<--Previous')) . '' . ("Announcements page $pageno") . '' . (last_page($pageno, $length) ? "Next -->" : ('Next -->')) . '
'; $result = '' . $announcements . "

" . $table . ""; return $result; } echo generate_content(); ?>