metadata = $metadata; $this->formulaManager = $formulaManager; } public function beforeSave(Entity $entity, array $options = []) { if (!empty($options['skipFormula'])) return; $scriptList = $this->metadata->get(['formula', $entity->getEntityType(), 'beforeSaveScriptList'], []); $variables = (object)[]; foreach ($scriptList as $script) { try { $this->formulaManager->run($script, $entity, $variables); } catch (\Exception $e) { $GLOBALS['log']->error('Formula failed: ' . $e->getMessage()); } } $customScript = $this->metadata->get(['formula', $entity->getEntityType(), 'beforeSaveCustomScript']); if ($customScript) { try { $this->formulaManager->run($customScript, $entity, $variables); } catch (\Exception $e) { $GLOBALS['log']->error('Formula failed: ' . $e->getMessage()); } } } }