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