X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FMailing.php;h=46c97b86d82c2313b3f8f8dcdf2f86988f5767b4;hb=44994b86e25125c315112fd6f6cef948fbb0b170;hp=5d4e0608025638ea76c9850a15af3a9b4d7d9565;hpb=1578e7cf94a9d31c7ef3a853f2a092bcd22c8012;p=civicrm-core.git diff --git a/api/v3/Mailing.php b/api/v3/Mailing.php index 5d4e060802..46c97b86d8 100755 --- a/api/v3/Mailing.php +++ b/api/v3/Mailing.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -65,6 +65,7 @@ function civicrm_api3_mailing_create($params) { } $safeParams['_evil_bao_validator_'] = 'CRM_Mailing_BAO_Mailing::checkSendable'; return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $safeParams); + } /** @@ -150,7 +151,7 @@ function _civicrm_api3_mailing_create_spec(&$params) { $params['reply_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Reply', ''); $params['resubscribe_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Resubscribe', ''); $params['unsubscribe_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Unsubscribe', ''); - + $params['mailing_type']['api.default'] = 'standalone'; $defaultAddress = CRM_Core_OptionGroup::values('from_email_address', NULL, NULL, NULL, ' AND is_default = 1'); foreach ($defaultAddress as $id => $value) { if (preg_match('/"(.*)" <(.*)>/', $value, $match)) { @@ -160,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. *