Esempio n. 1
0
        public static Hashtable GetDayPostsStats(Hashtable daypostsstats)
        {
            //return BBX.Data.Stats.GetDayPostsStats(daypostsstats, TableList.GetPostTableId());
            //var dic = Post.GetDayPostsStats();
            // 不要啥啥的重复计算,直接从统计表拿数据即可
            var list  = StatVar.FindAllByType("dayposts");
            var max   = 0;
            var start = DateTime.Now.Date.AddDays(-30).ToString("yyyyMMdd").ToInt();

            foreach (var item in list)
            {
                //StatVar.Update("dayposts", item.Key, item.Value);

                var v = item.IntValue;
                if (v >= start)
                {
                    if (v > max)
                    {
                        max = v;
                    }
                    daypostsstats[item.Variable] = v;
                }
            }
            //ArrayList arrayList = new ArrayList(daypostsstats.Values);
            //arrayList.Sort(new StatVarSorter());
            //daypostsstats["maxcount"] = ((arrayList.Count < 1) ? 0 : arrayList[arrayList.Count - 1].ToInt(0));
            daypostsstats["maxcount"] = max;
            return(daypostsstats);
        }
Esempio n. 2
0
        public void VarianceTest2()
        {
            int[] values   = { 17, 15, 23, 7, 9, 13 };
            var   variance = StatVar.Variance(values);

            Assert.AreEqual(27.67, Helpers.Rounding.RoundToTwo(variance));
        }
Esempio n. 3
0
        public void VarianceIntTest()
        {
            int[] values   = { 1, 2, 3, 4, 5 };
            var   variance = StatVar.Variance(values);

            Assert.AreEqual(2, Helpers.Rounding.RoundToFive(variance));
        }
Esempio n. 4
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");
        }
Esempio n. 5
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);
     }
 }
Esempio n. 6
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);
        }
Esempio n. 7
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);
        }
Esempio n. 8
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");
     }
 }
Esempio n. 9
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);
            }
        }
Esempio n. 10
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);
        }
Esempio n. 11
0
        //public static void GetBestMember(out string bestmem, out int bestmemposts)
        //{
        //    BBX.Data.Stats.GetBestMember(out bestmem, out bestmemposts, TableList.GetPostTableId());
        //}
        public static Hashtable GetMonthPostsStats(Hashtable monthpostsstats)
        {
            //return BBX.Data.Stats.GetMonthPostsStats(monthpostsstats, TableList.GetPostTableId());
            //var dic = Post.GetMonthPostsStats();
            // 不要啥啥的重复计算,直接从统计表拿数据即可
            var list = StatVar.FindAllByType("monthposts");
            var max  = 0;

            foreach (var item in list)
            {
                //StatVar.Update("monthposts", item.Key, item.Value);

                var v = item.IntValue;
                if (v > max)
                {
                    max = v;
                }
                monthpostsstats[item.Variable] = v;
            }
            monthpostsstats["maxcount"] = max;
            return(monthpostsstats);
        }
Esempio n. 12
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");
        }
Esempio n. 13
0
 private void SetValue(StatVar statvar, Hashtable ht)
 {
     ht[statvar.Variable] = statvar.Value;
 }
Esempio n. 14
0
        protected override void ShowPage()
        {
            this.pagetitle = "统计";
            if (!this.usergroupinfo.AllowViewstats && (!(DNTRequest.GetString("type") == "trend") || !(DNTRequest.GetString("xml") == "1")))
            {
                base.AddErrLine("您所在的用户组 ( <b>" + this.usergroupinfo.GroupTitle + "</b> ) 没有查看统计信息的权限");
                this.needlogin = (this.userid < 1);
                return;
            }
            this.statscachelife = ((this.statscachelife <= 0) ? this.statscachelife : this.config.Statscachelife);

            var allStats = Stat.GetAll();

            this.statstatus             = this.config.Statstatus;
            this.totalstats["hits"]     = 0;
            this.totalstats["maxmonth"] = 0;
            this.totalstats["guests"]   = 0;
            this.totalstats["visitors"] = 0;
            foreach (Stat item in allStats)
            {
                string a;
                if ((a = item.Type) != null)
                {
                    if (!(a == "total"))
                    {
                        if (!(a == "os"))
                        {
                            if (!(a == "browser"))
                            {
                                if (!(a == "month"))
                                {
                                    if (!(a == "week"))
                                    {
                                        if (a == "hour")
                                        {
                                            this.SetValue(item, this.hourstats);
                                            if (item.Count > this.maxhour)
                                            {
                                                this.maxhour     = item.Count;
                                                this.maxhourfrom = item.Variable.ToInt(0);
                                                this.maxhourto   = this.maxhourfrom + 1;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        this.SetValue(item, this.weekstats);
                                        if (item.Count > this.maxweek)
                                        {
                                            this.maxweek      = item.Count;
                                            this.dayofmaxweek = item.Variable;
                                        }
                                    }
                                }
                                else
                                {
                                    this.SetValue(item, this.monthstats);
                                    if (item.Count > this.maxmonth)
                                    {
                                        this.maxmonth        = item.Count;
                                        this.yearofmaxmonth  = item.Variable.ToInt(0) / 100;
                                        this.monthofmaxmonth = item.Variable.ToInt(0) - this.yearofmaxmonth * 100;
                                    }
                                }
                            }
                            else
                            {
                                this.SetValue(item, this.browserstats);
                                this.maxbrowser = ((item.Count > this.maxbrowser) ? item.Count : this.maxbrowser);
                            }
                        }
                        else
                        {
                            this.SetValue(item, this.osstats);
                            this.maxos = ((item.Count > this.maxos) ? item.Count : this.maxos);
                        }
                    }
                    else
                    {
                        this.SetValue(item, this.totalstats);
                    }
                }
            }
            //List<StatVarInfo> allStatVars = Stats.GetAllStatVars();
            //var allStatVars = StatVar.GetAll();
            foreach (var item in StatVar.GetAll())
            {
                if ((item.Variable != "lastupdate" || !Utils.IsNumeric(item.Value)) && item.Type != null)
                {
                    switch (item.Type)
                    {
                    case "dayposts":
                        this.SetValue(item, this.daypostsstats);
                        break;

                    case "creditsrank":
                        this.SetValue(item, this.creditsrankstats);
                        break;

                    case "forumsrank":
                        this.SetValue(item, this.forumsrankstats);
                        break;

                    case "postsrank":
                        this.SetValue(item, this.postsrankstats);
                        break;

                    case "main":
                        //this.SetValue(item, this.mainstats);
                        mainstats[item.Variable] = item.Value;
                        break;

                    case "monthposts":
                        this.SetValue(item, this.monthpostsstats);
                        break;

                    case "onlines":
                        this.SetValue(item, this.onlinesstats);
                        break;

                    case "team":
                        this.SetValue(item, this.teamstats);
                        break;

                    case "trade":
                        this.SetValue(item, this.tradestats);
                        break;
                    }
                }
            }
            this.type = DNTRequest.GetString("type");
            if ((String.IsNullOrEmpty(this.type) && !this.statstatus) || this.type == "posts")
            {
                StatVar.DeleteOldDayposts();
                this.monthpostsstats = Stats.GetMonthPostsStats(this.monthpostsstats);
                this.maxmonthposts   = (int)this.monthpostsstats["maxcount"];
                this.monthpostsstats.Remove("maxcount");
                this.daypostsstats = Stats.GetDayPostsStats(this.daypostsstats);
                this.maxdayposts   = (int)this.daypostsstats["maxcount"];
                this.daypostsstats.Remove("maxcount");
            }
            string key2;

            switch (key2 = this.type)
            {
            case "views":
                this.GetViews();
                return;

            case "client":
                this.GetClient();
                return;

            case "posts":
                this.GetPosts();
                return;

            case "forumsrank":
                this.GetForumsRank();
                return;

            case "topicsrank":
                this.GetTopicsRank();
                return;

            case "postsrank":
                this.GetPostsRank();
                return;

            case "creditsrank":
                this.GetCreditsRank();
                return;

            case "trade":
                this.GetTrade();
                return;

            case "onlinetime":
                this.GetOnlinetime();
                return;

            case "team":
                this.GetTeam();
                return;

            case "modworks":
                this.GetModWorks();
                return;

            case "trend":
                this.GetTrend();
                return;

            case "":
                this.Default();
                return;
            }
            base.AddErrLine("未定义操作请返回");
            base.SetShowBackLink(false);
        }