Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 14 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
LuaProjectsAttributeResolver | |
0.00% |
0 / 14 |
|
0.00% |
0 / 3 |
56 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
resolve | |
0.00% |
0 / 10 |
|
0.00% |
0 / 1 |
20 | |||
makeArrayOneBased | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
6 |
1 | <?php |
2 | |
3 | namespace MediaWiki\Extension\PageAssessments; |
4 | |
5 | use MediaWiki\Config\Config; |
6 | use MediaWiki\Extension\Scribunto\Engines\LuaCommon\TitleAttributeResolver; |
7 | use MediaWiki\Linker\LinkTarget; |
8 | use MediaWiki\Title\Title; |
9 | |
10 | class LuaProjectsAttributeResolver extends TitleAttributeResolver { |
11 | |
12 | private bool $assessmentsOnTalkPage; |
13 | |
14 | public function __construct( Config $config ) { |
15 | $this->assessmentsOnTalkPage = $config->get( 'PageAssessmentsOnTalkPages' ); |
16 | } |
17 | |
18 | /** |
19 | * @param LinkTarget $target |
20 | * @return array |
21 | */ |
22 | public function resolve( LinkTarget $target ) { |
23 | $title = Title::newFromLinkTarget( $target ); |
24 | $talkTitle = $title->getTalkPageIfDefined(); |
25 | |
26 | $assessmentPageTitle = $this->assessmentsOnTalkPage ? $talkTitle : $title; |
27 | |
28 | if ( !$assessmentPageTitle || !$assessmentPageTitle->canExist() ) { |
29 | return []; |
30 | } |
31 | $this->addTemplateLink( $assessmentPageTitle ); |
32 | $this->incrementExpensiveFunctionCount(); |
33 | |
34 | $projects = PageAssessmentsDAO::getAllAssessments( $title->getId() ); |
35 | // Sort to ensure output is stable |
36 | sort( $projects ); |
37 | return self::makeArrayOneBased( $projects ); |
38 | } |
39 | |
40 | /** |
41 | * Renumber an array for return to Lua. Duplicates Scribunto TitleLibrary::makeArrayOneBased. |
42 | * TODO: unify them. |
43 | * |
44 | * @param array $arr |
45 | * @return array |
46 | */ |
47 | private static function makeArrayOneBased( array $arr ) { |
48 | if ( !$arr ) { |
49 | return $arr; |
50 | } |
51 | return array_combine( range( 1, count( $arr ) ), array_values( $arr ) ); |
52 | } |
53 | } |