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); }
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"); }