function simplenews_get_subscription in Simplenews 6
Same name and namespace in other branches
- 5 simplenews.module \simplenews_get_subscription()
 - 6.2 simplenews.module \simplenews_get_subscription()
 
Get the subscription object for the given account.
Account is defined by (in order of preference) snid, email address or uid. If the account is not subscribed a default subscription object is returned containing all available account info.
Parameters
object $account account details. Containing one or none of these items:: object( snid : subscription id mail : email address uid : user id )
Return value
subscription object object( snid : subscription id. 0 if account is not subscribed tids : array of newsletter tid's uid : user id. 0 if account is anonymous user mail : user email address. empty if email is unknown name : always empty. Added for compatebility with user account object language : language object. User preferred or default language )
7 calls to simplenews_get_subscription()
- simplenews_mail_mail in ./
simplenews.module  - Send a node to an email address.
 - simplenews_send_node in ./
simplenews.module  - Send newsletter node to subcribers.
 - simplenews_subscribe_user in ./
simplenews.module  - Subscribe a user to a newsletter or send a confirmation mail.
 - simplenews_subscription_manager_form in ./
simplenews.subscription.inc  - Menu callback: Generates the subscription form for users.
 - simplenews_subscription_manager_form_validate in ./
simplenews.subscription.inc  
File
- ./
simplenews.module, line 1149  - Simplnews node handling, sent email, newsletter block and general hooks
 
Code
function simplenews_get_subscription($account) {
  // Load subscription data based on available account informatioin
  // NOTE that the order of checking for snid, mail and uid is critical. mail must be checked *before* uid. See simplenews_subscribe_user()
  if (isset($account->snid)) {
    $subscription = db_fetch_object(db_query("SELECT s.* FROM {simplenews_subscriptions} s LEFT JOIN {users} u ON u.uid = s.uid WHERE s.snid = %d", $account->snid));
  }
  elseif (isset($account->mail)) {
    $subscription = db_fetch_object(db_query("SELECT s.* FROM {simplenews_subscriptions} s LEFT JOIN {users} u ON u.uid = s.uid WHERE s.mail = '%s'", $account->mail));
  }
  elseif (isset($account->uid) && $account->uid > 0) {
    $subscription = db_fetch_object(db_query("SELECT s.* FROM {simplenews_subscriptions} s LEFT JOIN {users} u ON u.uid = s.uid WHERE s.uid = %d", $account->uid));
  }
  if (!empty($subscription)) {
    $result = db_query("SELECT tid FROM {simplenews_snid_tid} t WHERE t.snid = %d", $subscription->snid);
    $subscription->tids = array();
    while ($newsletter = db_fetch_object($result)) {
      $subscription->tids[$newsletter->tid] = $newsletter->tid;
    }
    $subscription->name = '';
    $subscription->language = user_preferred_language($subscription);
  }
  else {
    // Account is unknown in subscription table. Create default subscription object
    $subscription = new stdClass();
    $subscription->name = '';
    $subscription->uid = isset($account->uid) ? $account->uid : 0;
    $subscription->mail = isset($account->mail) ? $account->mail : '';
    $subscription->language = language_default();
    $subscription->snid = 0;
    $subscription->tids = array();
  }
  return $subscription;
}