private static void ReSetFourmTopicPost(IDataReader reader, ref int fid, bool fixTopicCount) { if (reader != null) { int topiccount = 0; int postcount = 0; int todaypostcount = 0; int lasttid = 0; string lasttitle = ""; string lastpost = "1900-1-1"; int lastposterid = 0; string lastposter = ""; while (reader.Read()) { fid = Utils.StrToInt(reader["fid"], -1); topiccount = Data.Topics.GetTopicCountOfForumWithSub(SubForumList(fid)); postcount = GetPostsCountByFid(fid, out todaypostcount); if (fixTopicCount) { Forums.SetRealCurrentTopics(fid); } else { lasttid = 0; lasttitle = ""; lastpost = "1900-1-1"; lastposterid = 0; lastposter = ""; } IDataReader postreader = Discuz.Data.Posts.GetForumLastPost(fid, Posts.GetPostTableName(), topiccount, postcount, lasttid, lasttitle, lastpost, lastposterid, lastposter, todaypostcount); if (postreader.Read()) { TopicInfo topic = Topics.GetTopicInfo(TypeConverter.ObjectToInt(postreader["tid"])); if (topic == null) { continue; } lasttid = topic.Tid; lasttitle = topic.Title;//postreader["title"].ToString(); lastpost = postreader["postdatetime"].ToString(); lastposterid = Utils.StrToInt(postreader["posterid"], 0); lastposter = postreader["poster"].ToString(); } postreader.Close(); Discuz.Data.Forums.UpdateForum(fid, topiccount, postcount, lasttid, lasttitle, lastpost, lastposterid, lastposter, todaypostcount); } reader.Close(); } }
/// <summary> /// 重建论坛帖数 /// </summary> /// <param name="statcount">要设置的版块数量</param> /// <param name="lastfid">输出参数:最后一个版块ID</param> public static void ReSetFourmTopicAPost(int statcount, ref int lastfid) { if (statcount < 1) { lastfid = -1; return; } Forums.SetRealCurrentTopics(lastfid); IDataReader reader = DatabaseProvider.GetInstance().GetTopForumFids(lastfid, statcount); lastfid = -1; if (reader != null) { int topiccount = 0; int postcount = 0; int todaypostcount = 0; while (reader.Read()) { lastfid = Utils.StrToInt(reader["fid"], -1); topiccount = Topics.GetAllTopicCount(lastfid); postcount = GetPostsCountByFid(lastfid, out todaypostcount); int lasttid = 0; string lasttitle = ""; string lastpost = "1900-1-1"; int lastposterid = 0; string lastposter = ""; IDataReader postreader = DatabaseProvider.GetInstance().GetForumLastPost(lastfid, Posts.GetPostTableName(), topiccount, postcount, 0, "", "1900-1-1", 0, "", todaypostcount); if (postreader.Read()) { lasttid = Utils.StrToInt(postreader["tid"], 0); lasttitle = Topics.GetTopicInfo(lasttid).Title;//postreader["title"].ToString(); lastpost = postreader["postdatetime"].ToString(); lastposterid = Utils.StrToInt(postreader["posterid"], 0); lastposter = postreader["poster"].ToString(); } postreader.Close(); DatabaseProvider.GetInstance().UpdateForum(lastfid, topiccount, postcount, lasttid, lasttitle, lastpost, lastposterid, lastposter, todaypostcount); } reader.Close(); } }
/// <summary> /// 重建论坛帖数 /// </summary> /// <param name="start_fid">要设置的起始版块</param> /// <param name="end_fid">要设置的终止版块</param> public static void ReSetFourmTopicAPost(int start_fid, int end_fid) { IDataReader reader = DatabaseProvider.GetInstance().GetForums(start_fid, end_fid); int current_fid = start_fid; if (reader != null) { int topiccount = 0; int postcount = 0; int todaypostcount = 0; int lasttid = 0; string lasttitle = ""; string lastpost = ""; int lastposterid = 0; string lastposter = ""; while (reader.Read()) { current_fid = Utils.StrToInt(reader["fid"], -1); Forums.SetRealCurrentTopics(current_fid); topiccount = Topics.GetAllTopicCount(current_fid); postcount = GetPostsCountByFid(current_fid, out todaypostcount); IDataReader postreader = DatabaseProvider.GetInstance().GetForumLastPost(current_fid, Posts.GetPostTableName(), topiccount, postcount, lasttid, lasttitle, lastpost, lastposterid, lastposter, todaypostcount); if (postreader.Read()) { lasttid = Utils.StrToInt(postreader["tid"], 0); lasttitle = Topics.GetTopicInfo(lasttid).Title;//postreader["title"].ToString(); lastpost = postreader["postdatetime"].ToString(); lastposterid = Utils.StrToInt(postreader["posterid"], 0); lastposter = postreader["poster"].ToString(); DatabaseProvider.GetInstance().UpdateForum(current_fid, topiccount, postcount, lasttid, lasttitle, lastpost, lastposterid, lastposter, todaypostcount); } postreader.Close(); } reader.Close(); } }
/// <summary> /// 移动主题到指定版块 /// </summary> /// <param name="topiclist">要移动的主题列表</param> /// <param name="fid">转到的版块ID</param> /// <param name="savelink">是否在原版块保留连接</param> /// <returns>更新记录数</returns> public static int MoveTopics(string topiclist, int fid, int oldfid, bool savelink, int topicType) { if (!Utils.IsNumericList(topiclist)) { return(-1); } string tidList = ""; DataTable dt = Topics.GetTopicList(topiclist); foreach (DataRow dr in dt.Rows) { if (TypeConverter.ObjectToInt(dr["closed"]) <= 1 || TypeConverter.ObjectToInt(dr["fid"]) != oldfid) { tidList += dr["tid"].ToString() + ","; } } tidList = tidList.TrimEnd(','); if (string.IsNullOrEmpty(tidList)) { return(-1); } Discuz.Data.TopicAdmins.DeleteClosedTopics(fid, tidList); //转移帖子 MoveTopics(tidList, fid, oldfid, topicType); //如果保存链接则复制一条记录到原版块 if (savelink) { if (Discuz.Data.TopicAdmins.CopyTopicLink(oldfid, tidList) <= 0) { return(-2); } AdminForumStats.ReSetFourmTopicAPost(oldfid); Forums.SetRealCurrentTopics(oldfid); } return(1); }