File size: 2,041 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php

namespace Mautic\EmailBundle\OptionsAccessor;

use Mautic\CoreBundle\Form\DataTransformer\ArrayStringTransformer;
use Mautic\UserBundle\Entity\User;

class EmailToUserAccessor
{
    private ArrayStringTransformer $transformer;

    public function __construct(
        private array $config
    ) {
        $this->transformer = new ArrayStringTransformer();
    }

    public function getEmailID(): int
    {
        return (int) $this->config['useremail']['email'];
    }

    /**
     * @return bool
     */
    public function shouldSentToOwner()
    {
        return empty($this->config['to_owner']) ? false : $this->config['to_owner'];
    }

    /**
     * Gets array of User ids formated for EmailModel.
     *
     * @param User|null $owner If Owner is passed in and config is setted for it, adds owner to returned array
     */
    public function getUserIdsToSend(User $owner = null): array
    {
        $userIds = empty($this->config['user_id']) ? [] : $this->config['user_id'];

        $users = [];
        if ($userIds) {
            foreach ($userIds as $userId) {
                $users[] = ['id' => $userId];
            }
        }

        if ($this->shouldSentToOwner() && $owner && !in_array($owner->getId(), $userIds)) {
            $users[] = ['id' => $owner->getId()];
        }

        return $users;
    }

    /**
     * @return array
     */
    public function getToFormatted()
    {
        $property = 'to';

        return empty($this->config[$property]) ? [] : $this->transformer->reverseTransform($this->config[$property]);
    }

    /**
     * @return array
     */
    public function getCcFormatted()
    {
        $property = 'cc';

        return empty($this->config[$property]) ? [] : $this->transformer->reverseTransform($this->config[$property]);
    }

    /**
     * @return array
     */
    public function getBccFormatted()
    {
        $property = 'bcc';

        return empty($this->config[$property]) ? [] : $this->transformer->reverseTransform($this->config[$property]);
    }
}