Skip to content

Commit b79f7df

Browse files
committed
[FrameworkBundle][Workflow] Add a way to enable the AuditTrail Logger
1 parent 0217e87 commit b79f7df

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

DependencyInjection/Configuration.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
247247
->fixXmlConfig('place')
248248
->fixXmlConfig('transition')
249249
->children()
250+
->arrayNode('audit_trail')
251+
->canBeEnabled()
252+
->end()
250253
->enumNode('type')
251254
->values(array('workflow', 'state_machine'))
252255
->defaultValue('workflow')

DependencyInjection/FrameworkExtension.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
3535
use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer;
3636
use Symfony\Component\Workflow;
37-
use Symfony\Component\Workflow\SupportStrategy\ClassInstanceSupportStrategy;
3837
use Symfony\Component\Console\Application;
3938

4039
/**
@@ -480,13 +479,24 @@ private function registerWorkflowConfiguration(array $workflows, ContainerBuilde
480479
// Add workflow to Registry
481480
if ($workflow['supports']) {
482481
foreach ($workflow['supports'] as $supportedClassName) {
483-
$strategyDefinition = new Definition(ClassInstanceSupportStrategy::class, array($supportedClassName));
482+
$strategyDefinition = new Definition(Workflow\SupportStrategy\ClassInstanceSupportStrategy::class, array($supportedClassName));
484483
$strategyDefinition->setPublic(false);
485484
$registryDefinition->addMethodCall('add', array(new Reference($workflowId), $strategyDefinition));
486485
}
487486
} elseif (isset($workflow['support_strategy'])) {
488487
$registryDefinition->addMethodCall('add', array(new Reference($workflowId), new Reference($workflow['support_strategy'])));
489488
}
489+
490+
// Enable the AuditTrail
491+
if ($workflow['audit_trail']['enabled']) {
492+
$listener = new Definition(Workflow\EventListener\AuditTrailListener::class);
493+
$listener->addTag('monolog.logger', array('channel' => 'workflow'));
494+
$listener->addTag('kernel.event_listener', array('event' => sprintf('workflow.%s.leave', $name), 'method' => 'onLeave'));
495+
$listener->addTag('kernel.event_listener', array('event' => sprintf('workflow.%s.transition', $name), 'method' => 'onTransition'));
496+
$listener->addTag('kernel.event_listener', array('event' => sprintf('workflow.%s.enter', $name), 'method' => 'onEnter'));
497+
$listener->addArgument(new Reference('logger'));
498+
$container->setDefinition(sprintf('%s.listener.audit_trail', $workflowId), $listener);
499+
}
490500
}
491501
}
492502

0 commit comments

Comments
 (0)