protected function evaluateAttributeValues(AttributeInterface $attribute, array $values = [])
{
$actualValues = [];
$values = array_filter($values, function ($value) {
return !empty($value);
});
/**
* We remove all deleted values
*/
$attribute->setValues($attribute->getValues()->filter(function (ValueInterface $value) use($attribute, $values, &$actualValues) {
$found = false;
if (in_array($value->getValue(), $values)) {
$actualValues[] = $value->getValue();
$found = true;
} else {
$attribute->removeValue($value);
}
return $found;
}));
$newValues = array_diff($values, $actualValues);
foreach ($newValues as $newValue) {
$value = $this->get('elcodi.factory.attribute_value')->create()->setValue($newValue)->setAttribute($attribute);
$attribute->addValue($value);
}
return $this;
}