function uc_addresses_form_uc_cart_checkout_form_alter in Ubercart Addresses 6
Same name and namespace in other branches
- 7 uc_addresses.module \uc_addresses_form_uc_cart_checkout_form_alter()
Implementation of hook_form_alter().
Here we're going to override the saved address options on the checkout form.
Parameters
$form The form array.:
$form_state A keyed array containing the current state of: the form.
File
- ./
uc_addresses.module, line 358
Code
function uc_addresses_form_uc_cart_checkout_form_alter(&$form, &$form_state) {
global $user;
// This is a good place to clear any addresses we might have
// leftover from a previous checkout
if (isset($_SESSION['uc_addresses_saved_addresses'])) {
$_SESSION['uc_addresses_saved_addresses'] = NULL;
unset($_SESSION['uc_addresses_saved_addresses']);
}
// 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) {
if ($address->is_default) {
$default_address = $address;
}
$address = (array) $address;
if ($address['is_default']) {
$default = drupal_to_js($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(
'html' => TRUE,
));
// If we have some addresses saved (almost always TRUE), revise
// the delivery/billing address selection
if ($options) {
//drupal_add_js(drupal_get_path('module', 'uc_addresses') . '/uc_addresses.js');
// Might not have any shippable products so make sure the
// delivery address exists before mucking with it
$default_country = uc_store_default_country();
$js_zone = FALSE;
if ($form['panes']['delivery'] && (uc_cart_is_shippable() || !variable_get('uc_cart_delivery_not_shippable', TRUE))) {
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('Go to your <a href="@address-book">address book</a> to manage your saved addresses.', array(
'@address-book' => url('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,
);
// 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) && _uc_addresses_address_fields_empty($form['panes']['delivery'], 'delivery')) {
$form['panes']['delivery']['delivery_address_select']['#default_value'] = $default;
if (uc_address_field_enabled('first_name')) {
$form['panes']['delivery']['delivery_first_name']['#default_value'] = $default_address->first_name;
}
if (uc_address_field_enabled('last_name')) {
$form['panes']['delivery']['delivery_last_name']['#default_value'] = $default_address->last_name;
}
if (uc_address_field_enabled('phone')) {
$form['panes']['delivery']['delivery_phone']['#default_value'] = $default_address->phone;
}
if (uc_address_field_enabled('company')) {
$form['panes']['delivery']['delivery_company']['#default_value'] = $default_address->company;
}
if (uc_address_field_enabled('street1')) {
$form['panes']['delivery']['delivery_street1']['#default_value'] = $default_address->street1;
}
if (uc_address_field_enabled('street2')) {
$form['panes']['delivery']['delivery_street2']['#default_value'] = $default_address->street2;
}
if (uc_address_field_enabled('city')) {
$form['panes']['delivery']['delivery_city']['#default_value'] = $default_address->city;
}
if (uc_address_field_enabled('country')) {
$form['panes']['delivery']['delivery_country']['#default_value'] = $default_address->country;
}
if (uc_address_field_enabled('zone')) {
if ($default_country == $default_address->country) {
$form['panes']['delivery']['delivery_zone']['#default_value'] = $default_address->zone;
}
else {
$js_zone = TRUE;
}
}
if (uc_address_field_enabled('postal_code')) {
$form['panes']['delivery']['delivery_postal_code']['#default_value'] = $default_address->postal_code;
}
}
}
}
if (variable_get('uc_pane_billing_enabled', TRUE)) {
$form['panes']['billing']['#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('Go to your <a href="@address-book">address book</a> to manage your saved addresses.', array(
'@address-book' => url('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 billing address fields if the
// option is enabled and if the fields are empty
if (variable_get('uc_addresses_default_billing_address', TRUE) && _uc_addresses_address_fields_empty($form['panes']['billing'], 'billing')) {
$form['panes']['billing']['billing_address_select']['#default_value'] = $default;
if (uc_address_field_enabled('first_name')) {
$form['panes']['billing']['billing_first_name']['#default_value'] = $default_address->first_name;
}
if (uc_address_field_enabled('last_name')) {
$form['panes']['billing']['billing_last_name']['#default_value'] = $default_address->last_name;
}
if (uc_address_field_enabled('phone')) {
$form['panes']['billing']['billing_phone']['#default_value'] = $default_address->phone;
}
if (uc_address_field_enabled('company')) {
$form['panes']['billing']['billing_company']['#default_value'] = $default_address->company;
}
if (uc_address_field_enabled('street1')) {
$form['panes']['billing']['billing_street1']['#default_value'] = $default_address->street1;
}
if (uc_address_field_enabled('street2')) {
$form['panes']['billing']['billing_street2']['#default_value'] = $default_address->street2;
}
if (uc_address_field_enabled('city')) {
$form['panes']['billing']['billing_city']['#default_value'] = $default_address->city;
}
if (uc_address_field_enabled('country')) {
$form['panes']['billing']['billing_country']['#default_value'] = $default_address->country;
}
if (uc_address_field_enabled('zone')) {
if ($default_country == $default_address->country) {
$form['panes']['billing']['billing_zone']['#default_value'] = $default_address->zone;
}
else {
$js_zone = TRUE;
}
}
if (uc_address_field_enabled('postal_code')) {
$form['panes']['billing']['billing_postal_code']['#default_value'] = $default_address->postal_code;
}
}
}
if ($js_zone) {
drupal_add_js(drupal_get_path('module', 'uc_addresses') . '/uc_addresses.js');
drupal_add_js(array(
'uc_address_default' => array(
'country' => $default_address->country,
'zone' => $default_address->zone,
),
), 'setting');
}
}
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
// );
}