Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 18 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
SearchEventIngress | |
0.00% |
0 / 18 |
|
0.00% |
0 / 2 |
56 | |
0.00% |
0 / 1 |
handlePageRevisionUpdatedEvent | |
0.00% |
0 / 12 |
|
0.00% |
0 / 1 |
42 | |||
handlePageDeletedEventAfterCommit | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace MediaWiki\Search; |
4 | |
5 | use MediaWiki\DomainEvent\EventSubscriberBase; |
6 | use MediaWiki\Page\Event\PageDeletedEvent; |
7 | use MediaWiki\Page\Event\PageRevisionUpdatedEvent; |
8 | use MediaWiki\Revision\RevisionRecord; |
9 | use MediaWiki\Revision\SlotRecord; |
10 | |
11 | /** |
12 | * The ingress adapter for the search component. It updates search related state |
13 | * according to domain events coming from other components. |
14 | * |
15 | * @internal |
16 | */ |
17 | class SearchEventIngress extends EventSubscriberBase { |
18 | |
19 | /** Object spec intended for use with {@link DomainEventSource::registerSubscriber()} */ |
20 | public const OBJECT_SPEC = [ |
21 | 'class' => self::class, |
22 | 'services' => [], |
23 | 'events' => [ |
24 | PageRevisionUpdatedEvent::TYPE, |
25 | PageDeletedEvent::TYPE, |
26 | ], |
27 | ]; |
28 | |
29 | /** |
30 | * Listener method for PageRevisionUpdatedEvent, to be registered with a DomainEventSource. |
31 | * |
32 | * @noinspection PhpUnused |
33 | */ |
34 | public function handlePageRevisionUpdatedEvent( PageRevisionUpdatedEvent $event ) { |
35 | $newRevision = $event->getNewRevision(); |
36 | $mainSlot = $newRevision->isDeleted( RevisionRecord::DELETED_TEXT ) |
37 | ? null : $newRevision->getSlot( SlotRecord::MAIN ); |
38 | |
39 | if ( |
40 | $event->isModifiedSlot( SlotRecord::MAIN ) || |
41 | $event->hasCause( PageRevisionUpdatedEvent::CAUSE_MOVE ) || |
42 | $event->isReconciliationRequest() |
43 | ) { |
44 | $update = new SearchUpdate( |
45 | $event->getPage()->getId(), |
46 | $event->getPage(), |
47 | $mainSlot ? $mainSlot->getContent() : null |
48 | ); |
49 | |
50 | $update->doUpdate(); |
51 | } |
52 | } |
53 | |
54 | /** |
55 | * Listener method for PageDeletedEvent, to be registered with a DomainEventSource. |
56 | * |
57 | * @noinspection PhpUnused |
58 | */ |
59 | public function handlePageDeletedEventAfterCommit( PageDeletedEvent $event ) { |
60 | $update = new SearchUpdate( |
61 | $event->getPageStateBefore()->getId(), |
62 | $event->getPage(), |
63 | null |
64 | ); |
65 | |
66 | $update->doUpdate(); |
67 | } |
68 | |
69 | } |