protected virtual void PublishPage(ref LocalPublishingQueue queueItem, PublishingAction action) { var site = queueItem.Site; if (site != null) { var page = new Page(site, queueItem.ObjectUUID).AsActual(); if (page != null) { if (action == PublishingAction.Publish) { _pageManager.Publish(page, queueItem.PublishDraft, queueItem.UserId); queueItem.UtcProcessedPublishTime = DateTime.UtcNow; } else if (action == PublishingAction.Unbpulish) { _pageManager.Unpublish(page, queueItem.UserId); queueItem.UtcProcessedUnpublishTime = DateTime.UtcNow; } } else { NoSuchObjectMessage(ref queueItem); } } }
protected virtual void AddLog(PublishingQueue queueItem, PublishingAction action, Exception e = null) { PublishingLog log = new PublishingLog() { UUID = Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(20), QueueType = QueueType.Publishing, QueueUUID = queueItem.UUID, SiteName = queueItem.SiteName, PublishingObject = queueItem.PublishingObject, ObjectUUID = queueItem.ObjectUUID, //PublishingType = queueItem.PublishingType, RemoteEndpoint = null, TextFolderMapping = null, UserId = queueItem.UserId, Status = queueItem.Status, Vendor = null, UtcProcessedTime = DateTime.UtcNow, Message = e == null ? queueItem.Message : e.Message, StackTrace = e == null ? "" : e.StackTrace, PublishingAction = action, QueueObject = queueItem }; _publishingLogProvider.Add(log); }
protected virtual void PublishPage(ref RemotePublishingQueue queueItem, PublishingAction action, out RemoteEndpointSetting remoteEndpoint) { remoteEndpoint = new RemoteEndpointSetting() { SiteName = queueItem.SiteName, Name = queueItem.RemoteEndpoint }.AsActual(); if (remoteEndpoint == null) { NoSuchEndpoint(ref queueItem, queueItem.RemoteEndpoint); } var site = new Site(queueItem.SiteName).AsActual(); if (site != null) { var page = new Page(site, queueItem.ObjectUUID).AsActual(); if (page != null) { var cmisService = _cmisSession.OpenSession(remoteEndpoint.CmisService, remoteEndpoint.CmisUserName, remoteEndpoint.CmisPassword); switch (action) { case PublishingAction.Publish: if (queueItem.PublishDraft) { page = ((IPageProvider)_pageManager.Provider).GetDraft(page); } page.Published = true; cmisService.AddPage(remoteEndpoint.RemoteRepositoryId, page); queueItem.UtcProcessedPublishTime = DateTime.UtcNow; break; case PublishingAction.Unbpulish: page.Published = false; cmisService.DeletePage(remoteEndpoint.RemoteRepositoryId, page.FullName); queueItem.UtcProcessedUnpublishTime = DateTime.UtcNow; break; case PublishingAction.None: default: queueItem.Status = QueueStatus.Processed; break; } } else { NoSuchObjectMessage(ref queueItem); } } else { NoSuchObjectMessage(ref queueItem); } }
private void PublicTextContent(ref LocalPublishingQueue queueItem, PublishingAction action) { var site = queueItem.Site; if (site != null) { var contentIntegrateId = new ContentIntegrateId(queueItem.ObjectUUID); var repository = new Repository(contentIntegrateId.Repository).AsActual();; if (repository != null) { var textFolder = new TextFolder(repository, contentIntegrateId.FolderName).AsActual(); if (textFolder != null) { var contentUUID = contentIntegrateId.ContentUUID; if (action == PublishingAction.Publish) { _textContentManager.Publish(textFolder, contentUUID, queueItem.UserId); queueItem.UtcProcessedPublishTime = DateTime.UtcNow; } else if (action == PublishingAction.Unbpulish) { _textContentManager.Unpublish(textFolder, contentUUID, queueItem.UserId); queueItem.UtcProcessedUnpublishTime = DateTime.UtcNow; } } else { NoSuchObjectMessage(ref queueItem); } } else { NoSuchObjectMessage(ref queueItem); } } }
protected virtual void PublishTextContent(ref RemotePublishingQueue queueItem, PublishingAction action, out RemoteEndpointSetting remoteEndpoint) { remoteEndpoint = null; var mapping = new RemoteTextFolderMapping(queueItem.Site, queueItem.TextFolderMapping).AsActual(); if (mapping == null) { NoSuchPublishingMapping(ref queueItem); return; } remoteEndpoint = new RemoteEndpointSetting(queueItem.Site, mapping.RemoteEndpoint).AsActual(); if (remoteEndpoint == null) { NoSuchEndpoint(ref queueItem, mapping.RemoteEndpoint); return; } var contentIntegrateId = new ContentIntegrateId(queueItem.ObjectUUID); var repository = new Repository(contentIntegrateId.Repository).AsActual(); if (repository != null) { var textFolder = new TextFolder(repository, contentIntegrateId.FolderName).AsActual(); if (textFolder != null) { var contentUUID = contentIntegrateId.ContentUUID; var content = textFolder.CreateQuery().WhereEquals("UUID", contentUUID).FirstOrDefault(); if (content != null) { var cmisService = _cmisSession.OpenSession(remoteEndpoint.CmisService, remoteEndpoint.CmisUserName, remoteEndpoint.CmisPassword); switch (action) { case PublishingAction.Publish: content.Published = true; var categories = _textContentProvider.QueryCategories(content); cmisService.AddTextContent(remoteEndpoint.RemoteRepositoryId, mapping.RemoteFolderId, content, categories); queueItem.UtcProcessedPublishTime = DateTime.UtcNow; break; case PublishingAction.Unbpulish: cmisService.DeleteTextContent(remoteEndpoint.RemoteRepositoryId, mapping.RemoteFolderId, content.UUID); queueItem.UtcProcessedUnpublishTime = DateTime.UtcNow; break; case PublishingAction.None: default: break; } return; } } } NoSuchObjectMessage(ref queueItem); }
public virtual void ProcessQueueItem(PublishingQueue queueItem, DateTime executeTime) { Exception exception = null; bool hasMoreAction; PublishingAction action = GetPublishingAction(queueItem, out hasMoreAction); if (action == PublishingAction.None && hasMoreAction == true) { return; } try { if (action == PublishingAction.None && hasMoreAction == false) { queueItem.Status = QueueStatus.Processed; } else { if (hasMoreAction) { queueItem.Status = QueueStatus.Pending; } else { queueItem.Status = QueueStatus.Processed; } if (action != PublishingAction.None) { switch (queueItem.PublishingType) { case PublishingType.Local: LocalPublish(ref queueItem, action); break; case PublishingType.Remote: RemotePublish(ref queueItem, action); break; default: break; } } } } catch (Exception e) { Kooboo.HealthMonitoring.Log.LogException(e); queueItem.Status = QueueStatus.Warning; queueItem.Message = e.Message; queueItem.UtcProcessedTime = DateTime.UtcNow; exception = e; } if (queueItem.Status == QueueStatus.Processed) { _publishingQueueProvider.Remove(queueItem); } else { _publishingQueueProvider.Update(queueItem, queueItem); } AddLog(queueItem, action, exception); }
private void RemotePublish(ref PublishingQueue queueItem, PublishingAction action) { var site = queueItem.Site; if (site != null) { switch (queueItem.PublishingObject) { case PublishingObject.Page: if (queueItem.RemoteEndpoints != null) { var page = new Page(site, queueItem.ObjectUUID).AsActual(); if (page != null) { foreach (var remote in queueItem.RemoteEndpoints) { var outgoingQueue = new OutgoingQueue(queueItem.Site, Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(10)); outgoingQueue.PublishingObject = queueItem.PublishingObject; outgoingQueue.ObjectUUID = queueItem.ObjectUUID; outgoingQueue.RemoteEndpoint = remote; outgoingQueue.UtcCreationDate = DateTime.UtcNow; outgoingQueue.Status = QueueStatus.Pending; outgoingQueue.RetryTimes = 0; outgoingQueue.Action = action; outgoingQueue.PublishDraft = queueItem.PublishDraft; _outgoingQueueProvider.Add(outgoingQueue); } } else { NoSuchObjectMessage(ref queueItem); } } NoAnyEndPoint(ref queueItem); break; case PublishingObject.TextContent: if (queueItem.PublishingMappings != null) { var contentIntegrateId = new ContentIntegrateId(queueItem.ObjectUUID); var repository = new Repository(contentIntegrateId.Repository).AsActual();; if (repository != null) { var textFolder = new TextFolder(repository, contentIntegrateId.FolderName).AsActual(); if (textFolder != null) { var contentUUID = contentIntegrateId.ContentUUID; foreach (var mappingName in queueItem.PublishingMappings) { var mapping = new RemoteTextFolderMapping(); //todo:AsActual if (mapping != null) { var outgoingQueue = new OutgoingQueue(queueItem.Site, Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(10)); outgoingQueue.PublishingObject = queueItem.PublishingObject; outgoingQueue.ObjectUUID = queueItem.ObjectUUID; outgoingQueue.RemoteEndpoint = mapping.RemoteEndpoint; outgoingQueue.RemoteFolderId = mapping.RemoteFolderId; outgoingQueue.UtcCreationDate = DateTime.UtcNow; outgoingQueue.Status = QueueStatus.Pending; outgoingQueue.RetryTimes = 0; outgoingQueue.Action = action; outgoingQueue.PublishDraft = queueItem.PublishDraft; _outgoingQueueProvider.Add(outgoingQueue); } } } else { NoSuchObjectMessage(ref queueItem); } } else { NoSuchObjectMessage(ref queueItem); } } NoAnyEndPoint(ref queueItem); break; default: NoSuchPublishingObject(ref queueItem); break; } } }
protected virtual void LocalPublish(ref PublishingQueue queueItem, PublishingAction action) { var site = queueItem.Site; if (site != null) { switch (queueItem.PublishingObject) { case PublishingObject.Page: var page = new Page(site, queueItem.ObjectUUID).AsActual(); if (page != null) { if (action == PublishingAction.Publish) { _pageManager.Publish(page, queueItem.PublishDraft, queueItem.UserId); } else if (action == PublishingAction.Unbpulish) { _pageManager.Unpublish(page, queueItem.UserId); } } else { NoSuchObjectMessage(ref queueItem); } break; case PublishingObject.TextContent: var contentIntegrateId = new ContentIntegrateId(queueItem.ObjectUUID); var repository = new Repository(contentIntegrateId.Repository).AsActual();; if (repository != null) { var textFolder = new TextFolder(repository, contentIntegrateId.FolderName).AsActual(); if (textFolder != null) { var contentUUID = contentIntegrateId.ContentUUID; if (action == PublishingAction.Publish) { _textContentManager.Publish(textFolder, contentUUID, queueItem.UserId); } else if (action == PublishingAction.Unbpulish) { _textContentManager.Unpublish(textFolder, contentUUID, queueItem.UserId); } } else { NoSuchObjectMessage(ref queueItem); } } else { NoSuchObjectMessage(ref queueItem); } break; default: NoSuchPublishingObject(ref queueItem); break; } } queueItem.UtcProcessedTime = DateTime.UtcNow; }
private PublishingAction GetPublishingAction(PublishingQueue queueItem, out bool hasMoreAction) { PublishingAction action = PublishingAction.None; hasMoreAction = false; if (queueItem.UtcTimeToPublish == null && queueItem.UtcTimeToUnpublish == null) { action = PublishingAction.None; } else { if (queueItem.UtcProcessedTime == null) { if (queueItem.UtcTimeToUnpublish == null) { action = PublishingAction.Publish; } else if (queueItem.UtcTimeToPublish == null) { action = PublishingAction.Unbpulish; } else { if (queueItem.UtcTimeToPublish.Value > queueItem.UtcTimeToUnpublish.Value) { action = PublishingAction.Unbpulish; } else { action = PublishingAction.Publish; } hasMoreAction = true; } } else if (queueItem.UtcTimeToPublish != null && queueItem.UtcTimeToUnpublish != null) { if (queueItem.UtcTimeToPublish.Value > queueItem.UtcTimeToUnpublish.Value) { if (queueItem.UtcTimeToPublish.Value < DateTime.UtcNow) { action = PublishingAction.Publish; } else { action = PublishingAction.None; hasMoreAction = true; } } else { if (queueItem.UtcTimeToUnpublish.Value < DateTime.UtcNow) { action = PublishingAction.Unbpulish; } else { action = PublishingAction.None; hasMoreAction = true; } } } else { action = PublishingAction.None; } } return(action); }