Exemple #1
0
        public PageBase()
        {
            LoadUrlConfig();
            userid = ForumUtils.GetCookie("userid").ToInt(-1);
            if (this.userid == -1 && this.config.Guestcachepagetimeout > 0 && this.GetUserCachePage(this.pagename))
            {
                return;
            }
            meta += PageHelper.AddMetaInfo(this.config.Seokeywords, this.config.Seodescription, this.config.Seohead);
            if (this.config.Nocacheheaders == 1)
            {
                Response.BufferOutput    = false;
                Response.ExpiresAbsolute = DateTime.Now.AddDays(-1.0);
                Response.Cache.SetExpires(DateTime.Now.AddDays(-1.0));
                Response.Expires      = 0;
                Response.CacheControl = "no-cache";
                Response.Cache.SetNoStore();
            }

            //  反射给所有字符串字段复制空字符串,页面模板因为这个问题已经故障数十次
            foreach (var fi in this.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
            {
                if (fi.FieldType == typeof(String))
                {
                    var str = (String)this.GetValue(fi);
                    if (str == null)
                    {
                        this.SetValue(fi, "");
                    }
                }
            }
        }
Exemple #2
0
        public QzoneConnectContext(String callback = null)
        {
            var cfg = BaseConfigInfo.Current;

            if (String.IsNullOrEmpty(callback))
            {
                callback = cfg.Forumpath;
            }
            Callback = callback;

            Config = QzoneConnectConfigInfo.Current;

            var context = HttpContext.Current;
            var req     = context.Request;

            _redirect = String.Format("{0}://{1}{2}", req.Url.Scheme, req.Url.Host, cfg.Forumpath + Config.QzoneConnectPage + HttpUtility.UrlEncode("?act=access&callback=" + callback));

            var _rnd = new Random();

            _state = _rnd.Next(100000, 999999).ToString();

            Current = this;

            //var uid = ForumUtils.GetCookie("userid").ToInt(-1);
            Token = QzoneConnectToken.FindByUid(ForumUtils.GetCookie("userid").ToInt());
        }
Exemple #3
0
        //public static List<TopicInfo> GetAttentionTopics(string fidList, Int32 tpp, Int32 pageIndex, string keyword)
        //{
        //    return BBX.Data.Topics.GetAttentionTopics(fidList, tpp, pageIndex, keyword);
        //}

        //public static void UpdateTopicAttentionByTidList(string tidList, Int32 attention)
        //{
        //    BBX.Data.Topics.UpdateTopicAttentionByTidList(tidList, attention);
        //}

        //public static void UpdateTopicAttentionByFidList(string fidList, Int32 datetime)
        //{
        //    BBX.Data.Topics.UpdateTopicAttentionByFidList(fidList, 0, DateTime.Now.AddDays((double)(-(double)datetime)).ToString());
        //}

        /// <summary>标记为已浏览,保存在Cookie中</summary>
        /// <param name="topic"></param>
        public static void MarkOldTopic(Topic topic)
        {
            var ids = ForumUtils.GetCookie("oldtopic").SplitAsInt().ToList();

            if (!ids.Contains(topic.ID) && DateTime.Now.AddMinutes(-600.0) < topic.LastPost)
            {
                ids.Add(topic.ID);
                // 如果超过最大数,干掉最小的那个
                if (ids.Count > 100)
                {
                    ids.RemoveAt(0);
                }
                ForumUtils.WriteCookie("oldtopic", ids.Join());
            }
        }
Exemple #4
0
        //public static DataTable GetAuditTopicList(string condition)
        //{
        //    return BBX.Data.Topics.GetAuditTopicList(condition);
        //}

        //public static string GetSearchTopicsCondition(Int32 fid, string keyWord, string displayOrder, string digest, string attachment, string poster, bool lowerUpper, string viewsMin, string viewsMax, string repliesMax, string repliesMin, string rate, string lastPost, DateTime postDateTimeStart, DateTime postDateTimeEnd)
        //{
        //    return BBX.Data.Topics.GetSearchTopicsCondition(fid, keyWord, displayOrder, digest, attachment, poster, lowerUpper, viewsMin, viewsMax, repliesMax, repliesMin, rate, lastPost, postDateTimeStart, postDateTimeEnd);
        //}

        //public static DataTable GetTopicNumber(string tagname, Int32 from, Int32 end, Int32 type)
        //{
        //    return BBX.Data.Topics.GetTopicNumber(tagname, from, end, type);
        //}

        //public static void DeleteRecycleTopic(Int32 recycleDay)
        //{
        //    string text = "";
        //    DataTable tidForModeratorManageLogByPostDateTime = BBX.Data.Topics.GetTidForModeratorManageLogByPostDateTime(DateTime.Now.AddDays((double)(-(double)recycleDay)));
        //    if (tidForModeratorManageLogByPostDateTime.Rows.Count > 0)
        //    {
        //        foreach (DataRow dataRow in tidForModeratorManageLogByPostDateTime.Rows)
        //        {
        //            text = text + dataRow["tid"].ToString() + ",";
        //        }
        //        TopicAdmins.DeleteTopics(text.Trim(','), 0, false);
        //    }
        //}

        //public static DataTable GetTopicsByCondition(string condition)
        //{
        //    return BBX.Data.Topics.GetTopicsByCondition(condition);
        //}

        //public static string GetTopicFilterCondition(string filter)
        //{
        //    return DatabaseProvider.GetInstance().GetTopicFilterCondition(filter);
        //}

        //private static void LoadTopicForumName(TopicInfo topicInfo)
        //{
        //	var forumInfo = Forums.GetForumInfo(topicInfo.Fid);
        //	topicInfo.Forumname = ((forumInfo == null) ? "" : forumInfo.Name);
        //}

        //private static void LoadTopicFolder(Int32 autocloseTime, Int32 newMinutes, Int32 hotReplyNumber, TopicInfo topicInfo)
        //{
        //    if (topicInfo.Closed == 0)
        //    {
        //        string text = ForumUtils.GetCookie("oldtopic") + "D";
        //        if (newMinutes > 0 && text.IndexOf("D" + topicInfo.Tid.ToString() + "D") == -1 && DateTime.Now.AddMinutes((double)(-1 * newMinutes)) < TypeConverter.StrToDateTime(topicInfo.Lastpost))
        //        {
        //            topicInfo.Folder = "new";
        //        }
        //        else
        //        {
        //            topicInfo.Folder = "old";
        //        }
        //        if (hotReplyNumber > 0 && topicInfo.Replies >= hotReplyNumber)
        //        {
        //            topicInfo.Folder += "hot";
        //        }
        //        if (autocloseTime > 0 && Utils.StrDateDiffHours(topicInfo.Postdatetime, autocloseTime * 24) > 0)
        //        {
        //            topicInfo.Closed = 1;
        //            topicInfo.Folder = "closed";
        //            return;
        //        }
        //    }
        //    else
        //    {
        //        topicInfo.Folder = "closed";
        //        if (topicInfo.Closed > 1)
        //        {
        //            Int32 tid = topicInfo.Tid;
        //            topicInfo.Tid = topicInfo.Closed;
        //            topicInfo.Closed = tid;
        //            topicInfo.Folder = "move";
        //        }
        //    }
        //}

        private static void LoadTopicFolder(Int32 autocloseTime, Int32 newMinutes, Int32 hotReplyNumber, Topic tp)
        {
            if (tp.Closed == 0)
            {
                string text = ForumUtils.GetCookie("oldtopic") + "D";
                if (newMinutes > 0 && text.IndexOf("D" + tp.ID + "D") == -1 && DateTime.Now < tp.LastPost.AddMinutes(newMinutes))
                {
                    tp.Folder = "new";
                }
                else
                {
                    tp.Folder = "old";
                }
                if (hotReplyNumber > 0 && tp.Replies >= hotReplyNumber)
                {
                    tp.Folder += "hot";
                }
                if (autocloseTime > 0 && tp.PostDateTime.AddHours(autocloseTime * 24) < DateTime.Now)
                {
                    tp.Closed = 1;
                    tp.Folder = "closed";
                    return;
                }
            }
            else
            {
                tp.Folder = "closed";
                if (tp.Closed > 1)
                {
                    Int32 tid = tp.ID;
                    // 下面这一行没有搞明白,主键被修改是非常危险的事情
                    //tp.Tid = tp.Closed;
                    tp.Closed = tid;
                    tp.Folder = "move";
                }
            }
        }
Exemple #5
0
        protected override void OnLoad(EventArgs e)
        {
            LoadTemplate();
            base.OnLoad(e);

            if (this.pagename != "forumlist.aspx" && this.pagename != "forumindex.aspx")
            {
                this.oluserinfo = Online.UpdateInfo();
            }
            else
            {
                try
                {
                    this.oluserinfo = Online.UpdateInfo();
                }
                catch
                {
                    Thread.Sleep(2000);
                    this.oluserinfo = Online.UpdateInfo();
                }
            }
            if (this.config.PostTimeStorageMedia == 1 && Utils.GetCookie("lastposttime") != "")
            {
                var lptime = DateTime.MinValue;
                if (DateTime.TryParse(Utils.GetCookie("lastposttime"), out lptime))
                {
                    this.oluserinfo.LastPostTime = lptime;
                }
            }
            if (userid > 0)
            {
                if (oluserinfo == null)
                {
                    XTrace.WriteLine("发现Cookie记录ID={0}已登录,但是未检测到登录对象", userid);
                }
                else if (userid != oluserinfo.UserID)
                {
                    XTrace.WriteLine("发现Cookie记录ID={0}已登录,实际登录对象ID={1}", userid, oluserinfo.UserID);
                }
            }
            this.userid      = this.oluserinfo.UserID;
            this.usergroupid = (int)this.oluserinfo.GroupID;
            this.username    = this.oluserinfo.UserName;
            this.password    = this.oluserinfo.Password;
            //2014-1-20 增加判断password是否为null,初次使用时使用QQ登陆,密码会为空
            this.userkey        = password != null ? (this.password.Length > 16) ? this.password.Substring(4, 8).Trim() : "" : "";
            this.lastposttime   = this.oluserinfo.LastPostTime;
            this.lastpostpmtime = this.oluserinfo.LastPostpmTime;
            this.lastsearchtime = this.oluserinfo.LastSearchTime;
            this.olid           = this.oluserinfo.ID;
            //this.isopenconnect = DiscuzCloud.GetCloudServiceEnableStatus("connect");
            if (this.userid > 0)
            {
                this.useravatar = Avatars.GetAvatarUrl(this.userid, AvatarSize.Small);
            }

            this.pmsound = ForumUtils.GetCookie("pmsound").ToInt(0);
            if (this.usergroupid == 4 || this.usergroupid == 5)
            {
                var user = BBX.Entity.User.FindByID(this.userid);
                //var user2 = user as IUser;
                if (user.GroupExpiry != 0 && user.GroupExpiry <= DateTime.Now.ToString("yyyyMMdd").ToInt(0))
                {
                    var creditsUserGroupId = CreditsFacade.GetCreditsUserGroupId((float)user.Credits);
                    this.usergroupid = ((creditsUserGroupId.ID != 0) ? creditsUserGroupId.ID : this.usergroupid);
                    //Users.UpdateUserGroup(this.userid, this.usergroupid);
                    user.GroupID = usergroupid;
                    user.Save();
                }
            }
            this.usergroupinfo = UserGroup.FindByID(this.usergroupid);
            this.useradminid   = this.usergroupinfo.RadminID;
            string userCreditsCookie = ForumUtils.GetUserCreditsCookie(this.userid, this.usergroupinfo.GroupTitle);

            if (userCreditsCookie != "")
            {
                string[] array = userCreditsCookie.Split(',');
                this.userinfotips = "<p><a class=\"drop\" onmouseover=\"showMenu(this.id);\" href=\"" + BaseConfigs.GetForumPath + "usercpcreditspay.aspx\" id=\"extcreditmenu\">" + array[0] + "</a> ";
                string text = this.userinfotips;
                this.userinfotips  = text + "<span class=\"pipe\">|</span>用户组: <a class=\"xi2\" id=\"g_upmine\" href=\"" + BaseConfigs.GetForumPath + "usercp.aspx\">" + array[1].Split(':')[1] + "</a></p>";
                this.userinfotips += "<ul id=\"extcreditmenu_menu\" class=\"p_pop\" style=\"display:none;\">";
                for (int i = 2; i < array.Length; i++)
                {
                    this.userinfotips += string.Format("<li><a> {0}</a></li>", array[i]);
                }
                this.userinfotips += "</ul>";
            }
            this.mainnavigation       = Nav.GetNavigationString(this.userid, this.useradminid);
            this.subnavigation        = Nav.GetSubNavigation();
            this.mainnavigationhassub = Nav.Root.Childs.GetItem <Int32>(Nav._.ID).ToArray();
            if (this.config.Closed == 1 && this.pagename != "login.aspx" && this.pagename != "logout.aspx" && this.pagename != "register.aspx" && this.useradminid != 1)
            {
                this.ShowMessage(1);
                return;
            }
            if (!Utils.InArray(this.pagename, "attachment.aspx"))
            {
                //this.onlineusercount = Online.Meta.Count;
                var st = Online.GetStat();
                this.onlineusercount = st.Total;
            }
            if (!this.ValidateUserPermission())
            {
                return;
            }

            if (this.userid != -1 && !Utils.InArray(this.pagename, "attachment.aspx"))
            {
                Online.UpdateOnlineTime(this.config.Oltimespan, this.userid);
            }
            var tmp = Template.FindByID(this.templateid);

            this.templatepath = tmp.Directory;
            if (!String.IsNullOrEmpty(tmp.Url) && tmp.Url.StartsWithIgnoreCase("http://"))
            {
                imagedir = tmp.Url.TrimEnd('/') + "/images";
                cssdir   = tmp.Url.TrimEnd('/');
            }
            else
            {
                imagedir = forumpath + "templates/" + tmp.Directory + "/images";
                cssdir   = forumpath + "templates/" + tmp.Directory;
            }
            if (!config.ImageServer.IsNullOrEmpty())
            {
                imagedir = config.ImageServer.TrimEnd("/") + imagedir;
            }
            if (!config.CssServer.IsNullOrEmpty())
            {
                cssdir = config.CssServer.TrimEnd("/") + cssdir;
            }

            this.topicidentifydir = this.forumpath + "images/identify";
            this.posticondir      = this.forumpath + "images/posticons";
            this.jsdir            = "javascript";
            if (!config.JsServer.IsNullOrEmpty())
            {
                jsdir = config.JsServer.EnsureEnd("/") + jsdir;
            }
            else
            {
                jsdir = this.rooturl + jsdir;
            }

            //this.nowdatetime = Utils.GetDateTime();
            //this.ispost = DNTRequest.IsPost();
            //this.isget = DNTRequest.IsGet();
            //this.link = "";
            //this.script = "";
            this.templatelistboxoptions = Caches.GetTemplateListBoxOptionsCache();
            string oldValue = string.Format("<li><a href=\"###\" onclick=\"window.location.href='{0}showtemplate.aspx?templateid={1}'\">", "", BaseConfigs.GetForumPath, this.templateid);
            string newValue = string.Format("<li class=\"current\"><a href=\"###\" onclick=\"window.location.href='{0}showtemplate.aspx?templateid={1}'\">", BaseConfigs.GetForumPath, this.templateid);

            this.templatelistboxoptions = this.templatelistboxoptions.Replace(oldValue, newValue);
            this.isLoginCode            = this.config.Seccodestatus.Contains("login.aspx");
            this.isseccode = (Utils.InArray(this.pagename, this.config.Seccodestatus) && this.usergroupinfo.IgnoresecCode == 0);
            this.headerad  = Advertisement.GetOneHeaderAd("", 0);
            this.footerad  = Advertisement.GetOneFooterAd("", 0);
            if (this.config.Allowchangewidth == 0)
            {
                Utils.WriteCookie("allowchangewidth", "");
            }

            if (this.pagename != "website.aspx" && (Utils.GetCookie("allowchangewidth") == "0" || (string.IsNullOrEmpty(Utils.GetCookie("allowchangewidth")) && this.config.Showwidthmode == 1)))
            {
                this.isnarrowpage = true;
            }
            if (this.isseccode && this.ispost && !this.ValidateVerifyCode())
            {
                return;
            }

            this.newtopicminute = this.config.Viewnewtopicminute;

            CanShow = true;

            this.ShowPage();
        }