Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
OneStepUserNameQuery
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 execute
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Flow\Repository\UserName;
4
5use Flow\DbFactory;
6use MediaWiki\Block\HideUserUtils;
7use Wikimedia\Rdbms\IResultWrapper;
8
9/**
10 * Provide usernames filtered by per-wiki ipblocks. Batches together
11 * database requests for multiple usernames when possible.
12 */
13class OneStepUserNameQuery implements UserNameQuery {
14    /**
15     * @var DbFactory
16     */
17    protected $dbFactory;
18
19    /**
20     * @var HideUserUtils
21     */
22    protected $hideUserUtils;
23
24    /**
25     * @param DbFactory $dbFactory
26     */
27    public function __construct( DbFactory $dbFactory, HideUserUtils $hideUserUtils ) {
28        $this->dbFactory = $dbFactory;
29        $this->hideUserUtils = $hideUserUtils;
30    }
31
32    /**
33     * Look up usernames while respecting ipblocks with one query.
34     * Unused, check to see if this is reasonable to use.
35     *
36     * @param string $wiki
37     * @param array $userIds
38     * @return IResultWrapper|null
39     */
40    public function execute( $wiki, array $userIds ) {
41        $dbr = $this->dbFactory->getWikiDB( DB_REPLICA, $wiki );
42        return $dbr->newSelectQueryBuilder()
43            ->select( [ 'user_id', 'user_name' ] )
44            ->from( 'user' )
45            ->where( [ 'user_id' => $userIds ] )
46            ->andWhere( $this->hideUserUtils->getExpression( $dbr ) )
47            ->caller( __METHOD__ )
48            ->fetchResultSet();
49    }
50}