From 5044f0fe85139dc1d4bc316e501db13387cda7f0 Mon Sep 17 00:00:00 2001 From: eileen Date: Tue, 30 Jan 2018 12:18:38 +1300 Subject: [PATCH] CRM-21140 extend support for custom data to Mailing. (this requires clean up of handling of ). --- CRM/Mailing/BAO/Mailing.php | 19 ++++++++++++------- api/v3/Mailing.php | 2 +- .../phpunit/api/v3/SyntaxConformanceTest.php | 1 + 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index 26659f55912c..02d50acc4e9a 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -1409,7 +1409,11 @@ public function &getGroupNames() { * @return CRM_Mailing_DAO_Mailing */ public static function add(&$params, $ids = array()) { - $id = CRM_Utils_Array::value('mailing_id', $ids, CRM_Utils_Array::value('id', $params)); + $id = CRM_Utils_Array::value('id', $params, CRM_Utils_Array::value('mailing_id', $ids)); + + if (empty($params['id']) && !empty($ids)) { + \Civi::log('Parameter $ids is no longer used by Mailing::add. Use the api or just pass $params', ['civi.tag' => 'deprecated']); + } if ($id) { CRM_Utils_Hook::pre('edit', 'Mailing', $id, $params); @@ -1443,7 +1447,7 @@ public static function add(&$params, $ids = array()) { $result->modified_date = $mailing->modified_date; } - if (!empty($ids['mailing'])) { + if ($id) { CRM_Utils_Hook::post('edit', 'Mailing', $mailing->id, $mailing); } else { @@ -1482,15 +1486,16 @@ public static function add(&$params, $ids = array()) { * @throws \Exception */ public static function create(&$params, $ids = array()) { - // WTH $ids - if (empty($ids) && isset($params['id'])) { - $ids['mailing_id'] = $ids['id'] = $params['id']; + + if (empty($params['id']) && (array_filter($ids) !== [])) { + $params['id'] = isset($ids['mailing_id']) ? $ids['mailing_id'] : $ids['id']; + \Civi::log('Parameter $ids is no longer used by Mailing::create. Use the api or just pass $params', ['civi.tag' => 'deprecated']); } // CRM-12430 // Do the below only for an insert // for an update, we should not set the defaults - if (!isset($ids['id']) && !isset($ids['mailing_id'])) { + if (!isset($params['id'])) { // Retrieve domain email and name for default sender $domain = civicrm_api( 'Domain', @@ -1559,7 +1564,7 @@ public static function create(&$params, $ids = array()) { $transaction = new CRM_Core_Transaction(); - $mailing = self::add($params, $ids); + $mailing = self::add($params); if (is_a($mailing, 'CRM_Core_Error')) { $transaction->rollback(); diff --git a/api/v3/Mailing.php b/api/v3/Mailing.php index 22aba4bfda39..32c3fe1a33b6 100644 --- a/api/v3/Mailing.php +++ b/api/v3/Mailing.php @@ -77,7 +77,7 @@ function civicrm_api3_mailing_create($params) { // FlexMailer is a refactoring of CiviMail which provides new hooks/APIs/docs. If the sysadmin has opted to enable it, then use that instead of CiviMail. $safeParams['_evil_bao_validator_'] = \CRM_Utils_Constant::value('CIVICRM_FLEXMAILER_HACK_SENDABLE', 'CRM_Mailing_BAO_Mailing::checkSendable'); - $result = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $safeParams); + $result = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $safeParams, 'Mailing'); return _civicrm_api3_mailing_get_formatResult($result); } diff --git a/tests/phpunit/api/v3/SyntaxConformanceTest.php b/tests/phpunit/api/v3/SyntaxConformanceTest.php index efb57a26d56f..8322260cbdb6 100644 --- a/tests/phpunit/api/v3/SyntaxConformanceTest.php +++ b/tests/phpunit/api/v3/SyntaxConformanceTest.php @@ -271,6 +271,7 @@ public static function custom_data_incl_non_std_entities_get() { $customDataEntities[] = ['UFGroup']; $customDataEntities[] = ['PriceSet']; $customDataEntities[] = ['PaymentToken']; + $customDataEntities[] = ['Mailing']; return $customDataEntities; }