function commerce_addressbook_saved_addresses_validate in Commerce Addressbook 7
Same name and namespace in other branches
- 7.3 commerce_addressbook.checkout_pane.inc \commerce_addressbook_saved_addresses_validate()
- 7.2 commerce_addressbook.module \commerce_addressbook_saved_addresses_validate()
Element validate callback: processes input of the address select list.
1 string reference to 'commerce_addressbook_saved_addresses_validate'
File
- ./
commerce_addressbook.module, line 342 - :
Code
function commerce_addressbook_saved_addresses_validate($element, &$form_state, $form) {
// Only perform the validation update if this address selector was used to
// trigger it.
if (in_array('saved_address_profiles', $form_state['triggering_element']['#parents']) && $form_state['triggering_element']['#id'] == $element['#id']) {
// Extract the field name - @TODO: can this be done better / more generic?
$field_name = $element['#order_fieldname'];
$order_wrapper = entity_metadata_wrapper('commerce_order', $form_state['order']);
// If we detect a change in the element's value, and the customer profile
// reference isn't already set to the specified value...
if ($order_wrapper->{$field_name}
->raw() != $element['#value']) {
// Update the order based on the value and rebuild the form.
if ($element['#value'] == 0) {
$order_wrapper->{$field_name} = NULL;
}
else {
$order_wrapper->{$field_name} = $element['#value'];
}
$order_wrapper
->save();
$form_state['rebuild'] = TRUE;
// Remove input data pertaining to the customer profile from the form
// state so the form gets rebuilt with the proper values.
$parent = $form_state['triggering_element']['#parents'][0];
unset($form_state['input'][$parent]);
// Remove addressfield data based on its element_key value.
$element_key = $form[$parent]['commerce_customer_address'][$form[$parent]['commerce_customer_address']['#language']][0]['element_key']['#value'];
unset($form_state['addressfield'][$element_key]);
}
}
}