2014-03-11 14:23:51 +11:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2014-10-02 21:05:20 +10:00
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
|
using System.Globalization;
|
2014-03-11 14:23:51 +11:00
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Web.Security;
|
|
|
|
|
|
using Umbraco.Core;
|
2014-10-02 21:05:20 +10:00
|
|
|
|
using Umbraco.Core.Dynamics;
|
2014-03-11 14:23:51 +11:00
|
|
|
|
using Umbraco.Core.Models;
|
2014-07-08 18:07:59 +10:00
|
|
|
|
using Umbraco.Core.Models.Membership;
|
2014-03-11 14:23:51 +11:00
|
|
|
|
using Umbraco.Core.Models.PublishedContent;
|
2014-04-02 11:13:54 +02:00
|
|
|
|
using Umbraco.Core.PropertyEditors;
|
|
|
|
|
|
using Umbraco.Core.Services;
|
2014-03-11 14:23:51 +11:00
|
|
|
|
using Umbraco.Web.Models;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Web.PublishedCache
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Exposes a member object as IPublishedContent
|
|
|
|
|
|
/// </summary>
|
2015-08-31 18:59:51 +02:00
|
|
|
|
public sealed class MemberPublishedContent : PublishedContentWithKeyBase
|
2014-03-11 14:23:51 +11:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
private readonly IMember _member;
|
2014-07-08 18:07:59 +10:00
|
|
|
|
private readonly IMembershipUser _membershipUser;
|
2014-04-02 11:13:54 +02:00
|
|
|
|
private readonly IPublishedProperty[] _properties;
|
2014-03-11 14:23:51 +11:00
|
|
|
|
private readonly PublishedContentType _publishedMemberType;
|
|
|
|
|
|
|
2014-07-08 18:07:59 +10:00
|
|
|
|
public MemberPublishedContent(IMember member)
|
2014-03-11 14:23:51 +11:00
|
|
|
|
{
|
2014-07-08 18:07:59 +10:00
|
|
|
|
if (member == null) throw new ArgumentNullException("member");
|
2014-03-11 14:23:51 +11:00
|
|
|
|
|
|
|
|
|
|
_member = member;
|
2014-07-08 18:07:59 +10:00
|
|
|
|
_membershipUser = member;
|
2014-03-11 14:23:51 +11:00
|
|
|
|
_publishedMemberType = PublishedContentType.Get(PublishedItemType.Member, _member.ContentTypeAlias);
|
|
|
|
|
|
if (_publishedMemberType == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new InvalidOperationException("Could not get member type with alias " + _member.ContentTypeAlias);
|
|
|
|
|
|
}
|
2014-04-02 11:13:54 +02:00
|
|
|
|
|
|
|
|
|
|
_properties = PublishedProperty.MapProperties(_publishedMemberType.PropertyTypes, _member.Properties,
|
2014-04-16 18:46:24 +02:00
|
|
|
|
(t, v) => new RawValueProperty(t, v ?? string.Empty))
|
2014-04-02 11:13:54 +02:00
|
|
|
|
.ToArray();
|
2014-03-11 14:23:51 +11:00
|
|
|
|
}
|
|
|
|
|
|
|
2014-04-02 11:13:54 +02:00
|
|
|
|
|
2014-03-11 14:23:51 +11:00
|
|
|
|
#region Membership provider member properties
|
|
|
|
|
|
public string Email
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _membershipUser.Email; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string UserName
|
|
|
|
|
|
{
|
2014-07-08 18:07:59 +10:00
|
|
|
|
get { return _membershipUser.Username; }
|
2014-03-11 14:23:51 +11:00
|
|
|
|
}
|
|
|
|
|
|
public string PasswordQuestion
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _membershipUser.PasswordQuestion; }
|
|
|
|
|
|
}
|
2014-03-11 14:35:49 +11:00
|
|
|
|
public string Comments
|
2014-03-11 14:23:51 +11:00
|
|
|
|
{
|
2014-07-08 18:07:59 +10:00
|
|
|
|
get { return _membershipUser.Comments; }
|
2014-03-11 14:23:51 +11:00
|
|
|
|
}
|
|
|
|
|
|
public bool IsApproved
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _membershipUser.IsApproved; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public bool IsLockedOut
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _membershipUser.IsLockedOut; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public DateTime LastLockoutDate
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _membershipUser.LastLockoutDate; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public DateTime CreationDate
|
|
|
|
|
|
{
|
2014-07-08 18:07:59 +10:00
|
|
|
|
get { return _membershipUser.CreateDate; }
|
2014-03-11 14:23:51 +11:00
|
|
|
|
}
|
|
|
|
|
|
public DateTime LastLoginDate
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _membershipUser.LastLoginDate; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public DateTime LastActivityDate
|
|
|
|
|
|
{
|
2014-07-08 18:07:59 +10:00
|
|
|
|
get { return _membershipUser.LastLoginDate; }
|
2014-03-11 14:23:51 +11:00
|
|
|
|
}
|
|
|
|
|
|
public DateTime LastPasswordChangedDate
|
|
|
|
|
|
{
|
2014-07-08 18:07:59 +10:00
|
|
|
|
get { return _membershipUser.LastPasswordChangeDate; }
|
2014-03-11 14:23:51 +11:00
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region IPublishedContent
|
|
|
|
|
|
public override PublishedItemType ItemType
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return PublishedItemType.Member; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool IsDraft
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return false; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override IPublishedContent Parent
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return null; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override IEnumerable<IPublishedContent> Children
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return Enumerable.Empty<IPublishedContent>(); }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override ICollection<IPublishedProperty> Properties
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _properties; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override IPublishedProperty GetProperty(string alias, bool recurse)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (recurse)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new NotSupportedException();
|
|
|
|
|
|
}
|
|
|
|
|
|
return GetProperty(alias);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override IPublishedProperty GetProperty(string alias)
|
|
|
|
|
|
{
|
2014-10-02 21:05:20 +10:00
|
|
|
|
switch (alias)
|
|
|
|
|
|
{
|
|
|
|
|
|
case "Email":
|
|
|
|
|
|
return new PropertyResult("Email", Email, PropertyResultType.CustomProperty);
|
|
|
|
|
|
case "UserName":
|
|
|
|
|
|
return new PropertyResult("UserName", UserName, PropertyResultType.CustomProperty);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-03-11 14:23:51 +11:00
|
|
|
|
return _properties.FirstOrDefault(x => x.PropertyTypeAlias.InvariantEquals(alias));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override PublishedContentType ContentType
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _publishedMemberType; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override int Id
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.Id; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-08-31 18:59:51 +02:00
|
|
|
|
public override Guid Key
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.Key; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-03-11 14:23:51 +11:00
|
|
|
|
public override int TemplateId
|
|
|
|
|
|
{
|
|
|
|
|
|
get { throw new NotSupportedException(); }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override int SortOrder
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return 0; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string Name
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.Name; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string UrlName
|
|
|
|
|
|
{
|
|
|
|
|
|
get { throw new NotSupportedException(); }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string DocumentTypeAlias
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.ContentTypeAlias; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override int DocumentTypeId
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.ContentType.Id; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string WriterName
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.GetCreatorProfile().Name; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string CreatorName
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.GetCreatorProfile().Name; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override int WriterId
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.CreatorId; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override int CreatorId
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.CreatorId; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string Path
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.Path; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override DateTime CreateDate
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.CreateDate; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override DateTime UpdateDate
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.UpdateDate; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override Guid Version
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.Version; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override int Level
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _member.Level; }
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|