X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FMailing.php;h=9908539961639efb9026af1c0e26154411226684;hb=ef6435447a1af541a4018e5ba2ce373ee2952bfe;hp=084880e9e630b6117918b3d373810ad108a9ee63;hpb=6a00ff0d395476086d4c4b4fe3ba48672280dd1a;p=civicrm-core.git diff --git a/api/v3/Mailing.php b/api/v3/Mailing.php index 084880e9e6..9908539961 100644 --- a/api/v3/Mailing.php +++ b/api/v3/Mailing.php @@ -2,9 +2,9 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 4.4 | + | CiviCRM version 4.5 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2013 | + | Copyright CiviCRM LLC (c) 2004-2014 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -32,7 +32,7 @@ * * @package CiviCRM_APIv3 * @subpackage API_Mailing - * @copyright CiviCRM LLC (c) 2004-2013 + * @copyright CiviCRM LLC (c) 2004-2014 * $Id$ * */ @@ -45,6 +45,8 @@ * Handle a create event. * * @param array $params + * @param array $ids + * * @return array API Success Array */ function civicrm_api3_mailing_create($params, $ids = array()) { @@ -66,12 +68,119 @@ function _civicrm_api3_mailing_create_spec(&$params) { $params['api.mailing_job.create']['api.default'] = 1; } + + + +function civicrm_api3_mailing_stats($params) { + civicrm_api3_verify_mandatory($params, + 'CRM_Mailing_DAO_MailingJob', + array('mailing_id'), + FALSE + ); + $stats[$params['mailing_id']] = array(); + if (empty($params['job_id'])) { + $params['job_id'] = NULL; + } + foreach (array('Delivered', 'Bounces', 'Unsubscribers', 'Unique Clicks', 'Opened') as $detail) { + switch ($detail) { + case 'Delivered': + $stats[$params['mailing_id']] += array( + $detail => CRM_Mailing_Event_BAO_Delivered::getTotalCount($params['mailing_id'], $params['job_id']) + ); + break; + case 'Bounces': + $stats[$params['mailing_id']] += array( + $detail => CRM_Mailing_Event_BAO_Bounce::getTotalCount($params['mailing_id'], $params['job_id']) + ); + break; + case 'Unsubscribers': + $stats[$params['mailing_id']] += array( + $detail => CRM_Mailing_Event_BAO_Unsubscribe::getTotalCount($params['mailing_id'], $params['job_id']) + ); + break; + case 'Unique Clicks': + $stats[$params['mailing_id']] += array( + $detail => CRM_Mailing_Event_BAO_TrackableURLOpen::getTotalCount($params['mailing_id'], $params['job_id']) + ); + break; + case 'Opened': + $stats[$params['mailing_id']] += array( + $detail => CRM_Mailing_Event_BAO_Opened::getTotalCount($params['mailing_id'], $params['job_id']) + ); + break; + } + } + return civicrm_api3_create_success($stats); +} + + + +function civicrm_api3_mailing_a_b_recipients_update($params) { + civicrm_api3_verify_mandatory($params, + 'CRM_Mailing_DAO_MailingAB', + array('id'), + FALSE + ); + + + $mailingAB = civicrm_api3('MailingAB', 'get', $params); + $mailingAB = $mailingAB['values'][$params['id']]; + + //update mailingC with include/exclude group id(s) provided + civicrm_api3('Mailing', 'create', array('id' => $mailingAB['mailing_id_c'], 'groups' => $params['groups'])); + //update recipients for mailing_id_c + CRM_Mailing_BAO_Mailing::getRecipients($mailingAB['mailing_id_c'], $mailingAB['mailing_id_c'], NULL, NULL, TRUE); + //calulate total number of random recipients for mail C from group_percentage selected + $totalCount = civicrm_api3('MailingRecipients', 'getcount', array('mailing_id' => $mailingAB['mailing_id_c'])); + $totalSelected = round(($totalCount * $mailingAB['group_percentage'])/100); + foreach (array('mailing_id_a', 'mailing_id_b') as $columnName) { + CRM_Mailing_BAO_Recipients::updateRandomRecipients($mailingAB['mailing_id_c'], $mailingAB[$columnName], $totalSelected); + } + return civicrm_api3_create_success(); +} + + + /** * Handle a delete event. * * @param array $params + * @param array $ids + * * @return array API Success Array */ + +function civicrm_api3_mailing_preview($params) { + civicrm_api3_verify_mandatory($params, + 'CRM_Mailing_DAO_Mailing', + array('id'), + FALSE + ); + $fromEmail = NULL; + if (!empty($params['from_email'])) { + $fromEmail = $params['from_email']; + } + $session = CRM_Core_Session::singleton(); + $mailing = new CRM_Mailing_BAO_Mailing(); + $mailing->id = $params['id']; + $mailing->find(TRUE); + CRM_Mailing_BAO_Mailing::tokenReplace($mailing); + // get and format attachments + $attachments = CRM_Core_BAO_File::getEntityFile('civicrm_mailing', $mailing->id); + $returnProperties = $mailing->getReturnProperties(); + $contactID = CRM_Utils_Array::value('contact_id', $params); + if (!$contactID) { + $contactID = $session->get('userID'); + } + $mailingParams = array('contact_id' => $contactID); + $details = CRM_Utils_Token::getTokenDetails($mailingParams, $returnProperties, TRUE, TRUE, NULL, $mailing->getFlattenedToken()); + $mime = &$mailing->compose(NULL, NULL, NULL, $session->get('userID'), $fromEmail, $fromEmail, + TRUE, $details[0][$contactID], $attachments + ); + return civicrm_api3_create_success(array('html' => $mime->getHTMLBody(), 'text' => $mime->getTXTBody())); +} + + function civicrm_api3_mailing_delete($params, $ids = array()) { return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params); } @@ -92,6 +201,7 @@ function civicrm_api3_mailing_get($params) { * * @param array $params * + * @throws API_Exception * @return array */ function civicrm_api3_mailing_event_bounce($params) {