function uc_addresses_form_alter in Ubercart Addresses 5
Same name and namespace in other branches
- 5.2 uc_addresses.module \uc_addresses_form_alter()
Implementation of hook_form_alter().
Here we're going to override the saved address options on the checkout form.
Parameters
$form_id The name of the form.:
$form The form array.:
File
- ./
uc_addresses.module, line 251
Code
function uc_addresses_form_alter($form_id, &$form) {
global $user;
if ($form_id == 'uc_cart_checkout_form') {
// Create the list of addresses the user can select from
// Each address is just line a full address, but on one line
$options = NULL;
if ($addresses = _uc_addresses_db_get_address($user->uid)) {
$options = array(
'0' => t('Select one...'),
);
foreach ($addresses as $address) {
$address = (array) $address;
if ($address['address_name']) {
$options[drupal_to_js($address)] = $address['address_name'];
}
else {
// Not happy about this--if uc_address_format() ever changes
// it's output, we're hosed
$options[drupal_to_js($address)] = preg_replace('/<.*?>/', ', ', uc_address_format($address['first_name'], $address['last_name'], $address['company'], $address['street1'], $address['street2'], $address['city'], $address['zone'], $address['postal_code'], $address['country']));
}
}
}
$address_book_icon = l(uc_store_get_icon('file:address_book', FALSE, 'address-book-icon'), 'user/' . $user->uid . '/addresses', array(), NULL, NULL, FALSE, TRUE);
// If we have some addresses saved (almost always true), revise
// the delivery/billing address selection
if ($options) {
// Might not have any shippable products so make sure the
// delivery address exists before mucking with it
if ($form['panes']['delivery']) {
if (variable_get('uc_pane_delivery_enabled', TRUE)) {
$form['panes']['delivery']['#description'] = (variable_get('uc_addresses_default_delivery_address', TRUE) ? t('Edit the address below or select an address from the list. ') : t('Enter an address below or select an address from the list. ')) . t('Click !here to manage your saved addresses.', array(
'!here' => l('here', 'user/' . $user->uid . '/addresses'),
));
$form['panes']['delivery']['delivery_address_select'] = array(
'#type' => 'select',
'#title' => t('Saved addresses'),
'#options' => $options,
'#attributes' => array(
'onchange' => 'apply_address(\'delivery\', this.value);',
),
'#suffix' => $address_book_icon,
'#weight' => -10,
);
}
}
if (variable_get('uc_pane_billing_enabled', TRUE)) {
$form['panes']['billing']['#description'] = (variable_get('uc_addresses_default_billing_address', TRUE) ? t('Edit the address below or select an address from the list. ') : t('Enter an address below or select an address from the list. ')) . t('Click !here to manage your saved addresses.', array(
'!here' => l(t('here'), 'user/' . $user->uid . '/addresses'),
));
$form['panes']['billing']['billing_address_select'] = array(
'#type' => 'select',
'#title' => t('Saved addresses'),
'#options' => $options,
'#attributes' => array(
'onchange' => 'apply_address(\'billing\', this.value);',
),
'#suffix' => $address_book_icon,
'#weight' => -10,
);
}
// Copy the default address to the delivery address fields if
// the option is enabled and if the fields are empty
if (variable_get('uc_addresses_default_delivery_address', TRUE) && variable_get('uc_pane_delivery_enabled', TRUE) && _uc_addresses_address_fields_empty($form['panes']['delivery'], 'delivery')) {
foreach ($addresses as $address) {
if ($address->is_default) {
if (uc_address_field_enabled('first_name')) {
$form['panes']['delivery']['delivery_first_name']['#default_value'] = $address->first_name;
}
if (uc_address_field_enabled('last_name')) {
$form['panes']['delivery']['delivery_last_name']['#default_value'] = $address->last_name;
}
if (uc_address_field_enabled('phone')) {
$form['panes']['delivery']['delivery_phone']['#default_value'] = $address->phone;
}
if (uc_address_field_enabled('company')) {
$form['panes']['delivery']['delivery_company']['#default_value'] = $address->company;
}
if (uc_address_field_enabled('street1')) {
$form['panes']['delivery']['delivery_street1']['#default_value'] = $address->street1;
}
if (uc_address_field_enabled('street2')) {
$form['panes']['delivery']['delivery_street2']['#default_value'] = $address->street2;
}
if (uc_address_field_enabled('city')) {
$form['panes']['delivery']['delivery_city']['#default_value'] = $address->city;
}
if (uc_address_field_enabled('country')) {
$form['panes']['delivery']['delivery_country']['#default_value'] = $address->country;
}
if (uc_address_field_enabled('zone')) {
$form['panes']['delivery']['delivery_zone'] = uc_zone_select(uc_get_field_name('zone'), $address->zone, NULL, $address->country, 'name', uc_address_field_required('zone'));
}
if (uc_address_field_enabled('postal_code')) {
$form['panes']['delivery']['delivery_postal_code']['#default_value'] = $address->postal_code;
}
}
}
}
// Copy the default address to the billing address fields if the
// option is enabled and if the fields are empty
if (variable_get('uc_addresses_default_billing_address', TRUE) && variable_get('uc_pane_billing_enabled', TRUE) && _uc_addresses_address_fields_empty($form['panes']['billing'], 'billing')) {
foreach ($addresses as $address) {
if ($address->is_default) {
if (uc_address_field_enabled('first_name')) {
$form['panes']['billing']['billing_first_name']['#default_value'] = $address->first_name;
}
if (uc_address_field_enabled('last_name')) {
$form['panes']['billing']['billing_last_name']['#default_value'] = $address->last_name;
}
if (uc_address_field_enabled('phone')) {
$form['panes']['billing']['billing_phone']['#default_value'] = $address->phone;
}
if (uc_address_field_enabled('company')) {
$form['panes']['billing']['billing_company']['#default_value'] = $address->company;
}
if (uc_address_field_enabled('street1')) {
$form['panes']['billing']['billing_street1']['#default_value'] = $address->street1;
}
if (uc_address_field_enabled('street2')) {
$form['panes']['billing']['billing_street2']['#default_value'] = $address->street2;
}
if (uc_address_field_enabled('city')) {
$form['panes']['billing']['billing_city']['#default_value'] = $address->city;
}
if (uc_address_field_enabled('country')) {
$form['panes']['billing']['billing_country']['#default_value'] = $address->country;
}
if (uc_address_field_enabled('zone')) {
$form['panes']['billing']['billing_zone'] = uc_zone_select(uc_get_field_name('zone'), $address->zone, NULL, $address->country, 'name', uc_address_field_required('zone'));
}
if (uc_address_field_enabled('postal_code')) {
$form['panes']['billing']['billing_postal_code']['#default_value'] = $address->postal_code;
}
}
}
}
}
else {
unset($form['panes']['delivery']['delivery_address_select']);
unset($form['panes']['billing']['billing_address_select']);
}
// Add the "Save address" checkbox
// TODO: (Tony) I can add these, but don't know how to find out if
// the checkbox was checked. For now, all order addresses are
// automatically saved.
// $form['panes']['billing']['billing_address_save_address'] = array(
// '#title' => t('Save this address'),
// '#type' => 'checkbox',
// '#default_value' => 1,
// '#weight' => 10
// );
// $form['panes']['delivery']['delivery_address_save_address'] = array(
// '#title' => t('Save this address'),
// '#type' => 'checkbox',
// '#default_value' => 1,
// '#weight' => 10
// );
}
}