. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Formula; use Espo\Core\InjectableFactory; use Espo\Core\Utils\Metadata; use Espo\ORM\Entity; use stdClass; /** * An access point for the formula functionality. */ class Manager { private Evaluator $evaluator; public function __construct(InjectableFactory $injectableFactory, Metadata $metadata) { $functionClassNameMap = $metadata->get(['app', 'formula', 'functionClassNameMap'], []); $this->evaluator = new Evaluator($injectableFactory, $functionClassNameMap); } /** * Executes a script and returns its result. * * @return mixed * @throws Exceptions\Error */ public function run(string $script, ?Entity $entity = null, ?stdClass $variables = null) { return $this->evaluator->process($script, $entity, $variables); } }