mediawiki-extensions-Echo/includes/Formatters/EchoEditUserPagePresentationModel.php
thiemowmde b983ce7581 Fix copy-paste mistake in message documentation
This is a copy-paste mistake from the message directly below.
Happened in Ibe0092a not long ago.

Also add some comments to make it easier to find the places where
seemingly unused messages end being used.

Bug: T368249
Change-Id: I709c0f14978daad8c98f1f8edf52ef28029c6d40
2024-06-24 09:07:19 +00:00

98 lines
2.8 KiB
PHP

<?php
namespace MediaWiki\Extension\Notifications\Formatters;
use MediaWiki\Language\RawMessage;
use MediaWiki\MediaWikiServices;
use MediaWiki\Message\Message;
use MediaWiki\Parser\Sanitizer;
use MediaWiki\Revision\RevisionRecord;
class EchoEditUserPagePresentationModel extends EchoEventPresentationModel {
public function canRender() {
return (bool)$this->event->getTitle();
}
public function getIconType() {
return 'edit-user-page';
}
public function getPrimaryLink() {
return [
'url' => $this->getDiffLinkUrl(),
'label' => $this->msg( 'notification-link-text-view-edit' )->text()
];
}
public function getSecondaryLinks() {
if ( $this->isBundled() ) {
return [];
} else {
return [ $this->getAgentLink() ];
}
}
public function getHeaderMessage() {
if ( $this->isBundled() ) {
$msg = $this->msg( 'notification-bundle-header-edit-user-page' );
$count = $this->getNotificationCountForOutput();
$msg->numParams( $count );
$msg->params( $this->getViewingUserForGender() );
return $msg;
} else {
// Messages: notification-header-edit-user-page
$msg = parent::getHeaderMessage();
$msg->params( $this->getViewingUserForGender() );
return $msg;
}
}
public function getCompactHeaderMessage() {
$msg = $this->getMessageWithAgent( 'notification-compact-header-edit-user-page' );
$msg->params( $this->getViewingUserForGender() );
return $msg;
}
public function getBodyMessage() {
$revision = $this->event->getRevision();
if ( $revision && $revision->getComment() && $this->userCan( RevisionRecord::DELETED_COMMENT ) ) {
$summary = $revision->getComment()->text;
$summary = MediaWikiServices::getInstance()->getCommentFormatter()->format( $summary );
$summary = Sanitizer::stripAllTags( $summary );
} else {
$summary = false;
}
if ( !$this->isBundled() ) {
return new RawMessage( '$1', [ Message::plaintextParam( $summary ) ] );
}
return false;
}
private function getDiffLinkUrl() {
$revId = $this->event->getExtraParam( 'revid' );
$oldId = $this->isBundled() ? $this->getRevBeforeFirstNotification() : 'prev';
$query = [
'oldid' => $oldId,
'diff' => $revId,
];
return $this->event->getTitle()->getFullURL( $query );
}
private function getRevBeforeFirstNotification() {
$events = $this->getBundledEvents();
$firstNotificationRevId = end( $events )->getExtraParam( 'revid' );
$revisionLookup = MediaWikiServices::getInstance()->getRevisionLookup();
$revisionRecord = $revisionLookup->getRevisionById( $firstNotificationRevId );
$previousRevision = $revisionRecord ? $revisionLookup->getPreviousRevision( $revisionRecord ) : null;
$oldRevisionID = $previousRevision ? $previousRevision->getId() : 0;
return $oldRevisionID;
}
protected function getSubjectMessageKey() {
return 'notification-edit-user-page-email-subject';
}
}