|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace Flagbit\Bundle\ProductClonerBundle\Controller; |
|
4
|
|
|
|
|
5
|
|
|
use Akeneo\Pim\Enrichment\Component\Product\Model\EntityWithFamilyVariantInterface; |
|
6
|
|
|
use Akeneo\Pim\Structure\Component\Repository\AttributeRepositoryInterface; |
|
7
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
|
8
|
|
|
use Symfony\Component\Serializer\Normalizer\NormalizerInterface; |
|
9
|
|
|
|
|
10
|
|
|
abstract class AbstractController extends Controller |
|
|
|
|
|
|
11
|
|
|
{ |
|
12
|
|
|
|
|
13
|
|
|
abstract protected function getNormalizer() : NormalizerInterface; |
|
14
|
|
|
|
|
15
|
|
|
abstract protected function getAttributeRepository() : AttributeRepositoryInterface; |
|
16
|
|
|
|
|
17
|
|
|
protected function getAttributeCodeBlacklist() : array |
|
18
|
|
|
{ |
|
19
|
|
|
return []; |
|
20
|
|
|
} |
|
21
|
|
|
|
|
22
|
|
|
protected function normalizeProduct(EntityWithFamilyVariantInterface $product) |
|
23
|
|
|
{ |
|
24
|
|
|
$normalizedProduct = $this->getNormalizer()->normalize($product, 'external_api'); |
|
25
|
|
|
|
|
26
|
|
|
while ($parent = $product->getParent()) { |
|
27
|
|
|
foreach ($parent->getValuesForVariation() as $value) { |
|
28
|
|
|
//this workaround removes the attributes of all parent models, as the getValues() Method, |
|
29
|
|
|
// which is called by the normalizer, returns all Values including the values of the parent Model |
|
30
|
|
|
unset($normalizedProduct['values'][$value->getAttributeCode()]); |
|
31
|
|
|
} |
|
32
|
|
|
$product = $parent; |
|
33
|
|
|
} |
|
34
|
|
|
|
|
35
|
|
|
$ignoredAttributeCodes = array_merge( |
|
36
|
|
|
$this->getAttributeRepository()->findUniqueAttributeCodes(), |
|
37
|
|
|
$this->getAttributeCodeBlacklist() |
|
38
|
|
|
); |
|
39
|
|
|
|
|
40
|
|
|
foreach ($ignoredAttributeCodes as $attributeCode) { |
|
41
|
|
|
unset($normalizedProduct['values'][$attributeCode]); |
|
42
|
|
|
} |
|
43
|
|
|
unset($normalizedProduct['identifier']); |
|
44
|
|
|
if (empty((array)$normalizedProduct['associations'])) { |
|
45
|
|
|
unset($normalizedProduct['associations']); |
|
46
|
|
|
} |
|
47
|
|
|
|
|
48
|
|
|
return $normalizedProduct; |
|
49
|
|
|
} |
|
50
|
|
|
} |
|
51
|
|
|
|