You are here

newsletter_subscriber.controller.inc in Newsletter 7.2

Controller class definition file for newsletter_subscriber entity.

File

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

/**
 * @file
 * Controller class definition file for newsletter_subscriber entity.
 */

/**
 * Newsletter Subscriber Controller
 */
class NewsletterSubscriberController extends EntityAPIController {

  /**
   * Create a default subscriber.
   *
   * @param array $values
   *   An array of values to set, keyed by property name.
   * @return
   *   A subscriber object with all default fields initialized.
   */
  public function create(array $values = array()) {
    $values += array(
      'subscriber_id' => '',
      'is_new' => TRUE,
      'mail' => '',
      'uid' => NULL,
      'status' => 0,
    );

    // If there is only one subscriber type, use this as default.
    $types = array_keys($this->entityInfo['bundles']);
    if (count($types) == 1 && !isset($values['type'])) {
      $values[$this->entityInfo['bundle keys']['bundle']] = reset($types);
    }
    return parent::create($values);
  }

  /**
   * Saves a new newsletter subscriber in database.
   *
   * @param $subscriber
   *   The full subscriber object to save.
   * @param $transaction
   *   An optional transaction object.
   *
   * @return
   *   SAVED_NEW or SAVED_UPDATED depending on the operation performed..
   */
  public function save($subscriber, DatabaseTransaction $transaction = NULL) {
    if (isset($subscriber->uid) && is_numeric($subscriber->uid)) {

      // Make sure that user's email is same with subscriber's,
      // so we can safely assume that this subscriber is same with user.
      $user = user_load($subscriber->uid);
      $subscriber->uid = isset($user->mail) && $subscriber->mail == $user->mail ? $user->uid : NULL;
    }
    else {

      // Try to find a user with this email and automatically assign
      // to this subscriber
      $user = user_load_by_mail($subscriber->mail);
      $subscriber->uid = $user ? $user->uid : NULL;
    }
    if (empty($subscriber->subscriber_id) || !empty($subscriber->is_new)) {
      $subscriber->created = REQUEST_TIME;
      $subscriber->ip = ip_address();
      $subscriber->hash = drupal_hmac_base64(REQUEST_TIME . $subscriber->mail, drupal_get_hash_salt() . $subscriber->ip);
      $subscriber->confirmation_timestamp = $subscriber->status ? REQUEST_TIME : 0;
    }
    $subscriber->changed = REQUEST_TIME;
    return parent::save($subscriber, $transaction);
  }

}

/**
 * The Controller for newsletter subscriber types.
 */
class NewsletterSubscriberTypeController extends EntityAPIControllerExportable {
  public function __construct($entityType) {
    parent::__construct($entityType);
  }

  /**
   * Create a subscriber type.
   *
   * @param $type
   *   The machine-readable type of the subscriber type.
   *
   * @return
   *   A subscriber type object with all default fields initialized.
   */
  public function create(array $values = array()) {
    $values += array(
      'id' => '',
      'is_new' => TRUE,
      'data' => array(),
    );
    return parent::create($values);
  }

}

Classes

Namesort descending Description
NewsletterSubscriberController Newsletter Subscriber Controller
NewsletterSubscriberTypeController The Controller for newsletter subscriber types.