newsletter_subscriber.controller.inc in Newsletter 7.2
Controller class definition file for newsletter_subscriber entity.
File
modules/subscriber/includes/newsletter_subscriber.controller.incView 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
Name![]() |
Description |
---|---|
NewsletterSubscriberController | Newsletter Subscriber Controller |
NewsletterSubscriberTypeController | The Controller for newsletter subscriber types. |