/** * Subscribe from mailing group. * * @param array $params * * @return array * api result array */ function civicrm_api3_mailing_event_resubscribe_create($params) { $groups = CRM_Mailing_Event_BAO_Resubscribe::resub_to_mailing($params['job_id'], $params['event_queue_id'], $params['hash']); if (count($groups)) { CRM_Mailing_Event_BAO_Resubscribe::send_resub_response($params['event_queue_id'], $groups, FALSE, $params['job_id']); return civicrm_api3_create_success($params); } return civicrm_api3_create_error('Queue event could not be found'); }
/** * Run page. * * This includes assigning smarty variables and other page processing. * * @return string * @throws Exception */ public function run() { $job_id = CRM_Utils_Request::retrieve('jid', 'Integer', CRM_Core_DAO::$_nullObject); $queue_id = CRM_Utils_Request::retrieve('qid', 'Integer', CRM_Core_DAO::$_nullObject); $hash = CRM_Utils_Request::retrieve('h', 'String', CRM_Core_DAO::$_nullObject); if (!$job_id || !$queue_id || !$hash) { CRM_Core_Error::fatal(ts("Missing input parameters")); } // verify that the three numbers above match $q = CRM_Mailing_Event_BAO_Queue::verify($job_id, $queue_id, $hash); if (!$q) { CRM_Core_Error::fatal(ts("There was an error in your request")); } $cancel = CRM_Utils_Request::retrieve("_qf_{$this->_type}_cancel", 'String', CRM_Core_DAO::$_nullObject, FALSE, NULL, $_REQUEST); if ($cancel) { $config = CRM_Core_Config::singleton(); CRM_Utils_System::redirect($config->userFrameworkBaseURL); } $confirm = CRM_Utils_Request::retrieve('confirm', 'Boolean', CRM_Core_DAO::$_nullObject, FALSE, NULL, $_REQUEST); list($displayName, $email) = CRM_Mailing_Event_BAO_Queue::getContactInfo($queue_id); $this->assign('display_name', $displayName); $this->assign('email', $email); $this->assign('confirm', $confirm); $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) { if ($value) { $groupExist = TRUE; } } $this->assign('groupExist', $groupExist); if ($confirm) { if ($this->_type == 'unsubscribe') { $groups = CRM_Mailing_Event_BAO_Unsubscribe::unsub_from_mailing($job_id, $queue_id, $hash); if (count($groups)) { CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response($queue_id, $groups, FALSE, $job_id); } else { // should we indicate an error, or just ignore? } } elseif ($this->_type == 'resubscribe') { $groups = CRM_Mailing_Event_BAO_Resubscribe::resub_to_mailing($job_id, $queue_id, $hash); if (count($groups)) { CRM_Mailing_Event_BAO_Resubscribe::send_resub_response($queue_id, $groups, FALSE, $job_id); } else { // should we indicate an error, or just ignore? } } else { if (CRM_Mailing_Event_BAO_Unsubscribe::unsub_from_domain($job_id, $queue_id, $hash)) { CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response($queue_id, NULL, TRUE, $job_id); } else { // should we indicate an error, or just ignore? } } } else { $confirmURL = CRM_Utils_System::url("civicrm/mailing/{$this->_type}", "reset=1&jid={$job_id}&qid={$queue_id}&h={$hash}&confirm=1"); $this->assign('confirmURL', $confirmURL); // push context for further process CRM-4431 $session = CRM_Core_Session::singleton(); $session->pushUserContext($confirmURL); } return parent::run(); }
/** * Handle a resubscription event * * @param array $params * * @return array */ function civicrm_mailer_event_resubscribe($params) { $errors = _civicrm_mailer_check_params($params, array('job_id', 'event_queue_id', 'hash')); if (!empty($errors)) { return $errors; } $job = $params['job_id']; $queue = $params['event_queue_id']; $hash = $params['hash']; $groups = CRM_Mailing_Event_BAO_Resubscribe::resub_to_mailing($job, $queue, $hash); if (count($groups)) { CRM_Mailing_Event_BAO_Resubscribe::send_resub_response($queue, $groups, FALSE, $job); return civicrm_create_success(); } return civicrm_create_error(ts('Queue event could not be found')); }
/** * Handle a resubscription event * * @param string $email The email address to resubscribe * @param int $group_id The group of the resubscription * @param string $hash Security hash * @return boolean */ function crm_mailer_event_resubscribe($job, $queue, $hash) { $groups =& CRM_Mailing_Event_BAO_Resubscribe::resub_to_mailing($job, $queue, $hash); if (count($groups)) { CRM_Mailing_Event_BAO_Resubscribe::send_resub_response($queue, $groups, false, $job); return true; } return false; }