/// <summary> /// 移动主题到指定版块 /// </summary> /// <param name="topiclist">要移动的主题列表</param> /// <param name="fid">转到的版块ID</param> /// <returns>更新记录数</returns> public static int MoveTopics(string topiclist, int fid, int oldfid, int topicType) { if (!Utils.IsNumericList(topiclist)) { return(-1); } //更新帖子 foreach (string tid in topiclist.Split(',')) { DatabaseProvider.GetInstance().UpdatePost(topiclist, fid, PostTables.GetPostTableName(TypeConverter.StrToInt(tid))); } //更新主题 int reval = Discuz.Data.Topics.UpdateTopic(topiclist, fid, topicType); if (reval > 0) { AdminForumStats.ReSetFourmTopicAPost(fid); AdminForumStats.ReSetFourmTopicAPost(oldfid); Forums.SetRealCurrentTopics(fid); Forums.SetRealCurrentTopics(oldfid); } //生成置顶帖 ResetTopTopicList(); return(reval); }
/// <summary> /// 通过待验证的主题 /// </summary> /// <param name="postTableId">当前帖子分表Id</param> /// <param name="tid">主题Id</param> public static void PassAuditNewTopic(string tidList) { string[] tidarray = tidList.Split(','); float[] values = null; ForumInfo forum = null; TopicInfo topic = null; int fid = -1; foreach (string tid in tidarray) { topic = Topics.GetTopicInfo(int.Parse(tid)); //获取主题信息 if (fid != topic.Fid) //当上一个和当前主题不在一个版块内时,重新读取版块的积分设置 { fid = topic.Fid; forum = Discuz.Forum.Forums.GetForumInfo(fid); if (!forum.Postcredits.Equals("")) { int index = 0; float tempval = 0; values = new float[8]; foreach (string ext in Utils.SplitString(forum.Postcredits, ",")) { if (index == 0) { if (!ext.Equals("True")) { values = null; break; } index++; continue; } tempval = Utils.StrToFloat(ext, 0); values[index - 1] = tempval; index++; if (index > 8) { break; } } } } if (values != null) //使用版块内积分 { UserCredits.UpdateUserCreditsByPostTopic(topic.Posterid, values); } else //使用默认积分 { UserCredits.UpdateUserCreditsByPostTopic(topic.Posterid); } } Data.Topics.PassAuditNewTopic(PostTables.GetPostTableId(), tidList); }
/// <summary> /// 通过待验证的主题 /// </summary> /// <param name="postTableId">当前帖子分表Id</param> /// <param name="tid">主题Id</param> public static void PassAuditNewTopic(string tidList) { //string[] tidarray = tidList.Split(','); //float[] values = null; //ForumInfo forum = null; //TopicInfo topic = null; //int fid = -1; foreach (string tid in tidList.Split(',')) { TopicInfo topic = Topics.GetTopicInfo(int.Parse(tid)); //获取主题信息 CreditsFacade.PostTopic(topic.Posterid, Forums.GetForumInfo(topic.Fid)); //if (fid != topic.Fid) //当上一个和当前主题不在一个版块内时,重新读取版块的积分设置 //{ // fid = topic.Fid; // forum = Discuz.Forum.Forums.GetForumInfo(fid); // if (!forum.Postcredits.Equals("")) // { // int index = 0; // float tempval = 0; // values = new float[8]; // foreach (string ext in Utils.SplitString(forum.Postcredits, ",")) // { // if (index == 0) // { // if (!ext.Equals("True")) // { // values = null; // break; // } // index++; // continue; // } // tempval = Utils.StrToFloat(ext, 0); // values[index - 1] = tempval; // index++; // if (index > 8) // { // break; // } // } // } //} //if (values != null) //使用版块内积分 // UserCredits.UpdateUserCreditsByPostTopic(topic.Posterid, values); //else //使用默认积分 // UserCredits.UpdateUserCreditsByPostTopic(topic.Posterid); } Data.Topics.PassAuditNewTopic(PostTables.GetPostTableId(), tidList); }
/// <summary> /// 更新父版块最后发帖信息 /// </summary> /// <param name="foruminfo"></param> /// <param name="postinfo"></param> private static void UpdateParentForumLastPost(ForumInfo foruminfo, PostInfo postinfo) { int parentFid = Utils.StrToInt(foruminfo.Parentidlist.Split(',')[1], 0);//去parentidlist属性split后的第一个数组元素,因为第0个是分类 if (parentFid > 0) { string fidList = ""; //获取到游客可以访问到的版块fidlist foreach (string fid in AdminForums.FindChildNode(parentFid.ToString()).Split(',')) { if (fid == "0") { continue; } foreach (DataRow dr in Forums.GetOpenForumList().Rows) { if (dr["fid"].ToString().Trim() == fid.Trim()) { fidList += fid + ","; break; } } } if (string.IsNullOrEmpty(fidList)) { return; } int forumsTid = Data.Forums.GetForumsLastPostTid(fidList.TrimEnd(',')); if (forumsTid > 0) { postinfo = Discuz.Data.Posts.GetLastPostByTid(forumsTid, PostTables.GetPostTableName(forumsTid)); } else { postinfo.Pid = postinfo.Tid = 0; postinfo.Title = postinfo.Topictitle = "从未"; postinfo.Postdatetime = "1900-1-1"; postinfo.Poster = ""; postinfo.Posterid = 0; } Discuz.Data.Forums.UpdateForumLastPost(GetForumInfo(parentFid), postinfo); } }
void IEvent.Execute(object state) { //更新昨日发帖,并更新最高日发帖 Discuz.Data.DatabaseProvider.GetInstance().UpdateYesterdayPosts(PostTables.GetPostTableId()); //更新缓存 Discuz.Cache.DNTCache.GetCacheService().RemoveObject("/Forum/Statistics"); //清空onlinetime表的thismonth if (DateTime.Today.Day == 1) { //重置onlinetime表的thismonth(清零) Discuz.Data.DatabaseProvider.GetInstance().ResetThismonthOnlineTime(); //更新统计 Discuz.Data.DatabaseProvider.GetInstance().UpdateStatVars("onlines", "lastupdate", "0"); } }
/// <summary> /// 更新指定版块的最新发帖数信息 /// </summary> /// <param name="foruminfo"></param> public static void UpdateLastPost(ForumInfo foruminfo) { PostInfo postinfo = new PostInfo(); int tid = Discuz.Data.Topics.GetLastPostTid(foruminfo, Forums.GetVisibleForum()); if (tid > 0) { postinfo = Discuz.Data.Posts.GetLastPostByTid(tid, PostTables.GetPostTableName(tid)); } else { postinfo.Pid = postinfo.Tid = 0; postinfo.Title = postinfo.Topictitle = "从未"; postinfo.Postdatetime = "1900-1-1"; postinfo.Poster = ""; postinfo.Posterid = 0; } Discuz.Data.Forums.UpdateForumLastPost(foruminfo, postinfo); if (foruminfo.Layer > 1) { UpdateParentForumLastPost(foruminfo, postinfo); } }
/// <summary> /// 重新设置当前帖子表相关信息 /// </summary> public static void ReSetPostTableInfo() { RemoveObject(CacheKeys.FORUM_POST_TABLE_NAME); RemoveObject(CacheKeys.FORUM_LAST_POST_TABLE_NAME); PostTables.ResetPostTables(); }