public static function getCalculatedFieldValueForEditMode($object, $params = [], $data)
{
if (!$data) {
return;
}
$fieldname = $data->getFieldname();
$ownerType = $data->getOwnerType();
/** @var $fd Model\Object\ClassDefinition\Data\CalculatedValue */
if ($ownerType == "object") {
$fd = $object->getClass()->getFieldDefinition($fieldname);
} elseif ($ownerType == "localizedfield") {
$fd = $object->getClass()->getFieldDefinition("localizedfields")->getFieldDefinition($fieldname);
} elseif ($ownerType == "classificationstore") {
$fd = $data->getKeyDefinition();
} elseif ($ownerType == "fieldcollection" || $ownerType == "objectbrick") {
$fd = $data->getKeyDefinition();
}
if (!$fd) {
return $data;
}
$className = $fd->getCalculatorClass();
if (!$className || !\Pimcore\Tool::classExists($className)) {
Logger::error("Class does not exist: " . $className);
return null;
}
$inheritanceEnabled = Model\Object\Concrete::getGetInheritedValues();
Model\Object\Concrete::setGetInheritedValues(true);
if (method_exists($className, 'getCalculatedValueForEditMode')) {
$result = call_user_func($className . '::getCalculatedValueForEditMode', $object, $data);
} else {
$result = self::getCalculatedFieldValue($object, $data);
}
Model\Object\Concrete::setGetInheritedValues($inheritanceEnabled);
return $result;
}