Skip to content

Commit b268900

Browse files
committed
Use the new IP address provider interface
1 parent 9abab41 commit b268900

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0",
1919
"symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
2020
"symfony/http-kernel": "^5.4 || ^6.0 || ^7.0",
21-
"gedmo/doctrine-extensions": "^3.19.0"
21+
"gedmo/doctrine-extensions": "^3.20.0"
2222
},
2323
"require-dev": {
2424
"phpstan/phpstan": "^1.10",

src/DependencyInjection/StofDoctrineExtensionsExtension.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class StofDoctrineExtensionsExtension extends Extension
4444
'softdeleteable' => array(
4545
'loadClassMetadata',
4646
'onFlush',
47+
'postFlush',
4748
),
4849
'sortable' => array(
4950
'onFlush',

src/EventListener/IpTraceListener.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
/**
1212
* @internal
13+
*
14+
* @deprecated to be removed in 2.0, use the IP address provider instead
1315
*/
1416
final class IpTraceListener implements EventSubscriberInterface
1517
{

src/Resources/config/ip_traceable.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@
1212
<call method="setAnnotationReader">
1313
<argument type="service" id=".stof_doctrine_extensions.reader" on-invalid="ignore" />
1414
</call>
15+
<call method="setIpAddressProvider">
16+
<argument type="service" id="stof_doctrine_extensions.tool.ip_address_provider" on-invalid="ignore" />
17+
</call>
1518
</service>
1619

1720
<service id="stof_doctrine_extensions.event_listener.ip_trace" class="Stof\DoctrineExtensionsBundle\EventListener\IpTraceListener" public="false">
21+
<deprecated package="stof/doctrine-extensions-bundle" version="1.14">The "%service_id%" service is deprecated and will be removed in 2.0. The "stof_doctrine_extensions.tool.ip_address_provider" service should be used to provide the IP address instead.</deprecated>
1822
<argument type="service" id="stof_doctrine_extensions.listener.ip_traceable" />
19-
<tag name="kernel.event_subscriber" />
2023
</service>
2124
</services>
2225
</container>

src/Resources/config/tool.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,9 @@
99
<argument type="service" id="security.token_storage" on-invalid="null" />
1010
<argument type="service" id="security.authorization_checker" on-invalid="null" />
1111
</service>
12+
13+
<service id="stof_doctrine_extensions.tool.ip_address_provider" class="Stof\DoctrineExtensionsBundle\Tool\RequestStackIpAddressProvider" public="false">
14+
<argument type="service" id="request_stack" on-invalid="null" />
15+
</service>
1216
</services>
1317
</container>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace Stof\DoctrineExtensionsBundle\Tool;
4+
5+
use Gedmo\Tool\IpAddressProviderInterface;
6+
use Symfony\Component\HttpFoundation\RequestStack;
7+
8+
/**
9+
* Provides an IP address for the extensions using an IP address reference.
10+
*
11+
* @internal
12+
*/
13+
final class RequestStackIpAddressProvider implements IpAddressProviderInterface
14+
{
15+
private ?RequestStack $requestStack;
16+
17+
public function __construct(?RequestStack $requestStack)
18+
{
19+
$this->requestStack = $requestStack;
20+
}
21+
22+
public function getAddress(): ?string
23+
{
24+
if (null === $this->requestStack) {
25+
return null;
26+
}
27+
28+
$request = $this->requestStack->getCurrentRequest();
29+
30+
if (null === $request) {
31+
return null;
32+
}
33+
34+
return $request->getClientIp();
35+
}
36+
}

0 commit comments

Comments
 (0)