Avoid unintended mentions when changing content

When content is changed and the change contains the signature
of the user, the method checking for reasonable mentions in
that changes did not consider multiple signatures.

The patch fixes that and adds a test for it.

Bug: T154406
Change-Id: I86303f42e97d16c68e3235b0e2d13542ceedf1fe
This commit is contained in:
WMDE-Fisch 2017-02-07 19:34:51 +01:00
parent e8efda2214
commit eb81a1c0f1
4 changed files with 48 additions and 1 deletions

View file

@ -460,6 +460,8 @@ abstract class EchoDiscussionParser {
* not currently analysed. * not currently analysed.
* - unknown-change: Some content was replaced with other content. * - unknown-change: Some content was replaced with other content.
* - unknown-signed-change: Same as unknown-change, but signed. * - unknown-signed-change: Same as unknown-change, but signed.
* - unknown-multi-signed-change: Same as unknown-change,
* but it contains multiple signatures.
* - unknown: Unrecognised change type. * - unknown: Unrecognised change type.
*/ */
static function interpretDiff( $changes, $username, Title $title = null ) { static function interpretDiff( $changes, $username, Title $title = null ) {
@ -602,7 +604,12 @@ abstract class EchoDiscussionParser {
$action['type'] === 'unknown-change' && $action['type'] === 'unknown-change' &&
self::isInSignedSection( $action['right-pos'], $signedSections ) self::isInSignedSection( $action['right-pos'], $signedSections )
) { ) {
$signedUsers = self::getSignedUsers( $action['new_content'], null );
if ( count( $signedUsers ) === 1 ) {
$action['type'] = 'unknown-signed-change'; $action['type'] = 'unknown-signed-change';
} else {
$action['type'] = 'unknown-multi-signed-change';
}
} }
return $action; return $action;

View file

@ -326,6 +326,16 @@ class EchoDiscussionParserTest extends MediaWikiTestCase {
], ],
'precondition' => 'isParserFunctionsInstalled', 'precondition' => 'isParserFunctionsInstalled',
], ],
// T154406 unintended mentions when changing content
[
'new' => 987667999,
'old' => 987667998,
'username' => 'Admin',
'lang' => 'en',
'pages' => [],
'title' => 'MultipleSignatureMentions',
'expected' => [],
],
]; ];
} }

View file

@ -0,0 +1,15 @@
== Old Content ==
== Section 1 ==
Lorem ipsum amet, ut officia eius nihil ad qui ducimus, minus impedit, voluptas neque in quia autem hic animi, quisquam blanditiis adipisci accusantium laudantium, eligendi dolor eligendi enim dolor laborum commodi laboris debitis debitis numquam odit dolore quidem qui doloribus incidunt, aliquid sit quam nostrum cum ad suscipit enim consequatur, est ut rerum fuga. Voluptatum fuga. Doloribus et itaque sequi esse, ea eiusmod hic in suscipit nihil est corrupti, molestias ut sunt, velit cumque ut enim inventore veniam, sequi est ea cillum error veniam, quisquam veniam, ad quisquam delectus, eos omnis eaqu.
Ipsum harum maiores consectetur, nulla debitis molestiae sit cum quidem enim alias tenetur dolores architecto quia repellendus. Doloribus duis enim sunt, iste nulla enim dolores sit, voluptatem qui.
== Section 2 ==
Lorem ipsum qui quis nihil eius ea irure voluptas dolorem consequuntur et officia sit, iure amet, id optio, dolor distinctio. Quia qui aliqua. Sint mollit dolor consectetur sapiente est numquam obcaecati error ea qui est magnam placeat, reprehenderit, quia cum atque incididunt sit eu est, temporibus qui eaque iste id, et ut eu explicabo. Recusandae. Hic voluptatem. Dolor dolores occaecat odio natus dolorum cupidatat blanditiis ratione quidem aliquid anim accusamus ut expedita blanditiis reprehenderit neque ea quas quaerat omnis eu placeat, excepteur inventore consequat. Dolore animi, minima ut dignissimos facere et aut consequat. Incidunt, lorem se.
Other Line
Ipsum harum maiores consectetur, nulla debitis molestiae sit cum quidem enim alias tenetur dolores architecto quia repellendus. Doloribus duis enim sunt, iste nulla enim dolores sit, voluptatem qui.
== Section 3 ==
Lorem ipsum qui quis nihil eius ea irure voluptas dolorem consequuntur et officia sit, iure amet, id optio, dolor distinctio. Quia qui aliqua. Sint mollit dolor consectetur sapiente est numquam obcaecati error ea qui est magnam placeat, reprehenderit, quia cum atque incididunt sit eu est, temporibus qui eaque iste id, et ut eu explicabo. Recusandae. Hic voluptatem. Dolor dolores occaecat odio natus dolorum cupidatat blanditiis ratione quidem aliquid anim accusamus ut expedita blanditiis reprehenderit neque ea quas quaerat omnis eu placeat, excepteur inventore consequat. Dolore animi, minima ut dignissimos facere et aut consequat. Incidunt, lorem se.
Lorem ipsum ea architecto magna ut quia iure dolor nobis iste aut quam quos voluptatem consequatur? Et deleniti excepteur beatae voluptatem, odit qui necessitatibus pariatur? Repellendus. Est minus odio est architecto molestiae quis perferendis porro tempore, quidem Nam officia autem voluptatem. Qui officia quo occaecat pariatur. Aliquip dolorum et quam ut eos, excepturi soluta delectus, voluptate architecto sint voluptatem molestiae libero proident, esse, culpa, velit repellendus. Quaerat ut sed soluta magni voluptatem. Laborum. Amet, et consectetur nisi ut quia est in mollitia sed quibusdam nulla qui explicabo. Hic vel quis nihi.

View file

@ -0,0 +1,15 @@
== Replace Content ==
== Section 4 ==
Lorem ipsum eligendi rerum nesciunt, iusto do dolore officia sint inventore qui fugiat eos dolor debitis debitis laborum cum alias anim laborum. Mollitia ullam esse quidem reprehenderit, ipsum, magni quae praesentium harum veniam, ipsa, exercitationem Nam elit, cupiditate enim aut omnis ipsum, voluptates exercitationem voluptatem qui odio ullam voluptates aut sint cupidatat commodi voluptatum in pariatur? Dolor dolores aperiam vel voluptatum non debitis aliquid sunt magni est iure obcaecati cum harum qui id deserunt possimus, enim corporis au.
== Section 5 ==
Lorem ipsum porro beatae sapiente amet, ea sit, velit, non odit quisquam mollit est, voluptatum consectetur, tenetur aut dolores cum sed ad labore ea veniam, eos velit minima consequatur veniam, voluptas obcaecati aliquid dolore ab occaecat do voluptatem. Minus ut elit, quasi voluptatibus pariatur. Sit aliquip nisi quisquam temporibus rerum esse quas necessitatibus recusandae. Culpa dolor voluptatem. Nesciunt, incididunt temporibus in dicta dolor saepe eiusmod aute.
Hi - [[User:He7d3r|He7d3r]] ([[User talk:He7d3r|talk]]) 14:19, 9 February 2017 (UTC)
:Hi, you! - [[User:Test11|Test11]] ([[User talk:Test11|talk]]) 14:19, 10 February 2017 (UTC)
::Hi, as well! - [[:User:Admin|Admin]] 23:47, 11 February 2017 (UTC)
== Section 6 ==
Lorem ipsum molestiae quia voluptatibus aliquid quis ut ullamco vitae adipisicing enim voluptas dolores consectetur ducimus, quia qui eos, aut sint ut corporis mollitia recusandae. Et impedit, omnis earum magni iur.
Lorem ipsum numquam sint mollitia vel voluptatem nihil reprehenderit, enim qui voluptatum eligendi animi, id, in qui Nam saepe adipisci qui voluptas libero ut ut adipisicing provident, ut animi, deleniti sed voluptas id, sit minus modi molestias rerum illum, excepteu.
Lorem ipsum qui est, deleniti veniam, eos, qui labore nihil numquam inventore mollit alias sapiente ad perferendis cillum incididunt qui consectetur amet, aliquip in maiores tempore, a dolore corporis eu optio, quod excepteur illo minima laboris duis aut reiciendis ducimus, sunt error enim anim ducimus, nisi doloribus veniam, eius ea voluptate.