Passed
Pull Request — master (#188)
by Damien
03:02
created

Transaction::getTransactionHash()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
c 0
b 0
f 0
nc 2
nop 0
dl 0
loc 7
rs 10
1
<?php
2
3
namespace DH\DoctrineAuditBundle\Model;
4
5
class Transaction
6
{
7
    public const INSERT = 'inserted';
8
    public const UPDATE = 'updated';
9
    public const REMOVE = 'removed';
10
    public const ASSOCIATE = 'associated';
11
    public const DISSOCIATE = 'dissociated';
12
13
    /**
14
     * @var null|string
15
     */
16
    private $transaction_hash;
17
18
    /**
19
     * @var array
20
     */
21
    private $inserted = [];     // [$source, $changeset]
22
23
    /**
24
     * @var array
25
     */
26
    private $updated = [];      // [$source, $changeset]
27
28
    /**
29
     * @var array
30
     */
31
    private $removed = [];      // [$source, $id]
32
33
    /**
34
     * @var array
35
     */
36
    private $associated = [];   // [$source, $target, $mapping]
37
38
    /**
39
     * @var array
40
     */
41
    private $dissociated = [];  // [$source, $target, $id, $mapping]
42
43
    /**
44
     * Returns transaction hash.
45
     *
46
     * @return string
47
     */
48
    public function getTransactionHash(): string
49
    {
50
        if (null === $this->transaction_hash) {
51
            $this->transaction_hash = sha1(uniqid('tid', true));
52
        }
53
54
        return $this->transaction_hash;
55
    }
56
57
    public function getInserted(): array
58
    {
59
        return $this->inserted;
60
    }
61
62
    public function getUpdated(): array
63
    {
64
        return $this->updated;
65
    }
66
67
    public function getRemoved(): array
68
    {
69
        return $this->removed;
70
    }
71
72
    public function getAssociated(): array
73
    {
74
        return $this->associated;
75
    }
76
77
    public function getDissociated(): array
78
    {
79
        return $this->dissociated;
80
    }
81
82
    public function trackAuditEvent(string $type, array $data): void
83
    {
84
        $this->{$type}[] = $data;
85
    }
86
}
87