- function doSubmit()
- {
- global $wgOut, $wgUser, $wgLang, $wgOutputEncoding;
-
- $from = wfQuotedPrintable( $wgUser->getName() ) . " <" . $wgUser->getEmail() . ">";
-
- $mailResult = userMailer( $this->mAddress, $from, wfQuotedPrintable( $this->subject ), $this->text );
-
- if (! $mailResult)
- {
- $titleObj = Title::makeTitle( NS_SPECIAL, "Emailuser" );
- $encTarget = wfUrlencode( $this->target );
- $wgOut->redirect( $titleObj->getFullURL( "target={$encTarget}&action=success" ) );
+ function doSubmit() {
+ global $wgOut, $wgUser;
+
+ $to = new MailAddress( $this->target );
+ $from = new MailAddress( $wgUser );
+ $subject = $this->subject;
+
+ if( wfRunHooks( 'EmailUser', array( &$to, &$from, &$subject, &$this->text ) ) ) {
+
+ $mailResult = userMailer( $to, $from, $subject, $this->text );
+
+ 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" ) );
+ wfRunHooks( 'EmailUserComplete', array( $to, $from, $subject, $this->text ) );
+ }