示例#1
0
        private static Mock <IPublishedContent> MockPublishedContent(int id,
                                                                     PersonalisationGroupDefinitionMatch match,
                                                                     PersonalisationGroupDefinitionDuration duration,
                                                                     IEnumerable <PersonalisationGroupDefinitionDetail> definitionDetails,
                                                                     int score = 0)
        {
            var definitionPropertyMock = new Mock <IPublishedProperty>();

            definitionPropertyMock.Setup(c => c.PropertyTypeAlias).Returns("definition");
            definitionPropertyMock.Setup(c => c.Value).Returns(new PersonalisationGroupDefinition
            {
                Match    = match,
                Duration = duration,
                Details  = definitionDetails,
                Score    = score
            });

            var contentMock = new Mock <IPublishedContent>();

            contentMock.Setup(c => c.Id).Returns(id);
            contentMock.Setup(c => c.Name).Returns("Group " + id);
            contentMock.Setup(c => c.GetProperty(It.Is <string>(x => x == "definition"), It.IsAny <bool>())).Returns(definitionPropertyMock.Object);

            return(contentMock);
        }
        internal static bool MatchGroupsByName(string[] groupNames, IList <IPublishedContent> groups, PersonalisationGroupDefinitionMatch matchType)
        {
            // Package is disabled, return default
            if (UmbracoConfig.For.PersonalisationGroups().DisablePackage)
            {
                return(true);
            }

            var matches = 0;

            foreach (var groupName in groupNames)
            {
                var group = groups
                            .FirstOrDefault(x => string.Equals(x.Name, groupName, StringComparison.InvariantCultureIgnoreCase));
                if (group != null)
                {
                    if (MatchGroup(group))
                    {
                        if (matchType == PersonalisationGroupDefinitionMatch.Any)
                        {
                            return(true);
                        }
                        else
                        {
                            matches++;
                        }
                    }
                    else
                    {
                        if (matchType == PersonalisationGroupDefinitionMatch.All)
                        {
                            return(false);
                        }
                    }
                }
            }

            return(matches == groupNames.Count());
        }
        private static bool MatchesGroups(this UmbracoHelper helper, string[] groupNames, PersonalisationGroupDefinitionMatch matchType)
        {
            var groupsRootFolder = GetGroupsRootFolder(helper);

            if (groupsRootFolder == null)
            {
                return(false);
            }

            var groups = GetGroups(groupsRootFolder);

            return(UmbracoExtensionsHelper.MatchGroupsByName(groupNames, groups, matchType));
        }
        public bool MatchGroupsByName(string[] groupNames, IList <IPublishedContent> groups, PersonalisationGroupDefinitionMatch matchType)
        {
            // Package is disabled, return default
            if (_config.DisablePackage)
            {
                return(true);
            }

            var matches = 0;

            foreach (var groupName in groupNames)
            {
                var group = groups
                            .FirstOrDefault(x => string.Equals(x.Name, groupName, StringComparison.InvariantCultureIgnoreCase));
                if (@group == null)
                {
                    continue;
                }

                if (MatchGroup(@group))
                {
                    if (matchType == PersonalisationGroupDefinitionMatch.Any)
                    {
                        return(true);
                    }

                    matches++;
                }
                else
                {
                    if (matchType == PersonalisationGroupDefinitionMatch.All)
                    {
                        return(false);
                    }
                }
            }

            return(matches == groupNames.Length);
        }