Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
            }
        }
Esempio n. 5
0
        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");
            }
        }
Esempio n. 6
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);
            }
        }
Esempio n. 7
0
 /// <summary>
 /// 重新设置当前帖子表相关信息
 /// </summary>
 public static void ReSetPostTableInfo()
 {
     RemoveObject(CacheKeys.FORUM_POST_TABLE_NAME);
     RemoveObject(CacheKeys.FORUM_LAST_POST_TABLE_NAME);
     PostTables.ResetPostTables();
 }