Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function database_connect() {
- $result = 0;
- $connection = mysql_connect(/* database host */, /* database user */, /* database pass*/) or $result = 1;
- if ($result == 0)
- mysql_select_db(/* database schema */, $connection) or $result = 2;
- return $result;
- }
- function get_single_row_result($query) {
- $resultset = mysql_query($query);
- if (mysql_num_rows($resultset) > 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 = <<<HTMLcode_end
- <font face="Tahoma" size="2">
- <h4>Log number $lognumber</h4><br />
- <i>$text</i><br />
- Log recorded on $timestamp<br />
- <br />
- <table width="100%">
- <col width="10%" align="right" valign="middle" />
- <col width="15%" align="left" valign="middle" />
- <col width="75%" align="left" valign="baseline" />
- <tr>
- <th>Timestamp</th>
- <th>Chatter</th>
- <th>Message</th>
- </tr>
- HTMLcode_end;
- return $result;
- }
- function log_footer() {
- return '</table></font><br /><hr /><br />';
- }
- function log_tablerow($timestamp, $timeoffset, $servermessage, $chatter, $text) {
- $timedata = format_time($timestamp, $timeoffset);
- if ($servermessage) {
- $message = '<i>' . htmlspecialchars($text) . '</i>';
- $chattercell = '<i>(server message)</i>';
- } else {
- $chattercell = htmlspecialchars($chatter);
- $message = htmlspecialchars($text);
- }
- $tablerow = <<<HTMLcode_end
- <tr>
- <td>$timedata</td>
- <td>$chattercell</td>
- <td>$message</td>
- </tr>
- HTMLcode_end;
- return $tablerow;
- }
- function password_page($basedata) {
- $type = $basedata['type'];
- $id = $basedata['number'];
- return <<<HTMLcode_end
- <html>
- <head>
- <title>Acid Logs -- Password needed!</title>
- </head>
- <body>
- <center>
- <b>This logs are password-protected.</b><br />
- If you entered a password, you entered the wrong one.<br /><br />
- (If you don't know the right one, ask me for it)<br /><br /><br />
- <form action="http://logs.acidchat.comuf.com/chatlog.php" method="post">
- <input type="hidden" name="type" value="$type" />
- <input type="hidden" name="id" value="$id" />
- Password: <input type="password" name="password" />
- <input type="submit" value="View logs" />
- </form>
- </center>
- </body>
- </html>
- HTMLcode_end;
- }
- function error_page() {
- return <<<HTMLcode_end
- <html>
- <head>
- <title>Acid Logs -- oops!</title>
- </head>
- <body>
- <center>
- <br /><br /><br />
- Evil aliens are st-- wait, no, that's PR3.<br />
- Well, truth is, we have a little database error.<br />
- Just refresh the page, that should fix it. Tell me if it doesn't get fixed.<br />
- Thanks!
- </center>
- </body>
- </html>
- 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 <<<HTMLcode_end
- <html>
- <head>
- <title>Acid Logs -- log #$logid</title>
- </head>
- <body>
- $logdata
- </body>
- </html>
- HTMLcode_end;
- }
- function process_group_page($groupid) {
- $groupid = (string) (int) $groupid;
- $groupheader = <<<HTMLcode_end
- <html>
- <head>
- <title>Acid Logs -- group #$groupid</title>
- </head>
- <body>
- HTMLcode_end;
- $data = get_single_row_result("SELECT * FROM log_group WHERE id = $groupid");
- if ($data === false) return false;
- $description = $data['description'];
- $line1 = "<b>Log group number $groupid</b><br />";
- if ($description !== null) $line2 = htmlspecialchars((string) $description);
- $dataheader = $line1 . $line2 . "<br /><hr /><br />";
- $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 .= "</body></html>";
- 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 <<<HTMLcode_end
- <html>
- <head>
- <title>Acid Logs -- 404?</title>
- <head>
- <body>
- <center>
- <font size="+2"><b>Log not found.</b></font><br /><br />
- Well, that's technically not a 404... but whatever.<br />
- Make sure you enter the log number correctly, please.<br />
- Tell me if a real log doesn't load. Thanks!
- </center>
- </body>
- </html>
- HTMLcode_end;
- }
- echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">';
- 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;
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement