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

synchronizeVariationsDeliveries() public method

public synchronizeVariationsDeliveries ( Sonata\Component\Product\ProductInterface $product, ArrayCollection $variations = null )
$product Sonata\Component\Product\ProductInterface
$variations Doctrine\Common\Collections\ArrayCollection
    public function synchronizeVariationsDeliveries(ProductInterface $product, ArrayCollection $variations = null)
    {
        if (in_array('deliveries', $this->getVariationFields())) {
            return;
        }
        if (!$variations) {
            $variations = $product->getVariations();
        }
        $productDeliveries = $product->getDeliveries();
        /** @var ProductInterface $variation */
        foreach ($variations as $variation) {
            $variationDeliveries = $variation->getDeliveries();
            // browsing variation deliveries and remove excessing deliveries
            foreach ($variationDeliveries as $productDelivery) {
                if ($productDelivery && !$productDeliveries->contains($productDelivery)) {
                    $variation->removeDelivery($productDelivery);
                }
            }
            // browsing Product deliveries and add missing deliveries
            foreach ($productDeliveries as $productDelivery) {
                if ($productDelivery && !$variationDeliveries->contains($productDelivery)) {
                    $delivery = clone $productDelivery;
                    $variation->addDelivery($delivery);
                }
            }
        }
    }