Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
88.89% covered (warning)
88.89%
8 / 9
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
LuaProjectsAttributeResolver
88.89% covered (warning)
88.89%
8 / 9
50.00% covered (danger)
50.00%
1 / 2
5.03
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 resolve
87.50% covered (warning)
87.50%
7 / 8
0.00% covered (danger)
0.00%
0 / 1
4.03
1<?php
2
3namespace MediaWiki\Extension\PageAssessments;
4
5use MediaWiki\Config\Config;
6use MediaWiki\Extension\Scribunto\Engines\LuaCommon\TitleAttributeResolver;
7use MediaWiki\Linker\LinkTarget;
8use MediaWiki\Title\Title;
9
10class LuaProjectsAttributeResolver extends TitleAttributeResolver {
11
12    private bool $assessmentsOnTalkPage;
13
14    public function __construct(
15        private readonly PageAssessmentsStore $store,
16        readonly Config $config
17    ) {
18        $this->assessmentsOnTalkPage = $config->get( 'PageAssessmentsOnTalkPages' );
19    }
20
21    /**
22     * @param LinkTarget $target
23     * @return array
24     */
25    public function resolve( LinkTarget $target ) {
26        $title = Title::newFromLinkTarget( $target );
27        $talkTitle = $title->getTalkPageIfDefined();
28
29        $assessmentPageTitle = $this->assessmentsOnTalkPage ? $talkTitle : $title;
30
31        if ( !$assessmentPageTitle || !$assessmentPageTitle->canExist() ) {
32            return [];
33        }
34        $this->addTemplateLink( $assessmentPageTitle );
35        $this->incrementExpensiveFunctionCount();
36
37        return $this->store->getAllAssessments( $title->getId() );
38    }
39}