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()); }
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); }