Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
95.00% covered (success)
95.00%
19 / 20
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
LinkBatchFactory
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
 newLinkBatch
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2/**
3 * @license GPL-2.0-or-later
4 * @file
5 */
6
7namespace MediaWiki\Page;
8
9use MediaWiki\Cache\GenderCache;
10use MediaWiki\Language\Language;
11use MediaWiki\Linker\LinksMigration;
12use MediaWiki\Linker\LinkTarget;
13use MediaWiki\Title\TitleFormatter;
14use MediaWiki\User\TempUser\TempUserDetailsLookup;
15use Psr\Log\LoggerInterface;
16use Wikimedia\Rdbms\IConnectionProvider;
17
18/**
19 * Factory for LinkBatch objects to batch query page metadata.
20 *
21 * Use via MediaWikiServices::getLinkBatchFactory()->newLinkBatch(), and
22 * then call LinkBatch::execute().
23 *
24 * @see docs/LinkCache.md
25 * @see MediaWiki\Page\LinkCache
26 * @since 1.35
27 * @ingroup Page
28 */
29class LinkBatchFactory {
30
31    /**
32     * @var LinkCache
33     */
34    private $linkCache;
35
36    /**
37     * @var TitleFormatter
38     */
39    private $titleFormatter;
40
41    /**
42     * @var Language
43     */
44    private $contentLanguage;
45
46    /**
47     * @var GenderCache
48     */
49    private $genderCache;
50
51    /**
52     * @var IConnectionProvider
53     */
54    private $dbProvider;
55
56    /** @var LinksMigration */
57    private $linksMigration;
58
59    private TempUserDetailsLookup $tempUserDetailsLookup;
60
61    /** @var LoggerInterface */
62    private $logger;
63
64    public function __construct(
65        LinkCache $linkCache,
66        TitleFormatter $titleFormatter,
67        Language $contentLanguage,
68        GenderCache $genderCache,
69        IConnectionProvider $dbProvider,
70        LinksMigration $linksMigration,
71        TempUserDetailsLookup $tempUserDetailsLookup,
72        LoggerInterface $logger
73    ) {
74        $this->linkCache = $linkCache;
75        $this->titleFormatter = $titleFormatter;
76        $this->contentLanguage = $contentLanguage;
77        $this->genderCache = $genderCache;
78        $this->dbProvider = $dbProvider;
79        $this->linksMigration = $linksMigration;
80        $this->tempUserDetailsLookup = $tempUserDetailsLookup;
81        $this->logger = $logger;
82    }
83
84    /**
85     * @param iterable<LinkTarget>|iterable<PageReference> $titles Initial titles for this batch
86     * @return LinkBatch
87     */
88    public function newLinkBatch( iterable $titles = [] ): LinkBatch {
89        return new LinkBatch(
90            $titles,
91            $this->linkCache,
92            $this->titleFormatter,
93            $this->contentLanguage,
94            $this->genderCache,
95            $this->dbProvider,
96            $this->linksMigration,
97            $this->tempUserDetailsLookup,
98            $this->logger
99        );
100    }
101}
102
103/** @deprecated class alias since 1.45 */
104class_alias( LinkBatchFactory::class, 'MediaWiki\Cache\LinkBatchFactory' );