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

Reply via email to