Pimcore\Model\Object\ClassDefinition\Data\Localizedfields::getDiffDataFromEditmode PHP Method

getDiffDataFromEditmode() public method

See parent class.
public getDiffDataFromEditmode ( $data, null $object = null, mixed $params = [] ) : null | Pimcore_Date
$data
$object null
$params mixed
return null | Pimcore_Date
    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;
    }