* (bug 1133) Special:Emailuser: add an option to send yourself a copy your mail....
authorNick Jenkins <nickj@users.mediawiki.org>
Fri, 3 Nov 2006 05:39:44 +0000 (05:39 +0000)
committerNick Jenkins <nickj@users.mediawiki.org>
Fri, 3 Nov 2006 05:39:44 +0000 (05:39 +0000)
RELEASE-NOTES
includes/SpecialEmailuser.php
languages/messages/MessagesEn.php

index 8a3ab20..d2aa0dd 100644 (file)
@@ -127,6 +127,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
   'prompt for blank edit summaries' on.
 * (bug 7723) Add ic: parser function, with alias tc:, which capitalises the first
    letter of each word.
+* (bug 1133) Special:Emailuser: add an option to send yourself a copy your mail.
 
 == Languages updated ==
 
index caf24ff..16270b1 100644 (file)
@@ -67,6 +67,7 @@ class EmailUserForm {
 
        var $target;
        var $text, $subject;
+       var $cc_me;     // Whether user requested to be sent a separate copy of their email.
 
        /**
         * @param User $target
@@ -76,6 +77,7 @@ class EmailUserForm {
                $this->target = $target;
                $this->text = $wgRequest->getText( 'wpText' );
                $this->subject = $wgRequest->getText( 'wpSubject' );
+               $this->cc_me = $wgRequest->getBool( 'wpCCMe' );
        }
 
        function showForm() {
@@ -95,6 +97,7 @@ class EmailUserForm {
                $emr = wfMsg( "emailsubject" );
                $emm = wfMsg( "emailmessage" );
                $ems = wfMsg( "emailsend" );
+               $emc = wfMsg( "emailccme" );
                $encSubject = htmlspecialchars( $this->subject );
 
                $titleObj = SpecialPage::getTitleFor( "Emailuser" );
@@ -120,6 +123,7 @@ class EmailUserForm {
 <span id='wpTextLabel'><label for=\"wpText\">{$emm}:</label><br /></span>
 <textarea name=\"wpText\" rows='20' cols='80' wrap='virtual' style=\"width: 100%;\">" . htmlspecialchars( $this->text ) .
 "</textarea>
+" . wfCheckLabel( $emc, 'wpCCMe', 'wpCCMe' ) . "<br />
 <input type='submit' name=\"wpSend\" value=\"{$ems}\" />
 <input type='hidden' name='wpEditToken' value=\"$token\" />
 </form>\n" );
@@ -140,6 +144,25 @@ class EmailUserForm {
                        if( WikiError::isError( $mailResult ) ) {
                                $wgOut->addHTML( wfMsg( "usermailererror" ) . $mailResult);
                        } else {
+                               
+                               // if the user requested a copy of this mail, do this now,
+                               // unless they are emailing themselves, in which case one copy of the message is sufficient.
+                               if ($this->cc_me && $to != $from) {
+                                       $cc_subject = wfMsg('emailccsubject', $this->target->getName(), $subject);
+                                       if( wfRunHooks( 'EmailUser', array( &$from, &$from, &$cc_subject, &$this->text ) ) ) {
+                                               $ccResult = userMailer( $from, $from, $cc_subject, $this->text );
+                                               if( WikiError::isError( $ccResult ) ) {
+                                                       // At this stage, the user's CC mail has failed, but their 
+                                                       // original mail has succeeded. It's unlikely, but still, what to do?
+                                                       // We can either show them an error, or we can say everything was fine,
+                                                       // or we can say we sort of failed AND sort of succeeded. Of these options, 
+                                                       // simply saying there was an error is probably best.
+                                                       $wgOut->addHTML( wfMsg( "usermailererror" ) . $ccResult);
+                                                       return;
+                                               }
+                                       }
+                               }
+                               
                                $titleObj = SpecialPage::getTitleFor( "Emailuser" );
                                $encTarget = wfUrlencode( $this->target->getName() );
                                $wgOut->redirect( $titleObj->getFullURL( "target={$encTarget}&action=success" ) );
index eeae031..2e94c75 100644 (file)
@@ -1497,7 +1497,7 @@ You can narrow down the view by selecting a log type, the user name, or the affe
 # Special:Listusers
 'listusersfrom' => 'Display users starting at:',
 
-# E this user
+# Email this user
 #
 'mailnologin'  => 'No send address',
 'mailnologintext' => "You must be [[Special:Userlogin|logged in]]
@@ -1520,6 +1520,8 @@ or has chosen not to receive e-mail from other users.',
 'emailsubject' => 'Subject',
 'emailmessage' => 'Message',
 'emailsend'            => 'Send',
+'emailccme'     => 'E-mail me a copy of my message.',
+'emailccsubject'=> 'Copy of your message to $1: $2',
 'emailsent'            => 'E-mail sent',
 'emailsenttext' => 'Your e-mail message has been sent.',