<?php
function make_date($datenumber, $timenumber) {
if (!$datenumber) return "";
$d = (int) $datenumber;
$n = (int) $timenumber;
$second = $n % 100;
$minute = ($n / 100) % 100;
$hour = (int) ($n / 10000);
$day = $d % 100;
$month = ($d / 100) % 100;
$year = (int) ($d / 10000);
if ($second >= 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 <<<HTML_code
<font face="Tahoma" size="-1"><i>$header</i></font><br />
<font face="Tahoma">$content</font>
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 .= "<br /><hr /><br />";
$data .= make_announcement_item($record);
}
return $data;
}
function error_page() {
$text = <<<error_page
<html><body bgcolor="#ffffff"><center><font face="Tahoma" size="7"><b>2032</b></font><br /><br />
<font face="Arial" size="4">No aliens, we have a bad server <b>AND WE ADMIT IT</b>.<br />
Nah, just joking... it's probably a database fail, refresh the page and try again.</font></center></body></html>
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 = '<table width="100%"><tr><td align="left">' .
($pageno == 1 ? "<-- Previous" : ('<a href="announce.php?start=' . (($pageno - 2) * $length) .
'&length=' . $length . '"><--Previous</a>'))
. '</td><td align="center">' .
("Announcements page $pageno")
. '</td><td align="right">' .
(last_page($pageno, $length) ? "Next -->" : ('<a href="announce.php?start=' . ($pageno * $length) .
'&length=' . $length . '">Next --></a>'))
. '</td></tr></table>';
$result = '<html><body bgcolor="#ffffff">' . $announcements . "<br /><br />" . $table . "</body></html>";
return $result;
}
echo generate_content();
?>
Comments