diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index d05c00c55b..4e9ba24401 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -266,7 +266,7 @@ namespace Umbraco.Core.Services //TODO Change this so we can avoid a depencency to the horrible library method / umbraco.content (singleton) class. //global::umbraco.library.RefreshContent(); - Audit.Add(AuditTypes.Publish, "RePublish All issued by user", userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Publish, "RePublish All performed by user", userId == -1 ? 0 : userId, -1); } return published; @@ -335,7 +335,7 @@ namespace Umbraco.Core.Services //TODO Need to investigate if it will also update the cache for children of the Content object //global::umbraco.library.UpdateDocumentCache(content.Id); - Audit.Add(AuditTypes.Publish, "Publish with Children issued by user", userId == -1 ? 0 : userId, content.Id); + Audit.Add(AuditTypes.Publish, "Publish with Children performed by user", userId == -1 ? 0 : userId, content.Id); } return published; @@ -380,7 +380,7 @@ namespace Umbraco.Core.Services //TODO Change this so we can avoid a depencency to the horrible library method / umbraco.content class. //global::umbraco.library.UnPublishSingleNode(content.Id); - Audit.Add(AuditTypes.Publish, "UnPublish issued by user", userId == -1 ? 0 : userId, content.Id); + Audit.Add(AuditTypes.Publish, "UnPublish performed by user", userId == -1 ? 0 : userId, content.Id); } return unpublished; @@ -463,7 +463,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(content, e); - Audit.Add(AuditTypes.Publish, "Save and Publish issued by user", userId == -1 ? 0 : userId, content.Id); + Audit.Add(AuditTypes.Publish, "Save and Publish performed by user", userId == -1 ? 0 : userId, content.Id); return published; } @@ -494,7 +494,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(content, e); - Audit.Add(AuditTypes.Save, "Save Content issued by user", userId == -1 ? 0 : userId, content.Id); + Audit.Add(AuditTypes.Save, "Save Content performed by user", userId == -1 ? 0 : userId, content.Id); } } @@ -544,7 +544,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(contents, e); - Audit.Add(AuditTypes.Save, "Bulk Save content issued by user", userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, "Bulk Save content performed by user", userId == -1 ? 0 : userId, -1); } } @@ -578,7 +578,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(contents, e); - Audit.Add(AuditTypes.Save, "Bulk Save (lazy) content issued by user", userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, "Bulk Save (lazy) content performed by user", userId == -1 ? 0 : userId, -1); } } @@ -613,7 +613,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(contents, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete Content of Type {0} issued by user", contentTypeId), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, string.Format("Delete Content of Type {0} performed by user", contentTypeId), userId == -1 ? 0 : userId, -1); } } @@ -643,7 +643,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(content, e); - Audit.Add(AuditTypes.Delete, "Delete Content issued by user", userId == -1 ? 0 : userId, content.Id); + Audit.Add(AuditTypes.Delete, "Delete Content performed by user", userId == -1 ? 0 : userId, content.Id); } } @@ -690,7 +690,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(versionDate, e); - Audit.Add(AuditTypes.Delete, "Delete Content by version date issued by user", userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, "Delete Content by version date performed by user", userId == -1 ? 0 : userId, -1); } } @@ -722,7 +722,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(versionId, e); - Audit.Add(AuditTypes.Delete, "Delete Content by version issued by user", userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, "Delete Content by version performed by user", userId == -1 ? 0 : userId, -1); } } @@ -752,7 +752,7 @@ namespace Umbraco.Core.Services if (Trashed != null) Trashed(content, e); - Audit.Add(AuditTypes.Move, "Move Content to Recycle Bin issued by user", userId == -1 ? 0 : userId, content.Id); + Audit.Add(AuditTypes.Move, "Move Content to Recycle Bin performed by user", userId == -1 ? 0 : userId, content.Id); } } @@ -800,7 +800,7 @@ namespace Umbraco.Core.Services if(Moved != null) Moved(content, e); - Audit.Add(AuditTypes.Move, "Move Content issued by user", userId == -1 ? 0 : userId, content.Id); + Audit.Add(AuditTypes.Move, "Move Content performed by user", userId == -1 ? 0 : userId, content.Id); } } @@ -820,7 +820,7 @@ namespace Umbraco.Core.Services } _unitOfWork.Commit(); - Audit.Add(AuditTypes.Delete, "Empty Recycle Bin issued by user", 0, -20); + Audit.Add(AuditTypes.Delete, "Empty Recycle Bin performed by user", 0, -20); } /// @@ -856,7 +856,7 @@ namespace Umbraco.Core.Services if(Copied != null) Copied(copy, e); - Audit.Add(AuditTypes.Delete, "Copy Content issued by user", content.WriterId, content.Id); + Audit.Add(AuditTypes.Delete, "Copy Content performed by user", content.WriterId, content.Id); return copy; } @@ -882,7 +882,7 @@ namespace Umbraco.Core.Services if (SentToPublish != null) SentToPublish(content, e); - Audit.Add(AuditTypes.SendToPublish, "Send to Publish issued by user", content.WriterId, content.Id); + Audit.Add(AuditTypes.SendToPublish, "Send to Publish performed by user", content.WriterId, content.Id); } /*SendToPublishEventArgs e = new SendToPublishEventArgs(); @@ -932,7 +932,7 @@ namespace Umbraco.Core.Services if (Rolledback != null) Rolledback(content, e); - Audit.Add(AuditTypes.RollBack, "Content rollback issued by user", content.WriterId, content.Id); + Audit.Add(AuditTypes.RollBack, "Content rollback performed by user", content.WriterId, content.Id); } return content; diff --git a/src/Umbraco.Core/Services/ContentTypeService.cs b/src/Umbraco.Core/Services/ContentTypeService.cs index 68b88ae6cf..bfd786d8db 100644 --- a/src/Umbraco.Core/Services/ContentTypeService.cs +++ b/src/Umbraco.Core/Services/ContentTypeService.cs @@ -119,7 +119,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(contentType, e); - Audit.Add(AuditTypes.Save, string.Format("Save ContentType issued by user"), userId == -1 ? 0 : userId, contentType.Id); + Audit.Add(AuditTypes.Save, string.Format("Save ContentType performed by user"), userId == -1 ? 0 : userId, contentType.Id); } } @@ -146,7 +146,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(contentTypes, e); - Audit.Add(AuditTypes.Save, string.Format("Save ContentTypes issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, string.Format("Save ContentTypes performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -177,7 +177,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(contentTypes, e); - Audit.Add(AuditTypes.Save, string.Format("Save (lazy) ContentTypes issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, string.Format("Save (lazy) ContentTypes performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -205,7 +205,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(contentType, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete ContentType issued by user"), userId == -1 ? 0 : userId, contentType.Id); + Audit.Add(AuditTypes.Delete, string.Format("Delete ContentType performed by user"), userId == -1 ? 0 : userId, contentType.Id); } } @@ -242,7 +242,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(contentTypes, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete ContentTypes issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, string.Format("Delete ContentTypes performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -317,7 +317,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(mediaType, e); - Audit.Add(AuditTypes.Save, string.Format("Save MediaType issued by user"), userId == -1 ? 0 : userId, mediaType.Id); + Audit.Add(AuditTypes.Save, string.Format("Save MediaType performed by user"), userId == -1 ? 0 : userId, mediaType.Id); } } @@ -344,7 +344,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(mediaTypes, e); - Audit.Add(AuditTypes.Save, string.Format("Save MediaTypes issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, string.Format("Save MediaTypes performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -372,7 +372,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(mediaType, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete MediaType issued by user"), userId == -1 ? 0 : userId, mediaType.Id); + Audit.Add(AuditTypes.Delete, string.Format("Delete MediaType performed by user"), userId == -1 ? 0 : userId, mediaType.Id); } } @@ -407,7 +407,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(mediaTypes, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete MediaTypes issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, string.Format("Delete MediaTypes performed by user"), userId == -1 ? 0 : userId, -1); } } diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index 95e725f7fc..c001e043bd 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -103,7 +103,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(dataTypeDefinition, e); - Audit.Add(AuditTypes.Save, string.Format("Save DataTypeDefinition issued by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id); + Audit.Add(AuditTypes.Save, string.Format("Save DataTypeDefinition performed by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id); } } @@ -153,7 +153,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(dataTypeDefinition, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete DataTypeDefinition issued by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id); + Audit.Add(AuditTypes.Delete, string.Format("Delete DataTypeDefinition performed by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id); } } diff --git a/src/Umbraco.Core/Services/FileService.cs b/src/Umbraco.Core/Services/FileService.cs index 37828e0a0e..2de318ef54 100644 --- a/src/Umbraco.Core/Services/FileService.cs +++ b/src/Umbraco.Core/Services/FileService.cs @@ -72,7 +72,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(stylesheet, e); - Audit.Add(AuditTypes.Save, string.Format("Save Stylesheet issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, string.Format("Save Stylesheet performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -97,7 +97,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(stylesheet, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete Stylesheet issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, string.Format("Delete Stylesheet performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -151,7 +151,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(script, e); - Audit.Add(AuditTypes.Save, string.Format("Save Script issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, string.Format("Save Script performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -176,7 +176,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(script, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete Script issued by user"), userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, string.Format("Delete Script performed by user"), userId == -1 ? 0 : userId, -1); } } @@ -230,7 +230,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(template, e); - Audit.Add(AuditTypes.Save, string.Format("Save Template issued by user"), userId == -1 ? 0 : userId, template.Id); + Audit.Add(AuditTypes.Save, string.Format("Save Template performed by user"), userId == -1 ? 0 : userId, template.Id); } } @@ -255,7 +255,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(template, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete Template issued by user"), userId == -1 ? 0 : userId, template.Id); + Audit.Add(AuditTypes.Delete, string.Format("Delete Template performed by user"), userId == -1 ? 0 : userId, template.Id); } } diff --git a/src/Umbraco.Core/Services/ILocalizationService.cs b/src/Umbraco.Core/Services/ILocalizationService.cs index fe29cfa332..3400156944 100644 --- a/src/Umbraco.Core/Services/ILocalizationService.cs +++ b/src/Umbraco.Core/Services/ILocalizationService.cs @@ -60,14 +60,16 @@ namespace Umbraco.Core.Services /// Saves a object /// /// to save - void Save(IDictionaryItem dictionaryItem); + /// Optional id of the user saving the dictionary item + void Save(IDictionaryItem dictionaryItem, int userId = -1); /// /// Deletes a object and its related translations /// as well as its children. /// /// to delete - void Delete(IDictionaryItem dictionaryItem); + /// Optional id of the user deleting the dictionary item + void Delete(IDictionaryItem dictionaryItem, int userId = -1); /// /// Gets a by its id @@ -93,12 +95,14 @@ namespace Umbraco.Core.Services /// Saves a object /// /// to save - void Save(ILanguage language); + /// Optional id of the user saving the language + void Save(ILanguage language, int userId = -1); /// /// Deletes a by removing it and its usages from the db /// /// to delete - void Delete(ILanguage language); + /// Optional id of the user deleting the language + void Delete(ILanguage language, int userId = -1); } } \ No newline at end of file diff --git a/src/Umbraco.Core/Services/LocalizationService.cs b/src/Umbraco.Core/Services/LocalizationService.cs index df7770c138..2ddd92f96a 100644 --- a/src/Umbraco.Core/Services/LocalizationService.cs +++ b/src/Umbraco.Core/Services/LocalizationService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Umbraco.Core.Auditing; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; @@ -119,12 +120,24 @@ namespace Umbraco.Core.Services /// Saves a object /// /// to save - public void Save(IDictionaryItem dictionaryItem) + /// Optional id of the user saving the dictionary item + public void Save(IDictionaryItem dictionaryItem, int userId = -1) { - var repository = _dictionaryRepository; + var e = new SaveEventArgs(); + if (Saving != null) + Saving(dictionaryItem, e); - repository.AddOrUpdate(dictionaryItem); - _unitOfWork.Commit(); + if (!e.Cancel) + { + _dictionaryRepository.AddOrUpdate(dictionaryItem); + _unitOfWork.Commit(); + + if (Saved != null) + Saved(dictionaryItem, e); + + Audit.Add(AuditTypes.Save, "Save DictionaryItem performed by user", userId == -1 ? 0 : userId, + dictionaryItem.Id); + } } /// @@ -132,13 +145,24 @@ namespace Umbraco.Core.Services /// as well as its children. /// /// to delete - public void Delete(IDictionaryItem dictionaryItem) + /// Optional id of the user deleting the dictionary item + public void Delete(IDictionaryItem dictionaryItem, int userId = -1) { - var repository = _dictionaryRepository; + var e = new DeleteEventArgs { Id = dictionaryItem.Id }; + if (Deleting != null) + Deleting(dictionaryItem, e); - //NOTE: The recursive delete is done in the repository - repository.Delete(dictionaryItem); - _unitOfWork.Commit(); + if (!e.Cancel) + { + //NOTE: The recursive delete is done in the repository + _dictionaryRepository.Delete(dictionaryItem); + _unitOfWork.Commit(); + + if (Deleted != null) + Deleted(dictionaryItem, e); + + Audit.Add(AuditTypes.Delete, "Delete DictionaryItem performed by user", userId == -1 ? 0 : userId, dictionaryItem.Id); + } } /// @@ -182,25 +206,69 @@ namespace Umbraco.Core.Services /// Saves a object /// /// to save - public void Save(ILanguage language) + /// Optional id of the user saving the language + public void Save(ILanguage language, int userId = -1) { - var repository = _languageRepository; + var e = new SaveEventArgs(); + if (Saving != null) + Saving(language, e); - repository.AddOrUpdate(language); - _unitOfWork.Commit(); + if (!e.Cancel) + { + _languageRepository.AddOrUpdate(language); + _unitOfWork.Commit(); + + if (Saved != null) + Saved(language, e); + + Audit.Add(AuditTypes.Save, "Save Language performed by user", userId == -1 ? 0 : userId, language.Id); + } } /// /// Deletes a by removing it (but not its usages) from the db /// /// to delete - public void Delete(ILanguage language) + /// Optional id of the user deleting the language + public void Delete(ILanguage language, int userId = -1) { - var repository = _languageRepository; + var e = new DeleteEventArgs { Id = language.Id }; + if (Deleting != null) + Deleting(language, e); - //NOTE: There isn't any constraints in the db, so possible references aren't deleted - repository.Delete(language); - _unitOfWork.Commit(); + if (!e.Cancel) + { + //NOTE: There isn't any constraints in the db, so possible references aren't deleted + _languageRepository.Delete(language); + _unitOfWork.Commit(); + + if (Deleted != null) + Deleted(language, e); + + Audit.Add(AuditTypes.Delete, "Delete Language performed by user", userId == -1 ? 0 : userId, language.Id); + } } + + #region Event Handlers + /// + /// Occurs before Delete + /// + public static event EventHandler Deleting; + + /// + /// Occurs after Delete + /// + public static event EventHandler Deleted; + + /// + /// Occurs before Save + /// + public static event EventHandler Saving; + + /// + /// Occurs after Save + /// + public static event EventHandler Saved; + #endregion } } \ No newline at end of file diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index 27a103175e..4e134fa3c2 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Umbraco.Core.Auditing; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Repositories; @@ -75,6 +76,8 @@ namespace Umbraco.Core.Services var repository = _macroRepository; repository.Delete(macro); _unitOfWork.Commit(); + + Audit.Add(AuditTypes.Delete, "Delete Macro performed by user", userId > -1 ? userId : 0, -1); } /// @@ -84,9 +87,10 @@ namespace Umbraco.Core.Services /// Optional Id of the user deleting the macro public void Save(IMacro macro, int userId = -1) { - var repository = _macroRepository; - repository.AddOrUpdate(macro); + _macroRepository.AddOrUpdate(macro); _unitOfWork.Commit(); + + Audit.Add(AuditTypes.Save, "Save Macro performed by user", userId > -1 ? userId : 0, -1); } /// diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index 153161a9a3..513b4ef045 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -189,7 +189,7 @@ namespace Umbraco.Core.Services if (Moved != null) Moved(media, e); - Audit.Add(AuditTypes.Move, "Move Media issued by user", userId == -1 ? 0 : userId, media.Id); + Audit.Add(AuditTypes.Move, "Move Media performed by user", userId == -1 ? 0 : userId, media.Id); } } @@ -216,7 +216,7 @@ namespace Umbraco.Core.Services if (Trashed != null) Trashed(media, e); - Audit.Add(AuditTypes.Move, "Move Media to Recycle Bin issued 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); } } @@ -236,7 +236,7 @@ namespace Umbraco.Core.Services } _unitOfWork.Commit(); - Audit.Add(AuditTypes.Delete, "Empty Recycle Bin issued by user", 0, -20); + Audit.Add(AuditTypes.Delete, "Empty Recycle Bin performed by user", 0, -20); } /// @@ -272,7 +272,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(contents, e); - Audit.Add(AuditTypes.Delete, "Delete Media items by Type issued by user", userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Delete, "Delete Media items by Type performed by user", userId == -1 ? 0 : userId, -1); } } @@ -299,7 +299,7 @@ namespace Umbraco.Core.Services if (Deleted != null) Deleted(media, e); - Audit.Add(AuditTypes.Delete, "Delete Media issued by user", userId == -1 ? 0 : userId, media.Id); + Audit.Add(AuditTypes.Delete, "Delete Media performed by user", userId == -1 ? 0 : userId, media.Id); } } @@ -323,7 +323,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(media, e); - Audit.Add(AuditTypes.Save, "Save Media issued by user", media.CreatorId, media.Id); + Audit.Add(AuditTypes.Save, "Save Media performed by user", media.CreatorId, media.Id); } } @@ -350,7 +350,7 @@ namespace Umbraco.Core.Services if (Saved != null) Saved(medias, e); - Audit.Add(AuditTypes.Save, "Save Media items issued by user", userId == -1 ? 0 : userId, -1); + Audit.Add(AuditTypes.Save, "Save Media items performed by user", userId == -1 ? 0 : userId, -1); } }