From: <slu...@li...> - 2004-01-05 12:23:08
|
Update of /cvsroot/slugtalk/slugboards/slugtalk In directory sc8-pr-cvs1:/tmp/cvs-serv5897 Modified Files: Slugboards.cs delete.aspx.cs Log Message: More updates again! Deleting works now! Index: Slugboards.cs =================================================================== RCS file: /cvsroot/slugtalk/slugboards/slugtalk/Slugboards.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Slugboards.cs 5 Jan 2004 11:54:13 -0000 1.1 --- Slugboards.cs 5 Jan 2004 12:23:05 -0000 1.2 *************** *** 211,215 **** HtmlCode += "\t<TR>\n"; ! if((short)Webpage.Session["Type"] == 2) HtmlCode += "\t\t<TD width=\"1%\" bgcolor=#eeffff><A href=\"delete.aspx?TopicID=" + Topics.GetColumn("ID").ToString() + "\"><IMG src=\"bigX.gif\" border=0></A></TD>\n"; else --- 211,215 ---- HtmlCode += "\t<TR>\n"; ! if((short)Webpage.Session["Type"] == 2 || (int)Boards.GetColumn("ModeratorID") == (int)Webpage.Session["ID"]) HtmlCode += "\t\t<TD width=\"1%\" bgcolor=#eeffff><A href=\"delete.aspx?TopicID=" + Topics.GetColumn("ID").ToString() + "\"><IMG src=\"bigX.gif\" border=0></A></TD>\n"; else *************** *** 296,304 **** // Only display the delete button if the user posted the message or the user is an admin ! if((int)Users.GetColumn("ID") == (int)Webpage.Session["ID"] || (short)Webpage.Session["Type"] == 2) { HtmlCode += "\t\t<TD width=50% bgColor=#ffff99 align=right>"; HtmlCode += "<A href=\"user.aspx?UserID=" + Users.GetColumn("ID").ToString() + "\"><IMG src=\"userinfo.gif\" border=0></IMG></A>"; ! HtmlCode += "<IMG src=\"delete.gif\"></IMG></TD>\n"; } else --- 296,305 ---- // Only display the delete button if the user posted the message or the user is an admin ! if((int)Users.GetColumn("ID") == (int)Webpage.Session["ID"] || (short)Webpage.Session["Type"] == 2 || ! (int)Boards.GetColumn("ModeratorID") == (int)Webpage.Session["ID"]) { HtmlCode += "\t\t<TD width=50% bgColor=#ffff99 align=right>"; HtmlCode += "<A href=\"user.aspx?UserID=" + Users.GetColumn("ID").ToString() + "\"><IMG src=\"userinfo.gif\" border=0></IMG></A>"; ! HtmlCode += "<A href=\"delete.aspx?TopicID=" + TopicID + "&MessageID=" + MessageID + "\"><IMG src=\"delete.gif\" border=0></IMG></A></TD>\n"; } else Index: delete.aspx.cs =================================================================== RCS file: /cvsroot/slugtalk/slugboards/slugtalk/delete.aspx.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** delete.aspx.cs 5 Jan 2004 11:54:13 -0000 1.1 --- delete.aspx.cs 5 Jan 2004 12:23:05 -0000 1.2 *************** *** 151,155 **** Response.Redirect("error.aspx?Message=Topic no longer exists"); ! if(!Boards.Read("SELECT * FROM Boards WHERE ID='" + Topics.GetColumn("BoardID").ToString() + "'")) Response.Redirect("error.aspx?Message=Unknown error"); --- 151,157 ---- Response.Redirect("error.aspx?Message=Topic no longer exists"); ! string BoardID = Topics.GetColumn("BoardID").ToString(); ! ! if(!Boards.Read("SELECT * FROM Boards WHERE ID='" + BoardID + "'")) Response.Redirect("error.aspx?Message=Unknown error"); *************** *** 179,183 **** Boards.Update(); ! Response.Redirect("slugboards.aspx?BoardID=" + Topics.GetColumn("BoardID").ToString()); } --- 181,185 ---- Boards.Update(); ! Response.Redirect("slugboards.aspx?BoardID=" + BoardID); } *************** *** 189,192 **** --- 191,291 ---- private void DeleteMessage() { + bool RedirectToTopic = true; + + EzSqlConnection SqlConn = new EzSqlConnection(this); + + EzSqlTable Boards = new EzSqlTable(SqlConn, "Boards", Server.MapPath("boards.xsd")); + EzSqlTable Topics = new EzSqlTable(SqlConn, "Topics", Server.MapPath("topics.xsd")); + EzSqlTable Messages = new EzSqlTable(SqlConn, "Messages", Server.MapPath("messages.xsd")); + + // First, read the topic and board from the database + if(!Topics.Read("SELECT * FROM Topics WHERE ID='" + TopicID + "'")) + Response.Redirect("error.aspx?Message=Topic no longer exists"); + + string BoardID = Topics.GetColumn("BoardID").ToString(); + + if(!Boards.Read("SELECT * FROM Boards WHERE ID='" + BoardID + "'")) + Response.Redirect("error.aspx?Message=Unknown error"); + + // Now, read in the message + if(!Messages.Read("SELECT * FROM Messages WHERE ID='" + MessageID + "'")) + Response.Redirect("error.aspx?Message=Message no longer exists"); + + // First message? + if((long)Messages.GetColumn("PrevMessageID") == -1) + { + // Only message in the topic + if((long)Messages.GetColumn("NextMessageID") == -1) + { + // Delete the message and delete the topic + Messages.Delete(); + Topics.Delete(); + Boards.SetColumn("Posts", (int)Boards.GetColumn("Posts") - 1); + Boards.SetColumn("LastUpdate", DateTime.Now); + RedirectToTopic = false; + } + // There are multiple messages, remove this message from the front + else + { + long NextMessageID = (long)Messages.GetColumn("NextMessageID"); + + Topics.SetColumn("FirstMessageID", NextMessageID); + Topics.SetColumn("Replies", (int)Topics.GetColumn("Replies") - 1); + Messages.Delete(); + Messages.Update(); + if(Messages.Read("SELECT * FROM Messages WHERE ID='" + NextMessageID + "'")) + { + Messages.SetColumn("PrevMessageID", -1); + } + Boards.SetColumn("LastUpdate", DateTime.Now); + } + } + else + { + // Last message + if((long)Messages.GetColumn("NextMessageID") == -1) + { + long PrevMessageID = (long)Messages.GetColumn("PrevMessageID"); + + Topics.SetColumn("LastMessageID", PrevMessageID); + Topics.SetColumn("Replies", (int)Topics.GetColumn("Replies") - 1); + Messages.Delete(); + Messages.Update(); + if(Messages.Read("SELECT * FROM Messages WHERE ID='" + PrevMessageID + "'")) + { + Messages.SetColumn("NextMessageID", -1); + } + Boards.SetColumn("LastUpdate", DateTime.Now); + } + // A message somewhere in the middle + else + { + long PrevMessageID = (long)Messages.GetColumn("PrevMessageID"), + NextMessageID = (long)Messages.GetColumn("NextMessageID"); + + Topics.SetColumn("Replies", (int)Topics.GetColumn("Replies") - 1); + Messages.Delete(); + Messages.Update(); + if(Messages.Read("SELECT * FROM Messages WHERE ID='" + PrevMessageID + "'")) + { + Messages.SetColumn("NextMessageID", NextMessageID); + Messages.Update(); + } + if(Messages.Read("SELECT * FROM Messages WHERE ID='" + NextMessageID + "'")) + { + Messages.SetColumn("PrevMessageID", PrevMessageID); + } + } + } + + // Update the message the topic and the board with the changes + Messages.Update(); + Topics.Update(); + Boards.Update(); + + if(RedirectToTopic) + Response.Redirect("slugboards.aspx?TopicID=" + TopicID); + else + Response.Redirect("slugboards.aspx?BoardID=" + BoardID); } |