X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FMailing.php;h=46c97b86d82c2313b3f8f8dcdf2f86988f5767b4;hb=44994b86e25125c315112fd6f6cef948fbb0b170;hp=0739b9aea87ecc3d65b2c52e356adaa9f6df5058;hpb=674cb8b854f6008090d4dcce9372ee76346a198f;p=civicrm-core.git diff --git a/api/v3/Mailing.php b/api/v3/Mailing.php index 0739b9aea8..46c97b86d8 100755 --- a/api/v3/Mailing.php +++ b/api/v3/Mailing.php @@ -161,6 +161,54 @@ function _civicrm_api3_mailing_create_spec(&$params) { } } +function _civicrm_api3_mailing_clone_spec(&$spec) { + $mailingFields = CRM_Mailing_DAO_Mailing::fields(); + $spec['id'] = $mailingFields['id']; + $spec['id']['api.required'] = 1; +} + +function civicrm_api3_mailing_clone($params) { + $BLACKLIST = array( + 'id', + 'is_completed', + 'created_id', + 'created_date', + 'scheduled_id', + 'scheduled_date', + 'approver_id', + 'approval_date', + 'approval_status_id', + 'approval_note', + 'is_archived', + 'hash', + ); + + $get = civicrm_api3('Mailing', 'getsingle', array('id' => $params['id'])); + + $newParams = array(); + $newParams['debug'] = CRM_Utils_Array::value('debug', $params); + $newParams['groups']['include'] = array(); + $newParams['groups']['exclude'] = array(); + $newParams['mailings']['include'] = array(); + $newParams['mailings']['exclude'] = array(); + foreach ($get as $field => $value) { + if (!in_array($field, $BLACKLIST)) { + $newParams[$field] = $value; + } + } + + $dao = new CRM_Mailing_DAO_MailingGroup(); + $dao->mailing_id = $params['id']; + $dao->find(); + while ($dao->fetch()) { + // CRM-11431; account for multi-lingual + $entity = (substr($dao->entity_table, 0, 15) == 'civicrm_mailing') ? 'mailings' : 'groups'; + $newParams[$entity][strtolower($dao->group_type)][] = $dao->entity_id; + } + + return civicrm_api3('Mailing', 'create', $newParams); +} + /** * Handle a delete event. *