Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 26 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
LogFormatterFactory | |
0.00% |
0 / 25 |
|
0.00% |
0 / 3 |
20 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
2 | |||
newFromEntry | |
0.00% |
0 / 16 |
|
0.00% |
0 / 1 |
6 | |||
newFromRow | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace MediaWiki\Logging; |
4 | |
5 | use MediaWiki\CommentFormatter\CommentFormatter; |
6 | use MediaWiki\Config\ServiceOptions; |
7 | use MediaWiki\HookContainer\HookContainer; |
8 | use MediaWiki\Language\Language; |
9 | use MediaWiki\Linker\LinkRenderer; |
10 | use MediaWiki\MainConfigNames; |
11 | use MediaWiki\User\UserEditTracker; |
12 | use stdClass; |
13 | use Wikimedia\ObjectFactory\ObjectFactory; |
14 | |
15 | class LogFormatterFactory { |
16 | |
17 | public const SERVICE_OPTIONS = [ |
18 | MainConfigNames::LogActionsHandlers, |
19 | ]; |
20 | |
21 | private ServiceOptions $serviceOptions; |
22 | private ObjectFactory $objectFactory; |
23 | private HookContainer $hookContainer; |
24 | private LinkRenderer $linkRenderer; |
25 | private Language $contentLanguage; |
26 | private CommentFormatter $commentFormatter; |
27 | private UserEditTracker $userEditTracker; |
28 | |
29 | public function __construct( |
30 | ServiceOptions $options, |
31 | ObjectFactory $objectFactory, |
32 | HookContainer $hookContainer, |
33 | LinkRenderer $linkRenderer, |
34 | Language $contentLanguage, |
35 | CommentFormatter $commentFormatter, |
36 | UserEditTracker $userEditTracker |
37 | ) { |
38 | $options->assertRequiredOptions( self::SERVICE_OPTIONS ); |
39 | $this->serviceOptions = $options; |
40 | $this->objectFactory = $objectFactory; |
41 | $this->hookContainer = $hookContainer; |
42 | $this->linkRenderer = $linkRenderer; |
43 | $this->contentLanguage = $contentLanguage; |
44 | $this->commentFormatter = $commentFormatter; |
45 | $this->userEditTracker = $userEditTracker; |
46 | } |
47 | |
48 | public function newFromEntry( LogEntry $entry ): LogFormatter { |
49 | $logActionsHandlers = $this->serviceOptions->get( MainConfigNames::LogActionsHandlers ); |
50 | $fulltype = $entry->getFullType(); |
51 | $wildcard = $entry->getType() . '/*'; |
52 | $handler = $logActionsHandlers[$fulltype] ?? $logActionsHandlers[$wildcard] ?? ''; |
53 | |
54 | if ( $handler !== '' ) { |
55 | $formatter = $this->objectFactory->createObject( $handler, [ |
56 | 'extraArgs' => [ $entry ], |
57 | 'allowClassName' => true, |
58 | 'assertClass' => LogFormatter::class, |
59 | ] ); |
60 | } else { |
61 | $formatter = new LegacyLogFormatter( $entry, $this->hookContainer ); |
62 | } |
63 | |
64 | $formatter->setLinkRenderer( $this->linkRenderer ); |
65 | $formatter->setContentLanguage( $this->contentLanguage ); |
66 | $formatter->setCommentFormatter( $this->commentFormatter ); |
67 | $formatter->setUserEditTracker( $this->userEditTracker ); |
68 | return $formatter; |
69 | } |
70 | |
71 | /** |
72 | * @param stdClass|array $row |
73 | * @return LogFormatter |
74 | * @see DatabaseLogEntry::getSelectQueryData |
75 | */ |
76 | public function newFromRow( $row ): LogFormatter { |
77 | return $this->newFromEntry( DatabaseLogEntry::newFromRow( $row ) ); |
78 | } |
79 | |
80 | } |
81 | |
82 | /** @deprecated class alias since 1.44 */ |
83 | class_alias( LogFormatterFactory::class, 'LogFormatterFactory' ); |