function uc_addresses_uc_addresses_select_addresses in Ubercart Addresses 7
Same name and namespace in other branches
- 6.2 uc_addresses.uc_addresses_fields.inc \uc_addresses_uc_addresses_select_addresses()
Implements hook_uc_addresses_select_addresses().
@todo Add setting to say if addresses may come from previous orders or not.
Parameters
int $uid: The user ID to select addresses for.
string $context: The context in which the addresses are used:
- checkout_form
- order_form
string $type: The type of address to select addresses for (shipping or billing).
Return value
array An array of UcAddressesAddress objects. Or an array of address arrays.
File
- ./
uc_addresses.uc_addresses_fields.inc, line 334 - In this file fields and field handlers for Ubercart Addresses are registered.
Code
function uc_addresses_uc_addresses_select_addresses($uid, $context, $type) {
$addresses =& drupal_static(__FUNCTION__, array());
if (!isset($addresses[$type])) {
$addresses[$type] = array();
}
if (count($addresses[$type]) > 0) {
return $addresses[$type];
}
// Address book selecting.
$uc_addresses = UcAddressesAddressBook::get($uid)
->getAddresses();
if (count($uc_addresses) > 0) {
foreach ($uc_addresses as $address) {
if ($address
->isNew()) {
// Skip unsaved addresses.
continue;
}
if (!UcAddressesPermissions::canViewAddress(user_load($address
->getUserId()), $address)) {
// Skip addresses that the currently logged in user may not view.
continue;
}
$addresses[$type][] = $address;
}
}
// If there no addresses in the address book, try to select addresses from
// previous orders.
if (count($addresses[$type]) < 1) {
$addresses[$type] = uc_addresses_get_addresses($uid, $type);
if (is_array($addresses[$type]) && count($addresses[$type]) > 0) {
foreach ($addresses[$type] as $index => $address) {
// Set source module manually this time.
$addresses[$type][$index]['module'] = 'uc_order';
}
}
else {
$addresses[$type] = array();
}
}
return $addresses[$type];
}