summaryrefslogtreecommitdiff
blob: f2826ef23ab9c6fd8bcf4870bae0821714be4a5b (plain)
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
71
72
73
74
75
<?php

class EchoEditFormatter extends EchoBasicFormatter {

	/**
	 * @param EchoEvent $event
	 * @param $param
	 * @param $message Message
	 * @param $user User
	 */
	protected function processParam( $event, $param, $message, $user ) {
		if ( $param === 'subject-anchor' ) {
			$message->params( $this->formatSubjectAnchor( $event ) );
		} elseif ( $param === 'section-title' ) {
			$message->params( $this->getSectionTitle( $event, $user ) );
		} elseif ( $param === 'difflink' ) {
			$revid = $event->getExtraParam( 'revid' );
			if ( !$revid ) {
				$message->params( '' );
				return;
			}
			$diff = $event->getExtraParam( 'diffid', 'prev' );
			$props = array(
				'attribs' => array( 'class' => 'mw-echo-diff' ),
				'linkText' => $this->getMessage( 'parentheses' )
						->params(
							$this->getMessage( 'showdiff' )->text()
						)->escaped(),
				'param' => array(
					'oldid' => $revid,
					'diff' => $diff,
				),
				// Set fragment to empty string for diff links
				'fragment' => ''
			);
			$this->setTitleLink( $event, $message, $props );
		} elseif ( $param === 'summary' ) {
			$message->params( $this->getRevisionSnippet( $event, $user ) );
		} elseif ( $param === 'number' ) {
			$eventData = $event->getExtra();
			// The folliwing is a bit of a hack...
			// If the edit is a rollback, we want to say 'your edits' in the
			// notification. If the edit is an undo, we want to say 'your edit'
			// in the notification. To accomplish this, we pass a 'number' param
			// to the message which is set to 1 or 2 and formatted with {{PLURAL}}.
			if ( isset( $eventData['method'] ) && $eventData['method'] === 'rollback' ) {
				$message->params( 2 );
			} else {
				$message->params( 1 );
			}
		} else {
			parent::processParam( $event, $param, $message, $user );
		}
	}

	/**
	 * Get the section title for a talk page post
	 * @param $event EchoEvent
	 * @param $user User
	 * @return string
	 */
	protected function getSectionTitle( $event, $user ) {
		$extra = $event->getExtra();

		if ( !empty( $extra['section-title'] ) ) {
			if ( $event->userCan( Revision::DELETED_TEXT, $user ) ) {
				return EchoDiscussionParser::getTextSnippet( $extra['section-title'], 30 );
			} else {
				return $this->getMessage( 'echo-rev-deleted-text-view' )->text();
			}
		}

		return '';
	}
}