From 9cc466775d2260ea172de2da8bb994fe199ff640 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 24 Aug 2017 16:50:12 +1000 Subject: [PATCH] Updates more services to only have one event arg instance per event pair to flow through EventState --- src/Umbraco.Core/Services/DataTypeService.cs | 39 +++--- src/Umbraco.Core/Services/DomainService.cs | 13 +- .../Services/LocalizationService.cs | 27 +++-- src/Umbraco.Core/Services/MacroService.cs | 14 ++- src/Umbraco.Core/Services/MediaService.cs | 113 ++++++++++++------ 5 files changed, 132 insertions(+), 74 deletions(-) diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index c01b13136e..0ee3e9b823 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -312,7 +312,9 @@ namespace Umbraco.Core.Services var moveInfo = new List>(); using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Moving, this, new MoveEventArgs(evtMsgs, new MoveEventInfo(toMove, toMove.Path, parentId)))) + var moveEventInfo = new MoveEventInfo(toMove, toMove.Path, parentId); + var moveEventArgs = new MoveEventArgs(evtMsgs, moveEventInfo); + if (uow.Events.DispatchCancelable(Moving, this, moveEventArgs)) { uow.Commit(); return Attempt.Fail(new OperationStatus(MoveOperationStatusType.FailedCancelledByEvent, evtMsgs)); @@ -338,7 +340,9 @@ namespace Umbraco.Core.Services new OperationStatus(ex.Operation, evtMsgs)); } uow.Commit(); - uow.Events.Dispatch(Moved, this, new MoveEventArgs(false, evtMsgs, moveInfo.ToArray())); + moveEventArgs.MoveInfoCollection = moveInfo; + moveEventArgs.CanCancel = false; + uow.Events.Dispatch(Moved, this, moveEventArgs); } return Attempt.Succeed( @@ -354,7 +358,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(dataTypeDefinition))) + var saveEventArgs = new SaveEventArgs(dataTypeDefinition); + if (uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return; @@ -369,8 +374,8 @@ namespace Umbraco.Core.Services dataTypeDefinition.CreatorId = userId; repository.AddOrUpdate(dataTypeDefinition); - - uow.Events.Dispatch(Saved, this, new SaveEventArgs(dataTypeDefinition, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); Audit(uow, AuditType.Save, "Save DataTypeDefinition performed by user", userId, dataTypeDefinition.Id); uow.Commit(); @@ -397,9 +402,10 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { + var saveEventArgs = new SaveEventArgs(dataTypeDefinitions); if (raiseEvents) - { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(dataTypeDefinitions))) + { + if (uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return; @@ -415,7 +421,10 @@ namespace Umbraco.Core.Services } if (raiseEvents) - uow.Events.Dispatch(Saved, this, new SaveEventArgs(dataTypeDefinitions, false)); + { + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); + } Audit(uow, AuditType.Save, string.Format("Save DataTypeDefinition performed by user"), userId, -1); uow.Commit(); @@ -504,7 +513,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(dataTypeDefinition))) + var saveEventArgs = new SaveEventArgs(dataTypeDefinition); + if (uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return; @@ -526,8 +536,8 @@ namespace Umbraco.Core.Services Audit(uow, AuditType.Save, string.Format("Save DataTypeDefinition performed by user"), userId, dataTypeDefinition.Id); uow.Commit(); - - uow.Events.Dispatch(Saved, this, new SaveEventArgs(dataTypeDefinition, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); } } @@ -544,7 +554,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(dataTypeDefinition))) + var deleteEventArgs = new DeleteEventArgs(dataTypeDefinition); + if (uow.Events.DispatchCancelable(Deleting, this, deleteEventArgs)) { uow.Commit(); return; @@ -556,8 +567,8 @@ namespace Umbraco.Core.Services Audit(uow, AuditType.Delete, "Delete DataTypeDefinition performed by user", userId, dataTypeDefinition.Id); uow.Commit(); - - uow.Events.Dispatch(Deleted, this, new DeleteEventArgs(dataTypeDefinition, false)); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(Deleted, this, deleteEventArgs); } } diff --git a/src/Umbraco.Core/Services/DomainService.cs b/src/Umbraco.Core/Services/DomainService.cs index d5637d50be..7051f31fe4 100644 --- a/src/Umbraco.Core/Services/DomainService.cs +++ b/src/Umbraco.Core/Services/DomainService.cs @@ -32,7 +32,8 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(domain, evtMsgs))) + var deleteEventArgs = new DeleteEventArgs(domain, evtMsgs); + if (uow.Events.DispatchCancelable(Deleting, this, deleteEventArgs)) { uow.Commit(); return OperationStatus.Cancelled(evtMsgs); @@ -42,8 +43,8 @@ namespace Umbraco.Core.Services repository.Delete(domain); uow.Commit(); - var args = new DeleteEventArgs(domain, false, evtMsgs); - uow.Events.Dispatch(Deleted, this, args); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(Deleted, this, deleteEventArgs); return OperationStatus.Success(evtMsgs); } @@ -92,7 +93,8 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(domainEntity, evtMsgs))) + var saveEventArgs = new SaveEventArgs(domainEntity, evtMsgs); + if (uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return OperationStatus.Cancelled(evtMsgs); @@ -101,7 +103,8 @@ namespace Umbraco.Core.Services var repository = RepositoryFactory.CreateDomainRepository(uow); repository.AddOrUpdate(domainEntity); uow.Commit(); - uow.Events.Dispatch(Saved, this, new SaveEventArgs(domainEntity, false, evtMsgs)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); return OperationStatus.Success(evtMsgs); } diff --git a/src/Umbraco.Core/Services/LocalizationService.cs b/src/Umbraco.Core/Services/LocalizationService.cs index 33b075e3e0..12a2afb6ad 100644 --- a/src/Umbraco.Core/Services/LocalizationService.cs +++ b/src/Umbraco.Core/Services/LocalizationService.cs @@ -79,7 +79,8 @@ namespace Umbraco.Core.Services item.Translations = translations; } - if (uow.Events.DispatchCancelable(SavingDictionaryItem, this, new SaveEventArgs(item))) + var saveEventArgs = new SaveEventArgs(item); + if (uow.Events.DispatchCancelable(SavingDictionaryItem, this, saveEventArgs)) { uow.Commit(); return item; @@ -90,8 +91,8 @@ namespace Umbraco.Core.Services //ensure the lazy Language callback is assigned EnsureDictionaryItemLanguageCallback(item); - - uow.Events.Dispatch(SavedDictionaryItem, this, new SaveEventArgs(item)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedDictionaryItem, this, saveEventArgs); return item; } @@ -256,7 +257,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(DeletingDictionaryItem, this, new DeleteEventArgs(dictionaryItem))) + var deleteEventArgs = new DeleteEventArgs(dictionaryItem); + if (uow.Events.DispatchCancelable(DeletingDictionaryItem, this, deleteEventArgs)) { uow.Commit(); return; @@ -264,8 +266,8 @@ namespace Umbraco.Core.Services var repository = RepositoryFactory.CreateDictionaryRepository(uow); repository.Delete(dictionaryItem); - - uow.Events.Dispatch(DeletedDictionaryItem, this, new DeleteEventArgs(dictionaryItem, false)); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedDictionaryItem, this, deleteEventArgs); Audit(uow, AuditType.Delete, "Delete DictionaryItem performed by user", userId, dictionaryItem.Id); uow.Commit(); @@ -336,15 +338,16 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(SavingLanguage, this, new SaveEventArgs(language))) + var saveEventArgs = new SaveEventArgs(language); + if (uow.Events.DispatchCancelable(SavingLanguage, this, saveEventArgs)) { uow.Commit(); return; } var repository = RepositoryFactory.CreateLanguageRepository(uow); repository.AddOrUpdate(language); - - uow.Events.Dispatch(SavedLanguage, this, new SaveEventArgs(language, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedLanguage, this, saveEventArgs); Audit(uow, AuditType.Save, "Save Language performed by user", userId, language.Id); uow.Commit(); @@ -360,7 +363,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(DeletingLanguage, this, new DeleteEventArgs(language))) + var deleteEventArgs = new DeleteEventArgs(language); + if (uow.Events.DispatchCancelable(DeletingLanguage, this, deleteEventArgs)) { uow.Commit(); return; @@ -369,7 +373,8 @@ namespace Umbraco.Core.Services var repository = RepositoryFactory.CreateLanguageRepository(uow); repository.Delete(language); - uow.Events.Dispatch(DeletedLanguage, this, new DeleteEventArgs(language, false)); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedLanguage, this, deleteEventArgs); Audit(uow, AuditType.Delete, "Delete Language performed by user", userId, language.Id); uow.Commit(); diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index d1d5f81da0..bd9ae2e577 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -144,15 +144,16 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(macro))) + var deleteEventArgs = new DeleteEventArgs(macro); + if (uow.Events.DispatchCancelable(Deleting, this, deleteEventArgs)) { uow.Commit(); return; } var repository = RepositoryFactory.CreateMacroRepository(uow); repository.Delete(macro); - - uow.Events.Dispatch(Deleted, this, new DeleteEventArgs(macro, false)); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(Deleted, this, deleteEventArgs); Audit(uow, AuditType.Delete, "Delete Macro performed by user", userId, -1); uow.Commit(); @@ -168,7 +169,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(macro))) + var saveEventArgs = new SaveEventArgs(macro); + if (uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return; @@ -181,8 +183,8 @@ namespace Umbraco.Core.Services var repository = RepositoryFactory.CreateMacroRepository(uow); repository.AddOrUpdate(macro); - - uow.Events.Dispatch(Saved, this, new SaveEventArgs(macro, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); Audit(uow, AuditType.Save, "Save Macro performed by user", userId, -1); uow.Commit(); diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index 38c0c20eb2..af2cb3494c 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -70,7 +70,8 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Creating, this, new NewEventArgs(media, mediaTypeAlias, parentId))) + var newEventArgs = new NewEventArgs(media, mediaTypeAlias, parentId); + if (uow.Events.DispatchCancelable(Creating, this, newEventArgs)) { uow.Commit(); media.WasCancelled = true; @@ -78,7 +79,8 @@ namespace Umbraco.Core.Services } media.CreatorId = userId; - uow.Events.Dispatch(Created, this, new NewEventArgs(media, false, mediaTypeAlias, parentId)); + newEventArgs.CanCancel = false; + uow.Events.Dispatch(Created, this, newEventArgs); Audit(uow, AuditType.New, string.Format("Media '{0}' was created", name), media.CreatorId, media.Id); uow.Commit(); @@ -110,7 +112,8 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(Creating, this, new NewEventArgs(media, mediaTypeAlias, parent))) + var newEventArgs = new NewEventArgs(media, mediaTypeAlias, parent); + if (uow.Events.DispatchCancelable(Creating, this, newEventArgs)) { uow.Commit(); media.WasCancelled = true; @@ -118,8 +121,8 @@ namespace Umbraco.Core.Services } media.CreatorId = userId; - - uow.Events.Dispatch(Created, this, new NewEventArgs(media, false, mediaTypeAlias, parent)); + newEventArgs.CanCancel = false; + uow.Events.Dispatch(Created, this, newEventArgs); Audit(uow, AuditType.New, string.Format("Media '{0}' was created", name), media.CreatorId, media.Id); uow.Commit(); @@ -150,14 +153,16 @@ namespace Umbraco.Core.Services { //NOTE: I really hate the notion of these Creating/Created events - they are so inconsistent, I've only just found // out that in these 'WithIdentity' methods, the Saving/Saved events were not fired, wtf. Anyways, they're added now. - if (uow.Events.DispatchCancelable(Creating, this, new NewEventArgs(media, mediaTypeAlias, parentId))) + var newEventArgs = new NewEventArgs(media, mediaTypeAlias, parentId); + if (uow.Events.DispatchCancelable(Creating, this, newEventArgs)) { uow.Commit(); media.WasCancelled = true; return media; } - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(media))) + var saveEventArgs = new SaveEventArgs(media); + if (uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); media.WasCancelled = true; @@ -174,8 +179,10 @@ namespace Umbraco.Core.Services repository.AddOrUpdatePreviewXml(media, m => _entitySerializer.Serialize(this, _dataTypeService, _userService, m)); } - uow.Events.Dispatch(Saved, this, new SaveEventArgs(media, false)); - uow.Events.Dispatch(Created, this, new NewEventArgs(media, false, mediaTypeAlias, parentId)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); + newEventArgs.CanCancel = false; + uow.Events.Dispatch(Created, this, newEventArgs); Audit(uow, AuditType.New, string.Format("Media '{0}' was created with Id {1}", name, media.Id), media.CreatorId, media.Id); uow.Commit(); @@ -208,14 +215,16 @@ namespace Umbraco.Core.Services { //NOTE: I really hate the notion of these Creating/Created events - they are so inconsistent, I've only just found // out that in these 'WithIdentity' methods, the Saving/Saved events were not fired, wtf. Anyways, they're added now. - if (uow.Events.DispatchCancelable(Creating, this, new NewEventArgs(media, mediaTypeAlias, parent))) + var newEventArgs = new NewEventArgs(media, mediaTypeAlias, parent); + if (uow.Events.DispatchCancelable(Creating, this, newEventArgs)) { uow.Commit(); media.WasCancelled = true; return media; } - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(media))) + var saveEventArgs = new SaveEventArgs(media); + if (uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); media.WasCancelled = true; @@ -232,8 +241,10 @@ namespace Umbraco.Core.Services repository.AddOrUpdatePreviewXml(media, m => _entitySerializer.Serialize(this, _dataTypeService, _userService, m)); } - uow.Events.Dispatch(Saved, this, new SaveEventArgs(media, false)); - uow.Events.Dispatch(Created, this, new NewEventArgs(media, false, mediaTypeAlias, parent)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); + newEventArgs.CanCancel = false; + uow.Events.Dispatch(Created, this, newEventArgs); Audit(uow, AuditType.New, string.Format("Media '{0}' was created with Id {1}", name, media.Id), media.CreatorId, media.Id); uow.Commit(); @@ -786,7 +797,9 @@ namespace Umbraco.Core.Services { var originalPath = media.Path; - if (uow.Events.DispatchCancelable(Moving, this, new MoveEventArgs(new MoveEventInfo(media, originalPath, parentId)), "Moving")) + var moveEventInfo = new MoveEventInfo(media, originalPath, parentId); + var moveEventArgs = new MoveEventArgs(moveEventInfo); + if (uow.Events.DispatchCancelable(Moving, this, moveEventArgs, "Moving")) { uow.Commit(); return; @@ -802,7 +815,7 @@ namespace Umbraco.Core.Services //used to track all the moved entities to be given to the event var moveInfo = new List> { - new MoveEventInfo(media, originalPath, parentId) + moveEventInfo }; //Ensure that relevant properties are updated on children @@ -816,7 +829,9 @@ namespace Umbraco.Core.Services Save(updatedDescendants, userId, false); //no events! } - uow.Events.Dispatch(Moved, this, new MoveEventArgs(false, moveInfo.ToArray()), "Moved"); + moveEventArgs.MoveInfoCollection = moveInfo; + moveEventArgs.CanCancel = false; + uow.Events.Dispatch(Moved, this, moveEventArgs, "Moved"); Audit(uow, AuditType.Move, "Move Media performed by user", userId, media.Id); uow.Commit(); @@ -858,7 +873,8 @@ namespace Umbraco.Core.Services private Attempt DeleteUow(IScopeUnitOfWork uow, IMedia media, int userId, EventMessages evtMsgs) { - if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(media, evtMsgs))) + var deleteEventArgs = new DeleteEventArgs(media, evtMsgs); + if (uow.Events.DispatchCancelable(Deleting, this, deleteEventArgs)) { return OperationStatus.Cancelled(evtMsgs); } @@ -872,9 +888,8 @@ namespace Umbraco.Core.Services var repository = RepositoryFactory.CreateMediaRepository(uow); repository.Delete(media); - - var args = new DeleteEventArgs(media, false, evtMsgs); - uow.Events.Dispatch(Deleted, this, args); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(Deleted, this, deleteEventArgs); Audit(uow, AuditType.Delete, "Delete Media performed by user", userId, media.Id); @@ -893,7 +908,8 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(media, evtMsgs))) + var saveEventArgs = new SaveEventArgs(media, evtMsgs); + if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return OperationStatus.Cancelled(evtMsgs); @@ -921,7 +937,10 @@ namespace Umbraco.Core.Services } if (raiseEvents) - uow.Events.Dispatch(Saved, this, new SaveEventArgs(media, false, evtMsgs)); + { + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); + } Audit(uow, AuditType.Save, "Save Media performed by user", userId, media.Id); uow.Commit(); @@ -943,7 +962,8 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(asArray, evtMsgs))) + var saveEventArgs = new SaveEventArgs(asArray, evtMsgs); + if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return OperationStatus.Cancelled(evtMsgs); @@ -963,7 +983,10 @@ namespace Umbraco.Core.Services } if (raiseEvents) - uow.Events.Dispatch(Saved, this, new SaveEventArgs(asArray, false, evtMsgs)); + { + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); + } Audit(uow, AuditType.Save, "Save Media items performed by user", userId, -1); uow.Commit(); @@ -988,15 +1011,17 @@ namespace Umbraco.Core.Services var files = ((MediaRepository)repository).GetFilesInRecycleBinForUploadField(); - if (uow.Events.DispatchCancelable(EmptyingRecycleBin, this, new RecycleBinEventArgs(nodeObjectType, entities, files))) + var recycleBinEventArgs = new RecycleBinEventArgs(nodeObjectType, entities, files); + if (uow.Events.DispatchCancelable(EmptyingRecycleBin, this, recycleBinEventArgs)) { uow.Commit(); return; } var success = repository.EmptyRecycleBin(); - - uow.Events.Dispatch(EmptiedRecycleBin, this, new RecycleBinEventArgs(nodeObjectType, entities, files, success)); + recycleBinEventArgs.CanCancel = false; + recycleBinEventArgs.RecycleBinEmptiedSuccessfully = success; + uow.Events.Dispatch(EmptiedRecycleBin, this, recycleBinEventArgs); Audit(uow, AuditType.Delete, "Empty Media Recycle Bin performed by user", 0, -21); uow.Commit(); @@ -1022,7 +1047,8 @@ namespace Umbraco.Core.Services IDictionary rootItems; var mediaToDelete = this.TrackDeletionsForDeleteContentOfTypes(mediaTypeIds, repository, out rootItems).ToArray(); - if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(mediaToDelete), "Deleting")) + var deleteEventArgs = new DeleteEventArgs(mediaToDelete); + if (uow.Events.DispatchCancelable(Deleting, this, deleteEventArgs, "Deleting")) { uow.Commit(); return; @@ -1094,14 +1120,16 @@ namespace Umbraco.Core.Services //see: http://issues.umbraco.org/issue/U4-9336 media.EnsureValidPath(Logger, entity => GetById(entity.ParentId), QuickUpdate); var originalPath = media.Path; - if (uow.Events.DispatchCancelable(Trashing, this, new MoveEventArgs(new MoveEventInfo(media, originalPath, Constants.System.RecycleBinMedia)), "Trashing")) + var moveEventInfo = new MoveEventInfo(media, originalPath, Constants.System.RecycleBinMedia); + var moveEventArgs = new MoveEventArgs(moveEventInfo); + if (uow.Events.DispatchCancelable(Trashing, this, moveEventArgs, "Trashing")) { uow.Commit(); return OperationStatus.Cancelled(evtMsgs); } var moveInfo = new List> { - new MoveEventInfo(media, originalPath, Constants.System.RecycleBinMedia) + moveEventInfo }; //get descendents to process of the content item that is being moved to trash - must be done before changing the state below, @@ -1124,7 +1152,9 @@ namespace Umbraco.Core.Services moveInfo.Add(new MoveEventInfo(descendant, descendant.Path, descendant.ParentId)); } - uow.Events.Dispatch(Trashed, this, new MoveEventArgs(false, evtMsgs, moveInfo.ToArray()), "Trashed"); + moveEventArgs.MoveInfoCollection = moveInfo; + moveEventArgs.CanCancel = false; + uow.Events.Dispatch(Trashed, this, moveEventArgs, "Trashed"); Audit(uow, AuditType.Move, "Move Media to Recycle Bin performed by user", userId, media.Id); uow.Commit(); @@ -1167,12 +1197,14 @@ namespace Umbraco.Core.Services private void DeleteVersions(IScopeUnitOfWork uow, int id, DateTime versionDate, int userId = 0) { - if (uow.Events.DispatchCancelable(DeletingVersions, this, new DeleteRevisionsEventArgs(id, dateToRetain: versionDate))) + var deleteRevisionsEventArgs = new DeleteRevisionsEventArgs(id, dateToRetain: versionDate); + if (uow.Events.DispatchCancelable(DeletingVersions, this, deleteRevisionsEventArgs)) return; var repository = RepositoryFactory.CreateMediaRepository(uow); repository.DeleteVersions(id, versionDate); - uow.Events.Dispatch(DeletedVersions, this, new DeleteRevisionsEventArgs(id, false, dateToRetain: versionDate)); + deleteRevisionsEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedVersions, this, deleteRevisionsEventArgs); Audit(uow, AuditType.Delete, "Delete Media by version date performed by user", userId, -1); } @@ -1188,7 +1220,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(DeletingVersions, this, new DeleteRevisionsEventArgs(id, specificVersion: versionId))) + var deleteRevisionsEventArgs = new DeleteRevisionsEventArgs(id, specificVersion: versionId); + if (uow.Events.DispatchCancelable(DeletingVersions, this, deleteRevisionsEventArgs)) { uow.Commit(); return; @@ -1202,8 +1235,8 @@ namespace Umbraco.Core.Services var repository = RepositoryFactory.CreateMediaRepository(uow); repository.DeleteVersion(versionId); - - uow.Events.Dispatch(DeletedVersions, this, new DeleteRevisionsEventArgs(id, false, specificVersion: versionId)); + deleteRevisionsEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedVersions, this, deleteRevisionsEventArgs); Audit(uow, AuditType.Delete, "Delete Media by version performed by user", userId, -1); uow.Commit(); @@ -1246,7 +1279,8 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(asArray))) + var saveEventArgs = new SaveEventArgs(asArray); + if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, saveEventArgs)) { uow.Commit(); return false; @@ -1278,7 +1312,10 @@ namespace Umbraco.Core.Services } if (raiseEvents) - uow.Events.Dispatch(Saved, this, new SaveEventArgs(asArray, false)); + { + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(Saved, this, saveEventArgs); + } Audit(uow, AuditType.Sort, "Sorting Media performed by user", userId, 0); uow.Commit();