Tinaj1234 has uploaded a new change for review.
https://gerrit.wikimedia.org/r/293625
Change subject: [Draft] Add AbuseFilter to Extension:Newsletter
......................................................................
[Draft] Add AbuseFilter to Extension:Newsletter
This patch creates a new AbuseFilterGroup for Newsletter and checks
if the newsletter description matches with any of the filters when
a newsletter is created. If the current implementation is approved,
the same could be extended for when the description of an existing
newsletter is edited.
Bug: T132022
Change-Id: I5c42433a1d62ebbf0c80d3ac65bb6cca53527a5b
---
M Newsletter.php
M extension.json
M i18n/en.json
A includes/AbuseFilterCheck.php
M includes/specials/SpecialNewsletterCreate.php
5 files changed, 43 insertions(+), 2 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Newsletter
refs/changes/25/293625/1
diff --git a/Newsletter.php b/Newsletter.php
index 5bb248a..955d796 100755
--- a/Newsletter.php
+++ b/Newsletter.php
@@ -5,6 +5,15 @@
// Keep i18n globals so mergeMessageFileList.php doesn't break
$wgMessagesDirs['Newsletter'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['NewsletterAlias'] = __DIR__ .
'/Newsletter.alias.php';
+ //newsletter group for AbuseFilter
+ $wgAbuseFilterValidGroups[] = 'newsletter';
+ // disable filters that hit > 10% of articles
+ $wgAbuseFilterEmergencyDisableThreshold['newsletter'] = .1;
+ // If threshold is >10%, we make sure it has tested at least 50 articles
+ // in the last day (=86400 seconds)
+ $wgAbuseFilterEmergencyDisableCount['newsletter'] = 50;
+ $wgAbuseFilterEmergencyDisableAge['newsletter'] = 86400;
+
/* wfWarn(
'Deprecated PHP entry point used for Newsletter extension.
Please use wfLoadExtension instead, ' .
'see https://www.mediawiki.org/wiki/Extension_registration for
more details.'
diff --git a/extension.json b/extension.json
index f6959e5..59fd3bf 100644
--- a/extension.json
+++ b/extension.json
@@ -81,7 +81,8 @@
"EchoNewsletterFormatter":
"includes/Echo/EchoNewsletterFormatter.php",
"BaseNewsletterPresentationModel":
"includes/Echo/BaseNewsletterPresentationModel.php",
"EchoNewsletterPresentationModel":
"includes/Echo/EchoNewsletterPresentationModel.php",
- "EchoNewsletterPublisherPresentationModel":
"includes/Echo/EchoNewsletterPublisherPresentationModel.php"
+ "EchoNewsletterPublisherPresentationModel":
"includes/Echo/EchoNewsletterPublisherPresentationModel.php",
+ "AbuseFilterCheck": "/includes/AbuseFilterCheck.php"
},
"DefaultUserOptions": {
"echo-subscriptions-web-newsletter": true,
diff --git a/i18n/en.json b/i18n/en.json
index f089464..96646ef 100755
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -153,5 +153,6 @@
"log-action-filter-newsletter-publisher-removed": "Publisher removal",
"log-action-filter-newsletter-newsletter-added": "Newsletter creation",
"log-action-filter-newsletter-newsletter-removed": "Newsletter
deletion",
- "log-action-filter-newsletter-issue-added": "New issue announcements"
+ "log-action-filter-newsletter-issue-added": "New issue announcements",
+ "newsletter-abuse-found": "The description seems to have inappropriate
content. Please rectify your description."
}
diff --git a/includes/AbuseFilterCheck.php b/includes/AbuseFilterCheck.php
new file mode 100644
index 0000000..c6f2e60
--- /dev/null
+++ b/includes/AbuseFilterCheck.php
@@ -0,0 +1,25 @@
+<?php
+
+class AbuseFilterCheck extends AbuseFilter{
+
+ /*
+ * @var String
+ */
+ protected $group;
+
+ public function __construct( $group ) {
+ $this->group = $group;
+ }
+
+ public function validate( IContextSource $context, $new_wikitext ) {
+ $title = $context->getTitle();
+ $user = $context->getUser();
+ $vars = \AbuseFilter::getEditVars( $title );
+ $vars->addHolders( \AbuseFilter::generateUserVars( $user ),
\AbuseFilter::generateTitleVars( $title , 'ARTICLE' ) );
+ $vars->setVar( 'new_text', $new_wikitext );
+
+ return \AbuseFilter::filterAction( $vars, $title, $this->group
);
+ }
+
+
+}
\ No newline at end of file
diff --git a/includes/specials/SpecialNewsletterCreate.php
b/includes/specials/SpecialNewsletterCreate.php
index afd6e54..336b96d 100644
--- a/includes/specials/SpecialNewsletterCreate.php
+++ b/includes/specials/SpecialNewsletterCreate.php
@@ -86,6 +86,11 @@
$mainPageId = $data['MainPage']->getArticleID();
+ $status = AbuseFilterCheck::validate( $this->getContext(),
$data['description'] );
+ if ( !$status->isOK() ) {
+ return Status::newFatal( 'newsletter-abuse-found' );
+ }
+
$dbr = wfGetDB( DB_SLAVE );
$rows = $dbr->select(
'nl_newsletters',
--
To view, visit https://gerrit.wikimedia.org/r/293625
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5c42433a1d62ebbf0c80d3ac65bb6cca53527a5b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Tinaj1234 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits