Completed
Push — master ( 87c3e9...49a3bf )
by Matt
19s queued 11s
created

WanderDeleteListener   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 4
Bugs 1 Features 1
Metric Value
wmc 5
eloc 14
c 4
b 1
f 1
dl 0
loc 39
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A preRemove() 0 10 2
A postRemove() 0 12 2
1
<?php
2
3
namespace App\EventListener;
4
5
use App\Entity\Wander;
6
use App\Service\GpxService;
7
use Psr\Log\LoggerInterface;
8
use Doctrine\Persistence\Event\LifecycleEventArgs;
9
10
class WanderDeleteListener
11
{
12
    /** @var LoggerInterface $logger */
13
    private $logger;
14
15
    /** @var GpxService */
16
    private $gpxService;
17
18
    public function __construct(LoggerInterface $logger, GpxService $gpxService)
19
    {
20
        $this->logger = $logger;
21
        $this->gpxService = $gpxService;
22
    }
23
24
    public function preRemove(
25
        Wander $wander,
26
        /** @scrutinizer ignore-unused */ LifecycleEventArgs $event
27
    ): void {
28
        // If we're about to delete a wander, we want to remove it as a featuring
29
        // wander from the related Image first, otherwise we'll break referential
30
        // integrity.
31
        $image = $wander->getFeaturedImage();
32
        if ($image !== null) {
33
            $image->setFeaturingWander(null);
34
        }
35
    }
36
37
    public function postRemove(
38
        Wander $wander,
39
        /** @scrutinizer ignore-unused */ LifecycleEventArgs $event
40
    ): void {
41
        $path = $this->gpxService->getFullGpxFilePathFromWander($wander);
42
        if (!file_exists($path)) {
43
            $this->logger->debug("Could not find GPX file " . $path . " to remove");
44
            return;
45
        }
46
47
        $this->logger->debug("Removing GPX file " . $path . " on deletion of wander " . $wander->getId());
48
        unlink($path);
49
    }
50
}