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

WanderDeleteListener::preRemove()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 10
rs 10
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
}