Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
81.82% covered (warning)
81.82%
18 / 22
75.00% covered (warning)
75.00%
3 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
VisualEditorHookRunner
81.82% covered (warning)
81.82%
18 / 22
75.00% covered (warning)
75.00%
3 / 4
4.10
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
 onVisualEditorApiVisualEditorEditPreSave
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
 onVisualEditorApiVisualEditorEditPostSave
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
1
 onVisualEditorBeforeEditor
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Extension\VisualEditor;
4
5/**
6 * VisualEditorHookRunner
7 *
8 * @file
9 * @ingroup Extensions
10 * @copyright 2011-2021 VisualEditor Team and others; see AUTHORS.txt
11 * @license MIT
12 */
13
14use MediaWiki\HookContainer\HookContainer;
15use MediaWiki\Output\OutputPage;
16use MediaWiki\Page\ProperPageIdentity;
17use MediaWiki\User\UserIdentity;
18use Skin;
19
20class VisualEditorHookRunner implements
21    VisualEditorApiVisualEditorEditPreSaveHook,
22    VisualEditorApiVisualEditorEditPostSaveHook,
23    VisualEditorBeforeEditorHook
24{
25
26    private HookContainer $hookContainer;
27
28    public function __construct( HookContainer $hookContainer ) {
29        $this->hookContainer = $hookContainer;
30    }
31
32    /** @inheritDoc */
33    public function onVisualEditorApiVisualEditorEditPreSave(
34        ProperPageIdentity $page,
35        UserIdentity $user,
36        string $wikitext,
37        array &$params,
38        array $pluginData,
39        array &$apiResponse
40    ) {
41        return $this->hookContainer->run( 'VisualEditorApiVisualEditorEditPreSave', [
42            $page,
43            $user,
44            $wikitext,
45            &$params,
46            $pluginData,
47            &$apiResponse
48        ], [ 'abortable' => true ] );
49    }
50
51    /** @inheritDoc */
52    public function onVisualEditorApiVisualEditorEditPostSave(
53        ProperPageIdentity $page,
54        UserIdentity $user,
55        string $wikitext,
56        array $params,
57        array $pluginData,
58        array $saveResult,
59        array &$apiResponse
60    ): void {
61        $this->hookContainer->run( 'VisualEditorApiVisualEditorEditPostSave', [
62            $page,
63            $user,
64            $wikitext,
65            $params,
66            $pluginData,
67            $saveResult,
68            &$apiResponse
69        ], [ 'abortable' => false ] );
70    }
71
72    /** @inheritDoc */
73    public function onVisualEditorBeforeEditor(
74        OutputPage $output,
75        Skin $skin
76    ): bool {
77        return $this->hookContainer->run( 'VisualEditorBeforeEditor', [
78            $output,
79            $skin
80        ], [ 'abortable' => true ] );
81    }
82}