Completed
Push — master ( 32a670...32a37c )
by Damian
37s queued 21s
created

src/Control/Email/SwiftPlugin.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace SilverStripe\Control\Email;
4
5
class SwiftPlugin implements \Swift_Events_SendListener
6
{
7
    /**
8
     * Before sending a message make sure all our overrides are taken into account
9
     *
10
     * @param \Swift_Events_SendEvent $evt
11
     */
12
    public function beforeSendPerformed(\Swift_Events_SendEvent $evt)
13
    {
14
        /** @var \Swift_Message $message */
15
        $message = $evt->getMessage();
16
17
        $sendAllTo = Email::getSendAllEmailsTo();
18
        if (!empty($sendAllTo)) {
19
            $this->setTo($message, $sendAllTo);
20
        }
21
22
        $ccAllTo = Email::getCCAllEmailsTo();
23
        if (!empty($ccAllTo)) {
24
            foreach ($ccAllTo as $address => $name) {
25
                $message->addCc($address, $name);
26
            }
27
        }
28
29
        $bccAllTo = Email::getBCCAllEmailsTo();
30
        if (!empty($bccAllTo)) {
31
            foreach ($bccAllTo as $address => $name) {
32
                $message->addBcc($address, $name);
33
            }
34
        }
35
36
        $sendAllFrom = Email::getSendAllEmailsFrom();
37
        if (!empty($sendAllFrom)) {
38
            $this->setFrom($message, $sendAllFrom);
39
        }
40
    }
41
42
    /**
43
     * @param \Swift_Mime_Message $message
0 ignored issues
show
The type Swift_Mime_Message was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
44
     * @param array|string $to
45
     */
46
    protected function setTo($message, $to)
47
    {
48
        $headers = $message->getHeaders();
49
        $origTo = $message->getTo();
50
        $cc = $message->getCc();
51
        $bcc = $message->getBcc();
52
53
        // set default recipient and remove all other recipients
54
        $message->setTo($to);
55
        $headers->removeAll('Cc');
56
        $headers->removeAll('Bcc');
57
58
        // store the old data as X-Original-* Headers for debugging
59
        $headers->addMailboxHeader('X-Original-To', $origTo);
60
        $headers->addMailboxHeader('X-Original-Cc', $cc);
61
        $headers->addMailboxHeader('X-Original-Bcc', $bcc);
62
    }
63
64
    /**
65
     * @param \Swift_Mime_Message $message
66
     * @param array|string $from
67
     */
68
    protected function setFrom($message, $from)
69
    {
70
        $headers = $message->getHeaders();
71
        $origFrom = $message->getFrom();
72
        $headers->addMailboxHeader('X-Original-From', $origFrom);
73
        $message->setFrom($from);
74
    }
75
76
    public function sendPerformed(\Swift_Events_SendEvent $evt)
77
    {
78
        // noop
79
    }
80
}
81