Esempio n. 1
0
        public string Publish(IPublisherOptions options)
        {
            using (new UserSwitcher(@"sitecore\admin", false))
            {
                Log.Info($"Publisher::Publish has been called and the user context is: [{Sitecore.Context.User.Name}]", this);

                var publisherOptions = SetDefaults(options);
                var sourceDatabase   = Factory.GetDatabase(publisherOptions.SourceDatabaseName);
                var languages        = LanguageManager.GetLanguages(sourceDatabase).AsEnumerable();

                if (publisherOptions.LanguageNames != null && publisherOptions.LanguageNames.Length > 0)
                {
                    languages = languages.Where(l => publisherOptions.LanguageNames.Contains(l.Name));
                }

                var targets         = PublishManager.GetPublishingTargets(sourceDatabase).AsEnumerable();
                var targetDatabases = new List <Database>();

                if (publisherOptions.TargetNames != null && publisherOptions.TargetNames.Length > 0)
                {
                    targets = targets.Where(t => publisherOptions.TargetNames.Contains(t.Name));
                }

                foreach (var target in targets)
                {
                    targetDatabases.Add(Factory.GetDatabase(target["Target database"]));
                }

                var publishMode = ParsePublishMode(publisherOptions.PublishMode);

                var publishOptions = new PublishOptions(
                    sourceDatabase,
                    targetDatabases.First(),
                    publishMode,
                    languages.First(),
                    DateTime.Now,
                    publisherOptions.TargetNames.ToList())
                {
                    Deep     = publisherOptions.Deep,
                    RootItem = sourceDatabase.Items[publisherOptions.RootItem]
                };

                var publisher = new Sitecore.Publishing.Publisher(publishOptions, languages);
                var job       = publisher.PublishAsync();

                return(job.Name);
            }
        }
Esempio n. 2
0
        public IPublisherOptions Create(IPublisherOptions publisherOptions)
        {
            var defaultPublisherOptions = Create();

            if (string.IsNullOrWhiteSpace(publisherOptions.PublishMode))
            {
                publisherOptions.PublishMode = defaultPublisherOptions.PublishMode;
            }

            if (string.IsNullOrWhiteSpace(publisherOptions.RootItem))
            {
                publisherOptions.RootItem = defaultPublisherOptions.RootItem;
            }

            return(publisherOptions);
        }
Esempio n. 3
0
        public string Publish(IPublisherOptions options)
        {
            using (new SecurityDisabler())
            {
                var publisherOptions = SetDefaults(options);
                var sourceDatabase   = Factory.GetDatabase(publisherOptions.SourceDatabaseName);
                var languages        = LanguageManager.GetLanguages(sourceDatabase).AsEnumerable();

                if (publisherOptions.LanguageNames != null && publisherOptions.LanguageNames.Length > 0)
                {
                    languages = languages.Where(l => publisherOptions.LanguageNames.Contains(l.Name));
                }

                var targets         = PublishManager.GetPublishingTargets(sourceDatabase).AsEnumerable();
                var targetDatabases = new List <Database>();

                if (publisherOptions.TargetNames != null && publisherOptions.TargetNames.Length > 0)
                {
                    targets = targets.Where(t => publisherOptions.TargetNames.Contains(t.Name));
                }

                foreach (var target in targets)
                {
                    targetDatabases.Add(Factory.GetDatabase(target["Target database"]));
                }

                var publishMode = ParsePublishMode(publisherOptions.PublishMode);

                var publishOptions = new PublishOptions(
                    sourceDatabase,
                    targetDatabases.First(),
                    publishMode,
                    languages.First(),
                    DateTime.Now,
                    publisherOptions.TargetNames.ToList())
                {
                    Deep     = publisherOptions.Deep,
                    RootItem = sourceDatabase.Items[publisherOptions.RootItem]
                };

                var publisher = new Sitecore.Publishing.Publisher(publishOptions, languages);
                var job       = publisher.PublishAsync();

                return(job.Name);
            }
        }
Esempio n. 4
0
 public IPublisherOptions SetDefaults(IPublisherOptions publisherOptions)
 {
     return((new DefaultPublisherOptionsFactory()).Create(publisherOptions));
 }