Example #1
0
        public static IUser GetUser(int userId, string username, bool isCacheable, bool userIsOnline)
        {
            IUser result;

            if (userId == 0 && !string.IsNullOrEmpty(username) && username.Equals("Anonymous", System.StringComparison.CurrentCultureIgnoreCase))
            {
                result = Users.GetAnonymousUser();
            }
            else
            {
                System.Collections.Hashtable hashtable = Users.UserCache();
                string key = (userId > 0) ? Users.UserKey(userId.ToString(System.Globalization.CultureInfo.InvariantCulture)) : Users.UserKey(username);
                if (isCacheable)
                {
                    IUser user = hashtable[key] as IUser;
                    if (user != null)
                    {
                        result = user;
                        return(result);
                    }
                }
                HiMembershipUser membershipUser = UserHelper.GetMembershipUser(userId, username, userIsOnline);
                if (membershipUser == null)
                {
                    result = Users.GetAnonymousUser();
                }
                else
                {
                    UserFactory userFactory = UserFactory.Create(membershipUser.UserRole);
                    IUser       user        = userFactory.GetUser(membershipUser);
                    if (isCacheable)
                    {
                        hashtable[Users.UserKey(user.Username)] = user;
                        hashtable[Users.UserKey(user.UserId.ToString(System.Globalization.CultureInfo.InvariantCulture))] = user;
                    }
                    result = user;
                }
            }
            return(result);
        }