You are here

newsletter_subscriber.pages.inc in Newsletter 7.2

Menu callbacks and forms for the frontend part of newsletter_subscriber module.

File

modules/subscriber/includes/newsletter_subscriber.pages.inc
View source
<?php

/**
 * @file
 * Menu callbacks and forms for the frontend part of newsletter_subscriber module.
 */

/**
 * Page callback: Build the manage subscriptions form for visitors.
 *
 * @param $subscriber
 *   The full subscriber object.
 *
 * @see newsletter_subscriber_manage_subscriptions_form_submit()
 * @see newsletter_subscriber_menu()
 */
function newsletter_subscriber_manage_subscriptions($subscriber = NULL) {
  global $user;
  if ($subscriber === NULL) {

    // Visitor is in the subscribe page.
    // Create new subscriber and assign user's mail if registerd.
    $values = array(
      'uid' => $user->uid ? $user->uid : NULL,
      'mail' => isset($_GET['mail']) ? check_plain($_GET['mail']) : @$user->mail,
    );
    $subscriber = newsletter_subscriber_create($values);
  }
  module_load_include('inc', 'newsletter_subscriber', 'includes/newsletter_subscriber.admin');
  $form = drupal_get_form('newsletter_subscriber_form', $subscriber);

  // Make text more user friendly for visitors instead of admins.
  $form['actions']['submit']['#value'] = !empty($subscriber->is_new) ? t('Subscribe') : t('Update subscriptions');

  // Remove cancel link.
  unset($form['actions']['cancel']);
  return $form;
}

/**
 * Page callback: Set the status of the subscriber to active.
 *
 * Used to confirm that a visitor owns the subscription e-mail so we can start
 * sending newsletters there safely.
 *
 * @param $subscriber
 *   A fully loaded subscriber object.
 *
 * @return
 *   A render array for a page containing a list of content.
 *
 * @see newsletter_subscriber_menu()
 */
function newsletter_subscriber_confirm($subscriber) {
  if ($subscriber && !$subscriber->status) {
    $subscriber->status = 1;
    $subscriber->confirmation_timestamp = REQUEST_TIME;
    newsletter_subscriber_save($subscriber);
    if (variable_get('newsletter_send_welcome', FALSE)) {
      newsletter_create()
        ->sendBasic(2, $subscriber->mail);
    }
    drupal_set_message(t('You have successfully confirmed your subscription!'));
  }
  drupal_set_message(t('The hash you provided is invalid or you have already confirmed your subscription'), 'warning');
  drupal_goto('<front>');
}

/**
 * Form constructor for the confirmation of a subscriber unsubscription.
 *
 * @param $subscriber
 *   The subscriber object to unsubscribe/delete.
 *
 * @see newsletter_unsubscribe_submit()
 * @see newsletter_subscriber_menu()
 * @ingroup forms
 */
function newsletter_subscriber_unsubscribe($form, &$form_state, $subscriber) {
  if ($subscriber) {
    $form_state['newsletter_subscriber'] = $subscriber;
    return confirm_form($form, t('Are you sure you want to unsubscribe from our newsletters?'), '<front>');
  }
  drupal_set_message(t('The hash you provided is invalid or outdated'), 'warning');
  $form_state['redirect'] = '<front>';
}

/**
 * Form submission handler for newsletter_subscriber_unsubscribe().
 */
function newsletter_subscriber_unsubscribe_submit($form, &$form_state) {
  $subscriber = $form_state['newsletter_subscriber'];
  if (variable_get('newsletter_send_unsubscribe', FALSE)) {
    newsletter_create()
      ->sendBasic(3, $subscriber->email);
  }
  newsletter_subscriber_delete($subscriber);
  drupal_set_message(t('You have successfully unsubscribed from our newsletter'));
  $form_state['redirect'] = '<front>';
}

Functions

Namesort descending Description
newsletter_subscriber_confirm Page callback: Set the status of the subscriber to active.
newsletter_subscriber_manage_subscriptions Page callback: Build the manage subscriptions form for visitors.
newsletter_subscriber_unsubscribe Form constructor for the confirmation of a subscriber unsubscription.
newsletter_subscriber_unsubscribe_submit Form submission handler for newsletter_subscriber_unsubscribe().