Adds tag support to member repository.
This commit is contained in:
@@ -328,7 +328,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
//lastly, check if we are a creating a published version , then update the tags table
|
||||
if (entity.Published)
|
||||
{
|
||||
UpdatePropertyTags(entity);
|
||||
UpdatePropertyTags(entity, _tagRepository);
|
||||
}
|
||||
|
||||
((ICanBeDirty)entity).ResetDirtyProperties();
|
||||
@@ -470,7 +470,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
//lastly, check if we are a newly published version and then update the tags table
|
||||
if (isNewPublishedVersion)
|
||||
{
|
||||
UpdatePropertyTags(entity);
|
||||
UpdatePropertyTags(entity, _tagRepository);
|
||||
}
|
||||
|
||||
((ICanBeDirty)entity).ResetDirtyProperties();
|
||||
@@ -569,34 +569,6 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Updates the tag repository with any tag enabled properties and their values
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
private void UpdatePropertyTags(IContentBase entity)
|
||||
{
|
||||
foreach (var tagProp in entity.Properties.Where(x => x.TagSupport.Enable))
|
||||
{
|
||||
if (tagProp.TagSupport.Behavior == PropertyTagBehavior.Remove)
|
||||
{
|
||||
//remove the specific tags
|
||||
_tagRepository.RemovePublishedTagsFromProperty(
|
||||
entity.Id,
|
||||
tagProp.Alias,
|
||||
tagProp.TagSupport.Tags.Select(x => new Tag { Text = x.Item1, Group = x.Item2 }));
|
||||
}
|
||||
else
|
||||
{
|
||||
//assign the tags
|
||||
_tagRepository.AssignPublishedTagsToProperty(
|
||||
entity.Id,
|
||||
tagProp.Alias,
|
||||
tagProp.TagSupport.Tags.Select(x => new Tag { Text = x.Item1, Group = x.Item2 }),
|
||||
tagProp.TagSupport.Behavior == PropertyTagBehavior.Replace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Private method to create a content object from a DocumentDto, which is used by Get and GetByVersion.
|
||||
/// </summary>
|
||||
|
||||
@@ -254,7 +254,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
property.Id = keyDictionary[property.PropertyTypeId];
|
||||
}
|
||||
|
||||
UpdatePropertyTags(entity);
|
||||
UpdatePropertyTags(entity, _tagRepository);
|
||||
|
||||
((ICanBeDirty)entity).ResetDirtyProperties();
|
||||
}
|
||||
@@ -333,7 +333,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
}
|
||||
}
|
||||
|
||||
UpdatePropertyTags(entity);
|
||||
UpdatePropertyTags(entity, _tagRepository);
|
||||
|
||||
((ICanBeDirty)entity).ResetDirtyProperties();
|
||||
}
|
||||
@@ -369,35 +369,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Updates the tag repository with any tag enabled properties and their values
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
private void UpdatePropertyTags(IContentBase entity)
|
||||
{
|
||||
foreach (var tagProp in entity.Properties.Where(x => x.TagSupport.Enable))
|
||||
{
|
||||
if (tagProp.TagSupport.Behavior == PropertyTagBehavior.Remove)
|
||||
{
|
||||
//remove the specific tags
|
||||
_tagRepository.RemovePublishedTagsFromProperty(
|
||||
entity.Id,
|
||||
tagProp.Alias,
|
||||
tagProp.TagSupport.Tags.Select(x => new Tag { Text = x.Item1, Group = x.Item2 }));
|
||||
}
|
||||
else
|
||||
{
|
||||
//assign the tags
|
||||
_tagRepository.AssignPublishedTagsToProperty(
|
||||
entity.Id,
|
||||
tagProp.Alias,
|
||||
tagProp.TagSupport.Tags.Select(x => new Tag { Text = x.Item1, Group = x.Item2 }),
|
||||
tagProp.TagSupport.Behavior == PropertyTagBehavior.Replace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private PropertyCollection GetPropertyCollection(int id, Guid versionId, IMediaType contentType, DateTime createDate, DateTime updateDate)
|
||||
{
|
||||
var sql = new Sql();
|
||||
|
||||
@@ -21,16 +21,24 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal class MemberRepository : VersionableRepositoryBase<int, IMember>, IMemberRepository
|
||||
{
|
||||
private readonly IMemberTypeRepository _memberTypeRepository;
|
||||
private readonly ITagsRepository _tagRepository;
|
||||
|
||||
public MemberRepository(IDatabaseUnitOfWork work, IMemberTypeRepository memberTypeRepository) : base(work)
|
||||
public MemberRepository(IDatabaseUnitOfWork work, IMemberTypeRepository memberTypeRepository, ITagsRepository tagRepository)
|
||||
: base(work)
|
||||
{
|
||||
if (memberTypeRepository == null) throw new ArgumentNullException("memberTypeRepository");
|
||||
if (tagRepository == null) throw new ArgumentNullException("tagRepository");
|
||||
_memberTypeRepository = memberTypeRepository;
|
||||
_tagRepository = tagRepository;
|
||||
}
|
||||
|
||||
public MemberRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, IMemberTypeRepository memberTypeRepository)
|
||||
public MemberRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, IMemberTypeRepository memberTypeRepository, ITagsRepository tagRepository)
|
||||
: base(work, cache)
|
||||
{
|
||||
if (memberTypeRepository == null) throw new ArgumentNullException("memberTypeRepository");
|
||||
if (tagRepository == null) throw new ArgumentNullException("tagRepository");
|
||||
_memberTypeRepository = memberTypeRepository;
|
||||
_tagRepository = tagRepository;
|
||||
}
|
||||
|
||||
#region Overrides of RepositoryBase<int, IMembershipUser>
|
||||
@@ -247,6 +255,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
property.Id = keyDictionary[property.PropertyTypeId];
|
||||
}
|
||||
|
||||
UpdatePropertyTags(entity, _tagRepository);
|
||||
|
||||
((Member)entity).ResetDirtyProperties();
|
||||
}
|
||||
|
||||
@@ -325,6 +335,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
}
|
||||
}
|
||||
|
||||
UpdatePropertyTags(entity, _tagRepository);
|
||||
|
||||
((ICanBeDirty)entity).ResetDirtyProperties();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
@@ -90,5 +91,34 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
protected abstract void PerformDeleteVersion(int id, Guid versionId);
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Updates the tag repository with any tag enabled properties and their values
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <param name="tagRepo"></param>
|
||||
protected void UpdatePropertyTags(IContentBase entity, ITagsRepository tagRepo)
|
||||
{
|
||||
foreach (var tagProp in entity.Properties.Where(x => x.TagSupport.Enable))
|
||||
{
|
||||
if (tagProp.TagSupport.Behavior == PropertyTagBehavior.Remove)
|
||||
{
|
||||
//remove the specific tags
|
||||
tagRepo.RemovePublishedTagsFromProperty(
|
||||
entity.Id,
|
||||
tagProp.Alias,
|
||||
tagProp.TagSupport.Tags.Select(x => new Tag { Text = x.Item1, Group = x.Item2 }));
|
||||
}
|
||||
else
|
||||
{
|
||||
//assign the tags
|
||||
tagRepo.AssignPublishedTagsToProperty(
|
||||
entity.Id,
|
||||
tagProp.Alias,
|
||||
tagProp.TagSupport.Tags.Select(x => new Tag { Text = x.Item1, Group = x.Item2 }),
|
||||
tagProp.TagSupport.Behavior == PropertyTagBehavior.Replace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,7 +155,10 @@ namespace Umbraco.Core.Persistence
|
||||
|
||||
internal virtual IMemberRepository CreateMemberRepository(IDatabaseUnitOfWork uow)
|
||||
{
|
||||
return new MemberRepository(uow, _disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current, CreateMemberTypeRepository(uow));
|
||||
return new MemberRepository(uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
CreateMemberTypeRepository(uow),
|
||||
CreateTagsRepository(uow));
|
||||
}
|
||||
|
||||
internal virtual IMemberTypeRepository CreateMemberTypeRepository(IDatabaseUnitOfWork uow)
|
||||
|
||||
@@ -32,7 +32,8 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
private MemberRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out MemberTypeRepository memberTypeRepository)
|
||||
{
|
||||
memberTypeRepository = new MemberTypeRepository(unitOfWork, NullCacheProvider.Current);
|
||||
var repository = new MemberRepository(unitOfWork, NullCacheProvider.Current, memberTypeRepository);
|
||||
var tagRepo = new TagsRepository(unitOfWork, NullCacheProvider.Current);
|
||||
var repository = new MemberRepository(unitOfWork, NullCacheProvider.Current, memberTypeRepository, tagRepo);
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user