Fixes: U4-4005 Member custom properties not saving from code, only from backend, wraps more of the getter functions in legacy member class with new member service methods, fixes paged result method when there are no results.

This commit is contained in:
Shannon
2014-01-13 18:36:08 +11:00
parent 23b0c89848
commit e74e8f9d73
6 changed files with 62 additions and 92 deletions

View File

@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.CompilerServices;
using System.Web;
using System.Xml;
@@ -11,6 +12,7 @@ using Umbraco.Core.Cache;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Rdbms;
using Umbraco.Core.Persistence.Querying;
using umbraco.cms.businesslogic.cache;
using umbraco.BusinessLogic;
using umbraco.DataLayer;
@@ -63,6 +65,12 @@ namespace umbraco.cms.businesslogic.member
#region Constructors
internal Member(IMember member)
: base(member)
{
SetupNode(member);
}
/// <summary>
/// Initializes a new instance of the Member class.
/// </summary>
@@ -103,20 +111,10 @@ namespace umbraco.cms.businesslogic.member
public static IEnumerable<Member> GetAllAsList()
{
var tmp = new List<Member>();
using (var dr = SqlHelper.ExecuteReader(
string.Format(_sQLOptimizedMany.Trim(), "1=1", "umbracoNode.text"),
SqlHelper.CreateParameter("@nodeObjectType", Member._objectType)))
{
while (dr.Read())
{
var m = new Member(dr.GetInt("id"), true);
m.PopulateMemberFromReader(dr);
tmp.Add(m);
}
}
return tmp.ToArray();
int totalRecs;
return ApplicationContext.Current.Services.MemberService.GetAllMembers(0, int.MaxValue, out totalRecs)
.Select(x => new Member(x))
.ToArray();
}
/// <summary>
@@ -149,7 +147,11 @@ namespace umbraco.cms.businesslogic.member
/// <returns></returns>
public static Member[] getMemberFromFirstLetter(char letter)
{
return GetMemberByName(letter.ToString(), true);
int totalRecs;
return ApplicationContext.Current.Services.MemberService.FindMembersByUsername(
letter.ToString(CultureInfo.InvariantCulture), 0, int.MaxValue, out totalRecs, StringPropertyMatchType.StartsWith)
.Select(x => new Member(x))
.ToArray();
}
public static Member[] GetMemberByName(string usernameToMatch, bool matchByNameInsteadOfLogin)
@@ -214,7 +216,7 @@ namespace umbraco.cms.businesslogic.member
{
if (mbt == null) throw new ArgumentNullException("mbt");
var loginName = (!string.IsNullOrEmpty(LoginName)) ? LoginName : Name;
var loginName = (string.IsNullOrEmpty(LoginName) == false) ? LoginName : Name;
if (string.IsNullOrEmpty(loginName))
throw new ArgumentException("The loginname must be different from an empty string", "loginName");
@@ -267,27 +269,12 @@ namespace umbraco.cms.businesslogic.member
/// <returns>The member with the specified loginname - null if no Member with the login exists</returns>
public static Member GetMemberFromLoginName(string loginName)
{
if (string.IsNullOrEmpty(loginName))
throw new ArgumentException("The username of a Member must be different from an emptry string", "loginName");
if (IsMember(loginName))
{
var o = SqlHelper.ExecuteScalar<object>(
"select nodeID from cmsMember where LoginName = @loginName",
SqlHelper.CreateParameter("@loginName", loginName));
Mandate.ParameterNotNullOrEmpty(loginName, "loginName");
if (o == null)
return null;
var found = ApplicationContext.Current.Services.MemberService.GetByUsername(loginName);
if (found == null) return null;
int tmpId;
if (!int.TryParse(o.ToString(), out tmpId))
return null;
return new Member(tmpId);
}
else
HttpContext.Current.Trace.Warn("No member with loginname: " + loginName + " Exists");
return null;
return new Member(found);
}
/// <summary>
@@ -302,18 +289,10 @@ namespace umbraco.cms.businesslogic.member
if (string.IsNullOrEmpty(email))
return null;
var o = SqlHelper.ExecuteScalar<object>(
"select nodeID from cmsMember where Email = @email",
SqlHelper.CreateParameter("@email", email.ToLower()));
var found = ApplicationContext.Current.Services.MemberService.GetByEmail(email);
if (found == null) return null;
if (o == null)
return null;
int tmpId;
if (!int.TryParse(o.ToString(), out tmpId))
return null;
return new Member(tmpId);
return new Member(found);
}
/// <summary>
@@ -328,21 +307,11 @@ namespace umbraco.cms.businesslogic.member
if (string.IsNullOrEmpty(email))
return null;
var tmp = new List<Member>();
using (var dr = SqlHelper.ExecuteReader(string.Format(_sQLOptimizedMany.Trim(),
"Email = @email",
"umbracoNode.text"),
SqlHelper.CreateParameter("@nodeObjectType", Member._objectType),
SqlHelper.CreateParameter("@email", email.ToLower())))
{
while (dr.Read())
{
var m = new Member(dr.GetInt("id"), true);
m.PopulateMemberFromReader(dr);
tmp.Add(m);
}
}
return tmp.ToArray();
int totalRecs;
var found = ApplicationContext.Current.Services.MemberService.FindMembersByEmail(
email, 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Exact);
return found.Select(x => new Member(x)).ToArray();
}
/// <summary>
@@ -425,16 +394,7 @@ namespace umbraco.cms.businesslogic.member
/// <param name="dt">The membertype which are being deleted</param>
public static void DeleteFromType(MemberType dt)
{
var objs = getContentOfContentType(dt);
foreach (var c in objs)
{
// due to recursive structure document might already been deleted..
if (IsNode(c.UniqueId))
{
var tmp = new Member(c.UniqueId);
tmp.delete();
}
}
ApplicationContext.Current.Services.MemberService.DeleteMembersOfType(dt.Id);
}
#endregion
@@ -766,13 +726,7 @@ namespace umbraco.cms.businesslogic.member
/// <returns></returns>
public string GetPassword()
{
if (string.IsNullOrEmpty(_password))
{
_password = SqlHelper.ExecuteScalar<string>(
"select Password from cmsMember where nodeId = @id",
SqlHelper.CreateParameter("@id", Id));
}
return _password;
return Content.Password;
}
/// <summary>
@@ -1113,19 +1067,7 @@ namespace umbraco.cms.businesslogic.member
return HttpContext.Current.User.Identity.IsAuthenticated;
}
/// <summary>
/// Make a lookup in the database to verify if a member truely exists
/// </summary>
/// <param name="nodeId">The node id of the member</param>
/// <returns>True is a record exists in db</returns>
private static bool MemberExists(int nodeId)
{
return ApplicationContext.Current.Services.MemberService.Exists(nodeId);
}
/// <summary>
/// Gets the current visitors memberid
/// </summary>