From 78920777972df73b568c75c5f63c19d94dc2bc30 Mon Sep 17 00:00:00 2001 From: Nick Jenkins Date: Fri, 3 Nov 2006 05:39:44 +0000 Subject: [PATCH] * (bug 1133) Special:Emailuser: add an option to send yourself a copy your mail. [A.K.A. the "CC me, Baby!" option]. --- RELEASE-NOTES | 1 + includes/SpecialEmailuser.php | 23 +++++++++++++++++++++++ languages/messages/MessagesEn.php | 4 +++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 8a3ab20279..d2aa0dd1cc 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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 == diff --git a/includes/SpecialEmailuser.php b/includes/SpecialEmailuser.php index caf24ff3b7..16270b1778 100644 --- a/includes/SpecialEmailuser.php +++ b/includes/SpecialEmailuser.php @@ -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 {
+" . wfCheckLabel( $emc, 'wpCCMe', 'wpCCMe' ) . "
\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" ) ); diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index eeae0312fb..2e94c757a5 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -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.', -- 2.20.1