diff --git a/CRM/Admin/Form/Preferences/Mailing.php b/CRM/Admin/Form/Preferences/Mailing.php index b2f4a975dc32..726a31dd4e20 100644 --- a/CRM/Admin/Form/Preferences/Mailing.php +++ b/CRM/Admin/Form/Preferences/Mailing.php @@ -16,7 +16,7 @@ */ /** - * This class generates form components for the maling component preferences. + * This class generates form components for the mailing component preferences. */ class CRM_Admin_Form_Preferences_Mailing extends CRM_Admin_Form_Preferences { diff --git a/CRM/Mailing/Form/Unsubscribe.php b/CRM/Mailing/Form/Unsubscribe.php index c63263ba0b9e..cd804324aa25 100644 --- a/CRM/Mailing/Form/Unsubscribe.php +++ b/CRM/Mailing/Form/Unsubscribe.php @@ -24,18 +24,32 @@ class CRM_Mailing_Form_Unsubscribe extends CRM_Core_Form { */ public $submitOnce = TRUE; - public function preProcess() { + /** + * @var int + */ + private $_job_id; + + /** + * @var int + */ + private $_queue_id; - $this->_type = 'unsubscribe'; + /** + * @var string + */ + private $_hash; + + /** + * @var string + */ + private $_email; + public function preProcess() { $this->_job_id = $job_id = CRM_Utils_Request::retrieve('jid', 'Integer', $this); $this->_queue_id = $queue_id = CRM_Utils_Request::retrieve('qid', 'Integer', $this); $this->_hash = $hash = CRM_Utils_Request::retrieve('h', 'String', $this); - if (!$job_id || - !$queue_id || - !$hash - ) { + if (!$job_id || !$queue_id || !$hash) { throw new CRM_Core_Exception(ts('Missing Parameters')); } @@ -55,27 +69,21 @@ public function preProcess() { $groups = CRM_Mailing_Event_BAO_Unsubscribe::unsub_from_mailing($job_id, $queue_id, $hash, TRUE); $this->assign('groups', $groups); $groupExist = NULL; - foreach ($groups as $key => $value) { + foreach ($groups as $value) { if ($value) { $groupExist = TRUE; } } if (!$groupExist) { - $statusMsg = ts('%1 has been unsubscribed.', - [1 => $email] - ); + $statusMsg = ts('%1 has been unsubscribed.', [1 => $email]); CRM_Core_Session::setStatus($statusMsg, '', 'error'); } $this->assign('groupExist', $groupExist); - } public function buildQuickForm() { CRM_Utils_System::addHTMLHead(''); - CRM_Utils_System::setTitle(ts('Unsubscribe Confirmation')); - - $this->add('text', 'email_confirm', ts('Verify email address to unsubscribe:')); - $this->addRule('email_confirm', ts('Email address is required to unsubscribe.'), 'required'); + $this->setTitle(ts('Unsubscribe Confirmation')); $buttons = [ [ @@ -93,42 +101,19 @@ public function buildQuickForm() { } public function postProcess() { - $values = $this->exportValues(); - - // check if EmailTyped matches Email address - $result = CRM_Utils_String::compareStr($this->_email, $values['email_confirm'], TRUE); - $job_id = $this->_job_id; - $queue_id = $this->_queue_id; - $hash = $this->_hash; - - $confirmURL = CRM_Utils_System::url("civicrm/mailing/{$this->_type}", "reset=1&jid={$job_id}&qid={$queue_id}&h={$hash}&confirm=1"); + $confirmURL = CRM_Utils_System::url("civicrm/mailing/unsubscribe", "reset=1&jid={$this->_job_id}&qid={$this->_queue_id}&h={$this->_hash}&confirm=1"); $this->assign('confirmURL', $confirmURL); - $session = CRM_Core_Session::singleton(); - $session->pushUserContext($confirmURL); + CRM_Core_Session::singleton()->pushUserContext($confirmURL); - if ($result == TRUE) { - // Email address verified - $groups = CRM_Mailing_Event_BAO_Unsubscribe::unsub_from_mailing($job_id, $queue_id, $hash); + // Email address verified + $groups = CRM_Mailing_Event_BAO_Unsubscribe::unsub_from_mailing($this->_job_id, $this->_queue_id, $this->_hash); - if (count($groups)) { - CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response($queue_id, $groups, FALSE, $job_id); - } - - $statusMsg = ts('%1 is unsubscribed.', - [1 => $values['email_confirm']] - ); - - CRM_Core_Session::setStatus($statusMsg, '', 'success'); + if (count($groups)) { + CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response($this->_queue_id, $groups, FALSE, $this->_job_id); } - elseif ($result == FALSE) { - // Email address not verified - $statusMsg = ts('%1 is not associated with this unsubscribe request.', - [1 => $values['email_confirm']] - ); - CRM_Core_Session::setStatus($statusMsg, '', 'error'); - - } + $statusMsg = ts('%1 is unsubscribed.', [1 => CRM_Utils_String::maskEmail($this->_email)]); + CRM_Core_Session::setStatus($statusMsg, '', 'success'); } } diff --git a/templates/CRM/Mailing/Form/Unsubscribe.tpl b/templates/CRM/Mailing/Form/Unsubscribe.tpl index 6a1f97e792ae..8cf750653016 100644 --- a/templates/CRM/Mailing/Form/Unsubscribe.tpl +++ b/templates/CRM/Mailing/Form/Unsubscribe.tpl @@ -24,15 +24,10 @@

{ts}You are requesting to unsubscribe this email address:{/ts}

{$email_masked}

-

{ts}If this is not your email address, there is no need to do anything. You have not been added to any mailing lists. If this is your email address and you wish to unsubscribe please enter your email address below for verification purposes:{/ts}

- - - - - - - -
{$form.email_confirm.label}{$form.email_confirm.html}
+

+ {ts}If this is not your email address, there is no need to do anything. You have not been added to any mailing lists.{/ts} + {ts}If this is your email address and you wish to unsubscribe please click the Unsubscribe button to confirm.{/ts} +

{include file="CRM/common/formButtons.tpl" location="bottom"}