You are here

class NewsletterSubscriberController in Newsletter 7.2

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

Newsletter Subscriber Controller

Hierarchy

Expanded class hierarchy of NewsletterSubscriberController

1 string reference to 'NewsletterSubscriberController'
newsletter_subscriber_entity_info in modules/subscriber/newsletter_subscriber.module
Implements hook_entity_info().

File

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

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

}

Members

Namesort descending Modifiers Type Description Overrides
DrupalDefaultEntityController::$cache protected property Whether this entity type should use the static cache.
DrupalDefaultEntityController::$entityCache protected property Static cache of entities, keyed by entity ID.
DrupalDefaultEntityController::$entityInfo protected property Array of information about the entity.
DrupalDefaultEntityController::$entityType protected property Entity type for this controller instance.
DrupalDefaultEntityController::$hookLoadArguments protected property Additional arguments to pass to hook_TYPE_load().
DrupalDefaultEntityController::$idKey protected property Name of the entity's ID field in the entity database table.
DrupalDefaultEntityController::$revisionKey protected property Name of entity's revision database table field, if it supports revisions.
DrupalDefaultEntityController::$revisionTable protected property The table that stores revisions, if the entity supports revisions.
DrupalDefaultEntityController::attachLoad protected function Attaches data to entities upon loading. 4
DrupalDefaultEntityController::cacheGet protected function Gets entities from the static cache. 1
DrupalDefaultEntityController::cacheSet protected function Stores entities in the static entity cache.
DrupalDefaultEntityController::cleanIds protected function Ensures integer entity IDs are valid.
DrupalDefaultEntityController::filterId protected function Callback for array_filter that removes non-integer IDs.
EntityAPIController::$bundleKey protected property
EntityAPIController::$cacheComplete protected property
EntityAPIController::$defaultRevisionKey protected property
EntityAPIController::buildContent public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::buildContent
EntityAPIController::buildQuery protected function Overrides DrupalDefaultEntityController::buildQuery(). Overrides DrupalDefaultEntityController::buildQuery 1
EntityAPIController::delete public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::delete 1
EntityAPIController::deleteRevision public function Implements EntityAPIControllerRevisionableInterface::deleteRevision(). Overrides EntityAPIControllerRevisionableInterface::deleteRevision
EntityAPIController::export public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::export 1
EntityAPIController::import public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::import
EntityAPIController::invoke public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::invoke 1
EntityAPIController::load public function Overridden. Overrides DrupalDefaultEntityController::load 1
EntityAPIController::query public function Builds and executes the query for loading.
EntityAPIController::renderEntityProperty protected function Renders a single entity property.
EntityAPIController::resetCache public function Overrides DrupalDefaultEntityController::resetCache(). Overrides DrupalDefaultEntityController::resetCache 1
EntityAPIController::saveRevision protected function Saves an entity revision.
EntityAPIController::view public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::view 1
EntityAPIController::__construct public function Overridden. Overrides DrupalDefaultEntityController::__construct 1
NewsletterSubscriberController::create public function Create a default subscriber. Overrides EntityAPIController::create
NewsletterSubscriberController::save public function Saves a new newsletter subscriber in database. Overrides EntityAPIController::save