diff --git a/src/Symfony/Component/Workflow/CHANGELOG.md b/src/Symfony/Component/Workflow/CHANGELOG.md index 8ec556131792e..8f0eb3324105c 100644 --- a/src/Symfony/Component/Workflow/CHANGELOG.md +++ b/src/Symfony/Component/Workflow/CHANGELOG.md @@ -7,3 +7,4 @@ CHANGELOG * Added `workflow.entered` events which is fired after the marking has been set. * Deprecated class name support in `WorkflowRegistry::add()` as second parameter. Wrap the class name in an instance of ClassInstanceSupportStrategy instead. + * Added support for `Event::getWorkflowName()`. diff --git a/src/Symfony/Component/Workflow/Event/Event.php b/src/Symfony/Component/Workflow/Event/Event.php index dce6a6f5df8fb..a268a373c08c3 100644 --- a/src/Symfony/Component/Workflow/Event/Event.php +++ b/src/Symfony/Component/Workflow/Event/Event.php @@ -24,17 +24,20 @@ class Event extends BaseEvent private $subject; private $marking; private $transition; + private $workflowName; /** * @param object $subject * @param Marking $marking * @param Transition $transition + * @param string $workflowName */ - public function __construct($subject, Marking $marking, Transition $transition) + public function __construct($subject, Marking $marking, Transition $transition, $workflowName = 'unnamed') { $this->subject = $subject; $this->marking = $marking; $this->transition = $transition; + $this->workflowName = $workflowName; } public function getMarking() @@ -51,4 +54,9 @@ public function getTransition() { return $this->transition; } + + public function getWorkflowName() + { + return $this->workflowName; + } } diff --git a/src/Symfony/Component/Workflow/Workflow.php b/src/Symfony/Component/Workflow/Workflow.php index cadd610ba480a..5f6e938315091 100644 --- a/src/Symfony/Component/Workflow/Workflow.php +++ b/src/Symfony/Component/Workflow/Workflow.php @@ -214,7 +214,7 @@ private function guardTransition($subject, Marking $marking, Transition $transit return; } - $event = new GuardEvent($subject, $marking, $transition); + $event = new GuardEvent($subject, $marking, $transition, $this->name); $this->dispatcher->dispatch('workflow.guard', $event); $this->dispatcher->dispatch(sprintf('workflow.%s.guard', $this->name), $event); @@ -226,7 +226,7 @@ private function guardTransition($subject, Marking $marking, Transition $transit private function leave($subject, Transition $transition, Marking $marking) { if (null !== $this->dispatcher) { - $event = new Event($subject, $marking, $transition); + $event = new Event($subject, $marking, $transition, $this->name); $this->dispatcher->dispatch('workflow.leave', $event); $this->dispatcher->dispatch(sprintf('workflow.%s.leave', $this->name), $event); @@ -247,7 +247,7 @@ private function transition($subject, Transition $transition, Marking $marking) return; } - $event = new Event($subject, $marking, $transition); + $event = new Event($subject, $marking, $transition, $this->name); $this->dispatcher->dispatch('workflow.transition', $event); $this->dispatcher->dispatch(sprintf('workflow.%s.transition', $this->name), $event); @@ -257,7 +257,7 @@ private function transition($subject, Transition $transition, Marking $marking) private function enter($subject, Transition $transition, Marking $marking) { if (null !== $this->dispatcher) { - $event = new Event($subject, $marking, $transition); + $event = new Event($subject, $marking, $transition, $this->name); $this->dispatcher->dispatch('workflow.enter', $event); $this->dispatcher->dispatch(sprintf('workflow.%s.enter', $this->name), $event); @@ -278,7 +278,7 @@ private function entered($subject, Transition $transition, Marking $marking) return; } - $event = new Event($subject, $marking, $transition); + $event = new Event($subject, $marking, $transition, $this->name); $this->dispatcher->dispatch('workflow.entered', $event); $this->dispatcher->dispatch(sprintf('workflow.%s.entered', $this->name), $event);