示例#1
0
        private static bool IsArticlePassFilter(Article article, DPathFilterData filterData)
        {
            var articlesInFilter = Process(filterData.Expression, article);

            if (!articlesInFilter.Any() && (filterData.IsInversed || string.IsNullOrEmpty(filterData.Value)))
            {
                return(true);
            }

            return(articlesInFilter
                   .Select(articleInFilter => (IGetFieldStringValue)articleInFilter.ModelObject)
                   .Select(articleToCheck => IsEqualToFilter(articleToCheck, filterData))
                   .FirstOrDefault());
        }
示例#2
0
        private static bool IsEqualToFilter(IGetFieldStringValue articleToCheck, DPathFilterData filterData)
        {
            if (articleToCheck == null)
            {
                throw new Exception("May be filter expression was wrong (should implement IGetFieldStringValue interface)");
            }

            var result = articleToCheck.Value == filterData.Value;

            var ext = articleToCheck as ExtensionArticleField;

            if (ext != null)
            {
                result |= ext.Item?.ContentName == filterData.Value;
            }

            return((filterData.IsInversed) ? !result : result);
        }