<?
/*******************************************
* TinyBoard 1.2 *
* by Francesco Toscan,
[email protected] *
* Included classes: PHPLib *
* This code is released under GPL license *
********************************************/
$board_tbl_questions = "board_questions";
$board_tbl_answers = "board_answers";
function BoardToolsFull ($ID,$Depth,$FormerID) {
global $PHP_SELF, $type;
require("modules/board-toolsfull.html");
}
function BoardToolsPartial () {
global $PHP_SELF;
require("modules/board-toolspartial.html");
}
function BoardFooter () {
require("modules/board-footer.html");
}
/* Let's simply list messages in questions table and check whether there are replies */
function BoardIndex () {
global $db, $PHP_SELF, $board_tbl_questions, $board_tbl_answers;
$db->query("SELECT ID,Sender,Date,Topic,NumMsgs from $board_tbl_questions order by Date;");
$numrows = $db->num_rows();
if ($numrows != 0) {
echo "<table width="100%" border="0" bgcolor="#000000" cellspacing="0" cellpadding="1" align="center">";
echo "<tr><td>n";
echo "<table width="100%" border="0" bgcolor="#e6e6e6" cellspacing="0" cellpadding="0" align="center">";
echo "<tr>n";
echo "<th bgcolor="#333399" width="60%"><font size="-1" color="#FFFFFF">Topic</font>n";
echo "</th>n";
echo "<th bgcolor="#333399" width="20%"><font color="#FFFFFF" size="-1">Sender</font></th>n";
echo "<th bgcolor="#333399"><font color="#FFFFFF" size="-1">Date</font></th>n";
echo "</tr>n";
while ($db->next_record()) {
$ID = $db->f(ID);
$Sender = $db->f(Sender);
$Date = $db->f(Date);
$Topic = $db->f(Topic);
echo "<tr>n";
echo "<td width="60%"><font size="-2">n";
if ($db->f(NumMsgs) > 0) {
echo "<a href="$PHP_SELF?action=expand_thread&ID=$ID"><img src="pics/plus.gif" border="0" valign="middle"></a> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=question">$Topic</a></font></td>n";
}
else {
echo "<img src="pics/stateful.gif" border="0"> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=question">$Topic</a></font></td>n";
}
echo "<td width="20%" align="center"><font size="-2">$Sender</font></td>n";
echo "<td align="center"><font size="-2">$Date</font></td>n";
echo "</tr>n";
}
echo "</table>n";
echo "</td></tr></table>n";
}
else {
echo "No message found.n";
}
BoardFooter();
}
/* We want to add messages */
function BoardAddNewMsg() {
global $db, $CodSede, $Sender, $Text, $Topic, $PHP_SELF, $board_tbl_questions, $board_tbl_answers;
/* Let's make an unique ID for each message. */
$ID = uniqid(rand(),true);
$Date = date("Y/m/d");
/* Check whether ID is really unique */
$db->query("SELECT ID from $board_tbl_questions where ID="$ID";");
$numrows = $db->num_rows();
if ($numrows != 0) {
while ($numrows != 0) {
$ID = uniqid(rand(),true);
$numrows = $db->num_rows();
}
}
/* Insert query */
$query = "INSERT INTO $board_tbl_questions SET ID="$ID",Sender="$CodSede",Date="$Date",Text="$Text",Topic="$Topic";";
if ($db->query($query)) {
echo "<center>Message sent.<br>n";
echo "<a href="$PHP_SELF">Back</a></center>n";
}
else {
echo "Problem has occurred while sending message. Send failed.n";
}
BoardFooter();
}
/* Expanding threads by question ID */
function BoardThreadExpand($ID,$maxDepth) {
global $db, $PHP_SELF, $board_tbl_questions, $board_tbl_answers;
/* First of all the former message */
if ($maxDepth == 1) {
$db->query("SELECT ID,Sender,Date,Topic from $board_tbl_questions where ID="$ID";");
}
else {
$db->query("SELECT ID,Sender,Date,Topic from $board_tbl_answers where ID="$ID";");
}
$db->next_record();
$Sender = $db->f(Sender);
$Date = $db->f(Date);
$Topic = $db->f(Topic);
echo "<table width="100%" border="0" bgcolor="#000000" cellspacing="0" cellpadding="1" align="center">";
echo "<tr><td>n";
echo "<table width="100%" border="0" bgcolor="#e6e6e6" cellspacing="0" cellpadding="0" align="center">";
echo "<tr>n";
echo "<th bgcolor="#333399" width="60%"><font size="-1" color="#FFFFFF">Topic</font>n";
echo "</th>n";
echo "<th bgcolor="#333399" width="20%"><font color="#FFFFFF" size="-1">Sender</font></th>n";
echo "<th bgcolor="#333399"><font color="#FFFFFF" size="-1">Date</font></th>n";
echo "</tr>n";
echo "<tr>n";
echo "<td width="60%"><font size="-2">n";
echo "<a href="javascript: history.back(-1)">";
echo "<img src="pics/minus.gif" border="0" valign="middle"></a> ";
if ($maxDepth == 1) {
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=question">$Topic</a></font></td>n";
}
else {
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=answer">$Topic</a></font></td>n";
}
echo "<td width="20%" align="center"><font size="-2">$Sender</font></td>n";
echo "<td align="center"><font size="-2">$Date</font></td>n";
echo "</tr>n";
/* List all messages matching thread ID */
$query = "SELECT ID,Sender,Date,Topic,Depth,NumMsgs from $board_tbl_answers where FormerID="$ID" OR OrigID="$ID";";
$db->query($query);
$numMsgs = $db->num_rows();
while ($db->next_record()) {
if ($db->f(Depth) == $maxDepth) {
$ID = $db->f(ID);
$Sender = $db->f(Sender);
$Date = $db->f(Date);
$Topic = $db->f(Topic);
$Depth = $db->f(Depth);
echo "<tr>n";
echo "<td width="60%"><font size="-2">n";
if ($db->f(NumMsgs) > 0) {
$newDepth = $Depth +1;
echo "<a href="$PHP_SELF?action=expand_thread&ID=$ID&maxDepth=$newDepth"><img src="pics/plus.gif" border="0" valign="middle"></a> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=answer">$Topic</a></font></td>n";
}
else {
echo "<img src="pics/node.gif" border="0"> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=answer">$Topic</a></font></td>n";
}
echo "<td width="20%" align="center"><font size="-2">$Sender</font></td>n";
echo "<td align="center"><font size="-2">$Date</font></td>n";
echo "</tr>n";
}
}
echo "</table>n";
echo "</td></tr></table>n";
echo "<br>n";
echo "<font size="-2">Level <b>$maxDepth</b></font>n";
BoardFooter();
}
function BoardShowMsg ($ID,$type) {
global $db, $PHP_SELF, $board_tbl_questions, $board_tbl_answers;
if ($type == "question") {
$query = "SELECT ID,Sender,Topic,Date,Text from $board_tbl_questions where ID="$ID";";
}
else {
$query = "SELECT ID,Sender,Topic,Date,Text,FormerID,Depth from $board_tbl_answers where ID="$ID";";
}
$db->query($query);
$numrows = $db->num_rows();
if ($numrows > 0) {
$db->next_record();
$Sender = $db->f(Sender);
$Topic = $db->f(Topic);
$Date = $db->f(Date);
$Text = $db->f(Text);
$FormerID = $db->f(FormerID);
$Depth = $db->f(Depth);
BoardToolsFull($ID,$Depth,$FormerID);
require("modules/board-show.html");
}
else {
echo "Message ID $ID not found.n";
}
BoardFooter();
}
function BoardNewMsg () {
require("modules/board-newmsg.html");
}
function BoardAddReply ($ID) {
global $PHP_SELF, $db, $type, $Depth, $Sender, $Text, $Topic, $FormerID, $board_tbl_questions, $board_tbl_answers;
$newID = uniqid(rand(),true);
$Date = date("Y/m/d");
if ($type == "question") {
$query = "INSERT INTO $board_tbl_answers SET ID="$newID",OrigID="$ID",FormerID="$ID", Depth="1",Sender="$Sender",Date="$Date", Topic="$Topic",Text="$Text";";
$db->query($query);
$update = "UPDATE $board_tbl_questions SET NumMsgs=NumMsgs +1 WHERE ID="$ID";";
$db->query($update);
echo "<center>Message sent.<br>n";
echo "<a href="$PHP_SELF">Back</a></center>n";
}
else {
$Depth = $Depth +1;
$query = "INSERT INTO $board_tbl_answers SET ID="$newID", OrigID="$ID",FormerID="$FormerID", Depth="$Depth",Sender="$Sender", Date="$Date",Topic="$Topic", Text="$Text";";
$db->query($query);
$update = "UPDATE $board_tbl_answers SET NumMsgs=NumMsgs +1 WHERE ID="$ID";";
$db->query($update);
echo "<center>Message sent.<br>n";
echo "<a href="$PHP_SELF">Back</a></center>n";
}
BoardFooter();
}
function BoardReplyMsg($ID) {
global $PHP_SELF, $db, $FormerID, $Depth, $type, $CodSede, $board_tbl_questions, $board_tbl_answers;
if ($type == "question") {
$query = "SELECT Sender,Topic,Date,Text from $board_tbl_questions where ID="$ID";";
}
else {
$query = "SELECT Sender,Topic,Date,Text from $board_tbl_answers where ID="$ID";";
}
$db->query($query);
$numrows = $db->num_rows();
if ($numrows > 0) {
$db->next_record();
$Sender = $db->f(Sender);
$Topic = $db->f(Topic);
$Date = $db->f(Date);
$Text = $db->f(Text);
}
BoardToolsPartial();
require("modules/board-replymsg.html");
BoardFooter();
}
function BoardPerformSearch ($what) {
global $PHP_SELF, $db, $Topic, $Text, $board_tbl_questions, $board_tbl_answers;
$found = 0;
switch ($what) {
case topic:
$query = "SELECT ID,Sender,Topic,Date,NumMsgs from $board_tbl_questions WHERE Topic LIKE "%$Topic%";";
$db->query($query);
echo "<h4>Search results</h4>n";
BoardToolsPartial();
if ($db->num_rows() > 0) {
$found++;
echo "<table width="100%" border="0" bgcolor="#000000" cellspacing="0" cellpadding="1" align="center">";
echo "<tr><td>n";
echo "<table width="100%" border="0" bgcolor="#e6e6e6" cellspacing="0" cellpadding="0" align="center">";
echo "<tr>n";
echo "<th bgcolor="#333399" width="60%"><font size="-1" color="#FFFFFF">Topic</font>n";
echo "</th>n";
echo "<th bgcolor="#333399" width="20%"><font color="#FFFFFF" size="-1">Sender</font></th>n";
echo "<th bgcolor="#333399"><font color="#FFFFFF" size="-1">Date</font></th>n";
echo "</tr>n";
while ($db->next_record()) {
$ID = $db->f(ID);
$Sender = $db->f(Sender);
$Date = $db->f(Date);
$Topic = $db->f(Topic);
echo "<tr>n";
echo "<td width="60%"><font size="-2">n";
if ($db->f(NumMsgs) > 0) {
echo "<a href="$PHP_SELF?action=expand_thread&ID=$ID"><img src="pics/plus.gif" border="0" valign="middle"></a> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=question">$Topic</a></font></td>n";
}
else {
echo "<img src="pics/stateful.gif" border="0"> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=question">$Topic</a></font></td>n";
}
echo "<td width="20%" align="center"><font size="-2">$Sender</font></td>n";
echo "<td align="center"><font size="-2">$Date</font></td>n";
echo "</tr>n";
}
echo "</table>n";
echo "</td></tr></table>n";
}
else {
echo "No message found.n";
}
break;
case text:
$query = "SELECT ID,Topic,Sender,Date,NumMsgs from $board_tbl_questions WHERE Text LIKE "%$Text%";";
$db->query($query);
echo "<h4>Search results</h4>n";
BoardToolsPartial();
echo "<table width="100%" border="0" bgcolor="#000000" cellspacing="0" cellpadding="1" align="center">";
echo "<tr><td>n";
echo "<table width="100%" border="0" bgcolor="#e6e6e6" cellspacing="0" cellpadding="0" align="center">";
echo "<tr>n";
echo "<th bgcolor="#333399" width="60%"><font size="-1" color="#FFFFFF">Topic</font>n";
echo "</th>n";
echo "<th bgcolor="#333399" width="20%"><font color="#FFFFFF" size="-1">Sender</font></th>n";
echo "<th bgcolor="#333399"><font color="#FFFFFF" size="-1">Date</font></th>n";
echo "</tr>n";
if ($db->num_rows() > 0) {
$found++;
while ($db->next_record()) {
$ID = $db->f(ID);
$Sender = $db->f(Sender);
$Date = $db->f(Date);
$Topic = $db->f(Topic);
echo "<tr>n";
echo "<td width="60%"><font size="-2">n";
echo "<img src="pics/stateful.gif" border="0"> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=question">$Topic</a></font></td>n";
echo "<td width="20%" align="center"><font size="-2">$Sender</font></td>n";
echo "<td align="center"><font size="-2">$Date</font></td>n";
echo "</tr>n";
}
echo "</table>n";
echo "</td></tr></table>n";
}
$query = "SELECT ID,Topic,Sender,Date,Depth,NumMsgs from $board_tbl_answers WHERE Text LIKE "%$Text%";";
$db->query($query);
if ($db->num_rows() > 0) {
$found++;
while ($db->next_record()) {
$ID = $db->f(ID);
$Sender = $db->f(Sender);
$Date = $db->f(Date);
$Topic = $db->f(Topic);
$Depth = $db->f(Depth);
echo "<tr>n";
echo "<td width="60%"><font size="-2">n";
echo "<img src="pics/stateful.gif" border="0"> ";
echo "<a href="$PHP_SELF?action=show_msg&ID=$ID&type=answer">$Topic</a></font></td>n";
echo "<td width="20%" align="center"><font size="-2">$Sender</font></td>n";
echo "<td align="center"><font size="-2">$Date</font></td>n";
echo "</tr>n";
}
echo "</table>n";
/* if ($found == "0") {
echo "<table width="100%" border="0" bgcolor="#e6e6e6" cellspacing="0" cellpadding="0" align="center">";
echo "<tr><td align="center">No message found</td></tr></table>n";
} */
echo "</td></tr></table>n";
}
break;
default:
echo "Missing search key.n";
break;
}
BoardFooter();
}
function BoardSearchMsg() {
global $PHP_SELF, $board_tbl_questions, $board_tbl_answers;
require("modules/board-searchmsg.html");
BoardFooter();
}
/* Use at your own risk :)) */
?>