4 +--------------------------------------------------------------------+
5 | CiviCRM version 4.5 |
6 +--------------------------------------------------------------------+
7 | Copyright CiviCRM LLC (c) 2004-2014 |
8 +--------------------------------------------------------------------+
9 | This file is a part of CiviCRM. |
11 | CiviCRM is free software; you can copy, modify, and distribute it |
12 | under the terms of the GNU Affero General Public License |
13 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
15 | CiviCRM is distributed in the hope that it will be useful, but |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. |
20 | You should have received a copy of the GNU Affero General Public |
21 | License and the CiviCRM Licensing Exception along |
22 | with this program; if not, contact CiviCRM LLC |
23 | at info[AT]civicrm[DOT]org. If you have questions about the |
24 | GNU Affero General Public License or the licensing of CiviCRM, |
25 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
26 +--------------------------------------------------------------------+
31 * APIv3 functions for registering/processing mailing events.
33 * @package CiviCRM_APIv3
34 * @subpackage API_Mailing
35 * @copyright CiviCRM LLC (c) 2004-2014
41 * Files required for this package
45 * Handle a create event.
47 * @param array $params
50 * @return array API Success Array
52 function civicrm_api3_mailing_create($params, $ids = array()) {
53 return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__
), $params);
57 * Adjust Metadata for Create action
59 * The metadata is used for setting defaults, documentation & validation
60 * @param array $params array or parameters determined by getfields
62 function _civicrm_api3_mailing_create_spec(&$params) {
63 $params['name']['api.required'] = 1;
64 $params['subject']['api.required'] = 1;
65 // should be able to default to 'user_contact_id' & have it work but it didn't work in test so
66 // making required for simplicity
67 $params['created_id']['api.required'] = 1;
68 $params['api.mailing_job.create']['api.default'] = 1;
69 $params['api.mailing_job.create']['title'] = 'Schedule Mailing?';
73 * Handle a delete event.
75 * @param array $params
78 * @return array API Success Array
80 function civicrm_api3_mailing_delete($params, $ids = array()) {
81 return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__
), $params);
88 * @param array $params
91 function civicrm_api3_mailing_get($params) {
92 return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__
), $params);
96 * Process a bounce event by passing through to the BAOs.
98 * @param array $params
100 * @throws API_Exception
103 function civicrm_api3_mailing_event_bounce($params) {
105 $body = $params['body'];
106 unset($params['body']);
108 $params +
= CRM_Mailing_BAO_BouncePattern
::match($body);
110 if (CRM_Mailing_Event_BAO_Bounce
::create($params)) {
111 return civicrm_api3_create_success($params);
114 throw new API_Exception(ts('Queue event could not be found'),'no_queue_event
120 * Adjust Metadata for bounce_spec action
122 * The metadata is used for setting defaults, documentation & validation
123 * @param array $params array or parameters determined by getfields
125 function _civicrm_api3_mailing_event_bounce_spec(&$params) {
126 $params['job_id']['api.required'] = 1;
127 $params['event_queue_id']['api.required'] = 1;
128 $params['hash']['api.required'] = 1;
129 $params['body']['api.required'] = 1;
133 * Handle a confirm event
136 * @param array $params
140 function civicrm_api3_mailing_event_confirm($params) {
141 return civicrm_api('mailing_event_confirm', 'create', $params);
145 * Handle a reply event
147 * @param array $params
151 function civicrm_api3_mailing_event_reply($params) {
152 $job = $params['job_id'];
153 $queue = $params['event_queue_id'];
154 $hash = $params['hash'];
155 $replyto = $params['replyTo'];
156 $bodyTxt = CRM_Utils_Array
::value('bodyTxt', $params);
157 $bodyHTML = CRM_Utils_Array
::value('bodyHTML', $params);
158 $fullEmail = CRM_Utils_Array
::value('fullEmail', $params);
160 $mailing = CRM_Mailing_Event_BAO_Reply
::reply($job, $queue, $hash, $replyto);
162 if (empty($mailing)) {
163 return civicrm_api3_create_error('Queue event could not be found');
166 CRM_Mailing_Event_BAO_Reply
::send($queue, $mailing, $bodyTxt, $replyto, $bodyHTML, $fullEmail);
168 return civicrm_api3_create_success($params);
172 * Adjust Metadata for event_reply action
174 * The metadata is used for setting defaults, documentation & validation
175 * @param array $params array or parameters determined by getfields
177 function _civicrm_api3_mailing_event_reply_spec(&$params) {
178 $params['job_id']['api.required'] = 1;
179 $params['event_queue_id']['api.required'] = 1;
180 $params['hash']['api.required'] = 1;
181 $params['replyTo']['api.required'] = 0;
185 * Handle a forward event
187 * @param array $params
191 function civicrm_api3_mailing_event_forward($params) {
192 $job = $params['job_id'];
193 $queue = $params['event_queue_id'];
194 $hash = $params['hash'];
195 $email = $params['email'];
196 $fromEmail = CRM_Utils_Array
::value('fromEmail', $params);
197 $params = CRM_Utils_Array
::value('params', $params);
199 $forward = CRM_Mailing_Event_BAO_Forward
::forward($job, $queue, $hash, $email, $fromEmail, $params);
202 return civicrm_api3_create_success($params);
205 return civicrm_api3_create_error('Queue event could not be found');
209 * Adjust Metadata for event_forward action
211 * The metadata is used for setting defaults, documentation & validation
212 * @param array $params array or parameters determined by getfields
214 function _civicrm_api3_mailing_event_forward_spec(&$params) {
215 $params['job_id']['api.required'] = 1;
216 $params['event_queue_id']['api.required'] = 1;
217 $params['hash']['api.required'] = 1;
218 $params['email']['api.required'] = 1;
222 * Handle a click event
224 * @param array $params
228 function civicrm_api3_mailing_event_click($params) {
230 civicrm_api3_verify_mandatory($params,
231 'CRM_Mailing_Event_DAO_TrackableURLOpen',
232 array('event_queue_id', 'url_id'),
236 $url_id = $params['url_id'];
237 $queue = $params['event_queue_id'];
239 $url = CRM_Mailing_Event_BAO_TrackableURLOpen
::track($queue, $url_id);
242 $values['url'] = $url;
243 $values['is_error'] = 0;
245 return civicrm_api3_create_success($values);
249 * Handle an open event
251 * @param array $params
255 function civicrm_api3_mailing_event_open($params) {
257 civicrm_api3_verify_mandatory($params,
258 'CRM_Mailing_Event_DAO_Opened',
259 array('event_queue_id'),
263 $queue = $params['event_queue_id'];
264 $success = CRM_Mailing_Event_BAO_Opened
::open($queue);
267 return civicrm_api3_create_error('mailing open event failed');
270 return civicrm_api3_create_success($params);
274 * Fix the reset dates on the email record based on when a mail was last delivered
275 * We only consider mailings that were completed and finished in the last 3 to 7 days
276 * Both the min and max days can be set via the params
278 function civicrm_api3_mailing_update_email_resetdate($params) {
279 CRM_Mailing_Event_BAO_Delivered
::updateEmailResetDate(
280 CRM_Utils_Array
::value('minDays', $params, 3),
281 CRM_Utils_Array
::value('maxDays', $params, 3)
283 return civicrm_api3_create_success();