function uc_addresses_uc_addresses_select_addresses in Ubercart Addresses 6.2
Same name and namespace in other branches
- 7 uc_addresses.uc_addresses_fields.inc \uc_addresses_uc_addresses_select_addresses()
Implementation of 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 318 - In this file fields and field handlers for Ubercart Addresses are registered.
Code
function uc_addresses_uc_addresses_select_addresses($uid, $context, $type) {
static $addresses = 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_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];
}