[go: nahoru, domu]

Skip to content

Commit

Permalink
Merge pull request #453 from stof/support_ip_traceable
Browse files Browse the repository at this point in the history
Add support for IpTraceable
  • Loading branch information
stof committed Jul 7, 2023
2 parents 8452ab1 + 4f429de commit 28bda1e
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ private function getVendorNode(string $name): ArrayNodeDefinition
->scalarNode('sluggable')->defaultFalse()->end()
->scalarNode('tree')->defaultFalse()->end()
->scalarNode('loggable')->defaultFalse()->end()
->scalarNode('ip_traceable')->defaultFalse()->end()
->scalarNode('sortable')->defaultFalse()->end()
->scalarNode('softdeleteable')->defaultFalse()->end()
->scalarNode('uploadable')->defaultFalse()->end()
Expand Down
5 changes: 5 additions & 0 deletions src/DependencyInjection/StofDoctrineExtensionsExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ class StofDoctrineExtensionsExtension extends Extension
'onFlush',
'loadClassMetadata',
),
'ip_traceable' => array(
'prePersist',
'onFlush',
'loadClassMetadata',
),
'loggable' => array(
'loadClassMetadata',
'onFlush',
Expand Down
42 changes: 42 additions & 0 deletions src/EventListener/IpTraceListener.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

namespace Stof\DoctrineExtensionsBundle\EventListener;

use Gedmo\IpTraceable\IpTraceableListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\KernelEvents;

/**
* @internal
*/
final class IpTraceListener implements EventSubscriberInterface
{
private $ipTraceableListener;

public function __construct(IpTraceableListener $ipTraceableListener)
{
$this->ipTraceableListener = $ipTraceableListener;
}

public function onKernelRequest(RequestEvent $event)
{
if (HttpKernelInterface::MAIN_REQUEST !== $event->getRequestType()) {
return;
}

$ip = $event->getRequest()->getClientIp();

if (null !== $ip) {
$this->ipTraceableListener->setIpValue($ip);
}
}

public static function getSubscribedEvents(): array
{
return array(
KernelEvents::REQUEST => ['onKernelRequest', 500],
);
}
}
19 changes: 19 additions & 0 deletions src/Resources/config/ip_traceable.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>

<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

<services>
<service id="stof_doctrine_extensions.listener.ip_traceable" class="Gedmo\IpTraceable\IpTraceableListener" public="false">
<call method="setAnnotationReader">
<argument type="service" id="annotation_reader" />
</call>
</service>

<service id="stof_doctrine_extensions.event_listener.ip_trace" class="Stof\DoctrineExtensionsBundle\EventListener\IpTraceListener" public="false">
<argument type="service" id="stof_doctrine_extensions.listener.ip_traceable" />
<tag name="kernel.event_subscriber" />
</service>
</services>
</container>
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public static function provideExtensions()
{
return array(
array('blameable'),
array('ip_traceable'),
array('loggable'),
array('reference_integrity'),
array('sluggable'),
Expand Down

0 comments on commit 28bda1e

Please sign in to comment.