Sonata\ProductBundle\Model\BaseProductProvider::synchronizeVariationsCollections PHP Method

synchronizeVariationsCollections() public method

public synchronizeVariationsCollections ( Sonata\Component\Product\ProductInterface $product, ArrayCollection $variations = null )
$product Sonata\Component\Product\ProductInterface
$variations Doctrine\Common\Collections\ArrayCollection
    public function synchronizeVariationsCollections(ProductInterface $product, ArrayCollection $variations = null)
    {
        if (in_array('productCollections', $this->getVariationFields())) {
            return;
        }
        if (!$variations) {
            $variations = $product->getVariations();
        }
        $productCollections = $product->getCollections();
        /** @var ProductInterface $variation */
        foreach ($variations as $variation) {
            $variationCollections = $variation->getCollections();
            // browsing variation collections and remove excessing collections
            foreach ($variationCollections as $variationCollection) {
                if ($variationCollection && !$productCollections->contains($variationCollection)) {
                    $this->productCollectionManager->removeCollectionFromProduct($variation, $variationCollection);
                }
            }
            // browsing Product collections and add missing collections
            foreach ($productCollections as $productCollection) {
                if ($productCollection && !$variationCollections->contains($productCollection)) {
                    $this->productCollectionManager->addCollectionToProduct($variation, $productCollection);
                }
            }
        }
    }