*/
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'));
}
$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('<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">');
$this->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');
-
$buttons = [
[
'type' => 'next',
}
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');
}
}