-
-
Notifications
You must be signed in to change notification settings - Fork 261
/
AuditManager.php
69 lines (59 loc) · 1.72 KB
/
AuditManager.php
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
<?php
declare(strict_types=1);
/*
* This file is part of the Sonata Project package.
*
* (c) Thomas Rabaix <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SimpleThings\EntityAudit;
use Doctrine\Common\EventManager;
use Doctrine\ORM\EntityManager;
use Psr\Clock\ClockInterface;
use SimpleThings\EntityAudit\EventListener\CreateSchemaListener;
use SimpleThings\EntityAudit\EventListener\LogRevisionsListener;
use SimpleThings\EntityAudit\Metadata\MetadataFactory;
/**
* Audit Manager grants access to metadata and configuration
* and has a factory method for audit queries.
*/
class AuditManager
{
private MetadataFactory $metadataFactory;
public function __construct(
private AuditConfiguration $config,
private ?ClockInterface $clock = null
) {
$this->metadataFactory = $config->createMetadataFactory();
}
/**
* @return MetadataFactory
*/
public function getMetadataFactory()
{
return $this->metadataFactory;
}
/**
* @return AuditConfiguration
*/
public function getConfiguration()
{
return $this->config;
}
/**
* NEXT_MAJOR: Use `\Doctrine\ORM\EntityManagerInterface` for argument 1.
*
* @return AuditReader
*/
public function createAuditReader(EntityManager $em)
{
return new AuditReader($em, $this->config, $this->metadataFactory);
}
public function registerEvents(EventManager $evm): void
{
$evm->addEventSubscriber(new CreateSchemaListener($this));
$evm->addEventSubscriber(new LogRevisionsListener($this, $this->clock));
}
}