-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy pathTransactional.php
executable file
·161 lines (146 loc) · 4.31 KB
/
Transactional.php
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
namespace Dotdigitalgroup\Email\Helper;
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Store\Model\ScopeInterface;
use Laminas\Mail\Transport\SmtpOptions;
/**
* Transactional emails configuration data values.
*/
class Transactional extends AbstractHelper
{
public const XML_PATH_DDG_TRANSACTIONAL_ENABLED = 'transactional_emails/ddg_transactional/enabled';
public const XML_PATH_DDG_TRANSACTIONAL_HOST = 'transactional_emails/ddg_transactional/host';
public const XML_PATH_DDG_TRANSACTIONAL_USERNAME = 'transactional_emails/ddg_transactional/username';
public const XML_PATH_DDG_TRANSACTIONAL_PASSWORD = 'transactional_emails/ddg_transactional/password';
public const XML_PATH_DDG_TRANSACTIONAL_PORT = 'transactional_emails/ddg_transactional/port';
public const XML_PATH_DDG_TRANSACTIONAL_DEBUG = 'transactional_emails/ddg_transactional/debug';
/**
* Is transactional email enabled.
*
* @param int $storeId
*
* @return bool
*/
public function isEnabled($storeId)
{
return $this->scopeConfig->isSetFlag(
self::XML_PATH_DDG_TRANSACTIONAL_ENABLED,
ScopeInterface::SCOPE_STORE,
$storeId
);
}
/**
* Get transactional email host.
*
* @param int $storeId
*
* @return boolean|string
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getSmtpHost($storeId)
{
$regionId = $this->scopeConfig->getValue(
self::XML_PATH_DDG_TRANSACTIONAL_HOST,
ScopeInterface::SCOPE_STORE,
$storeId
);
$subdomain = $this->scopeConfig->getValue(
Config::PATH_FOR_API_ENDPOINT_SUBDOMAIN,
ScopeInterface::SCOPE_STORE,
$storeId
);
if ($regionId) {
return 'r' . $regionId . '-smtp' . ($subdomain ? '-' . $subdomain : '') . '.dotdigital.com';
}
throw new \Magento\Framework\Exception\LocalizedException(
__('Dotdigital SMTP host region is not defined')
);
}
/**
* Get smtp username.
*
* @param int $storeId
*
* @return boolean|string
*/
private function getSmtpUsername($storeId = null)
{
return $this->scopeConfig->getValue(
self::XML_PATH_DDG_TRANSACTIONAL_USERNAME,
ScopeInterface::SCOPE_STORE,
$storeId
);
}
/**
* Get smtp password.
*
* @param int $storeId
*
* @return boolean|string
*/
private function getSmtpPassword($storeId = null)
{
return $this->scopeConfig->getValue(
self::XML_PATH_DDG_TRANSACTIONAL_PASSWORD,
ScopeInterface::SCOPE_STORE,
$storeId
);
}
/**
* Get smtp port.
*
* @param int $storeId
*
* @return boolean|string
*/
private function getSmtpPort($storeId)
{
return $this->scopeConfig->getValue(
self::XML_PATH_DDG_TRANSACTIONAL_PORT,
ScopeInterface::SCOPE_STORE,
$storeId
);
}
/**
* Fetch options.
*
* @param int $storeId
*
* @return SmtpOptions|null
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function getSmtpOptions($storeId)
{
try {
return new SmtpOptions(
[
'host' => $this->getSmtpHost($storeId),
'port' => $this->getSmtpPort($storeId),
'connection_class' => 'login',
'connection_config' => [
'username' => $this->getSmtpUsername($storeId),
'password' => $this->getSmtpPassword($storeId),
'ssl' => 'tls'
]
]
);
} catch (\Exception $e) {
$this->_logger->debug((string) $e);
return null;
}
}
/**
* Check if the template code is containing dotmailer.
*
* @param string $templateCode
* @return bool
*/
public function isDotmailerTemplate($templateCode)
{
preg_match("/\_\d{1,10}$/", (string) $templateCode, $matches);
if (count($matches)) {
return true;
}
return false;
}
}