コード例 #1
0
        public void Dispose()
        {
            if (_securityDisabler != null)
            {
                _securityDisabler.Dispose();
                _securityDisabler = null;
            }

            if (_siteContextSwitcher != null)
            {
                _siteContextSwitcher.Dispose();
                _siteContextSwitcher = null;
            }

            if (_languageSwitcher != null)
            {
                _languageSwitcher.Dispose();
                _languageSwitcher = null;
            }

            if (_databaseSwitcher != null)
            {
                _databaseSwitcher.Dispose();
                _databaseSwitcher = null;
            }

            if (_userSwitcher != null)
            {
                _userSwitcher.Dispose();
                _userSwitcher = null;
            }
        }
コード例 #2
0
        protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)
        {
            var settings = new WriteToTagSettings();
            var database = Settings.GetSetting("DEF.WriteToTagStepConverter.Db");

            using (var db = new DatabaseSwitcher(Database.GetDatabase(database)))
            {
                var createPath = base.GetStringValue(source, WriteToTagSettingsItemModel.CreatePath);
                if (createPath != null)
                {
                    var parentTagItem = Sitecore.Context.Data.Database.GetItem(createPath);
                    settings.CreatePath = parentTagItem;
                }

                var destinationTemplate = base.GetStringValue(source, WriteToTagSettingsItemModel.DestinationTemplate);
                if (createPath != null)
                {
                    var desiredTemplate = Sitecore.Context.Data.Database.GetItem(ID.Parse(destinationTemplate));
                    settings.DestinationTemplate = (TemplateItem)desiredTemplate;
                }
            }

            var sourceField      = base.GetStringValue(source, WriteToTagSettingsItemModel.SourceField);
            var destinationField = base.GetStringValue(source, WriteToTagSettingsItemModel.DestinationField);
            var countField       = base.GetStringValue(source, WriteToTagSettingsItemModel.CountField);

            settings.SourceField      = sourceField;
            settings.DestinationField = destinationField;
            settings.CountField       = countField;

            pipelineStep.Plugins.Add(settings);
        }
コード例 #3
0
        public IEnumerable <Item> GetAllItemsWithPresentationFilteredByTemplate(SiteInfo siteInfo, ID baseTemplateId, string forceDatabase)
        {
            var databaseName = !string.IsNullOrEmpty(forceDatabase) ? forceDatabase : siteInfo.Database;
            var database     = Database.GetDatabase(databaseName);

            using (var databaseSwitcher = new DatabaseSwitcher(database))
            {
                var startItem = database.GetItem($"{siteInfo.RootPath}{siteInfo.StartItem}");
                return(Recurse(startItem, baseTemplateId));
            }
        }
コード例 #4
0
ファイル: Db.cs プロジェクト: dharnitski/Sitecore.FakeDb
    /// <summary>
    /// Initializes a new instance of the <see cref="Db"/> class with the specified database.
    /// </summary>
    /// <param name="databaseName">The database name.</param>
    public Db(string databaseName)
    {
      Assert.ArgumentNotNullOrEmpty(databaseName, "databaseName");

      this.database = Database.GetDatabase(databaseName);
      this.dataStorage = new DataStorage(this.database);
      this.dataStorageSwitcher = new DataStorageSwitcher(this.dataStorage);
      this.databaseSwitcher = new DatabaseSwitcher(this.database);

      var args = new InitDbArgs(this.database, this.dataStorage);
      CorePipeline.Run("initFakeDb", args);
    }
コード例 #5
0
        public Db(string databaseName)
        {
            Assert.ArgumentNotNullOrEmpty(databaseName, "databaseName");

            this.database    = Database.GetDatabase(databaseName);
            this.dataStorage = new DataStorage(this.database);

            this.databaseSwitcher = new DatabaseSwitcher(this.database);

            var args = new InitDbArgs(this.database, this.dataStorage);

            CorePipeline.Run("initFakeDb", args);
        }
コード例 #6
0
        protected override RenderingReference DoActivateCondition(RenderingDefinition rendering, ID conditionID, Language lang, Database database, Item item, SiteContext site)
        {
            // Copied from Sitecore
            Assert.ArgumentNotNull(rendering, "rendering");
            Assert.ArgumentNotNull(conditionID, "conditionID");
            Assert.ArgumentNotNull(lang, "lang");
            Assert.ArgumentNotNull(database, "database");
            Assert.ArgumentNotNull(item, "item");
            Assert.ArgumentNotNull(site, "site");
            RenderingReference renderingReference             = new RenderingReference(rendering, lang, database);
            RuleList <ConditionalRenderingsRuleContext> rules = renderingReference.Settings.Rules;
            Rule <ConditionalRenderingsRuleContext>     rule  = rules.Rules.FirstOrDefault <Rule <ConditionalRenderingsRuleContext> >((Rule <ConditionalRenderingsRuleContext> r) => r.UniqueId == conditionID);

            if (rule == null)
            {
                return(renderingReference);
            }
            List <RenderingReference> renderingReferences = new List <RenderingReference>()
            {
                renderingReference
            };
            ConditionalRenderingsRuleContext conditionalRenderingsRuleContext = new ConditionalRenderingsRuleContext(renderingReferences, renderingReference)
            {
                Item = item
            };

            rule.SetCondition(new TrueCondition <ConditionalRenderingsRuleContext>());
            rules = new RuleList <ConditionalRenderingsRuleContext>(rule);
            using (SiteContextSwitcher siteContextSwitcher = new SiteContextSwitcher(site))
            {
                using (DatabaseSwitcher databaseSwitcher = new DatabaseSwitcher(item.Database))
                {
                    rules.Run(conditionalRenderingsRuleContext);
                }
            }
            Assert.IsTrue(conditionalRenderingsRuleContext.References.Count == 1, "The references count should equal 1");
            RenderingReference renderingReference1 = conditionalRenderingsRuleContext.References[0];

            Assert.IsNotNull(renderingReference1, "result");
            rendering.Datasource = renderingReference1.Settings.DataSource;
            if (renderingReference1.RenderingItem != null)
            {
                rendering.ItemID = renderingReference1.RenderingItem.ID.ToString();
            }
            // End copied from Sitecore

            // Apply Parameters Too
            rendering.Parameters = renderingReference1.Settings.Parameters;

            return(renderingReference1);
        }
コード例 #7
0
        public ReportContext(string userName = "******", string siteName = "shell", string databaseName = "master", string language = null)
        {
            var user = User.FromName(userName, false);

            _userSwitcher     = new UserSwitcher(user);
            _databaseSwitcher = new DatabaseSwitcher(Sitecore.Configuration.Factory.GetDatabase(databaseName));

            if (!string.IsNullOrEmpty(language))
            {
                _languageSwitcher = new LanguageSwitcher(language);
            }

            _siteContextSwitcher = new SiteContextSwitcher(SiteContextFactory.GetSiteContext(siteName));
            _securityDisabler    = new SecurityDisabler();
        }
コード例 #8
0
    /// <summary>
    /// Initializes a new instance of the <see cref="Db"/> class with the specified database.
    /// </summary>
    /// <param name="databaseName">The database name.</param>
    public Db(string databaseName)
    {
      Assert.ArgumentNotNullOrEmpty(databaseName, "databaseName");

      this.database = Database.GetDatabase(databaseName);
      this.dataStorage = new DataStorage(this.database);
      this.dataStorageSwitcher = new DataStorageSwitcher(this.dataStorage);
      this.databaseSwitcher = new DatabaseSwitcher(this.database);
      this.databaseLanguages = new Stack<Switcher<DbLanguages>>();
      this.databaseLanguages.Push(
                  new Switcher<DbLanguages>(
                          new DbLanguages(Language.Parse("en"))));

      var args = new InitDbArgs(this.database, this.dataStorage);
      CorePipeline.Run("initFakeDb", args);
    }
コード例 #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Db"/> class with the specified database.
        /// </summary>
        /// <param name="databaseName">The database name.</param>
        public Db(string databaseName)
        {
            Assert.ArgumentNotNullOrEmpty(databaseName, "databaseName");

            this.database            = Database.GetDatabase(databaseName);
            this.dataStorage         = new DataStorage(this.database);
            this.dataStorageSwitcher = new DataStorageSwitcher(this.dataStorage);
            this.databaseSwitcher    = new DatabaseSwitcher(this.database);
            this.databaseLanguages   = new Stack <Switcher <DbLanguages> >();
            this.databaseLanguages.Push(
                new Switcher <DbLanguages>(
                    new DbLanguages(Language.Parse("en"))));

            var args = new InitDbArgs(this.database, this.dataStorage);

            CorePipeline.Run("initFakeDb", args);
        }
コード例 #10
0
        /// <summary>
        /// Runs the healthcheck.
        /// </summary>
        public override void RunHealthcheck()
        {
            this.LastCheckTime  = DateTime.UtcNow;
            this.Status         = HealthcheckStatus.Healthy;
            this.HealthyMessage = "Search index contain no errors";

            if (string.IsNullOrEmpty(IndexName))
            {
                this.Status = HealthcheckStatus.Warning;
                this.ErrorList.Entries.Add(new ErrorEntry
                {
                    Created   = DateTime.UtcNow,
                    Reason    = "Search Index Check is not configured correctly",
                    Exception = null
                });

                return;
            }

            ISearchIndex index;

            try
            {
                index = ContentSearchManager.GetIndex(IndexName);
            }
            catch (Exception)
            {
                this.Status = HealthcheckStatus.Warning;
                this.ErrorList.Entries.Add(new ErrorEntry
                {
                    Created   = DateTime.UtcNow,
                    Reason    = "Search Index does not exist or cannot be loaded: " + IndexName,
                    Exception = null
                });

                return;
            }

            var totalResults = 0;

            try
            {
                IQueryable <SearchResultItem> query = null;

                using (var context = index.CreateSearchContext())
                {
                    if (string.IsNullOrEmpty(CustomQuery))
                    {
                        query = context.GetQueryable <SearchResultItem>();
                    }
                    else
                    {
                        var stringModel = SearchStringModel.ExtractSearchQuery(CustomQuery);
                        using (var switcher = new DatabaseSwitcher(Factory.GetDatabase("master")))
                        {
                            query = LinqHelper.CreateQuery <SearchResultItem>(context, stringModel);
                        }
                    }

                    totalResults = query.Count();
                }

                if (MinimumExpectedDocumentsCount > totalResults)
                {
                    this.Status = HealthcheckStatus.Error;
                    this.ErrorList.Entries.Add(new ErrorEntry
                    {
                        Created   = DateTime.UtcNow,
                        Reason    = string.Format("Search Index returned less items than expected: {0}, actual: {1} ", this.MinimumExpectedDocumentsCount, totalResults),
                        Exception = null
                    });

                    return;
                }
            }
            catch (Exception ex)
            {
                this.Status = HealthcheckStatus.Error;
                this.ErrorList.Entries.Add(new ErrorEntry
                {
                    Created   = DateTime.UtcNow,
                    Reason    = "Search Index error",
                    Exception = ex
                });

                return;
            }
        }