mediawiki-extensions-Discus.../includes/Notifications/EnhancedEchoEditUserTalkPresentationModel.php
Bartosz Dziewoński af68c835bb Update exception handling for new code conventions
Change code to match the documented consensus formed on T321683:
https://www.mediawiki.org/wiki/Manual:Coding_conventions/PHP#Exception_handling

* Do not directly throw Exception, Error or MWException
* Document checked exceptions with @throws
* Do not document unchecked exceptions

For this extension, I think it makes sense to consider DOMException an
unchecked exception too (in addition to the usual LogicException and
RuntimeException).

Depends-On: Id07e301c3f20afa135e5469ee234a27354485652
Depends-On: I869af06896b9757af18488b916211c5a41a8c563
Depends-On: I42d9b7465d1406a22ef1b3f6d8de426c60c90e2c
Change-Id: Ic9d9efd031a87fa5a93143f714f0adb20f0dd956
2023-01-22 18:17:11 +00:00

61 lines
1.4 KiB
PHP

<?php
/**
* Our override of the built-in Echo presentation model for user talk page notifications.
*
* @file
* @ingroup Extensions
* @license MIT
*/
namespace MediaWiki\Extension\DiscussionTools\Notifications;
use EchoEditUserTalkPresentationModel;
use Message;
use RawMessage;
use Wikimedia\Timestamp\TimestampException;
class EnhancedEchoEditUserTalkPresentationModel extends EchoEditUserTalkPresentationModel {
use DiscussionToolsEventTrait;
/**
* @inheritDoc
*/
public function getPrimaryLink() {
$linkInfo = parent::getPrimaryLink();
// For events enhanced by DiscussionTools: link to the individual comment
$link = $this->getCommentLink();
if ( $link ) {
$linkInfo['url'] = $link;
}
return $linkInfo;
}
/**
* @inheritDoc
*/
public function getBodyMessage() {
if ( !$this->isBundled() ) {
// For events enhanced by DiscussionTools: add a text snippet
// (Echo can only do this for new sections, not for every comment)
$snippet = $this->getContentSnippet();
if ( $snippet ) {
return new RawMessage( '$1', [ Message::plaintextParam( $snippet ) ] );
}
}
return parent::getBodyMessage();
}
/**
* @inheritDoc
* @throws TimestampException
*/
public function jsonSerialize(): array {
$array = parent::jsonSerialize();
$array['links']['legacyPrimary'] = $this->addMarkAsRead( parent::getPrimaryLink() ) ?: [];
return $array;
}
}