From 9cf86d7677e7c92907d5426f5e00cbbe1961587c Mon Sep 17 00:00:00 2001 From: Shannon Deminick Date: Fri, 21 Dec 2012 06:59:30 +0500 Subject: [PATCH] Manually fixed merge with MediaService. --- src/Umbraco.Core/Services/ContentService.cs | 6 +- src/Umbraco.Core/Services/IContentService.cs | 6 +- src/Umbraco.Core/Services/MediaService.cs | 233 +++++++++---------- 3 files changed, 109 insertions(+), 136 deletions(-) diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index abd5fd87db..9f66207d99 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -813,7 +813,7 @@ namespace Umbraco.Core.Services uow.Commit(); } - DeletedRevisions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, dateToRetain: versionDate), this); + DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, dateToRetain: versionDate), this); Audit.Add(AuditTypes.Delete, "Delete Content by version date performed by user", userId == -1 ? 0 : userId, -1); } @@ -843,7 +843,7 @@ namespace Umbraco.Core.Services uow.Commit(); } - DeletedRevisions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, specificVersion:versionId), this); + DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, specificVersion:versionId), this); Audit.Add(AuditTypes.Delete, "Delete Content by version performed by user", userId == -1 ? 0 : userId, -1); } @@ -1234,7 +1234,7 @@ namespace Umbraco.Core.Services /// /// Occurs after Delete /// - public static event TypedEventHandler DeletedRevisions; + public static event TypedEventHandler DeletedVersions; /// /// Occurs before Save diff --git a/src/Umbraco.Core/Services/IContentService.cs b/src/Umbraco.Core/Services/IContentService.cs index a26302ea97..4836f25736 100644 --- a/src/Umbraco.Core/Services/IContentService.cs +++ b/src/Umbraco.Core/Services/IContentService.cs @@ -94,11 +94,7 @@ namespace Umbraco.Core.Services /// /// Saves a collection of objects. - /// - /// - /// If the collection of content contains new objects that references eachother by Id or ParentId, - /// then use the overload Save method with a collection of Lazy . - /// + /// /// Collection of to save /// Optional Id of the User saving the Content void Save(IEnumerable contents, int userId = -1); diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index 3475f60737..cba54ddb4b 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -69,19 +69,15 @@ namespace Umbraco.Core.Services } var media = new Models.Media(parentId, mediaType); - var e = new NewEventArgs {Alias = mediaTypeAlias, ParentId = parentId}; - if (Creating != null) - Creating(media, e); - if (!e.Cancel) - { - SetUser(media, userId); + if (Creating.IsRaisedEventCancelled(new NewEventArgs(media, mediaTypeAlias, parentId), this)) + return media; - if (Created != null) - Created(media, e); + SetUser(media, userId); - Audit.Add(AuditTypes.New, "", media.CreatorId, media.Id); - } + Created.RaiseEvent(new NewEventArgs(media, false, mediaTypeAlias, parentId), this); + + Audit.Add(AuditTypes.New, "", media.CreatorId, media.Id); return media; } @@ -288,25 +284,18 @@ namespace Umbraco.Core.Services if (Trashing.IsRaisedEventCancelled(new MoveEventArgs(media, -21), this)) return; - var e = new MoveEventArgs {ParentId = -20}; - if (Trashing != null) - Trashing(media, e); - if (!e.Cancel) - { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) - { - ((Core.Models.Media) media).ChangeTrashedState(true); - repository.AddOrUpdate(media); - uow.Commit(); - } + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + { + ((Core.Models.Media)media).ChangeTrashedState(true); + repository.AddOrUpdate(media); + uow.Commit(); + } - if (Trashed != null) - Trashed(media, e); + Trashed.RaiseEvent(new MoveEventArgs(media, false, -21), this); - Audit.Add(AuditTypes.Move, "Move Media to Recycle Bin performed by user", userId == -1 ? 0 : userId, - media.Id); - } + Audit.Add(AuditTypes.Move, "Move Media to Recycle Bin performed by user", userId == -1 ? 0 : userId, + media.Id); } /// @@ -314,6 +303,9 @@ namespace Umbraco.Core.Services /// public void EmptyRecycleBin() { + //TODO: Should have an event for this. + //TODO: Why don't we have a base class to share between MediaService/ContentService as some of this is exacty the same? + var uow = _uowProvider.GetUnitOfWork(); using (var repository = _repositoryFactory.CreateMediaRepository(uow)) { @@ -338,7 +330,7 @@ namespace Umbraco.Core.Services /// Optional id of the user deleting the media public void DeleteMediaOfType(int mediaTypeId, int userId = -1) { - //TODO: Do we need another event DeletingMediaOfType ? + //TODO: Do we need another event DeletingMediaOfType, If we just change delete args to be ienumerable this would fix this ? var uow = _uowProvider.GetUnitOfWork(); var repository = _repositoryFactory.CreateMediaRepository(uow); @@ -348,28 +340,26 @@ namespace Umbraco.Core.Services var query = Query.Builder.Where(x => x.ContentTypeId == mediaTypeId); var contents = repository.GetByQuery(query); - var e = new DeleteEventArgs {Id = mediaTypeId}; - if (Deleting != null) - Deleting(contents, e); - //var e = new DeleteEventArgs { Id = mediaTypeId }; - //if (Deleting != null) - // Deleting(contents, e); + //var e = new DeleteEventArgs {Id = mediaTypeId}; + //if (Deleting != null) + // Deleting(contents, e); + // //var e = new DeleteEventArgs { Id = mediaTypeId }; + // //if (Deleting != null) + // // Deleting(contents, e); - if (!e.Cancel) - { - foreach (var content in contents) - { - ((Core.Models.Media) content).ChangeTrashedState(true); - repository.AddOrUpdate(content); - } + foreach (var content in contents) + { + ((Core.Models.Media)content).ChangeTrashedState(true); + repository.AddOrUpdate(content); + } - uow.Commit(); - uow.Dispose(); + uow.Commit(); + uow.Dispose(); - if (Deleted != null) - Deleted(contents, e); - Audit.Add(AuditTypes.Delete, "Delete Media items by Type performed by user", userId == -1 ? 0 : userId, -1); - } + //if (Deleted != null) + // Deleted(contents, e); + + Audit.Add(AuditTypes.Delete, "Delete Media items by Type performed by user", userId == -1 ? 0 : userId, -1); } /// @@ -386,23 +376,16 @@ namespace Umbraco.Core.Services if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(media), this)) return; - var e = new DeleteEventArgs {Id = media.Id}; - if (Deleting != null) - Deleting(media, e); - if (!e.Cancel) - { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) - { - repository.Delete(media); - uow.Commit(); - } + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + { + repository.Delete(media); + uow.Commit(); + } - if (Deleted != null) - Deleted(media, e); + Deleted.RaiseEvent(new DeleteEventArgs(media, false), this); - Audit.Add(AuditTypes.Delete, "Delete Media performed by user", userId == -1 ? 0 : userId, media.Id); - } + Audit.Add(AuditTypes.Delete, "Delete Media performed by user", userId == -1 ? 0 : userId, media.Id); } /// @@ -413,24 +396,19 @@ namespace Umbraco.Core.Services /// Optional Id of the User deleting versions of a Content object public void DeleteVersions(int id, DateTime versionDate, int userId = -1) { - var e = new DeleteEventArgs { Id = id }; - if (Deleting != null) - Deleting(versionDate, e); + if (DeletingVersions.IsRaisedEventCancelled(new DeleteRevisionsEventArgs(id, dateToRetain: versionDate), this)) + return; + + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + { + repository.DeleteVersions(id, versionDate); + uow.Commit(); + } - if (!e.Cancel) - { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) - { - repository.DeleteVersions(id, versionDate); - uow.Commit(); - } + DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, dateToRetain: versionDate), this); - if (Deleted != null) - Deleted(versionDate, e); - - Audit.Add(AuditTypes.Delete, "Delete Media by version date performed by user", userId == -1 ? 0 : userId, -1); - } + Audit.Add(AuditTypes.Delete, "Delete Media by version date performed by user", userId == -1 ? 0 : userId, -1); } /// @@ -448,24 +426,19 @@ namespace Umbraco.Core.Services DeleteVersions(id, content.UpdateDate, userId); } - var e = new DeleteEventArgs { Id = id }; - if (Deleting != null) - Deleting(versionId, e); + if (DeletingVersions.IsRaisedEventCancelled(new DeleteRevisionsEventArgs(id, specificVersion:versionId), this)) + return; - if (!e.Cancel) - { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) - { - repository.DeleteVersion(versionId); - uow.Commit(); - } + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + { + repository.DeleteVersion(versionId); + uow.Commit(); + } - if (Deleted != null) - Deleted(versionId, e); + DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, specificVersion: versionId), this); - Audit.Add(AuditTypes.Delete, "Delete Media by version performed by user", userId == -1 ? 0 : userId, -1); - } + Audit.Add(AuditTypes.Delete, "Delete Media by version performed by user", userId == -1 ? 0 : userId, -1); } /// @@ -475,23 +448,20 @@ namespace Umbraco.Core.Services /// Id of the User saving the Content public void Save(IMedia media, int userId = -1) { - var e = new SaveEventArgs(); - if (Saving != null) - Saving(media, e); - if (!e.Cancel) - { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) - { - SetUser(media, userId); - repository.AddOrUpdate(media); - uow.Commit(); - } + if (Saving.IsRaisedEventCancelled(new SaveEventArgs(media), this)) + return; + + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + { + SetUser(media, userId); + repository.AddOrUpdate(media); + uow.Commit(); + } + + Saved.RaiseEvent(new SaveEventArgs(media, false), this); - if (Saved != null) - Saved(media, e); - } Audit.Add(AuditTypes.Save, "Save Media performed by user", media.CreatorId, media.Id); } @@ -502,30 +472,25 @@ namespace Umbraco.Core.Services /// Id of the User saving the Content public void Save(IEnumerable medias, int userId = -1) { - var e = new SaveEventArgs(); - if (Saving != null) - Saving(medias, e); + if (SavingCollection.IsRaisedEventCancelled(new SaveEventArgs>(medias), this)) + return; - if (!e.Cancel) - { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) - { - foreach (var media in medias) - { - SetUser(media, userId); - repository.AddOrUpdate(media); - } + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + { + foreach (var media in medias) + { + SetUser(media, userId); + repository.AddOrUpdate(media); + } //commit the whole lot in one go - uow.Commit(); - } - - if (Saved != null) - Saved(medias, e); + uow.Commit(); + } - Audit.Add(AuditTypes.Save, "Save Media items performed by user", userId == -1 ? 0 : userId, -1); - } + SavedCollection.RaiseEvent(new SaveEventArgs>(medias, false), this); + + Audit.Add(AuditTypes.Save, "Save Media items performed by user", userId == -1 ? 0 : userId, -1); } /// @@ -569,6 +534,17 @@ namespace Umbraco.Core.Services } #region Event Handlers + + /// + /// Occurs before Delete + /// + public static event TypedEventHandler DeletingVersions; + + /// + /// Occurs after Delete + /// + public static event TypedEventHandler DeletedVersions; + /// /// Occurs before Delete /// @@ -611,6 +587,7 @@ namespace Umbraco.Core.Services /// Please note that the Media object has been created, but not saved /// so it does not have an identity yet (meaning no Id has been set). /// + public static event TypedEventHandler> Created; /// /// Occurs before Content is moved to Recycle Bin