blob: 18e083a47f39eb307c2ef0fa59bee2fd26e6f686 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
<?php
namespace MediaWiki\Languages;
use MediaWiki\DomainEvent\EventIngressBase;
use MediaWiki\Page\Event\PageDeletedEvent;
use MediaWiki\Page\Event\PageDeletedListener;
use MediaWiki\Page\Event\PageRevisionUpdatedEvent;
use MediaWiki\Page\Event\PageRevisionUpdatedListener;
use MediaWiki\Revision\SlotRecord;
use MessageCache;
/**
* The ingress adapter for the language component. It updates language related
* state according to domain events coming from other components.
*
* @internal
*/
class LanguageEventIngress
extends EventIngressBase
implements PageDeletedListener, PageRevisionUpdatedListener
{
private MessageCache $messageCache;
/** Object spec intended for use with {@link DomainEventSource::registerSubscriber()} */
public const OBJECT_SPEC = [
'class' => self::class,
'services' => [
'MessageCache'
],
'events' => [
PageRevisionUpdatedEvent::TYPE,
PageDeletedEvent::TYPE
],
];
public function __construct( MessageCache $messageCache ) {
$this->messageCache = $messageCache;
}
/**
* Listener method for PageRevisionUpdatedEvent, to be registered with a DomainEventSource.
*
* @noinspection PhpUnused
*/
public function handlePageRevisionUpdatedEvent( PageRevisionUpdatedEvent $event ) {
if ( $event->getPage()->getNamespace() === NS_MEDIAWIKI &&
( $event->isModifiedSlot( SlotRecord::MAIN )
|| $event->hasCause( PageRevisionUpdatedEvent::CAUSE_MOVE )
|| $event->isReconciliationRequest()
)
) {
$content = $event->getLatestRevisionAfter()->getMainContentRaw();
$this->messageCache->updateMessageOverride( $event->getPage(), $content );
}
}
/**
* Listener method for PageDeletedEvent, to be registered with a DomainEventSource.
*
* @noinspection PhpUnused
*/
public function handlePageDeletedEvent( PageDeletedEvent $event ) {
if ( $event->getDeletedPage()->getNamespace() === NS_MEDIAWIKI ) {
$this->messageCache->updateMessageOverride( $event->getDeletedPage(), null );
}
}
}
|