jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/234929 )

Change subject: initial commit
......................................................................


initial commit

Change-Id: I92b56a64a1f7d87e718259219a85423648782bf1
---
A MassMessageEmail.hooks.php
A MassMessageEmail.php
A extension.json
A i18n/en.json
A i18n/qqq.json
5 files changed, 135 insertions(+), 0 deletions(-)

Approvals:
  jenkins-bot: Verified
  tosfos: Looks good to me, approved



diff --git a/MassMessageEmail.hooks.php b/MassMessageEmail.hooks.php
new file mode 100644
index 0000000..db09f09
--- /dev/null
+++ b/MassMessageEmail.hooks.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * This inherits from MassMessageJob, as a hacky way to get access to its 
protected methods.
+ */
+class MassMessageEmailHooks extends MassMessageJob {
+
+       /**
+        * Hooks into MassMessage
+        *
+        * @param MassMessageJob $massMessageJob
+        * @return boolean
+        */
+       public static function onMassMessageJobBeforeMessageSent( 
MassMessageJob $massMessageJob ) {
+               $title = $massMessageJob->getTitle();
+               $user = User::newFromName( $title->getBaseText() );
+
+               if ( $title->getNamespace() == NS_USER || 
$title->getNamespace() == NS_USER_TALK ) {
+                       if ( $user->canReceiveEmail() ) {
+                               return self::sendMassMessageEmail( 
$massMessageJob );
+                       }
+               }
+
+               //We didn't do anything. Continue execution as if we're not 
here.
+               return true;
+       }
+
+       /**
+        * Sends the email
+        *
+        * @global string $wgArticlePath
+        * @global string $wgServer
+        * @param MassMessageJob $massMessageJob
+        * @return boolean
+        */
+       public static function sendMassMessageEmail( MassMessageJob 
$massMessageJob ) {
+               $title = $massMessageJob->getTitle();
+               $user = User::newFromName( $title->getBaseText() );
+               $params = $massMessageJob->getParams();
+
+               // Generate plain text ...
+               $text = $massMessageJob->makeText();
+               // Make sure we don't send relative links in the email. 
Shouldn't that be a ParserOption?
+               global $wgArticlePath, $wgServer;
+               $oldArticlePath = $wgArticlePath;
+               $wgArticlePath = $wgServer . $wgArticlePath;
+               $parser = new Parser();
+               $parserOutput = $parser->parse( $text, $title, new 
ParserOptions() );
+               // ... and also generate HTML from the wikitext, which makes 
sense since
+               // we're sending an email, but it requires $wgAllowHTMLEmail
+               $html = $parserOutput->getText();
+               $status = $user->sendMail( $params['subject'], array( 'text' => 
$text, 'html' => $html ) );
+               $wgArticlePath = $oldArticlePath;
+               if ( !$status->isGood() ) {
+                       /** @todo This should really be sending a code - not a 
message */
+                       $massMessageJob->logLocalFailure( $status->getMessage() 
);
+                       return true;
+                       // If the status isn't good, MassMessage will proceed 
to post to the user's page instead.
+               } else {
+                       // Good status - stop execution since we already 
emailed the user.
+                       return false;
+               }
+       }
+}
diff --git a/MassMessageEmail.php b/MassMessageEmail.php
new file mode 100644
index 0000000..8dd0cc6
--- /dev/null
+++ b/MassMessageEmail.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Adds email capability to the MassMessage extension
+ * Tested with MassMessage 0.4.0
+ * See https://mediawiki.org/wiki/Extension:MassMessage
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Ike Hecht
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ * @todo Add extension.json
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+       exit;
+}
+
+$wgExtensionCredits['other'][] = array(
+       'path' => __FILE__,
+       'name' => 'MassMessageEmail',
+       'author' => 'Ike Hecht',
+       'url' => 'https://www.mediawiki.org/wiki/Extension:MassMessageEmail',
+       'descriptionmsg' => 'massmessageemail-desc',
+       'version' => '0.2.0',
+       'license-name' => 'GPL-2.0+',
+);
+
+$wgMessagesDirs['MassMessageEmail'] = __DIR__ . '/i18n';
+
+$wgAutoloadClasses['MassMessageEmailHooks'] = __DIR__ . 
'/MassMessageEmail.hooks.php';
+
+$wgHooks['MassMessageJobBeforeMessageSent'][] = 
'MassMessageEmailHooks::onMassMessageJobBeforeMessageSent';
diff --git a/extension.json b/extension.json
new file mode 100644
index 0000000..facfa78
--- /dev/null
+++ b/extension.json
@@ -0,0 +1,23 @@
+{
+       "name": "MassMessageEmail",
+       "version": "0.2.0",
+       "author": "Ike Hecht",
+       "url": "https://www.mediawiki.org/wiki/Extension:MassMessageEmail";,
+       "descriptionmsg": "massmessageemail-desc",
+       "license-name": "GPL-2.0+",
+       "type": "other",
+       "MessagesDirs": {
+               "MassMessageEmail": [
+                       "i18n"
+               ]
+       },
+       "AutoloadClasses": {
+               "MassMessageEmailHooks": "MassMessageEmail.hooks.php"
+       },
+       "Hooks": {
+               "MassMessageJobBeforeMessageSent": [
+                       
"MassMessageEmailHooks::onMassMessageJobBeforeMessageSent"
+               ]
+       },
+       "manifest_version": 1
+}
diff --git a/i18n/en.json b/i18n/en.json
new file mode 100644
index 0000000..6da3492
--- /dev/null
+++ b/i18n/en.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ike Hecht"
+               ]
+       },
+       "massmessageemail-desc": "Adds email capability to the MassMessage 
extension"
+}
diff --git a/i18n/qqq.json b/i18n/qqq.json
new file mode 100644
index 0000000..18e8055
--- /dev/null
+++ b/i18n/qqq.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ike Hecht"
+               ]
+       },
+       "massmessageemail-desc": "{{desc|name=Mass Message 
Email|url=http://www.mediawiki.org/wiki/Extension:MassMessageEmail}}";
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/234929
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I92b56a64a1f7d87e718259219a85423648782bf1
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/MassMessageEmail
Gerrit-Branch: master
Gerrit-Owner: tosfos <tos...@yahoo.com>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Aklapper <aklap...@wikimedia.org>
Gerrit-Reviewer: Hashar <has...@free.fr>
Gerrit-Reviewer: Legoktm <lego...@member.fsf.org>
Gerrit-Reviewer: Siebrand <siebr...@kitano.nl>
Gerrit-Reviewer: Wctaiwan <wctai...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>
Gerrit-Reviewer: tosfos <tos...@yahoo.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to