jenkins-bot has submitted this change and it was merged.
Change subject: New variable: new_pst which provides a PSTed version of
new_wikitext
......................................................................
New variable: new_pst which provides a PSTed version of new_wikitext
It's observed that some vandals use {{subst:void}} to trick the system
and other users and this new variable may help.
It would be nice to be possible to diff this variable against
old_wikitext, but it needs some performance consideration.
Change-Id: I4c4c4e806663363b40936363d659c42016e18cf6
---
M AbuseFilter.class.php
M AbuseFilter.i18n.php
M AbuseFilterVariableHolder.php
3 files changed, 27 insertions(+), 7 deletions(-)
Approvals:
Anomie: Looks good to me, but someone else must approve
Siebrand: Looks good to me, approved
jenkins-bot: Verified
diff --git a/AbuseFilter.class.php b/AbuseFilter.class.php
index c213fb6..4797fcd 100644
--- a/AbuseFilter.class.php
+++ b/AbuseFilter.class.php
@@ -107,6 +107,7 @@
'added_links' => 'added-links',
'removed_links' => 'removed-links',
'all_links' => 'all-links',
+ 'new_pst' => 'new-pst',
'new_text' => 'new-text-stripped',
'new_html' => 'new-html',
'article_restrictions_edit' => 'restrictions-edit',
@@ -1997,6 +1998,14 @@
'title' => $title->getText(),
'text-var' => 'old_wikitext'
) );
+ $vars->setLazyLoadVar( 'new_pst', 'parse-wikitext',
+ array(
+ 'namespace' => $title->getNamespace(),
+ 'title' => $title->getText(),
+ 'wikitext-var' => 'new_wikitext',
+ 'article' => $page,
+ 'pst' => true,
+ ) );
$vars->setLazyLoadVar( 'new_html', 'parse-wikitext',
array(
'namespace' => $title->getNamespace(),
diff --git a/AbuseFilter.i18n.php b/AbuseFilter.i18n.php
index 01d44b6..62681c8 100644
--- a/AbuseFilter.i18n.php
+++ b/AbuseFilter.i18n.php
@@ -335,6 +335,7 @@
'abusefilter-edit-builder-vars-removed-links' => 'All external links
removed in the edit',
'abusefilter-edit-builder-vars-old-text' => 'Old page wikitext, before
the edit',
'abusefilter-edit-builder-vars-new-text' => 'New page wikitext, after
the edit',
+ 'abusefilter-edit-builder-vars-new-pst' => 'New page wikitext, pre-save
transformed',
'abusefilter-edit-builder-vars-new-text-stripped' => 'New page text,
stripped of any markup',
'abusefilter-edit-builder-vars-new-html' => 'Parsed HTML source of the
new revision',
'abusefilter-edit-builder-vars-recent-contributors' => 'Last ten users
to contribute to the page',
@@ -875,6 +876,7 @@
'abusefilter-edit-builder-vars-user-groups' => 'See also:
* {{msg-mw|Abusefilter-edit-builder-vars-global-user-groups}}',
'abusefilter-edit-builder-vars-user-blocked' => 'Paraphrased: Boolean
value on whether the user is blocked. Abuse filter syntax option in a dropdown
from the group {{msg-mw|abusefilter-edit-builder-group-vars}}.',
+ 'abusefilter-edit-builder-vars-new-pst' => 'Paraphrased: The output
wikitext after pre-save transform is applied to new_wikitext. Abuse filter
syntax option in a dropdown from the group
{{msg-mw|abusefilter-edit-builder-group-vars}}.',
'abusefilter-edit-builder-vars-restrictions-edit' => 'This variable
contains the level of protection required to edit the page. ("Edit" here is not
a verb, but an adjective, like "Edit-related protection level"). Abuse filter
syntax option in a dropdown from the group
{{msg-mw|abusefilter-edit-builder-group-vars}}.
See also {{msg-mw|Abusefilter-edit-builder-vars-restrictions-create}},
{{msg-mw|Abusefilter-edit-builder-vars-restrictions-move}},
{{msg-mw|Abusefilter-edit-builder-vars-restrictions-upload}}.',
diff --git a/AbuseFilterVariableHolder.php b/AbuseFilterVariableHolder.php
index 4089b5e..c33da01 100644
--- a/AbuseFilterVariableHolder.php
+++ b/AbuseFilterVariableHolder.php
@@ -437,10 +437,14 @@
// XXX: Use prepareContentForEdit. But
we need a Content object for that.
$new_text = $vars->getVar( $textVar
)->toString();
$editInfo =
$article->prepareTextForEdit( $new_text );
- $newHTML = $editInfo->output->getText();
- // Kill the PP limit comments. Ideally
we'd just remove these by not setting the
- // parser option, but then we can't
share a parse operation with the edit, which is bad.
- $result = preg_replace( '/<!--\s*NewPP
limit report[^>]*-->\s*$/si', '', $newHTML );
+ if ( isset( $parameters['pst'] ) &&
$parameters['pst'] ) {
+ $result =
$editInfo->pstContent->serialize( $editInfo->format );
+ } else {
+ $newHTML =
$editInfo->output->getText();
+ // Kill the PP limit comments.
Ideally we'd just remove these by not setting the
+ // parser option, but then we
can't share a parse operation with the edit, which is bad.
+ $result = preg_replace(
'/<!--\s*NewPP limit report[^>]*-->\s*$/si', '', $newHTML );
+ }
break;
}
// Otherwise fall back to database
@@ -452,9 +456,14 @@
if ( !defined( 'MW_SUPPORTS_CONTENTHANDLER' )
|| $article->getContentModel() ===
CONTENT_MODEL_WIKITEXT ) {
- $text = $vars->getVar( $textVar
)->toString();
- $editInfo =
$this->parseNonEditWikitext( $text, $article );
- $result = $editInfo->output->getText();
+ if ( isset( $parameters['pst'] ) &&
$parameters['pst'] ) {
+ // $textVar is already PSTed
when it's not loaded from an ongoing edit.
+ $result = $vars->getVar(
$textVar )->toString();
+ } else {
+ $text = $vars->getVar( $textVar
)->toString();
+ $editInfo =
$this->parseNonEditWikitext( $text, $article );
+ $result =
$editInfo->output->getText();
+ }
} else {
// TODO: Parser Output from Content
object. But we don't have the content object.
// And for non-text content,
$wikitext is usually not going to be a valid
--
To view, visit https://gerrit.wikimedia.org/r/47582
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4c4c4e806663363b40936363d659c42016e18cf6
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/AbuseFilter
Gerrit-Branch: master
Gerrit-Owner: Liangent <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Anomie <[email protected]>
Gerrit-Reviewer: CSteipp <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Liangent <[email protected]>
Gerrit-Reviewer: Matthias Mullie <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Tim Starling <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits