From 1365ea2f6d40545211f96080d299240955a3709f Mon Sep 17 00:00:00 2001 From: Brian Shaughnessy Date: Wed, 11 Dec 2013 14:30:36 -0500 Subject: [PATCH] CRM-13955 rework mailing default values and workflow --- CRM/Mailing/BAO/Mailing.php | 21 ++++++++++++--------- CRM/Mailing/Form/Approve.php | 4 ++-- CRM/Mailing/Form/Group.php | 3 +++ CRM/Mailing/Form/Schedule.php | 6 +++--- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index f66947bc1f..10c2bbc548 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -1520,13 +1520,12 @@ ORDER BY civicrm_email.is_bulkmail DESC 'from_email' => $domain_email, 'from_name' => $domain_name, 'msg_template_id' => NULL, - 'contact_id' => $params['created_id'], 'created_id' => $params['created_id'], - 'approver_id' => $params['created_id'], + 'approver_id' => NULL, 'auto_responder' => 0, 'created_date' => date('YmdHis'), - 'scheduled_date' => date('YmdHis'), - 'approval_date' => date('YmdHis'), + 'scheduled_date' => NULL, + 'approval_date' => NULL, ); // Get the default from email address, if not provided. @@ -1598,16 +1597,20 @@ ORDER BY civicrm_email.is_bulkmail DESC $transaction->commit(); /** - * 'approval_status_id' set in - * CRM_Mailing_Form_Schedule::postProcess() or via API. + * create parent job if not yet created + * condition on the existence of a scheduled date */ - if (isset($params['approval_status_id']) && $params['approval_status_id']) { + if (!empty($params['scheduled_date'])) { $job = new CRM_Mailing_BAO_MailingJob(); $job->mailing_id = $mailing->id; $job->status = 'Scheduled'; $job->is_test = 0; - $job->scheduled_date = $params['scheduled_date']; - $job->save(); + + if ( !$job->find(TRUE) ) { + $job->scheduled_date = $params['scheduled_date']; + $job->save(); + } + // Populate the recipients. $mailing->getRecipients($job->id, $mailing->id, NULL, NULL, TRUE, FALSE); } diff --git a/CRM/Mailing/Form/Approve.php b/CRM/Mailing/Form/Approve.php index 959531100b..416994005c 100644 --- a/CRM/Mailing/Form/Approve.php +++ b/CRM/Mailing/Form/Approve.php @@ -188,8 +188,8 @@ class CRM_Mailing_Form_Approve extends CRM_Core_Form { if ($rejectOptionID && $params['approval_status_id'] == $rejectOptionID ) { - $params['scheduled_id'] = 'null'; - $params['scheduled_date'] = 'null'; + $params['scheduled_id'] = NULL; + $params['scheduled_date'] = NULL; // also delete any jobs associated with this mailing $job = new CRM_Mailing_BAO_MailingJob(); diff --git a/CRM/Mailing/Form/Group.php b/CRM/Mailing/Form/Group.php index 1163319079..311f793f0e 100644 --- a/CRM/Mailing/Form/Group.php +++ b/CRM/Mailing/Form/Group.php @@ -476,6 +476,9 @@ class CRM_Mailing_Form_Group extends CRM_Contact_Form_Task { $dedupeEmail = $params['dedupe_email']; } + // mailing id should be added to the form object + $this->_mailingID = $mailing->id; + // also compute the recipients and store them in the mailing recipients table CRM_Mailing_BAO_Mailing::getRecipients( $mailing->id, diff --git a/CRM/Mailing/Form/Schedule.php b/CRM/Mailing/Form/Schedule.php index 8b67e50350..5c0cbf96cb 100644 --- a/CRM/Mailing/Form/Schedule.php +++ b/CRM/Mailing/Form/Schedule.php @@ -294,9 +294,9 @@ class CRM_Mailing_Form_Schedule extends CRM_Core_Form { } else { // reset them in case this mailing was rejected - $params['approver_id'] = 'null'; - $params['approval_date'] = 'null'; - $params['approval_status_id'] = 'null'; + $params['approver_id'] = NULL; + $params['approval_date'] = NULL; + $params['approval_status_id'] = NULL; } /* Build the mailing object */ -- 2.25.1