feat(core): implement ContentPublishOperationService for Phase 5
Implements all publishing operations extracted from ContentService: - Publish/Unpublish with culture support - CommitDocumentChanges (core publishing logic with advanced API) - CommitDocumentChangesInternal (330 lines of business logic) - PerformScheduledPublish for scheduled jobs - PerformScheduledPublishingRelease/Expiration (scheduled release/expiry) - PublishBranch for tree publishing (public + internal overloads) - PublishBranchItem for individual branch items - Schedule management operations (GetContentScheduleByContentId, PersistContentSchedule, GetContentSchedulesByIds) - Path checks (IsPathPublishable, IsPathPublished) - SendToPublication workflow - GetPublishedChildren query - Publishing strategies (StrategyCanPublish, StrategyPublish, StrategyCanUnpublish, StrategyUnpublish) - GetPublishedDescendants/GetPublishedDescendantsLocked (internal) - Helper methods (PublishBranch_PublishCultures, PublishBranch_ShouldPublish, EnsureCultures, etc.) Critical Review fixes implemented: - Thread-safe ContentSettings access with lock (fix 2.1) - Null/empty check in GetContentSchedulesByIds (fix 2.4) - Explicit failure logging in PerformScheduledPublish Architecture: - Inherits from ContentServiceBase (provides repository, auditing, scoping) - Uses IContentCrudService for content lookups (delegation) - Uses ILanguageRepository for culture operations - Uses Lazy<IPropertyValidationService> for property validation - Thread-safe settings via IOptionsMonitor<ContentSettings> with lock Total: ~1,500 lines of publishing logic extracted. Part of ContentService refactoring Phase 5. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
1758
src/Umbraco.Core/Services/ContentPublishOperationService.cs
Normal file
1758
src/Umbraco.Core/Services/ContentPublishOperationService.cs
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user