Wctaiwan has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/285302

Change subject: Support using the user's account to deliver messages
......................................................................

Support using the user's account to deliver messages

Add the option to use the user's account to deliver messages to
Special:MassMessage and the API.

Follow up to I736f4c675583d3db21ee4a1a259b961494337ef3

Bug: T71954
Change-Id: I64aa554815a42088c2af83748b0d8c7a4d0e0950
---
M i18n/en.json
M i18n/qqq.json
M includes/ApiMassMessage.php
M includes/SpecialMassMessage.php
M includes/job/MassMessageJob.php
5 files changed, 50 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MassMessage 
refs/changes/02/285302/1

diff --git a/i18n/en.json b/i18n/en.json
index 902f97b..5dba798 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -12,6 +12,9 @@
        "massmessage-form-spamlist": "Page or category containing list of pages 
to leave a message on:",
        "massmessage-form-subject": "Subject of the message (also used as the 
edit summary):",
        "massmessage-form-message": "Body of the message:",
+       "massmessage-form-sender": "Sender account:",
+       "massmessage-form-shareduser": "Shared message delivery user",
+       "massmessage-form-ownuser": "Your own user account",
        "massmessage-form-preview": "Preview",
        "massmessage-form-submit": "Send",
        "massmessage-fieldset-preview": "Preview",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 4c52951..a4dfcb6 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -18,6 +18,9 @@
        "massmessage-form-spamlist": "Label for an inputbox on 
[[Special:MassMessage]].",
        "massmessage-form-subject": "Label for an inputbox on 
[[Special:MassMessage]].",
        "massmessage-form-message": "Used as label for a textarea on 
[[Special:MassMessage]].",
+       "massmessage-form-sender": "Label for a radio button on 
[[Special:MassMessage]]",
+       "massmessage-form-shareduser": "Option label for using the shared 
message delivery user",
+       "massmessage-form-ownuser": "Option label for using the user's own 
account",
        "massmessage-form-preview": "Label for the preview button on 
[[Special:MassMessage]].\n{{Identical|Preview}}",
        "massmessage-form-submit": "Label for the submit button on 
[[Special:MassMessage]].\n\nUsed in 
{{msg-mw|Massmessage-just-preview}}.\n{{Identical|Send}}",
        "massmessage-fieldset-preview": "Label for the fieldset box around the 
page preview.\n{{Identical|Preview}}",
diff --git a/includes/ApiMassMessage.php b/includes/ApiMassMessage.php
index 630653b..5465835 100644
--- a/includes/ApiMassMessage.php
+++ b/includes/ApiMassMessage.php
@@ -44,6 +44,11 @@
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
+                       'sender' => array(
+                               ApiBase::PARAM_TYPE => array( 'shareduser', 
'ownuser' ),
+                               ApiBase::PARAM_REQUIRED => false,
+                               ApiBase::PARAM_DFLT => 'shareduser'
+                       ),
                        'token' => null,
                );
        }
diff --git a/includes/SpecialMassMessage.php b/includes/SpecialMassMessage.php
index 4c1b72f..3457666 100644
--- a/includes/SpecialMassMessage.php
+++ b/includes/SpecialMassMessage.php
@@ -110,11 +110,29 @@
        }
 
        /**
+        * Build and return the aossociative array for the sender field
+        * @return array
+        */
+       protected function getSenderOptions() {
+               $mapping = array(
+                       'massmessage-form-shareduser' => 'shareduser',
+                       'massmessage-form-ownuser' => 'ownuser'
+               );
+
+               $options = array();
+               foreach ( $mapping as $msgKey => $option ) {
+                       $options[$this->msg( $msgKey )->escaped()] = $option;
+               }
+               return $options;
+       }
+
+       /**
         * @return array
         */
        protected function createForm() {
                $request = $this->getRequest();
                $m = array();
+
                // Who to send to
                $m['spamlist'] = array(
                        'id' => 'mw-massmessage-form-spamlist',
@@ -124,6 +142,7 @@
                        'label-message' => 'massmessage-form-spamlist',
                        'default' => $request->getText( 'spamlist' )
                );
+
                // The subject line
                $m['subject'] = array(
                        'id' => 'mw-massmessage-form-subject',
@@ -145,6 +164,17 @@
                        'default' => $request->getText( 'message' )
                );
 
+               // Whether to send using the user account or the shared 
MassMessage user
+               $m['sender'] = array(
+                       'id' => 'mw-masssmessage-form-sender',
+                       'name' => 'sender',
+                       'type' => 'radio',
+                       'tabindex' => '4',
+                       'label-message' => 'massmessage-form-sender',
+                       'options' => $this->getSenderOptions(),
+                       'default' => 'shareduser'
+               );
+
                if ( $this->state === 'preview' ) {
                        // Adds it right before the 'Send' button
                        $m['message']['help'] = EditPage::getCopyrightWarning( 
$this->getPageTitle( false ), 'parse' );
@@ -152,7 +182,7 @@
                                'id' => 'mw-massmessage-form-submit-button',
                                'name' => 'submit-button',
                                'type' => 'submit',
-                               'tabindex' => '4',
+                               'tabindex' => '5',
                                'default' => $this->msg( 
'massmessage-form-submit' )->text()
                        );
                }
@@ -161,7 +191,7 @@
                        'id' => 'mw-massmessage-form-preview-button',
                        'name' => 'preview-button',
                        'type' => 'submit',
-                       'tabindex' => '5',
+                       'tabindex' => '6',
                        'default' => $this->msg( 'massmessage-form-preview' 
)->text()
                );
 
@@ -291,8 +321,10 @@
 
                // Hooks not being run: EditPageGetPreviewContent, 
EditPageGetPreviewText
 
-               $content = $content->preSaveTransform( $mockTarget, 
MassMessage::getMessengerUser(),
-                       $parserOptions );
+               $user = ( $data['sender'] === 'ownuser' )
+                       ? $this->getUser()
+                       : MassMessage::getMessengerUser();
+               $content = $content->preSaveTransform( $mockTarget, $user, 
$parserOptions );
                $parserOutput = $content->getParserOutput( $mockTarget, null, 
$parserOptions );
                $previewFieldset = Xml::fieldset(
                        $this->msg( 'massmessage-fieldset-preview' )->text(),
diff --git a/includes/job/MassMessageJob.php b/includes/job/MassMessageJob.php
index ebfd3d2..f29c084 100644
--- a/includes/job/MassMessageJob.php
+++ b/includes/job/MassMessageJob.php
@@ -14,12 +14,6 @@
 
        const STRIP_TILDES = true;
 
-       /**
-        * @var bool Whether to use sender account (if possible)
-        * TODO: Expose this as a configurable option (T71954)
-        */
-       private $useSenderUser = false;
-
        public function __construct( Title $title, array $params, $id = 0 ) {
                // Create a fresh Title object so namespaces are evaluated
                // in the context of the target site. See bug 57464.
@@ -47,10 +41,12 @@
        }
 
        /**
+        * Returns the sender user, if specified, or the shared messenger user
+        *
         * @return User
         */
        protected function getUser() {
-               if ( $this->useSenderUser && isset( $this->params['userId'] ) ) 
{
+               if ( $this->params['sender'] === 'ownuser' && isset( 
$this->params['userId'] ) ) {
                        $centralIdLookup = CentralIdLookup::factory();
                        $user = $centralIdLookup->localUserFromCentralId(
                                $this->params['userId'],

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I64aa554815a42088c2af83748b0d8c7a4d0e0950
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MassMessage
Gerrit-Branch: master
Gerrit-Owner: Wctaiwan <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to