⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usercookie.cs

📁 本系统是在asp版《在线文件管理器》的基础上设计制作
💻 CS
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
//     Copyright (c) Telligent Systems Corporation.  All rights reserved.
// </copyright> 
//------------------------------------------------------------------------------

using System;
using System.Web;


namespace CommunityServer.Components {
    /// <summary>
    /// Summary description for UserCookie.
    /// </summary>
    public class UserCookie {

        #region Member variables and constructor
        protected HttpCookie userCookie;
        string cookieName;//= "CommunityServer-UserCookie";
        CSContext csContext = CSContext.Current;
        HttpContext context = null;
        User user;
        string cookieKey;

        public UserCookie( User user ) {
            this.user = user;

            //Allows different users on the same machine to hide unique sets of forums
            cookieName = "CommunityServer-UserCookie" + user.UserID.ToString();
            context = csContext.Context;
            userCookie = context.Request.Cookies[cookieName];
            
            //use a global key
            cookieKey = string.Format("hfg-{0}",CSContext.Current.ApplicationType);
            

            // Did we find a cookie?
            //
            if (userCookie == null) {
                userCookie = new HttpCookie(cookieName);
            } else {
                userCookie = context.Request.Cookies[cookieName];
            }



        }
        #endregion

        #region Private helper functions
        protected void WriteCookie() {
            userCookie.Expires = DateTime.Now.AddYears(1);
            context.Response.Cookies.Add(userCookie);
        }
        #endregion

        #region Last Visit
        public DateTime LastVisit {
            get {
                if (userCookie["lvd"] == null) {
                    userCookie["lvd"] = DateTime.Parse("1/1/1999").ToString();
                } else if (DateTime.Parse(userCookie["sd"]) < DateTime.Now.AddMinutes(20)) {
                    userCookie["lvd"] = userCookie["sd"];
                }

                userCookie["sd"] = DateTime.Now.ToString();

                // Write the updated cookie
                WriteCookie();

                return DateTime.Parse(userCookie["lvd"]);
            }
        }
        #endregion

        #region Forum Filter/View Settings
        public void SaveForumOptions (int forumID, string settings) {
            userCookie["fo" + forumID] = settings;

            // Write the updated cookie
            WriteCookie();
        }

        public ForumUserOptions GetForumOptions (int forumID) {
            return new ForumUserOptions(userCookie["fo" + forumID]);
        }
        #endregion

        #region Hidden forum groups
        public string[] HiddenGroups {

            get {
                // Do we have values?
                //
                
                if (userCookie.Values[cookieKey] != null)
                    return userCookie.Values[cookieKey].Split(',');

                return new string[0];
            }
        }

        public void RemoveHiddenForumGroup(int forumGroupID) {

            string hfg = "," + userCookie.Values[cookieKey] + ",";

            // Add some details to the string to do a simple replace
            //
            hfg = hfg.Replace("," + forumGroupID + ",", ",");

            // Trim the string
            //
            hfg = hfg.TrimStart(',').TrimEnd(',');

            userCookie.Values[cookieKey] = hfg;

            WriteCookie();
        }

        public void AddHiddenForumGroup(int forumGroupID) {
            string[] s = HiddenGroups;
            string hfg = string.Empty;

            // Do we already have this forum group
            //
            for (int i = 0; i < s.Length; i++)
                if (s[i] == forumGroupID.ToString())
                    return;

            string[] s1 = new String[s.Length + 1];
            s.CopyTo(s1, 0);
            s1[s1.Length - 1] = forumGroupID.ToString();
                
            for (int i=0; i<s1.Length; i++)
                hfg = hfg + s1[i] + ",";

            // Trim off the extra comma
            //
            hfg = hfg.TrimStart(',').TrimEnd(',');

            userCookie.Values[cookieKey] = hfg;

            WriteCookie();
        }
        #endregion

    }

    public class ForumUserOptions {
        public SortThreadsBy SortBy = SortThreadsBy.LastPost;
        public SortOrder SortOrder = SortOrder.Descending;
        public ThreadUsersFilter UserFilter = ThreadUsersFilter.All;
        public ThreadDateFilterMode DateFilter = ThreadDateFilterMode.All;
        public bool HideReadPosts = false;
        public bool HasSettings = false;

        public ForumUserOptions(string settings) {

            if ((settings == null) || (settings == string.Empty))
                return;

            HasSettings = true;

            try {
                // Serialized format is: [SortBy]:[SortOrder]:[DateFilter]:[HideReadPosts]:[UserFilter]
                string[] s = settings.Split(':');

                SortBy = (SortThreadsBy) int.Parse(s[0]);
                SortOrder = (SortOrder) int.Parse(s[1]);
                DateFilter = (ThreadDateFilterMode) int.Parse(s[2]);

                if (s[3] == "T")
                    HideReadPosts = true;
                else
                    HideReadPosts = false;

                UserFilter = (ThreadUsersFilter) int.Parse(s[4]);
            } catch {}

        }

    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -