forked from campaignmonitor/createsend-php
-
Notifications
You must be signed in to change notification settings - Fork 0
/
csrest_transactional_smartemail.php
184 lines (173 loc) · 7.14 KB
/
csrest_transactional_smartemail.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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<?php
require_once dirname(__FILE__).'/class/base_classes.php';
/**
* Class to access transactional from the create send API.
* @author philoye
*
*/
if (!class_exists('CS_REST_Transactional_SmartEmail')) {
class CS_REST_Transactional_SmartEmail extends CS_REST_Wrapper_Base {
/**
* The client id to use for this mailer. Optional if using a client api key.
* @var array
* @access private
*/
var $_client_id_param;
/**
* The base route of the smartemail resource.
* @var string
* @access private
*/
var $_smartemail_base_route;
/**
* Constructor.
* @param $client_id string The client id to send email on behalf of
* Optional if using a client api key
* @param $smartemail_id string The smart email id to access (Ignored for list requests)
* @param $auth_details array Authentication details to use for API calls.
* This array must take one of the following forms:
* If using OAuth to authenticate:
* array(
* 'access_token' => 'your access token',
* 'refresh_token' => 'your refresh token')
*
* Or if using an API key:
* array('api_key' => 'your api key')
* @param $protocol string The protocol to use for requests (http|https)
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
* @param $host string The host to send API requests to. There is no need to change this
* @param $log CS_REST_Log The logger to use. Used for dependency injection
* @param $serialiser The serialiser to use. Used for dependency injection
* @param $transport The transport to use. Used for dependency injection
* @access public
*/
function __construct (
$smartemail_id,
$auth_details,
$client_id = NULL,
$protocol = 'https',
$debug_level = CS_REST_LOG_NONE,
$host = 'api.createsend.com',
$log = NULL,
$serialiser = NULL,
$transport = NULL) {
parent::__construct($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
$this->set_client($client_id);
$this->set_smartemail_id($smartemail_id);
}
/**
* Change the client id used for calls after construction
* Only required if using OAuth or an Account level API Key
* @param $client_id
* @access public
*/
function set_client($client_id) {
$this->_client_id_param = array("clientID" => $client_id);
}
/**
* Change the smart email id used for calls after construction
* @param $smartemail_id
* @access public
*/
function set_smartemail_id($smartemail_id) {
$this->_smartemail_base_route = $this->_base_route . 'transactional/smartEmail/' . $smartemail_id;
}
/**
* Gets a list of smart emails
* @access public
* @param $options optional array Query params to filter list
* This should be an array of the form
* array(
* "status" => "all|drafts|active"
* )
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
* array(
* array (
* 'ID' => string
* 'Name' => string
* 'CreatedAt' => datestring
* 'Status' => string
* )
* )
*/
function get_list($options = array()) {
$data = array_merge($this->_client_id_param, $options);
return $this->get_request_with_params($this->_base_route . 'transactional/smartemail', $data);
}
/**
* Sends a new smart transactional email
* @param array $message The details of the template
* This should be an array of the form
* array(
* 'To' => array(
* "First Last <[email protected]>", "[email protected]"
* ) optional To recipients
* 'CC' => array(
* "First Last <[email protected]>", "[email protected]"
* ) optional CC recipients
* 'BCC' => array(
* "First Last <[email protected]>", "[email protected]"
* ) optional BCC recipients
* 'Attachments' => array(
* array(
* "Name" => string
* "Type" => string mime type
* "Content" => string base64-encoded
* )
* ) optional
* 'Data' => array(
* "variable" => "value",
* "variable" => "value",
* )
* )
* @param boolean $add_to_list optional. Whether to add all recipients to the list specified for the smart email
* @access public
* @return CS_REST_Wrapper_Result A successful response will be the include the details of the action, including a Message ID.
* array(
* array(
* "MessageID" => string
* "Recipient" => string
* "Status" => string
* )
* )
*/
function send($message, $consent_to_track, $add_to_list = true) {
$data = array_merge($message, array(
"AddRecipientsToList" => $add_to_list,
"ConsentToTrack" => $consent_to_track
));
return $this->post_request($this->_smartemail_base_route . '/send.json', $data);
}
/**
* Gets the details of Smart Email
* @access public
* @return CS_REST_Wrapper_Result A successful response will be an array of the form
* array(
* "SmartEmailID" => string
* "Name" => string
* "CreatedAt" => string
* "Status" => string
* "Properties" => array (
* "From" =. string
* "ReplyTo" => string
* "Subject" => string
* "Content": array(
* "HTML": string
* "Text": string
* "EmailVariables": array(
* "username",
* "reset_token"
* ),
* "InlineCss": boolean
* },
* "TextPreviewUrl": string
* "HtmlPreviewUrl": string
* ),
* "AddRecipientsToList": string
* }
*/
function get_details() {
return $this->get_request($this->_smartemail_base_route);
}
}
}