Completed
Pull Request — master (#1473)
by Tim
31:22 queued 01:19
created

Messenger::sendMessageToUser()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace WMDE\Fundraising\Frontend\Infrastructure\Mail;
6
7
use RuntimeException;
8
use Swift_Message;
9
use Swift_Transport;
10
use WMDE\EmailAddress\EmailAddress;
11
12
/**
13
 * @license GNU GPL v2+
14
 */
15
class Messenger {
16
17
	private $mailTransport;
18
	private $operatorAddress;
19
	private $operatorName;
20
21 231
	public function __construct( Swift_Transport $mailTransport,
22
								 EmailAddress $operatorAddress,
23
								 string $operatorName = '' ) {
24 231
		$this->mailTransport = $mailTransport;
25 231
		$this->operatorAddress = $operatorAddress;
26 231
		$this->operatorName = $operatorName;
27 231
	}
28
29
	/**
30
	 * @throws RuntimeException
31
	 */
32 44
	public function sendMessageToUser( Message $messageContent, EmailAddress $recipient ): void {
33 44
		$this->sendMessage( $this->createMessage( $messageContent, $recipient ) );
34 43
	}
35
36
	/**
37
	 * @throws RuntimeException
38
	 */
39 1
	public function sendMessageToOperator( Message $messageContent, EmailAddress $replyTo = null ): void {
40 1
		$this->sendMessage( $this->createMessage( $messageContent, $this->operatorAddress, $replyTo ) );
41 1
	}
42
43 44
	private function createMessage( Message $messageContent, EmailAddress $recipient,
44
									EmailAddress $replyTo = null ): Swift_Message {
45 44
		$message = Swift_Message::newInstance( $messageContent->getSubject(), $messageContent->getMessageBody() );
46 44
		$message->setFrom( $this->operatorAddress->getNormalizedAddress(), $this->operatorName );
47 44
		$message->setTo( $recipient->getNormalizedAddress() );
48
49 44
		if ( $replyTo ) {
50 1
			$message->setReplyTo( $replyTo->getNormalizedAddress() );
51
		}
52
53 44
		return $message;
54
	}
55
56 44
	private function sendMessage( Swift_Message $message ): void {
57 44
		$deliveryCount = $this->mailTransport->send( $message );
58 44
		if ( $deliveryCount === 0 ) {
59 1
			throw new MailerException( 'Message delivery failed' );
60
		}
61 43
	}
62
63
}
64