Test Failed
Push — develop ( c35c51...0616cb )
by Stone
04:36 queued 10s
created

ImageSetPrimarySubscriber::resetPrimaryImages()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 16
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 16
rs 10
c 0
b 0
f 0
cc 4
nc 4
nop 1
1
<?php
2
3
namespace App\EventSubscriber\Image;
4
5
use App\Entity\Image;
6
use App\Event\Image\ImageSetPrimaryEvent;
7
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
8
9
class ImageSetPrimarySubscriber extends ImageSubscriber implements EventSubscriberInterface
10
{
11
12
    public function resetPrimaryImages(ImageSetPrimaryEvent $event)
13
    {
14
        if (getenv('PRIMARY_IMAGE_CAROUSEL') === "false") {
15
            $trick = $event->getTrick();
16
17
            //we only want one front image, so reset others. we could just reset the primary but this corrects bugs if we have 2 primary images for some unknown reason
18
            $trickImages = $trick->getImages();
19
20
            /** @var Image $trickImage */
21
            foreach ($trickImages as $trickImage) {
22
                if ($trickImage->getPrimaryImage()) {
23
                    $trickImage->setPrimaryImage(false);
24
                }
25
26
            }
27
            $this->em->persist($trick);
28
        }
29
    }
30
31
    public function setPrimaryImageToggle(ImageSetPrimaryEvent $event)
32
    {
33
34
        $trick = $event->getTrick();
35
        $image = $event->getEntity();
36
37
        $trickImages = $trick->getImages();
38
39
        //setting the actual image, if we clicked on the same image then unset
40
        /** @var Image $trickImage */
41
        foreach ($trickImages as $trickImage) {
42
            if ($trickImage === $image) {
43
                if($trickImage->getPrimaryImage()){
44
                    $trickImage->setPrimaryImage(false);
45
                }else{
46
                    $trickImage->setPrimaryImage(true);
47
                }
48
49
            }
50
            $this->em->persist($trick);
51
        }
52
53
54
    }
55
56
    /**
57
     * @return array The event names to listen to
58
     */
59
    public static function getSubscribedEvents()
60
    {
61
        return [
62
            ImageSetPrimaryEvent::NAME => [
63
                ['resetPrimaryImages', 50],
64
                ['setPrimaryImageToggle', 40],
65
                ['flush', 20],
66
            ],
67
        ];
68
    }
69
70
71
}