File size: 1,764 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php

namespace Mautic\CoreBundle\Event;

use Doctrine\ORM\EntityManagerInterface;
use Mautic\LeadBundle\Entity\Lead;
use Symfony\Contracts\EventDispatcher\Event;

class CommonEvent extends Event
{
    /**
     * @var EntityManagerInterface
     */
    protected $em;

    /**
     * @var object
     */
    protected $entity;

    /**
     * @var bool
     */
    protected $isNew = true;

    /**
     * @var bool|array
     */
    protected $changes;

    /**
     * @var string
     */
    protected $failed;

    /**
     * Sets the entity manager for the event to use.
     *
     * @param EntityManagerInterface $em
     */
    public function setEntityManager($em): void
    {
        $this->em = $em;
    }

    /**
     * Returns if a saved lead is new or not.
     *
     * @return bool
     */
    public function isNew()
    {
        return $this->isNew;
    }

    public function setFailed(string $reason): void
    {
        $this->failed = $reason;
    }

    /**
     * Gets changes to original entity.
     *
     * @return mixed
     */
    public function getChanges()
    {
        if (null === $this->changes) {
            $this->changes = false;
            if ($this->entity && method_exists($this->entity, 'getChanges')) {
                $this->changes = $this->entity->getChanges();
                // Reset changes
                if (method_exists($this->entity, 'resetChanges')) {
                    $this->entity->resetChanges();
                }
            }
        }

        return $this->changes;
    }

    /**
     * @return Lead|null
     */
    public function getLead()
    {
        if (method_exists($this->entity, 'getLead')) {
            return $this->entity->getLead();
        }

        return null;
    }
}