mediawiki-extensions-Discus.../includes/Notifications/PlaintextEchoPresentationModelSection.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

52 lines
1.4 KiB
PHP

<?php
/**
* Our override of the built-in Echo helper for displaying section titles.
*
* @file
* @ingroup Extensions
* @license MIT
*/
namespace MediaWiki\Extension\DiscussionTools\Notifications;
use EchoDiscussionParser;
use EchoPresentationModelSection;
use RuntimeException;
/**
* Built-in Echo events store section titles as wikitext, and when displaying or linking to them,
* they parse it and then strip the formatting to get the plaintext versions.
*
* Our subscription notifications store section titles as plaintext already, so this processing is
* unnecessary and incorrect (text that looks like markup can disappear).
*/
class PlaintextEchoPresentationModelSection extends EchoPresentationModelSection {
/**
* @inheritDoc
*/
protected function getParsedSectionTitle() {
$plaintext = $this->getRawSectionTitle();
if ( !$plaintext ) {
return false;
}
$plaintext = trim( $plaintext );
return $this->language->truncateForVisual( $plaintext, EchoDiscussionParser::DEFAULT_SNIPPET_LENGTH );
}
/**
* @inheritDoc
*/
public function getTitleWithSection() {
$title = $this->event->getTitle();
if ( $title === null ) {
throw new RuntimeException( 'Event #' . $this->event->getId() . ' with no title' );
}
$section = $this->getParsedSectionTitle();
if ( $section ) {
$title = $title->createFragmentTarget( $section );
}
return $title;
}
}