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); }
public void VarianceTest2() { int[] values = { 17, 15, 23, 7, 9, 13 }; var variance = StatVar.Variance(values); Assert.AreEqual(27.67, Helpers.Rounding.RoundToTwo(variance)); }
public void VarianceIntTest() { int[] values = { 1, 2, 3, 4, 5 }; var variance = StatVar.Variance(values); Assert.AreEqual(2, Helpers.Rounding.RoundToFive(variance)); }
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"); }
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); } }
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); }
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); }
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"); } }
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); } }
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); }
//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); }
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"); }
private void SetValue(StatVar statvar, Hashtable ht) { ht[statvar.Variable] = statvar.Value; }
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); }