Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 23 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
DiscussionToolsHooks | |
0.00% |
0 / 23 |
|
0.00% |
0 / 2 |
132 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
onDiscussionToolsAddOverflowMenuItems | |
0.00% |
0 / 21 |
|
0.00% |
0 / 1 |
110 |
1 | <?php |
2 | /** |
3 | * DiscussionTools hooks for listening to our own hooks |
4 | * |
5 | * @file |
6 | * @ingroup Extensions |
7 | * @license MIT |
8 | */ |
9 | |
10 | namespace MediaWiki\Extension\DiscussionTools\Hooks; |
11 | |
12 | use ExtensionRegistry; |
13 | use MediaWiki\Config\Config; |
14 | use MediaWiki\Config\ConfigFactory; |
15 | use MediaWiki\Context\IContextSource; |
16 | use MediaWiki\Extension\DiscussionTools\OverflowMenuItem; |
17 | use MediaWiki\User\UserNameUtils; |
18 | |
19 | class DiscussionToolsHooks implements |
20 | DiscussionToolsAddOverflowMenuItemsHook |
21 | { |
22 | private Config $config; |
23 | private UserNameUtils $userNameUtils; |
24 | |
25 | public function __construct( |
26 | ConfigFactory $configFactory, |
27 | UserNameUtils $userNameUtils |
28 | ) { |
29 | $this->config = $configFactory->makeConfig( 'discussiontools' ); |
30 | $this->userNameUtils = $userNameUtils; |
31 | } |
32 | |
33 | /** |
34 | * @param OverflowMenuItem[] &$overflowMenuItems |
35 | * @param string[] &$resourceLoaderModules |
36 | * @param array $threadItemData |
37 | * @param IContextSource $contextSource |
38 | * @return bool|void |
39 | */ |
40 | public function onDiscussionToolsAddOverflowMenuItems( |
41 | array &$overflowMenuItems, |
42 | array &$resourceLoaderModules, |
43 | array $threadItemData, |
44 | IContextSource $contextSource |
45 | ) { |
46 | if ( |
47 | ( $threadItemData['type'] ?? null ) === 'heading' && |
48 | !( $threadItemData['uneditableSection'] ?? false ) && |
49 | $contextSource->getSkin()->getSkinName() === 'minerva' |
50 | ) { |
51 | $overflowMenuItems[] = new OverflowMenuItem( |
52 | 'edit', |
53 | 'edit', |
54 | $contextSource->msg( 'skin-view-edit' ), |
55 | 2 |
56 | ); |
57 | } |
58 | |
59 | if ( $this->config->get( 'DiscussionToolsEnableThanks' ) ) { |
60 | $user = $contextSource->getUser(); |
61 | $showThanks = ExtensionRegistry::getInstance()->isLoaded( 'Thanks' ); |
62 | if ( $showThanks && ( $threadItemData['type'] ?? null ) === 'comment' && $user->isNamed() ) { |
63 | $recipient = $this->userNameUtils->getCanonical( $threadItemData['author'], UserNameUtils::RIGOR_NONE ); |
64 | |
65 | if ( |
66 | $recipient !== $user->getName() && |
67 | !$this->userNameUtils->isIP( $recipient ) |
68 | ) { |
69 | $overflowMenuItems[] = new OverflowMenuItem( |
70 | 'thank', |
71 | 'heart', |
72 | $contextSource->msg( 'thanks-button-thank' ), |
73 | ); |
74 | } |
75 | } |
76 | } |
77 | } |
78 | } |