public function getDiffDataFromEditmode($data, $object = null, $params = [])
{
$localFields = $this->getDataFromObjectParam($object, $params);
$localData = [];
// get existing data
if ($localFields instanceof Object\Localizedfield) {
$localData = $localFields->getItems();
}
$mapping = [];
foreach ($data as $item) {
$extData = $item["extData"];
$fieldname = $extData["fieldname"];
$language = $item["lang"];
$values = $mapping[$fieldname];
$itemdata = $item["data"];
if ($itemdata) {
if (!$values) {
$values = [];
}
$values[] = $itemdata;
}
$mapping[$language][$fieldname] = $values;
}
foreach ($mapping as $language => $fields) {
foreach ($fields as $key => $value) {
$fd = $this->getFielddefinition($key);
if ($fd & $fd->isDiffChangeAllowed($object)) {
if ($value == null) {
unset($localData[$language][$key]);
} else {
$localData[$language][$key] = $fd->getDiffDataFromEditmode($value);
}
}
}
}
$localizedFields = new Object\Localizedfield($localData);
$localizedFields->setObject($object);
return $localizedFields;
}