You are here

function uc_get_addresses in Ubercart 7.3

Same name and namespace in other branches
  1. 8.4 uc_store/uc_store.module \uc_get_addresses()
  2. 5 uc_store/uc_store.module \uc_get_addresses()
  3. 6.2 uc_store/uc_store.module \uc_get_addresses()

Loads a customer's previously given addresses.

2 calls to uc_get_addresses()
uc_select_address in uc_store/uc_store.module
Creates an address select box based on a user's previous orders.
uc_select_addresses in uc_store/uc_store.module
Creates an address select box based on a user's previous orders.

File

uc_store/uc_store.module, line 1520
Contains global Ubercart functions and store administration functionality.

Code

function uc_get_addresses($uid, $type = 'billing') {
  if ($uid == 0) {
    return NULL;
  }
  if ($type == 'delivery') {
    $type = 'delivery';
  }
  else {
    $type = 'billing';
  }
  $query = db_select('uc_orders', 'o')
    ->distinct();
  $alias = array();
  $alias['first_name'] = $query
    ->addField('o', $type . '_first_name', 'first_name');
  $alias['last_name'] = $query
    ->addField('o', $type . '_last_name', 'last_name');
  $alias['phone'] = $query
    ->addField('o', $type . '_phone', 'phone');
  $alias['company'] = $query
    ->addField('o', $type . '_company', 'company');
  $alias['street1'] = $query
    ->addField('o', $type . '_street1', 'street1');
  $alias['street2'] = $query
    ->addField('o', $type . '_street2', 'street2');
  $alias['city'] = $query
    ->addField('o', $type . '_city', 'city');
  $alias['zone'] = $query
    ->addField('o', $type . '_zone', 'zone');
  $alias['postal_code'] = $query
    ->addField('o', $type . '_postal_code', 'postal_code');
  $alias['country'] = $query
    ->addField('o', $type . '_country', 'country');

  // In pgsql, ORDER BY requires the field being sorted by to be in the SELECT
  // list. But if we have the 'created' column in the SELECT list, the DISTINCT
  // is rather useless. So we will just sort addresses alphabetically.
  $query
    ->condition('uid', $uid)
    ->condition('order_status', uc_order_status_list('general', TRUE), 'IN')
    ->orderBy($alias['street1']);
  $result = $query
    ->execute();
  $addresses = array();
  while ($address = $result
    ->fetchAssoc()) {
    if (!empty($address['street1']) || !empty($address['postal_code'])) {
      $addresses[] = $address;
    }
  }
  return $addresses;
}