コード例 #1
0
 protected override void OnStop()
 {
     timer.Stop();
     timer.Dispose();
     PublishingLog.WriteEntry("Comment Publishing Service Stopped.", EventLogEntryType.Information);
     MailControler.MailToWebmaster("Comment Service Stopped", "Comment Publishing Service has stopped.");
 }
コード例 #2
0
ファイル: IncomeQueueManager.cs プロジェクト: bootmarket/CMS
        protected virtual void AddLog(IncomeQueue queueItem, QueueStatus logStatus, Exception e = null)
        {
            PublishingLog log = new PublishingLog()
            {
                UUID             = Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(20),
                QueueType        = QueueType.Incoming,
                QueueUUID        = queueItem.UUID,
                ObjectTitle      = queueItem.ObjectTitle,
                SiteName         = queueItem.SiteName,
                PublishingObject = queueItem.PublishingObject,
                ObjectUUID       = queueItem.ObjectUUID,
                //PublishingType = PublishingType.Remote,
                RemoteEndpoint    = null,
                TextFolderMapping = null,
                UserId            = queueItem.Vendor,
                Status            = logStatus,
                Vendor            = queueItem.Vendor,
                UtcProcessedTime  = queueItem.UtcProcessedTime,
                Message           = e == null ? queueItem.Message : e.Message,
                StackTrace        = e == null ? "" : e.StackTrace,
                PublishingAction  = queueItem.Action,
                QueueObject       = queueItem
            };

            _publishingLogProvider.Add(log);
        }
コード例 #3
0
        /// <summary>
        /// Determine if current item should be excluded from publishing or not.
        /// If it should be excluded, the current pipeline is aborted.
        /// Override this method for any custom implementation logic.
        /// </summary>
        /// <param name="context">context of the item being published</param>
        protected virtual void ProcessPublishItem(PublishItemContext context)
        {
            try
            {
                Assert.ArgumentNotNull((object)context, "context");
                Assert.ArgumentNotNull((object)context.PublishOptions, "context.PublishOptions");

                if (context.VersionToPublish == null)
                {
                    // Case 1: handled case where deleted items also should get excluded from publishing
                    // Case 2: handled case where shared fields of an item should be excluded from publishing
                    if (context.Action == PublishAction.DeleteTargetItem && context.PublishOptions != null)
                    {
                        Item deletedItem = context.PublishOptions.TargetDatabase.GetItem(context.ItemId);
                        if (deletedItem == null)
                        {
                            return;
                        }

                        context.VersionToPublish = deletedItem;
                    }
                    else if (context.Action == PublishAction.PublishSharedFields && context.PublishOptions != null)
                    {
                        Item sharedItem = context.PublishOptions.SourceDatabase.GetItem(context.ItemId);
                        if (sharedItem == null)
                        {
                            return;
                        }

                        context.VersionToPublish = sharedItem;
                    }
                    else
                    {
                        return;
                    }
                }

                PublishingLog.Debug(string.Format("Sitecore.PublishExclusions : SkipExcludedItems processing item - '{0}'", context.VersionToPublish.Paths.Path));

                // Check if item comes under any one of exluded nodes and also not under included nodes then abort pipeline.
                if (PublishExclusionsContext.Current.IsExcludedForCurrentPublish(context))
                {
                    PublishingLog.Debug(string.Format("Sitecore.PublishExclusions : SkipExcludedItems skipping item - '{0}'", context.VersionToPublish.Paths.Path));

                    string explanation = string.Format(ExplanationTextFormat, context.VersionToPublish.Paths.Path);
                    context.Result = new PublishItemResult(PublishOperation.Skipped, PublishChildAction.Skip, explanation, PublishExclusionsContext.Current.ReturnItemsToPublishQueue);
                    context.AbortPipeline();
                }

                //if publish action item is shared fields and version to publish has been manually set to an item then set it back to null
                if (context.Action == PublishAction.PublishSharedFields && context.VersionToPublish != null)
                {
                    context.VersionToPublish = null;
                }
            }
            catch (Exception ex)
            {
                PublishingLog.Error("Sitecore.PublishExclusions : SkipExcludedItems publish item processor - error in skipping excluded items", ex);
            }
        }
コード例 #4
0
        private void AddLog(OutgoingQueue queueItem, Exception e)
        {
            PublishingLog log = new PublishingLog()
            {
                UUID             = Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(20),
                QueueType        = QueueType.Outgoing,
                QueueUUID        = queueItem.UUID,
                SiteName         = queueItem.SiteName,
                PublishingObject = queueItem.PublishingObject,
                ObjectUUID       = queueItem.ObjectUUID,
                //PublishingType = PublishingType.Remote,
                RemoteEndpoint    = null,
                TextFolderMapping = null,
                UserId            = null,
                Status            = queueItem.Status,
                Vendor            = null,
                UtcProcessedTime  = queueItem.UtcLastExecutedTime,
                Message           = e == null ? queueItem.Message : e.Message,
                StackTrace        = e == null ? "" : e.StackTrace,
                PublishingAction  = queueItem.Action,
                QueueObject       = queueItem
            };

            _publishingLogProvider.Add(log);
        }
コード例 #5
0
 public virtual void Delete(string[] uuids)
 {
     foreach (string uuid in uuids)
     {
         var model = new PublishingLog(uuid).AsActual();
         this._outgoingLogProvider.Remove(model);
     }
 }
コード例 #6
0
 public virtual void Delete(Site site, string[] uuids)
 {
     foreach (string uuid in uuids)
     {
         var model = new PublishingLog(site, uuid).AsActual();
         if (model != null)
         {
             this._outgoingLogProvider.Remove(model);
         }
     }
 }
コード例 #7
0
        public override SitecoreDeployCommandArguments Execute(SitecoreDeployCommandArguments args)
        {
            Assert.ArgumentNotNull(args, nameof(args));

            args.Result = "";

            var master    = Database.GetDatabase("master");
            var web       = Database.GetDatabase("web");
            var targets   = new[] { web };
            var mode      = (args["arg"] ?? "smart").ToLowerInvariant();
            var languages = LanguageManager.GetLanguages(master).ToArray();

            switch (mode)
            {
            case "smart":
            {
                PublishingLog.Info("DeployService.PublishService Started Smart Publish");
                PublishManager.PublishSmart(master, targets, languages);
                JobsCount.TasksPublishings.Increment();
                args.Result = "SitecoreDeploy: Started Smart Publish";
                break;
            }

            case "full":
            {
                PublishingLog.Info("DeployService.PublishService Started Full Publish");
                foreach (var l in languages)
                {
                    PublishManager.Publish(new[]
                                           { new PublishOptions(master, web, PublishMode.Full, l, DateTime.Now) });
                    JobsCount.TasksPublishings.Increment();
                    args.Result += $"SitecoreDeploy: Started Full Publish for '{l}'\r\n";
                }

                break;
            }

            case "incremental":
            {
                PublishingLog.Info("DeployService.PublishService Started Incremental Publish");
                PublishManager.PublishIncremental(master, targets, languages);
                JobsCount.TasksPublishings.Increment();
                args.Result = "SitecoreDeploy: Started Incremental Publish";
                break;
            }

            default: throw new ArgumentException($"unknown mode '{mode}'");
            }

            return(args);
        }
コード例 #8
0
        void prepQueueTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            foreach (String file in Directory.GetFiles(PublishDirectory))
            {
                if (file.EndsWith(".pubreq") && !WorkingQueue.Contains(file) && !PendingQueue.Contains(file))
                {
                    PublishingLog.WriteEntry("Queueing Reqeust " + file, EventLogEntryType.Information);
                    PendingQueue.Add(file);
                }
            }

            if (!Working)
            {
                timer_Elapsed(prepQueueTimer, null);
            }
        }
コード例 #9
0
        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            if (Working)
            {
                PublishingLog.WriteEntry("Process is taking a while... Queue is working.", EventLogEntryType.Warning);
                return;
            }


            if (PendingQueue.Count > 0)
            {
                WorkingQueue.AddRange(PendingQueue);
                PendingQueue.Clear();
            }
            else
            {
                return;
            }

            Working = true;

            if (WorkingQueue.Count > 0)
            {
                PublishingLog.WriteEntry(String.Format("{0} files are queued for this round.", WorkingQueue.Count), EventLogEntryType.Information);
            }

            foreach (String fileName in WorkingQueue)
            {
                PublishingLog.WriteEntry("Beginning to publish " + fileName);
                try
                {
                    PublishRequest.ExecuteRequest(fileName);
                    PublishingLog.WriteEntry(String.Format("Completed Publish Request: {0}", fileName));
                }
                catch (Exception xmlex)
                {
                    PublishingLog.WriteEntry(xmlex.Message, EventLogEntryType.Error);
                }
            }

            Working = false;
            WorkingQueue.Clear();
        }
コード例 #10
0
        private void SendLog(PublishingLog item)
        {
            if (item.Site != null)
            {
                var site = item.Site.AsActual();
                //have set smtp
                if (site != null && site.Smtp != null && !string.IsNullOrEmpty(site.Smtp.Host) && !string.IsNullOrEmpty(site.Smtp.From)
                    && site.Smtp.To != null && site.Smtp.To.Length > 0)
                {
                    var logMessage = @"
Log type    : {0},
Action      : {1},
Item type   : {2},
Title       : {3},
Object UUID : {4}
Remote sites: {5},
Folder mapping:{6},
User        : {7},
Status      : {8}
Processed time:{9},
Message     : {10},
Stack trace : {11}
";
                    logMessage = string.Format(logMessage, item.QueueType,
                        item.PublishingAction,
                        item.PublishingObject,
                        item.ObjectTitle,
                        item.ObjectUUID,
                        string.IsNullOrEmpty(item.RemoteEndpoint) ? "-" : item.RemoteEndpoint,
                        string.IsNullOrEmpty(item.TextFolderMapping) ? "-" : item.TextFolderMapping,
                        string.IsNullOrEmpty(item.UserId) ? "-" : item.UserId,
                        item.Status,
                        item.UtcProcessedTime.Value.ToLocalTime(),
                        string.IsNullOrEmpty(item.Message) ? "-" : item.Message,
                        string.IsNullOrEmpty(item.StackTrace) ? "-" : item.StackTrace);


                    site.SendMailToSiteManager(site.Smtp.From, "Publishing log", logMessage, false);

                }
            }
        }
コード例 #11
0
        protected virtual void AddLog(RemotePublishingQueue queueItem, QueueStatus logStatus, PublishingAction action, Exception e = null)
        {
            PublishingLog log = new PublishingLog(queueItem.Site, Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(20))
            {
                QueueType         = QueueType.Remote,
                QueueUUID         = queueItem.UUID,
                ObjectTitle       = queueItem.ObjectTitle,
                PublishingObject  = queueItem.PublishingObject,
                ObjectUUID        = queueItem.ObjectUUID,
                RemoteEndpoint    = null,
                TextFolderMapping = null,
                UserId            = queueItem.UserId,
                Status            = logStatus,
                Vendor            = null,
                UtcProcessedTime  = DateTime.UtcNow,
                Message           = e == null ? queueItem.Message : e.Message,
                StackTrace        = e == null ? "" : e.StackTrace,
                PublishingAction  = action,
                QueueObject       = queueItem
            };

            _publishingLogProvider.Add(log);
        }
コード例 #12
0
 protected override void OnStart(string[] args)
 {
     timer.Start();
     PublishingLog.WriteEntry("Comment Publishing Service Started.", EventLogEntryType.Information);
     MailControler.MailToWebmaster("Comment Service Started", "Comment Publishing Service has been started.");
 }