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