You are here

public function NewsletterSubscriberController::save in Newsletter 7.2

Same name and namespace in other branches
  1. 7 includes/newsletter.subscriber.controller.inc \NewsletterSubscriberController::save()

Saves a new newsletter subscriber in database.

Parameters

$subscriber: The full subscriber object to save.

$transaction: An optional transaction object.

Return value

SAVED_NEW or SAVED_UPDATED depending on the operation performed..

Overrides EntityAPIController::save

File

modules/subscriber/includes/newsletter_subscriber.controller.inc, line 48
Controller class definition file for newsletter_subscriber entity.

Class

NewsletterSubscriberController
Newsletter Subscriber Controller

Code

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);
}