Ejemplo n.º 1
0
        private void GetPostsRank()
        {
            foreach (string key in this.postsrankstats.Keys)
            {
                this.statvars[key] = this.postsrankstats[key] + "";
            }
            CheckLastUpdate("postsrank");
            XUser[] array;
            if (this.statvars.ContainsKey("posts"))
            {
                array = this.statvars["posts"].ToXmlEntity <XUser[]>();
            }
            else
            {
                array = Stats.GetUserArray("posts");
                StatVar.Update("postsrank", "posts", array.ToXml());
            }
            XUser[] array2;
            if (this.statvars.ContainsKey("digestposts"))
            {
                array2 = this.statvars["digestposts"].ToXmlEntity <XUser[]>();
            }
            else
            {
                array2 = Stats.GetUserArray("digestposts");
                StatVar.Update("postsrank", "digestposts", array2.ToXml());
            }
            XUser[] array3;
            if (this.statvars.ContainsKey("thismonth"))
            {
                array3 = this.statvars["thismonth"].ToXmlEntity <XUser[]>();
            }
            else
            {
                array3 = Stats.GetUserArray("thismonth");
                StatVar.Update("postsrank", "thismonth", array3.ToXml());
            }
            XUser[] array4;
            if (this.statvars.ContainsKey("today"))
            {
                array4 = this.statvars["today"].ToXmlEntity <XUser[]>();
            }
            else
            {
                array4 = Stats.GetUserArray("today");
                StatVar.Update("postsrank", "today", array4.ToXml());
            }
            int num = array.Length;

            num                     = Math.Max(array2.Length, num);
            num                     = Math.Max(array3.Length, num);
            num                     = Math.Max(array4.Length, num);
            this.postsrank          = Stats.GetUserRankHtml(array, "posts", num);
            this.digestpostsrank    = Stats.GetUserRankHtml(array2, "digestposts", num);
            this.thismonthpostsrank = Stats.GetUserRankHtml(array3, "thismonth", num);
            this.todaypostsrank     = Stats.GetUserRankHtml(array4, "today", num);
            this.lastupdate         = this.statvars["lastupdate"];
            this.nextupdate         = Utility.ToDateTime(this.statvars["lastupdate"]).AddMinutes((double)this.statscachelife).ToString("yyyy-MM-dd HH:mm:ss");
        }
Ejemplo n.º 2
0
 void CheckLastUpdate(String type)
 {
     if (!this.statvars.ContainsKey("lastupdate") || (DateTime.Now - statvars["lastupdate"].ToDateTime()).TotalMinutes > (double)this.statscachelife)
     {
         var now = DateTime.Now.ToFullString();
         this.statvars.Clear();
         this.statvars["lastupdate"] = now;
         StatVar.Update(type, "lastupdate", now);
     }
 }
Ejemplo n.º 3
0
        public static User[] GetCreditsRank(Dictionary <String, String> dic, String name)
        {
            if (dic.ContainsKey(name))
            {
                return(User.FindAllByIDs(dic[name]).ToArray());
            }

            var list = GetUserArray(name);

            StatVar.Update("creditsrank", name, list.Select(e => e.ID).Join());
            return(list);
        }
Ejemplo n.º 4
0
        public static List <XForum> GetForumsRank(Dictionary <String, String> dic, String name)
        {
            if (dic.ContainsKey(name))
            {
                return(XForum.FindAllByIDs(dic[name]));
            }

            var list = GetForumArray(name);

            StatVar.Update("forumsrank", name, list.Select(e => e.ID).Join());
            return(list);
        }
Ejemplo n.º 5
0
 void IEvent.Execute(object state)
 {
     //DatabaseProvider.GetInstance().UpdateYesterdayPosts(TableList.GetPostTableId());
     Statistic.UpdateYesterdayPosts();
     Statistic.Reset();
     //XCache.Remove(CacheKeys.FORUM_STATISTICS);
     if (DateTime.Today.Day == 1)
     {
         //DatabaseProvider.GetInstance().ResetThismonthOnlineTime();
         OnlineTime.ResetThismonthOnlineTime();
         //DatabaseProvider.GetInstance().UpdateStatVars("onlines", "lastupdate", "0");
         StatVar.Update("onlines", "lastupdate", "0");
     }
 }
Ejemplo n.º 6
0
        public static User[][] GetExtCreditsRank(Dictionary <String, String> dic, String name)
        {
            if (dic.ContainsKey(name))
            {
                if (dic[name].IsNullOrWhiteSpace())
                {
                    return(new User[0][]);
                }

                // 一次性查出来所有用户
                var ids = new List <Int32>();
                foreach (var item in dic[name].Split(","))
                {
                    var ds = item.SplitAsInt("|");
                    if (ds != null && ds.Length > 0)
                    {
                        ids.AddRange(ds);
                    }
                }
                var us = User.FindAllByIDs(ids.ToArray());

                // 开始分组用户
                var list = new List <User[]>();
                foreach (var item in dic[name].Split(","))
                {
                    var list2 = new List <User>();
                    foreach (var elm in item.SplitAsInt("|"))
                    {
                        list2.Add(us.Find(User._.ID, elm));
                    }
                    list.Add(list2.ToArray());
                }
                return(list.ToArray());
            }
            else
            {
                var list = GetExtsRankUserArray();
                var sb   = new StringBuilder();
                foreach (var item in list)
                {
                    sb.Separate(",");
                    sb.Append(item.Select(e => e.ID).Join("|"));
                }
                StatVar.Update("creditsrank", name, sb.ToString());
                return(list);
            }
        }
Ejemplo n.º 7
0
        public static User[] GetUserOnline(Dictionary <String, String> dic, String name)
        {
            if (dic.ContainsKey(name))
            {
                var ss = dic[name].SplitAsDictionary("|");

                var us = User.FindAllByIDs(ss.Keys.Join(",")).ToArray();
                // 附上时间
                foreach (var item in us)
                {
                    item["OnlineTime"] = ss[item.ID + ""].ToInt();
                }
                return(us);
            }

            var list = OnlineTime.GetUserOnlinetime(name);

            StatVar.Update("onlines", name, list.Join(",", e => "{0}|{1}".F(e.ID, e["OnlineTime"])));
            return(list);
        }
Ejemplo n.º 8
0
        private void Default()
        {
            this.lastmember = Statistic.Current.LastUserName;
            foreach (var item in mainstats)
            {
                statvars[item.Key] = item.Value;
            }
            CheckLastUpdate("main");
            this.forums = XForum.GetForumCount();
            var st = Statistic.Current;

            this.topics  = st.TotalTopic;
            this.posts   = st.TotalPost;
            this.members = st.TotalUsers;
            if (this.statvars.ContainsKey("runtime"))
            {
                this.runtime = this.statvars["runtime"].ToInt(0);
            }
            else
            {
                this.runtime = (DateTime.Now - Convert.ToDateTime(this.monthpostsstats["starttime"])).Days;
                StatVar.Update("main", "runtime", this.runtime);
            }
            if (this.statvars.ContainsKey("postsaddtoday"))
            {
                this.postsaddtoday = this.statvars["postsaddtoday"];
            }
            else
            {
                this.postsaddtoday = Post.GetTodayPostCount(0).ToString();
                StatVar.Update("main", "postsaddtoday", this.postsaddtoday);
            }
            if (this.statvars.ContainsKey("membersaddtoday"))
            {
                this.membersaddtoday = this.statvars["membersaddtoday"];
            }
            else
            {
                this.membersaddtoday = BBX.Entity.User.GetTodayNewMemberCount().ToString();
                StatVar.Update("main", "membersaddtoday", this.membersaddtoday);
            }
            if (this.statvars.ContainsKey("admins"))
            {
                this.admins = this.statvars["admins"];
            }
            else
            {
                this.admins = BBX.Entity.User.GetAdminCount().ToString();
                StatVar.Update("main", "admins", this.admins);
            }
            if (this.statvars.ContainsKey("memnonpost"))
            {
                this.memnonpost = this.statvars["memnonpost"].ToInt(0);
            }
            else
            {
                this.memnonpost = BBX.Entity.User.GetNonPostMemCount();
                StatVar.Update("main", "memnonpost", this.memnonpost);
            }
            if (this.statvars.ContainsKey("hotforum"))
            {
                this.hotforum = XForum.FindByID(this.statvars["hotforum"].ToInt());
            }
            else
            {
                this.hotforum = Stats.GetHotForum();
                StatVar.Update("main", "hotforum", this.hotforum.ID + "");
            }
            if (this.statvars.ContainsKey("bestmem") && this.statvars.ContainsKey("bestmemposts"))
            {
                this.bestmem      = this.statvars["bestmem"];
                this.bestmemposts = this.statvars["bestmemposts"].ToInt(0);
            }
            else
            {
                Post.GetBestMember(out this.bestmem, out this.bestmemposts);
                StatVar.Update("main", "bestmem", this.bestmem);
                StatVar.Update("main", "bestmemposts", this.bestmemposts);
            }
            this.mempost        = this.members - this.memnonpost;
            this.mempostavg     = Math.Round((double)this.posts / (double)this.members, 2);
            this.topicreplyavg  = Math.Round((double)(this.posts - this.topics) / (double)this.topics, 2);
            this.mempostpercent = Math.Round((double)(this.mempost * 100) / (double)this.members, 2);
            this.postsaddavg    = Math.Round((double)this.posts / (double)this.runtime, 2);
            this.membersaddavg  = (double)(this.members / this.runtime);
            int num = totalstats["members"].ToInt() + totalstats["guests"].ToInt();

            this.totalstats["visitors"] = num;
            this.pageviewavg            = Math.Round((double)totalstats["hits"].ToInt() / (double)((num == 0) ? 1 : num), 2);
            this.activeindex            = ((Math.Round(this.membersaddavg / (double)((this.members == 0) ? 1 : this.members), 2) + Math.Round(this.postsaddavg / (double)((this.posts == 0) ? 1 : this.posts), 2)) * 1500.0 + this.topicreplyavg * 10.0 + this.mempostavg + Math.Round(this.mempostpercent / 10.0, 2) + this.pageviewavg).ToString();
            if (this.statstatus)
            {
                this.monthofstatsbar = Stats.GetStatsDataHtml("month", this.monthstats, this.maxmonth);
            }
            else
            {
                this.monthpostsofstatsbar = Stats.GetStatsDataHtml("monthposts", this.monthpostsstats, this.maxmonthposts);
                this.daypostsofstatsbar   = Stats.GetStatsDataHtml("dayposts", this.daypostsstats, this.maxdayposts);
            }
            this.lastupdate = this.statvars["lastupdate"];
            this.nextupdate = Utility.ToDateTime(this.statvars["lastupdate"]).AddMinutes((double)this.statscachelife).ToString("yyyy-MM-dd HH:mm:ss");
        }