コード例 #1
0
ファイル: RenderHelper.cs プロジェクト: zhdwwf/wojilu
        // 如果缓存中存在,则直接返回
        void publisher_Begin_ProcessMvc(object sender, MvcEventArgs e)
        {
            String cPath = e.ctx.url.Path;

            if (cPath.ToLower().IndexOf("/layouts/topnav/nav") >= 0)
            {
                if (e.ctx.web.UserIsLogin == false)
                {
                    OnlineManager.Refresh(e.ctx);

                    OnlineStats o          = OnlineStats.Instance;
                    String      onlineInfo = "{\"count\":" + o.Count + ",\"member\":" + o.MemberCount + ",\"guest\":" + o.GuestCount + ",\"max\":" + o.MaxCount + ",\"maxTime\":\"" + o.MaxTime.ToShortDateString() + "\"}";

                    String isSite   = cPath.IndexOf("/Layouts/") == 0 ? "true" : "false";
                    String connects = getConnectLinks();

                    //String json = "{\"viewer\":{\"obj\" :{\"Id\":0,\"Name\":\"guest\",\"Url\":\"\"},\"Id\":0,\"IsLogin\":false,\"IsAdministrator\":false,\"HasPic\":false}, \"owner\":{\"IsSite\":" + isSite + ", \"LoginValidImg\":" + config.Instance.Site.LoginNeedImgValidation.ToString().ToLower() + "},\"navInfo\":{\"topNavDisplay\":" + config.Instance.Site.TopNavDisplay + "}, \"online\":" + onlineInfo + "}";
                    String json = "{\"viewer\":{\"obj\" :{\"Id\":0,\"Name\":\"guest\",\"Url\":\"\"},\"Id\":0,\"IsLogin\":false,\"IsAdministrator\":false,\"HasPic\":false}, \"owner\":{\"IsSite\":" + isSite + ", \"LoginValidImg\":" + config.Instance.Site.LoginNeedImgValidation.ToString().ToLower() + "},\"navInfo\":{\"topNavDisplay\":" + config.Instance.Site.TopNavDisplay + "}, \"online\":" + onlineInfo + ", \"connects\":" + connects + "}";



                    e.ctx.RenderJson(json);
                    e.ctx.utils.end();
                    e.ctx.utils.skipRender();

                    return;
                }
            }
        }
コード例 #2
0
        private Dictionary <String, object> getOnlineDic()
        {
            OnlineStats o = OnlineStats.Instance;

            Dictionary <String, object> dic = new Dictionary <string, object>();

            dic.Add("count", o.Count);
            dic.Add("member", o.MemberCount);
            dic.Add("guest", o.GuestCount);
            dic.Add("max", o.MaxCount);
            dic.Add("maxTime", o.MaxTime.ToShortDateString());

            return(dic);
        }
コード例 #3
0
ファイル: RenderHelper.cs プロジェクト: yumingzhe1012/wojilu
        // 如果缓存中存在,则直接返回
        void publisher_Begin_ProcessMvc(object sender, MvcEventArgs e)
        {
            String cPath = e.ctx.url.Path;

            if (cPath.IndexOf("/Layouts/TopNav/Nav") >= 0)
            {
                if (e.ctx.web.UserIsLogin == false)
                {
                    OnlineManager.Refresh(e.ctx);

                    OnlineStats o          = OnlineStats.Instance;
                    String      onlineInfo = "{\"count\":" + o.Count + ",\"member\":" + o.MemberCount + ",\"guest\":" + o.GuestCount + ",\"max\":" + o.MaxCount + ",\"maxTime\":\"" + o.MaxTime.ToShortDateString() + "\"}";

                    String isSite = cPath.IndexOf("/Layouts/") == 0 ? "true" : "false";

                    String json = "{\"viewer\":{\"obj\" :{\"Id\":0,\"Name\":\"guest\",\"Url\":\"\"},\"Id\":0,\"IsLogin\":false,\"IsAdministrator\":false,\"HasPic\":false}, \"owner\":{\"IsSite\":" + isSite + ", \"LoginValidImg\":" + config.Instance.Site.LoginNeedImgValidation.ToString().ToLower() + "},\"navInfo\":{\"topNavDisplay\":" + config.Instance.Site.TopNavDisplay + "}, \"online\":" + onlineInfo + "}";


                    e.ctx.RenderJson(json);
                    e.ctx.utils.end();
                    e.ctx.utils.skipRender();

                    return;
                }
            }


            //------------------------------------------------------

            if (ch.shouldCache(e.ctx) == false)
            {
                return;
            }
            String pageContent = ch.ReadCache(e.ctx.url.PathAndQuery, e.ctx);

            if (pageContent == null)
            {
                return;
            }
            //pageContent = pageContent.Replace( "#{elapseTime}", getTimeStr() );
            pageContent += getTimeJs();

            e.ctx.web.ResponseWrite(pageContent.ToString());
            e.ctx.utils.end();
            e.ctx.utils.skipRender();

            logger.Info("----------------------------------cacheEnd------------------------------------");
            LogManager.Flush();
        }
コード例 #4
0
        private void UpdateOnlineCallback(object state)
        {
            _updateOnlineTimer.Change(UpdateOnlineInterval, Timeout.Infinite);

            AddLostSoulsToDatabase();

            using (var databaseContext = new DynamicDBContext())
            {
                var onlineUsers = Bot.DiscordClient.Presences.Where(p => !p.Value.User.IsBot && p.Value.Status != UserStatus.Offline).ToList();
                foreach (var user in onlineUsers)
                {
                    var userId      = user.Value.User.Id.ToString();
                    var onlineStats = databaseContext.OnlineStats.FirstOrDefault(p => p.UserID == userId);

                    if (onlineStats == null)
                    {
                        // Remove seconds and milliseconds from date for better ordering
                        var now      = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
                        var fixedNow = DateTime.Parse(now);

                        onlineStats = new OnlineStats
                        {
                            UserID     = user.Value.User.Id.ToString(),
                            LastOnline = fixedNow,
                            TotalTime  = 0
                        };

                        databaseContext.OnlineStats.Add(onlineStats);
                    }
                    else
                    {
                        onlineStats.LastOnline = DateTime.Now;
                        onlineStats.TotalTime += UpdateOnlineInterval / 1000 / 60;
                    }
                }

                databaseContext.SaveChanges();
            }
        }