Issues (3627)

Swiftmailer/SendGrid/Mail/SendGridMailBase.php (2 issues)

1
<?php
2
3
/*
4
 * @copyright   2014 Mautic Contributors. All rights reserved
5
 * @author      Mautic
6
 *
7
 * @link        http://mautic.org
8
 *
9
 * @license     GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
10
 */
11
12
namespace Mautic\EmailBundle\Swiftmailer\SendGrid\Mail;
13
14
use Mautic\EmailBundle\Helper\PlainTextMessageHelper;
15
use SendGrid\Content;
16
use SendGrid\Email;
17
use SendGrid\Mail;
18
19
class SendGridMailBase
20
{
21
    /**
22
     * @var PlainTextMessageHelper
23
     */
24
    private $plainTextMessageHelper;
25
26
    public function __construct(PlainTextMessageHelper $plainTextMessageHelper)
27
    {
28
        $this->plainTextMessageHelper = $plainTextMessageHelper;
29
    }
30
31
    /**
32
     * @return Mail
33
     */
34
    public function getSendGridMail(\Swift_Mime_SimpleMessage $message)
35
    {
36
        $froms       = $message->getFrom();
37
        $from        = new Email(current($froms), key($froms));
0 ignored issues
show
It seems like $froms can also be of type null; however, parameter $array of key() does only seem to accept array|object, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

37
        $from        = new Email(current($froms), key(/** @scrutinizer ignore-type */ $froms));
Loading history...
It seems like $froms can also be of type null; however, parameter $array of current() does only seem to accept array|object, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

37
        $from        = new Email(current(/** @scrutinizer ignore-type */ $froms), key($froms));
Loading history...
38
        $subject     = $message->getSubject();
39
40
        $contentMain   = new Content($this->getContentType($message), $message->getBody());
41
        $contentSecond = null;
42
43
        // Plain text message must be first if present
44
        if ('text/plain' !== $contentMain->getType()) {
45
            $plainText = $this->plainTextMessageHelper->getPlainTextFromMessageNotStatic($message);
46
            if ($plainText) {
47
                $contentSecond = $contentMain;
48
                $contentMain   = new Content('text/plain', $plainText);
49
            }
50
        }
51
52
        // Sendgrid class requires to pass an TO email even if we do not have any general one
53
        // Pass a dummy email and clear it in the next 2 lines
54
        $to                    = '[email protected]';
55
        $mail                  = new Mail($from, $subject, $to, $contentMain);
56
        $mail->personalization = [];
57
58
        if ($contentSecond) {
59
            $mail->addContent($contentSecond);
60
        }
61
62
        return $mail;
63
    }
64
65
    /**
66
     * @return string
67
     */
68
    private function getContentType(\Swift_Mime_SimpleMessage $message)
69
    {
70
        return 'text/plain' === $message->getContentType() ? $message->getContentType() : 'text/html';
71
    }
72
}
73