From: Tim Otten Date: Mon, 9 Feb 2015 00:03:14 +0000 (-0800) Subject: Mailing.create API - Remove default value 'api.mailing_job.create'=>1 X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=5f44574930fe4863878a05e99a6d2de4fa60daf6;p=civicrm-core.git Mailing.create API - Remove default value 'api.mailing_job.create'=>1 When scheduling a blast, one creates a duplicate job by default (once via API chaining and once via BAO). This removes the API chaining one as well as work-aronds which had been necessary to disable it. http://forum.civicrm.org/index.php?topic=35567.new;topicseen#new --- diff --git a/api/v3/Mailing.php b/api/v3/Mailing.php index b1711efdf9..7c8e443ad2 100755 --- a/api/v3/Mailing.php +++ b/api/v3/Mailing.php @@ -105,8 +105,6 @@ function civicrm_api3_mailing_get_token($params) { function _civicrm_api3_mailing_create_spec(&$params) { $params['created_id']['api.required'] = 1; $params['created_id']['api.default'] = 'user_contact_id'; - $params['api.mailing_job.create']['api.default'] = 1; - $params['api.mailing_job.create']['title'] = 'Schedule Mailing?'; $params['override_verp']['api.default'] = !CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'track_civimail_replies', NULL, FALSE @@ -194,9 +192,6 @@ function civicrm_api3_mailing_submit($params) { $updateParams = array(); $updateParams['id'] = $params['id']; - // The BAO will auto-create the job - note: exact match to API default. - $updateParams['api.mailing_job.create'] = 0; - // Note: we'll pass along scheduling/approval fields, but they may get ignored // if we don't have permission. if (isset($params['scheduled_date'])) { diff --git a/js/angular-crmMailing/services.js b/js/angular-crmMailing/services.js index 398d6a0582..205915f7dc 100644 --- a/js/angular-crmMailing/services.js +++ b/js/angular-crmMailing/services.js @@ -261,9 +261,7 @@ // @param mailing Object (per APIv3) // @return Promise save: function(mailing) { - var params = angular.extend({}, mailing, { - 'api.mailing_job.create': 0 // note: exact match to API default - }); + var params = angular.extend({}, mailing); // Angular ngModel sometimes treats blank fields as undefined. angular.forEach(mailing, function(value, key) { diff --git a/tests/phpunit/CiviTest/CiviUnitTestCase.php b/tests/phpunit/CiviTest/CiviUnitTestCase.php index 7e007b38db..7f4f3b5090 100755 --- a/tests/phpunit/CiviTest/CiviUnitTestCase.php +++ b/tests/phpunit/CiviTest/CiviUnitTestCase.php @@ -3229,7 +3229,6 @@ AND ( TABLE_NAME LIKE 'civicrm_value_%' ) 'body_text' => 'bdkfhdskfhduew', 'name' => 'mailing name' . rand(), 'created_id' => 1, - 'api.mailing_job.create' => 0, ); $result = $this->callAPISuccess('Mailing', 'create', $params); diff --git a/tests/phpunit/api/v3/JobProcessMailingTest.php b/tests/phpunit/api/v3/JobProcessMailingTest.php index c8e53a916d..1dcb37b551 100644 --- a/tests/phpunit/api/v3/JobProcessMailingTest.php +++ b/tests/phpunit/api/v3/JobProcessMailingTest.php @@ -68,6 +68,7 @@ class api_v3_JobProcessMailingTest extends CiviUnitTestCase { 'name' => 'mailing name', 'created_id' => 1, 'groups' => array('include' => array($this->_groupID)), + 'scheduled_date' => 'now', ); $this->_mut = new CiviMailUtils($this, TRUE); $this->callAPISuccess('mail_settings', 'get', array('api.mail_settings.create' => array('domain' => 'chaos.org'))); diff --git a/tests/phpunit/api/v3/MailingTest.php b/tests/phpunit/api/v3/MailingTest.php index 1f6cdd95ac..aadcc8bac7 100755 --- a/tests/phpunit/api/v3/MailingTest.php +++ b/tests/phpunit/api/v3/MailingTest.php @@ -66,7 +66,7 @@ class api_v3_MailingTest extends CiviUnitTestCase { * Test civicrm_mailing_create. */ public function testMailerCreateSuccess() { - $result = $this->callAPIAndDocument('mailing', 'create', $this->_params, __FUNCTION__, __FILE__); + $result = $this->callAPIAndDocument('mailing', 'create', $this->_params + array('scheduled_date' => 'now'), __FUNCTION__, __FILE__); $jobs = $this->callAPISuccess('mailing_job', 'get', array('mailing_id' => $result['id'])); $this->assertEquals(1, $jobs['count']); unset($this->_params['created_id']); // return isn't working on this in getAndCheck so lets not check it for now @@ -106,6 +106,7 @@ class api_v3_MailingTest extends CiviUnitTestCase { $createParams['groups']['exclude'] = array(); $createParams['mailings']['include'] = array(); $createParams['mailings']['exclude'] = array(); + $createParams['api.mailing_job.create'] = 1; $createResult = $this->callAPISuccess('Mailing', 'create', $createParams); $getGroup1 = $this->callAPISuccess('MailingGroup', 'get', array('mailing_id' => $createResult['id'])); $getGroup1_ids = array_values(CRM_Utils_Array::collect('entity_id', $getGroup1['values'])); @@ -206,6 +207,7 @@ class api_v3_MailingTest extends CiviUnitTestCase { $params['mailings']['include'] = array(); $params['mailings']['exclude'] = array(); $params['options']['force_rollback'] = 1; + $params['api.mailing_job.create'] = 1; $params['api.MailingRecipients.get'] = array( 'mailing_id' => '$value.id', 'api.contact.getvalue' => array( @@ -540,7 +542,6 @@ SELECT event_queue_id, time_stamp FROM mail_{$type}_temp"; */ public function createDraftMailing($params = array()) { $createParams = array_merge($this->_params, $params); - $createParams['api.mailing_job.create'] = 0; // note: exact match to API default $createResult = $this->callAPISuccess('mailing', 'create', $createParams, __FUNCTION__, __FILE__); $this->assertTrue(is_numeric($createResult['id'])); $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_mailing_job WHERE mailing_id = %1', array(