diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
index 99667a779e..fe05d8d3b8 100644
--- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
@@ -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
- ///
- /// Updates the tag repository with any tag enabled properties and their values
- ///
- ///
- 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 method to create a content object from a DocumentDto, which is used by Get and GetByVersion.
///
diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
index b2d2b38cd8..1746e6b68a 100644
--- a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
@@ -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
-
- ///
- /// Updates the tag repository with any tag enabled properties and their values
- ///
- ///
- 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();
diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
index 67273312dd..8854f169cd 100644
--- a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
@@ -21,16 +21,24 @@ namespace Umbraco.Core.Persistence.Repositories
internal class MemberRepository : VersionableRepositoryBase, 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
@@ -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();
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
index 1b3ff63eea..0c89f747a2 100644
--- a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs
@@ -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
+
+ ///
+ /// Updates the tag repository with any tag enabled properties and their values
+ ///
+ ///
+ ///
+ 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);
+ }
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Persistence/RepositoryFactory.cs b/src/Umbraco.Core/Persistence/RepositoryFactory.cs
index c4e71ac711..89d04bf4e7 100644
--- a/src/Umbraco.Core/Persistence/RepositoryFactory.cs
+++ b/src/Umbraco.Core/Persistence/RepositoryFactory.cs
@@ -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)
diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
index 8c59ed5e7f..fa75070ad4 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
@@ -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;
}