From 67d4ed510e920a43017a4648e976f8a504d1a036 Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Wed, 14 Mar 2018 16:50:50 +0530 Subject: [PATCH] Additional fixes --- CRM/Mailing/BAO/MailingJob.php | 12 ++++++------ CRM/Mailing/Form/Browse.php | 1 + CRM/Mailing/Form/Search.php | 2 +- CRM/Mailing/Page/Browse.php | 3 +++ tests/phpunit/api/v3/JobProcessMailingTest.php | 8 ++++++++ 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CRM/Mailing/BAO/MailingJob.php b/CRM/Mailing/BAO/MailingJob.php index dc62a1acdb..685c09695c 100644 --- a/CRM/Mailing/BAO/MailingJob.php +++ b/CRM/Mailing/BAO/MailingJob.php @@ -831,13 +831,14 @@ AND status IN ( 'Scheduled', 'Running', 'Paused' ) 2 => array(date('YmdHis'), 'Timestamp'), ); CRM_Core_DAO::executeQuery($sql, $params); - - CRM_Core_Session::setStatus(ts('The mailing has been canceled.'), ts('Canceled'), 'success'); } } /** * Pause a mailing + * + * @param int $mailingID + * The id of the mailing to be paused. */ public static function pause($mailingID) { $sql = " @@ -848,12 +849,13 @@ AND status IN ( 'Scheduled', 'Running', 'Paused' ) AND status IN ('Scheduled', 'Running') "; CRM_Core_DAO::executeQuery($sql, array(1 => array($mailingID, 'Integer'))); - - CRM_Core_Session::setStatus(ts('The mailing has been paused.'), ts('Paused'), 'success'); } /** * Resume a mailing + * + * @param int $mailingID + * The id of the mailing to be resumed. */ public static function resume($mailingID) { $sql = " @@ -875,8 +877,6 @@ AND status IN ( 'Scheduled', 'Running', 'Paused' ) AND status = 'Paused' "; CRM_Core_DAO::executeQuery($sql, array(1 => array($mailingID, 'Integer'))); - - CRM_Core_Session::setStatus(ts('The mailing has been resumed.'), ts('Resumed'), 'success'); } /** diff --git a/CRM/Mailing/Form/Browse.php b/CRM/Mailing/Form/Browse.php index 4eb65919c7..e41bc5982b 100644 --- a/CRM/Mailing/Form/Browse.php +++ b/CRM/Mailing/Form/Browse.php @@ -82,6 +82,7 @@ class CRM_Mailing_Form_Browse extends CRM_Core_Form { } elseif ($this->_action & CRM_Core_Action::DISABLE) { CRM_Mailing_BAO_MailingJob::cancel($this->_mailingId); + CRM_Core_Session::setStatus(ts('The mailing has been canceled.'), ts('Canceled'), 'success'); } elseif ($this->_action & CRM_Core_Action::RENEW) { //set is_archived to 1 diff --git a/CRM/Mailing/Form/Search.php b/CRM/Mailing/Form/Search.php index 56cf5dc02f..f5438c1f88 100644 --- a/CRM/Mailing/Form/Search.php +++ b/CRM/Mailing/Form/Search.php @@ -92,7 +92,7 @@ class CRM_Mailing_Form_Search extends CRM_Core_Form { $defaults['status_unscheduled'] = 1; } if ($parent->get('scheduled')) { - $statusVals = array('Scheduled', 'Complete', 'Running', 'Paused', 'Canceled'); + $statusVals = array_keys(CRM_Core_SelectValues::getMailingJobStatus()); $defaults['is_archived'] = 0; } if ($parent->get('archived')) { diff --git a/CRM/Mailing/Page/Browse.php b/CRM/Mailing/Page/Browse.php index 106d38f018..05b56e8852 100644 --- a/CRM/Mailing/Page/Browse.php +++ b/CRM/Mailing/Page/Browse.php @@ -165,6 +165,7 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { if ($this->_action & CRM_Core_Action::DISABLE) { if (CRM_Utils_Request::retrieve('confirmed', 'Boolean', $this)) { CRM_Mailing_BAO_MailingJob::cancel($this->_mailingId); + CRM_Core_Session::setStatus(ts('The mailing has been canceled.'), ts('Canceled'), 'success'); CRM_Utils_System::redirect($context); } else { @@ -181,6 +182,7 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { CRM_Core_Error::fatal(ts('You do not have permission to access this page.')); } CRM_Mailing_BAO_MailingJob::pause($this->_mailingId); + CRM_Core_Session::setStatus(ts('The mailing has been paused.'), ts('Paused'), 'success'); CRM_Utils_System::redirect($context); } elseif ($this->_action & CRM_Core_Action::REOPEN) { @@ -188,6 +190,7 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { CRM_Core_Error::fatal(ts('You do not have permission to access this page.')); } CRM_Mailing_BAO_MailingJob::resume($this->_mailingId); + CRM_Core_Session::setStatus(ts('The mailing has been resumed.'), ts('Resumed'), 'success'); CRM_Utils_System::redirect($context); } elseif ($this->_action & CRM_Core_Action::DELETE) { diff --git a/tests/phpunit/api/v3/JobProcessMailingTest.php b/tests/phpunit/api/v3/JobProcessMailingTest.php index dd47195973..4edf56033b 100644 --- a/tests/phpunit/api/v3/JobProcessMailingTest.php +++ b/tests/phpunit/api/v3/JobProcessMailingTest.php @@ -116,17 +116,21 @@ class api_v3_JobProcessMailingTest extends CiviUnitTestCase { Civi::settings()->add(array( 'mailerBatchLimit' => 2, )); + $this->_mut->clearMessages(); //Create a test mailing and check if the status is set to Scheduled. $result = $this->callAPISuccess('mailing', 'create', $this->_params); $jobs = $this->callAPISuccess('mailing_job', 'get', array('mailing_id' => $result['id'])); $this->assertEquals('Scheduled', $jobs['values'][$jobs['id']]['status']); + //Pause the mailing. CRM_Mailing_BAO_MailingJob::pause($result['id']); $jobs = $this->callAPISuccess('mailing_job', 'get', array('mailing_id' => $result['id'])); $this->assertEquals('Paused', $jobs['values'][$jobs['id']]['status']); //Verify if Paused mailing isn't considered in process_mailing job. $this->callAPISuccess('job', 'process_mailing', array()); + //Check if mail log is empty. + $this->_mut->assertMailLogEmpty(); $jobs = $this->callAPISuccess('mailing_job', 'get', array('mailing_id' => $result['id'])); $this->assertEquals('Paused', $jobs['values'][$jobs['id']]['status']); @@ -134,6 +138,10 @@ class api_v3_JobProcessMailingTest extends CiviUnitTestCase { CRM_Mailing_BAO_MailingJob::resume($result['id']); $jobs = $this->callAPISuccess('mailing_job', 'get', array('mailing_id' => $result['id'])); $this->assertEquals('Scheduled', $jobs['values'][$jobs['id']]['status']); + + //Execute the job and it should send the mailing to the recipients now. + $this->callAPISuccess('job', 'process_mailing', array()); + $this->_mut->assertRecipients($this->getRecipients(1, 2)); } /** -- 2.25.1