/// <summary> /// 写出引用通告处理状态 /// </summary> public void OutWrite() { //取值 PostItem postItem = new PostData(conn).GetPost(SiteFun.ToInt(SiteFun.Query("id"))); CommentItem value = new CommentItem(); value.PostID = postItem.ID; value.Author = SiteFun.Post("blog_name"); value.Content = SiteFun.Post("excerpt"); value.Title = SiteFun.Post("title"); value.Trackback = true; value.URL = SiteFun.FormatUrl(SiteFun.Post("url")); value.Verify = postItem.AutoVerifyTrackback; //错误状态和返回信息 int error = 1; string msg = string.Empty; if (postItem.ID > 0 && postItem.Show) { if (postItem.SwitchTrackback) { if (string.IsNullOrEmpty(value.Content)) { msg = SiteDat.GetLan("MsgNoContent"); } else { if (value.Content.Length > 255) { value.Content = value.Content.Substring(0, 252) + "..."; } if (string.IsNullOrEmpty(value.Author)) { msg = SiteDat.GetLan("MsgNoName"); } else { bool haveFilter = false; string[] filters = new SettingData(conn).GetSetting().Basic.Filter.Split(','); foreach (string filter in filters) { if (value.Content.Contains(filter)) { haveFilter = true; } } if (haveFilter) { msg = SiteDat.GetLan("MsgFilterTxt"); } else { new CommentData(conn).InsertComment(value); msg = SiteDat.GetLan("MsgSaveSucc"); error = 0; } } } } else { msg = SiteDat.GetLan("MsgArtAllowedSendTb"); } } else { msg = SiteDat.GetLan("MsgArtNotExists"); } //处理和返回 StringBuilder xml = new StringBuilder(); xml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); xml.Append("<response>\n"); xml.AppendFormat("\t<error>0</error>\n", error); xml.AppendFormat("\t<message>{0}</message>\n", SiteFun.CDATA(msg)); xml.Append("</response>"); HttpContext.Current.Response.ContentType = "text/xml"; HttpContext.Current.Response.Write(xml); }
/// <summary> /// 发表评论过程 /// </summary> private void OutWritePost() { string msg = string.Empty; SettingItem setting = new SettingData(conn).GetSetting(); //取值和设置 PostItem postItem = new PostData(conn).GetPost(SiteFun.ToInt(SiteFun.Query("artId"))); CommentItem postVal = new CommentItem(); postVal.PostID = postItem.ID; postVal.Author = SiteFun.Post("author"); postVal.Mail = SiteFun.Post("mail"); postVal.URL = SiteFun.FormatUrl(SiteFun.Post("url")); postVal.Content = SiteFun.Post("content"); postVal.Verify = postItem.AutoVerifyComment; //设置Cookie _wc.Set(postVal.Author, postVal.Mail, postVal.URL); //开始判断并发布 if (postItem.ID > 0 && postItem.SwitchComment) { if (string.IsNullOrEmpty(postVal.Author)) { msg = SiteDat.GetLan("MsgNoNickName"); } else { if (string.IsNullOrEmpty(postVal.Mail)) { msg = SiteDat.GetLan("MsgNoMail"); } else { if (string.IsNullOrEmpty(postVal.Content)) { msg = SiteDat.GetLan("MsgNoContent"); } else { if (postVal.Content.Length > 255) { msg = SiteDat.GetLan("MsgContLenMax"); } else { bool haveFilter = false; string[] filters = setting.Basic.Filter.Split(','); foreach (string filter in filters) { if (postVal.Content.Contains(filter)) { haveFilter = true; break; } } if (haveFilter) { msg = SiteDat.GetLan("MsgFilterTxt"); } else { new CommentData(conn).InsertComment(postVal); SiteDat.RemoveDat(SiteCache.NewComment); SiteDat.RemoveDat(SiteCache.RandomPost); SiteDat.ClearDat(string.Format("Comments-{0}-", postItem.ID)); } } } } } } else { msg = SiteDat.GetLan("MsgArtNotExistsOrLocked"); } PrintList(msg, postItem.ID); }
/// <summary> /// 插入新的评论数据 /// </summary> /// <param name="value">评论数据</param> /// <returns>返回新增评论的编号</returns> public int InsertComment(CommentItem value) { int id = 0; _DbParameter[] pars ={ new _DbParameter().Set("@PostID", DbType.Int32, value.PostID), new _DbParameter().Set("@Author", DbType.String, value.Author), new _DbParameter().Set("@Title", DbType.String, value.Title), new _DbParameter().Set("@Mail", DbType.String, value.Mail), new _DbParameter().Set("@URL", DbType.String, value.URL), new _DbParameter().Set("@Content", DbType.String, value.Content), new _DbParameter().Set("@Reply", DbType.String, value.Reply), new _DbParameter().Set("@IsTB", DbType.Int32, value.Trackback ? 1 : 0), new _DbParameter().Set("@Publish", DbType.String, value.Publish.ToString("yyyy-MM-dd HH:mm:ss")), new _DbParameter().Set("@Verify", DbType.Int32, value.Verify ? 1 : 0) }; conn.ExecuteNonQuery("INSERT INTO [Comment] ([PostID], [Author], [Title], [Mail], [URL], [Content], [Reply], [IsTB], [Publish], [Verify]) VALUES (@PostID, @Author, @Title, @Mail, @URL, @Content, @Reply, @IsTB, @Publish, @Verify)", pars); conn.ExecuteNonQuery("UPDATE [Post] SET [PostCount] = [PostCount] + 1 WHERE [ID] = @PostID", pars); id = Convert.ToInt32(conn.ExecuteNewField("[Comment]", null, null)); return id; }
/// <summary> /// 获取评论 /// </summary> /// <param name="cmtId">评论编号</param> /// <returns>返回评论数据</returns> public CommentItem GetComment(int cmtId) { CommentItem item = new CommentItem(); int rows = 0; using (IDataReader reader = conn.ExecutePager("[Comment]", "[ID], [PostID], [Author], [Title], [Mail], [URL], [Content], [Reply], [IsTB], [Publish], [Verify]", string.Format("[ID] = {0}", cmtId), null, null, 1, 1, ref rows)) { while (reader.Read()) { item.ID = reader.GetInt32(0); item.PostID = reader.GetInt32(1); item.Author = reader.GetString(2); item.Title = reader.GetString(3); item.Mail = reader.GetString(4); item.URL = reader.GetString(5); item.Content = reader.GetString(6); item.Reply = reader.GetString(7); item.Trackback = reader.GetInt32(8) == 0 ? false : true; item.Publish = reader.GetDateTime(9); item.Verify = reader.GetInt32(10) == 0 ? false : true; } } return item; }
/// <summary> /// 提交页面窗体 /// </summary> /// <returns>返回发布页面控件代码</returns> public string Post() { StringBuilder sr = new StringBuilder(); int id = SiteFun.ToInt(SiteFun.Query("id")); CommentData cmtData = new CommentData(conn); CommentItem old = cmtData.GetComment(id); PostItem postItem = new PostData(conn).GetPost(old.PostID); if (SiteFun.IsPost) { bool sendMail = false; if (SiteFun.ToInt(SiteFun.Post("sendMail")) != 0) { sendMail = true; } CommentItem postVal = new CommentItem(); postVal.ID = id; postVal.PostID = postItem.ID; postVal.Author = old.Author; postVal.Mail = old.Mail; postVal.URL = old.URL; postVal.Title = old.Title; postVal.Content = old.Content; postVal.Reply = SiteFun.Post("reply"); postVal.Trackback = SiteFun.ToInt(SiteFun.Post("isTb")) == 0 ? false : true; postVal.Publish = old.Publish; postVal.Verify = SiteFun.ToInt(SiteFun.Post("verify")) == 0 ? false : true; if (string.IsNullOrEmpty(postVal.Author)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoAuthor"))); } else { if (string.IsNullOrEmpty(postVal.Mail)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoMail"))); } else { if (string.IsNullOrEmpty(postVal.Content)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoContent"))); } else { try { if (sendMail) { SettingBasicItem basic = new SettingData(conn).GetSetting().Basic; SiteMail mail = new SiteMail(); mail.To = old.Mail; mail.Subject = string.Format(SiteDat.GetLan("MailTitle"), basic.Name); mail.From = basic.MailFrom; mail.Body = string.Format("<p><b>{0}: </b>{1}</p><p><b>{2}: </b>{3}</p><p><b>{4}: </b>{5}</p>", SiteDat.GetLan("Content"), SiteFun.ClearHtml(old.Content), SiteDat.GetLan("Reply"), SiteFun.ClearHtml(postVal.Reply), SiteDat.GetLan("URL"), string.Format(SitePath.ArticleLinkFormat, basic.URL, postItem.Local)); mail.Host = basic.MailHost; mail.Port = basic.MailPort; mail.UserName = basic.MailUserID; mail.Password = basic.MailPassword; mail.Send(); } sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgSaveSucc"), "?act=comment&mode=list")); } catch (Exception err) { sr.Append(AdminUI.ErrorBox(err.Message)); } old = cmtData.GetComment(cmtData.UpdateComment(postVal)); } } } ClearCache(); } //取得默认值 sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.FormStart()); sr.Append(HtmlUI.TableStart("onCenter")); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Author")) + HtmlUI.CreateTd(SiteFun.HtmlEncode(old.Author))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Mail")) + HtmlUI.CreateTd(SiteFun.HtmlEncode(old.Mail))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Website")) + HtmlUI.CreateTd(HtmlUI.Link(SiteFun.HtmlEncode(old.URL), old.URL, null, true))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Article")) + HtmlUI.CreateTd(SiteFun.HtmlEncode(postItem.Title))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Content")) + HtmlUI.CreateTd(SiteFun.HtmlEncode(old.Content))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Reply")) + HtmlUI.CreateTd(AdminUI.Editor("reply", SiteFun.HtmlEncode(old.Reply)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("DateTime")) + HtmlUI.CreateTd(old.Publish)); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Virtue")) + HtmlUI.CreateTd(HtmlUI.CheckBoxInput(SiteDat.GetLan("Trackback"), "isTb", 1, old.Trackback) + HtmlUI.CheckBoxInput(SiteDat.GetLan("Verify"), "verify", 1, old.Verify) + HtmlUI.CheckBoxInput(SiteDat.GetLan("MailNotice"), "sendMail", 1, false))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(HtmlUI.SubmitButton() + HtmlUI.ResetButton())); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.FormFinal()); sr.Append(AdminUI.AdminBoxFinal()); return sr.ToString(); }
/// <summary> /// 修改一个评论 /// </summary> /// <param name="value">评论数据</param> /// <returns>返回被修改的评论编号</returns> public int UpdateComment(CommentItem value) { int id = 0; _DbParameter[] pars ={ new _DbParameter().Set("@PostID", DbType.Int32, value.PostID), new _DbParameter().Set("@Author", DbType.String, value.Author), new _DbParameter().Set("@Title", DbType.String, value.Title), new _DbParameter().Set("@Mail", DbType.String, value.Mail), new _DbParameter().Set("@URL", DbType.String, value.URL), new _DbParameter().Set("@Content", DbType.String, value.Content), new _DbParameter().Set("@Reply", DbType.String, value.Reply), new _DbParameter().Set("@IsTB", DbType.Int32, value.Trackback ? 1 : 0), new _DbParameter().Set("@Publish", DbType.String, value.Publish.ToString("yyyy-MM-dd HH:mm:ss")), new _DbParameter().Set("@Verify", DbType.Int32, value.Verify ? 1 : 0), new _DbParameter().Set("@ID", DbType.Int32, value.ID) }; conn.ExecuteNonQuery("UPDATE [Comment] SET [PostID] = @PostID, [Author] = @Author, [Title] = @Title, [Mail] = @Mail, [URL] = @URL, [Content] = @Content, [Reply] = @Reply, [IsTB] = @IsTB, [Publish] = @Publish, [Verify] = @Verify WHERE [ID] = @ID", pars); id = value.ID; return id; }
/// <summary> /// 筛选评论 /// </summary> /// <param name="artId">大于零则筛选相关文章下的评论</param> /// <param name="intCurPage">当前页</param> /// <param name="btePerPage">每页总数</param> /// <param name="selAll">是否筛选所有数据</param> /// <returns>返回评论数据列表</returns> public DataList<CommentItem> SelectComment(int artId, int intCurPage, int btePerPage, bool selAll) { DataList<CommentItem> list = new DataList<CommentItem>(); string where = string.Empty; if (artId > 0) { where += string.Format(" AND [PostID] = {0}", artId); } if (!selAll) { where += " AND [Verify] <> 0"; } if (!string.IsNullOrEmpty(where)) { where = "[ID] > 0" + where; } int rows = 0; using (IDataReader reader = conn.ExecutePager("[Comment]", "[ID], [PostID], [Author], [Title], [Mail], [URL], [Content], [Reply], [IsTB], [Publish], [Verify]", where, "[Publish]", "DESC", intCurPage, btePerPage, ref rows)) { while (reader.Read()) { CommentItem item = new CommentItem(); item.ID = reader.GetInt32(0); item.PostID = reader.GetInt32(1); item.Author = reader.GetString(2); item.Title = reader.GetString(3); item.Mail = reader.GetString(4); item.URL = reader.GetString(5); item.Content = reader.GetString(6); item.Reply = reader.GetString(7); item.Trackback = reader.GetInt32(8) == 0 ? false : true; item.Publish = reader.GetDateTime(9); item.Verify = reader.GetInt32(10) == 0 ? false : true; list.Add(item); } } list.Number = rows; return list; }