diff --git a/src/module-elasticsuite-virtual-category/Api/Data/VirtualRuleInterface.php b/src/module-elasticsuite-virtual-category/Api/Data/VirtualRuleInterface.php new file mode 100644 index 000000000..ef28804b0 --- /dev/null +++ b/src/module-elasticsuite-virtual-category/Api/Data/VirtualRuleInterface.php @@ -0,0 +1,45 @@ + + * @copyright 2016 Smile + * @license Open Software License ("OSL") v. 3.0 + */ +namespace Smile\ElasticsuiteVirtualCategory\Api\Data; + +use Magento\Catalog\Api\Data\CategoryInterface; + +/** + * Virtual Category Rule Interface. + * + * @category Smile + * @package Smile\ElasticsuiteVirtualCategory + * @author Romain Ruaud + */ +interface VirtualRuleInterface +{ + /** + * Build search query by category. + * + * @param CategoryInterface $category Search category. + * @param array $excludedCategories Categories that should not be used into search query building. + * Used to avoid infinite recursion while building virtual categories rules. + * + * @return \Smile\ElasticsuiteCore\Search\Request\QueryInterface + */ + public function getCategorySearchQuery($category, $excludedCategories = []); + + /** + * Retrieve search queries of children categories. + * + * @param CategoryInterface $rootCategory Root category. + * + * @return \Smile\ElasticsuiteCore\Search\Request\QueryInterface[] + */ + public function getSearchQueriesByChildren(CategoryInterface $rootCategory); +} diff --git a/src/module-elasticsuite-virtual-category/Model/Rule.php b/src/module-elasticsuite-virtual-category/Model/Rule.php index 91ffb4582..5eb99d447 100644 --- a/src/module-elasticsuite-virtual-category/Model/Rule.php +++ b/src/module-elasticsuite-virtual-category/Model/Rule.php @@ -16,6 +16,7 @@ use Smile\ElasticsuiteCore\Search\Request\QueryInterface; use Magento\Catalog\Api\Data\CategoryInterface; +use Smile\ElasticsuiteVirtualCategory\Api\Data\VirtualRuleInterface; /** * Virtual category rule. @@ -26,7 +27,7 @@ * @package Smile\ElasticsuiteVirtualCategory * @author Aurelien FOUCRET */ -class Rule extends \Smile\ElasticsuiteCatalogRule\Model\Rule +class Rule extends \Smile\ElasticsuiteCatalogRule\Model\Rule implements VirtualRuleInterface { /** * @var \Smile\ElasticsuiteCore\Search\Request\Query\QueryFactory diff --git a/src/module-elasticsuite-virtual-category/etc/extension_attributes.xml b/src/module-elasticsuite-virtual-category/etc/extension_attributes.xml new file mode 100644 index 000000000..426a838da --- /dev/null +++ b/src/module-elasticsuite-virtual-category/etc/extension_attributes.xml @@ -0,0 +1,23 @@ + + + + + + +