diff --git a/ProcessMaker/Events/ProcessUpdated.php b/ProcessMaker/Events/ProcessUpdated.php index 01d253303b..a5e91245f3 100644 --- a/ProcessMaker/Events/ProcessUpdated.php +++ b/ProcessMaker/Events/ProcessUpdated.php @@ -26,6 +26,8 @@ class ProcessUpdated implements ShouldBroadcastNow public $activeTokens; + public $elementDestination; + /** * Create a new event instance. * @@ -41,6 +43,7 @@ public function __construct(ProcessRequest $processRequest, $event, TokenInterfa if ($token) { $this->tokenId = $token->getId(); $this->elementType = $token->element_type; + $this->elementDestination = $token->elementDestination; } } diff --git a/ProcessMaker/Models/ProcessRequestToken.php b/ProcessMaker/Models/ProcessRequestToken.php index 75ef5b7546..4385664d8e 100644 --- a/ProcessMaker/Models/ProcessRequestToken.php +++ b/ProcessMaker/Models/ProcessRequestToken.php @@ -1317,10 +1317,17 @@ private function getElementDestination($elementDestinationType, $elementDestinat $result = $this->evaluateConditionalRedirect(app(ConditionalRedirectServiceInterface::class), $conditionalRedirectProp); if ($result) { $elementDestinationType = $result['taskDestination']['value']; + + $url = match ($elementDestinationType) { + 'customDashboard' => $result['customDashboard']['url'] ?? null, + 'externalURL' => $result['externalUrl'] ?? null, + default => null, + }; + $elementDestinationProp = [ 'value' => [ - 'url' => ($result['customDashboard']['url'] ?? null) ?: ($result['externalUrl'] ?? null), - ] + 'url' => $url, + ], ]; } } @@ -1372,6 +1379,7 @@ private function evaluateConditionalRedirect(ConditionalRedirectServiceInterface if (!$conditionalRedirectProp['isEnabled']) { return null; } + return $conditionalRedirectService->resolveForToken($conditionalRedirectProp['conditions'], $this); }