Beispiel #1
0
 /**
  * @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;
 }