From 3f3348fe921bfaf6c5d1a026da19fb0bfea53ba2 Mon Sep 17 00:00:00 2001 From: David Callizaya Date: Fri, 2 May 2025 14:11:08 -0400 Subject: [PATCH 1/2] Added support for PRAGMA_FILTERS in mustache --- ProcessMaker/Bpmn/MustacheOptions.php | 36 ++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/ProcessMaker/Bpmn/MustacheOptions.php b/ProcessMaker/Bpmn/MustacheOptions.php index 846ba30195..4a1b164620 100644 --- a/ProcessMaker/Bpmn/MustacheOptions.php +++ b/ProcessMaker/Bpmn/MustacheOptions.php @@ -21,33 +21,57 @@ public function __construct() ]; } - public function html64($text, Mustache_LambdaHelper $helper) + public function html64($text, ?Mustache_LambdaHelper $helper = null) { + if (!$helper) { + // Support for PRAGMA_FILTERS + return base64_encode('' . $text . ''); + } return base64_encode('' . $helper->render($text) . ''); } - public function base64($text, Mustache_LambdaHelper $helper) + public function base64($text, ?Mustache_LambdaHelper $helper = null) { + if (!$helper) { + // Support for PRAGMA_FILTERS + return base64_encode($text); + } return base64_encode($helper->render($text)); } - public function key($text, Mustache_LambdaHelper $helper) + public function key($text, ?Mustache_LambdaHelper $helper = null) { + if (!$helper) { + // Support for PRAGMA_FILTERS + return urlencode(Hash::make($text)); + } return urlencode(Hash::make($helper->render($text))); } - public function json($text, Mustache_LambdaHelper $helper) + public function json($text, ?Mustache_LambdaHelper $helper = null) { + if (!$helper) { + // Support for PRAGMA_FILTERS + return json_encode($text); + } return json_encode($helper->render($text)); } - public function serialize($text, Mustache_LambdaHelper $helper) + public function serialize($text, ?Mustache_LambdaHelper $helper = null) { + if (!$helper) { + // Support for PRAGMA_FILTERS + return serialize($text); + } return serialize($helper->render($text)); } - public function xml($text, Mustache_LambdaHelper $helper) + public function xml($text, ?Mustache_LambdaHelper $helper = null) { + if (!$helper) { + // Support for PRAGMA_FILTERS + return xmlrpc_encode($text); + } return xmlrpc_encode($helper->render($text)); } } From 22eb5cd39787bde135b8fee70cb4311fbff85094 Mon Sep 17 00:00:00 2001 From: David Callizaya Date: Fri, 15 May 2026 13:54:44 -0400 Subject: [PATCH 2/2] Use mustache pragma helper by default --- ProcessMaker/Models/MustacheExpressionEvaluator.php | 2 +- ProcessMaker/Providers/WorkflowServiceProvider.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ProcessMaker/Models/MustacheExpressionEvaluator.php b/ProcessMaker/Models/MustacheExpressionEvaluator.php index 085a43f93b..f2f8351db3 100644 --- a/ProcessMaker/Models/MustacheExpressionEvaluator.php +++ b/ProcessMaker/Models/MustacheExpressionEvaluator.php @@ -15,7 +15,7 @@ class MustacheExpressionEvaluator implements TemplateExpressionInterface public function __construct(array $options = []) { - $this->engine = new Mustache_Engine($options); + $this->engine = app(Mustache_Engine::class, $options); } /** diff --git a/ProcessMaker/Providers/WorkflowServiceProvider.php b/ProcessMaker/Providers/WorkflowServiceProvider.php index 7bdbc78c28..fd77b0389d 100644 --- a/ProcessMaker/Providers/WorkflowServiceProvider.php +++ b/ProcessMaker/Providers/WorkflowServiceProvider.php @@ -201,12 +201,13 @@ function (ThrowEventInterface $source, EventDefinitionInterface $sourceEventDefi /** * Mustache Engine */ - $this->app->bind(Mustache_Engine::class, function () { + $this->app->bind(Mustache_Engine::class, function ($app, $params) { $op = new MustacheOptions; return new Mustache_Engine([ 'helpers' => $op->helpers, 'pragmas' => [Mustache_Engine::PRAGMA_FILTERS], + ...($params['options'] ?? []), ]); });