/**
* {@inheritdoc}
*/
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);
}
}
}
}