Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
TemporaryAccountLoggerFactory
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 getLogger
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace MediaWiki\CheckUser\Logging;
4
5use MediaWiki\User\ActorStore;
6use Psr\Log\LoggerInterface;
7use Wikimedia\Rdbms\IConnectionProvider;
8use Wikimedia\Rdbms\IDatabase;
9
10class TemporaryAccountLoggerFactory {
11
12    /**
13     * The default amount of time after which a duplicate log entry can be inserted.
14     *
15     * @var int
16     */
17    private const DEFAULT_DEBOUNCE_DELAY = 24 * 60 * 60;
18
19    private ActorStore $actorStore;
20    private LoggerInterface $logger;
21    private IDatabase $dbw;
22
23    /**
24     * @param ActorStore $actorStore
25     * @param LoggerInterface $logger
26     * @param IConnectionProvider $dbProvider
27     */
28    public function __construct(
29        ActorStore $actorStore,
30        LoggerInterface $logger,
31        IConnectionProvider $dbProvider
32    ) {
33        $this->actorStore = $actorStore;
34        $this->logger = $logger;
35        $this->dbw = $dbProvider->getPrimaryDatabase();
36    }
37
38    /**
39     * @param int $delay
40     * @return TemporaryAccountLogger
41     */
42    public function getLogger(
43        int $delay = self::DEFAULT_DEBOUNCE_DELAY
44    ) {
45        return new TemporaryAccountLogger(
46            $this->actorStore,
47            $this->logger,
48            $this->dbw,
49            $delay
50        );
51    }
52}