mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-24 16:04:35 +00:00
56c4b95087
The workflow to format a notification is * Get EchoEvent, User, and Language * Get EchoEventFormatter implementation for notification type ** EchoEventFormatter returns structured data about each part of the notification (header, body, primary link, secondary link(s)) * Each output type will have a formatter class (e.g. EchoSpecialNotificationsFormatter, EchoPlainTextEmailFormatter) which takes a EchoEventPresentationModel and generates whatever it wants (HTML, plain-text email, etc). Included is an example conversion of the user-rights and mention formatters. The previous infrastructure will remain in place for backwards compatability until other extensions can be updated. Bug: T107823 Change-Id: I4397872a7ec062148dfcb066ddd8ab83f40486ac
26 lines
602 B
PHP
26 lines
602 B
PHP
<?php
|
|
|
|
/**
|
|
* Abstract class that each "formatter" should implement.
|
|
*
|
|
* A formatter is an output type, example formatters would be:
|
|
* * Special:Notifications
|
|
* * HTML email
|
|
* * plaintext email
|
|
*
|
|
* The formatter does not maintain any state except for the
|
|
* arguments passed in the constructor (user and language)
|
|
*/
|
|
abstract class EchoEventFormatter {
|
|
public function __construct( User $user, Language $language ) {
|
|
$this->user = $user;
|
|
$this->language = $language;
|
|
}
|
|
|
|
/**
|
|
* @param EchoEvent $event
|
|
* @return string HTML
|
|
*/
|
|
abstract public function format( EchoEvent $event );
|
|
}
|