private static IEnumerable <Item> GetMultiVariateTestDataSourceItems(this RenderingReference reference)
        {
            var list = new List <Item>();

            if (reference != null && !string.IsNullOrEmpty(reference.Settings.MultiVariateTest))
            {
                using (new SecurityDisabler())
                {
                    // Sitecore 7 to Sitecore 8:
                    //var mvVariateTestForLang = Sitecore.Analytics.Testing.TestingUtils.TestingUtil.MultiVariateTesting.GetVariableItem(reference);

                    // Sitecore 8.1 and above:
                    var contentTestStore     = new Sitecore.ContentTesting.Data.SitecoreContentTestStore();
                    var mvVariateTestForLang = contentTestStore.GetMultivariateTestVariable(reference, reference.Language);

                    var variableItem = (mvVariateTestForLang != null) ? mvVariateTestForLang.InnerItem : null;
                    if (variableItem == null)
                    {
                        return(list);
                    }
                    foreach (Item mvChild in variableItem.Children)
                    {
                        var mvDataSourceItem = mvChild.GetInternalLinkFieldItem("Datasource");
                        if (mvDataSourceItem != null)
                        {
                            list.Add(mvDataSourceItem);
                        }
                    }
                }
            }
            return(list);
        }
Пример #2
0
        private static IEnumerable <Item> GetMultiVariateTestDataSources(this RenderingReference reference)
        {
            var list = new List <Item>();

            if (reference != null && !string.IsNullOrEmpty(reference.Settings.MultiVariateTest))
            {
                using (new SecurityDisabler())
                {
                    var testStore = new Sitecore.ContentTesting.Data.SitecoreContentTestStore();
                    var tests     = testStore.GetMultivariateTestVariable(reference, reference.Language);

                    if (tests != null && tests.InnerItem != null)
                    {
                        foreach (Item child in tests.InnerItem.Children)
                        {
                            var datasource = child.GetInternalLinkFieldItem("Datasource");
                            if (datasource != null)
                            {
                                list.Add(datasource);
                            }
                        }
                    }
                }
            }
            return(list);
        }