Smile\ElasticsuiteVirtualCategory\Plugin\Catalog\Category\SaveProductsPositions::aroundSave PHP Method

aroundSave() public method

Append a commit callback to save the product positions.
public aroundSave ( Magento\Catalog\Model\ResourceModel\Category $categoryResource, Closure $proceed, Magento\Framework\Model\AbstractModel $category ) : Magento\Catalog\Model\ResourceModel\Category
$categoryResource Magento\Catalog\Model\ResourceModel\Category Category original resource model.
$proceed Closure Original save method.
$category Magento\Framework\Model\AbstractModel Saved category.
return Magento\Catalog\Model\ResourceModel\Category
    public function aroundSave(\Magento\Catalog\Model\ResourceModel\Category $categoryResource, \Closure $proceed, \Magento\Framework\Model\AbstractModel $category)
    {
        if ($category->getId() && $category->getSortedProducts()) {
            $this->unserializeProductPositions($category);
            if ($category->getIsVirtualCategory()) {
                $category->setPostedProducts([]);
            }
            $categoryResource->addCommitCallback(function () use($category) {
                $affectedProductIds = $this->getAffectedProductIds($category);
                $category->setAffectedProductIds($affectedProductIds);
                $this->saveHandler->saveProductPositions($category);
            });
        }
        return $proceed($category);
    }