1) $result = true; else if (mysql_num_rows($resultset) != 1) $result = false; else $result = mysql_fetch_array($resultset); mysql_free_result($resultset); return $result; } function get_log_password($logid) { $logid = (string) (int) $logid; $query = "SELECT passhash FROM log_header WHERE id = $logid"; $result = get_single_row_result($query); if (!isset($result['passhash'])) return false; return $result['passhash']; } function get_group_password($groupid) { $groupid = (string) (int) $groupid; $query = "SELECT passhash FROM log_group WHERE id = $groupid"; $result = get_single_row_result($query); if (!isset($result['passhash'])) return false; return $result['passhash']; } function get_logs_in_group($groupid) { $groupid = (string) (int) $groupid; $result = mysql_query("SELECT logid FROM log_assoc WHERE groupid = $groupid ORDER BY logid"); $logs = array('count' => 0); $row = mysql_fetch_array($result); while (is_array($row)) { $logs[$logs['count']] = $row['logid']; $logs['count'] ++; $row = mysql_fetch_array($result); } mysql_free_result($result); return $logs; } function get_log_data($logid) { $logid = (string) (int) $logid; $head = get_single_row_result("SELECT * FROM log_header WHERE id = $logid"); if ($head === false) return false; $data = array( 'number' => $head['id'], 'date' => $head['startdate'], 'time' => $head['starttime'], 'offset' => $head['timeoffset'], 'hasoffset' => ($head['timeoffset'] !== null), 'description' => $head['description'], 'count' => 0 ); $resultset = mysql_query("SELECT * FROM log_data WHERE logid = $logid ORDER BY entryid"); $result = mysql_fetch_array($resultset); while (is_array($result)) { $data[$data['count']] = array( 'timestamp' => $result['chattime'], 'sender' => $result['chatter'], 'servermessage' => ($result['chatter'] === null), 'content' => $result['chattext'] ); $data['count'] ++; $result = mysql_fetch_array($resultset); } mysql_free_result($resultset); return $data; } function format_date($datevalue) { $d = (int) $datevalue; $day = $d % 100; $month = ($d / 100) % 100; $year = (int) ($d / 10000); 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 = ""; } $fulldate = $monthname . " " . $day . ", " . $year; return $fulldate; } function format_time($timevalue, $timeoffset) { if ($timeoffset === null) $timeoffset = 0; $timeoffset = (int) $timeoffset; $houroffset = 0; while (($timeoffset < 0) or ($timeoffset >= 60)) { if ($timeoffset < 0) { $houroffset --; $timeoffset += 60; } else { $houroffset ++; $timeoffset -= 60; } } $n = (int) $timevalue; $second = $n % 100; $minute = ($n / 100) % 100; $minute += $timeoffset; $hour = (int) ($n / 10000); $hour += $houroffset; if ($minute >= 60) { $minute -= 60; $hour ++; } else if ($minute < 0) { $hour --; $minute += 60; } if ($hour < 0) $hour += 24; if ($hour >= 24) $hour -= 24; if ($hour == 0) $hn = 12; else if ($hour > 12) $hn = $hour - 12; else $hn = $hour; $hm = ($hour < 12) ? "am" : "pm"; $fulltime = $hn . ":" . ($minute < 10 ? "0" : "") . $minute . ":" . ($second < 10 ? "0" : "") . $second . $hm; return $fulltime; } function log_header($logdata) { $date = format_date($logdata['date']); $time = format_time($logdata['time'], null); $timestamp = $date . ', ' . $time; $lognumber = $logdata['number']; $text = $logdata['description']; $text = htmlspecialchars($text); $result = <<

Log number $lognumber


$text
Log recorded on $timestamp

HTMLcode_end; return $result; } function log_footer() { return '
Timestamp Chatter Message



'; } function log_tablerow($timestamp, $timeoffset, $servermessage, $chatter, $text) { $timedata = format_time($timestamp, $timeoffset); if ($servermessage) { $message = '' . htmlspecialchars($text) . ''; $chattercell = '(server message)'; } else { $chattercell = htmlspecialchars($chatter); $message = htmlspecialchars($text); } $tablerow = << $timedata $chattercell $message HTMLcode_end; return $tablerow; } function password_page($basedata) { $type = $basedata['type']; $id = $basedata['number']; return << Acid Logs -- Password needed!
This logs are password-protected.
If you entered a password, you entered the wrong one.

(If you don't know the right one, ask me for it)


Password:
HTMLcode_end; } function error_page() { return << Acid Logs -- oops!



Evil aliens are st-- wait, no, that's PR3.
Well, truth is, we have a little database error.
Just refresh the page, that should fix it. Tell me if it doesn't get fixed.
Thanks!
HTMLcode_end; } function get_base_data() { $type = $_REQUEST['type']; $id = $_REQUEST['id']; $pass = $_REQUEST['password']; if (($type != 'group') and ($type != 'log')) return false; $id = (int) $id; if ($id <= 0) return false; return array ( 'type' => $type, 'number' => $id, 'password' => ((string) $pass) ); } function check_password($basedata) { if ($basedata['type'] == 'group') $passhash = get_group_password($basedata['number']); else $passhash = get_log_password($basedata['number']); if ($passhash === false) return true; $currpass = md5($basedata['password']); return ($currpass == $passhash); } function log_contents_page($logid) { $data = get_log_data($logid); $header = log_header($data); $content = ''; for ($pos = 0; $pos < $data['count']; $pos ++) $content .= log_tablerow($data[$pos]['timestamp'], $data['offset'], $data[$pos]['servermessage'], $data[$pos]['sender'], $data[$pos]['content']); $footer = log_footer(); $page = $header . "\n" . $content . "\n" . $footer; return $page; } function process_log_page($logid) { $logdata = log_contents_page($logid); return << Acid Logs -- log #$logid $logdata HTMLcode_end; } function process_group_page($groupid) { $groupid = (string) (int) $groupid; $groupheader = << Acid Logs -- group #$groupid HTMLcode_end; $data = get_single_row_result("SELECT * FROM log_group WHERE id = $groupid"); if ($data === false) return false; $description = $data['description']; $line1 = "Log group number $groupid
"; if ($description !== null) $line2 = htmlspecialchars((string) $description); $dataheader = $line1 . $line2 . "


"; $page = $groupheader . "\n" . $dataheader . "\n"; $logs = get_logs_in_group($groupid); for ($log = 0; $log < $logs['count']; $log ++) $page .= log_contents_page($logs[$log]) . "\n"; $page .= ""; return $page; } function process_required_page($basedata) { if ($basedata['type'] == 'log') return process_log_page($basedata['number']); else return process_group_page($basedata['number']); } function log_not_found() { return << Acid Logs -- 404?
Log not found.

Well, that's technically not a 404... but whatever.
Make sure you enter the log number correctly, please.
Tell me if a real log doesn't load. Thanks!
HTMLcode_end; } echo ''; echo "\n"; $status = database_connect(); if ($status > 0) die(error_page()); $data = get_base_data(); if ($data === false) die(log_not_found()); $passmatch = check_password($data); if (!$passmatch) die(password_page($data)); $page = process_required_page($data); if ($page === false) die(log_not_found()); echo $page; ?>