@@ -650,24 +650,38 @@ protected function addFilterGroupToCollection(
650
650
\Magento \Framework \Api \Search \FilterGroup $ filterGroup ,
651
651
Collection $ collection
652
652
) {
653
- $ fields = [];
654
- $ categoryFilter = [];
653
+ $ customFilterValues = [];
654
+ $ customFilterMethods = [];
655
655
foreach ($ filterGroup ->getFilters () as $ filter ) {
656
656
$ conditionType = $ filter ->getConditionType () ? $ filter ->getConditionType () : 'eq ' ;
657
657
658
- if ($ filter ->getField () == 'category_id ' ) {
659
- $ categoryFilter [$ conditionType ][] = $ filter ->getValue ();
660
- continue ;
658
+ switch ($ filter ->getField ()) {
659
+ case 'category_id ' :
660
+ $ customFilterValues ['category_id ' ][$ conditionType ][] = $ filter ->getValue ();
661
+ $ customFilterMethods ['category_id ' ] = 'addCategoriesFilter ' ;
662
+ break ;
663
+ case 'store ' :
664
+ $ customFilterValues ['store ' ] = $ filter ->getValue ();
665
+ $ customFilterMethods ['store ' ] = 'addStoreFilter ' ;
666
+ break ;
667
+ case 'website_id ' :
668
+ $ value = $ filter ->getValue ();
669
+ if (strpos ($ value , ', ' ) !== false ) {
670
+ $ value = explode (', ' , $ value );
671
+ }
672
+ $ customFilterValues ['website_id ' ] = is_array ($ value ) ? $ value : [$ value ];
673
+ $ customFilterMethods ['website_id ' ] = 'addWebsiteFilter ' ;
674
+ break ;
675
+ default :
676
+ $ customFilterValues ['fields ' ][] = ['attribute ' => $ filter ->getField (), $ conditionType => $ filter ->getValue ()];
677
+ $ customFilterMethods ['fields ' ] = 'addFieldToFilter ' ;
678
+ break ;
661
679
}
662
- $ fields [] = ['attribute ' => $ filter ->getField (), $ conditionType => $ filter ->getValue ()];
663
- }
664
-
665
- if ($ categoryFilter ) {
666
- $ collection ->addCategoriesFilter ($ categoryFilter );
667
680
}
668
681
669
- if ($ fields ) {
670
- $ collection ->addFieldToFilter ($ fields );
682
+ foreach ($ customFilterValues as $ filterName => $ filterValue ) {
683
+ $ filterMethod = $ customFilterMethods [$ filterName ];
684
+ $ collection ->$ filterMethod ($ filterValue );
671
685
}
672
686
}
673
687
0 commit comments