function commerce_order_order_form_submit in Commerce Core 7
Submit callback for commerce_order_order_form().
1 string reference to 'commerce_order_order_form_submit'
- commerce_order_order_form in modules/
order/ includes/ commerce_order.forms.inc - Form callback: create or edit an order.
File
- modules/
order/ includes/ commerce_order.forms.inc, line 237 - Forms for creating / editing and deleting orders.
Code
function commerce_order_order_form_submit($form, &$form_state) {
global $user;
// If the user is editing an order, load a fresh copy to merge changes to.
if ($form_state['commerce_order']->order_id) {
$form_state['commerce_order'] = commerce_order_load($form_state['commerce_order']->order_id);
}
// Merge changes into the order object in the form state so it is accessible
// by field handlers.
$order = $form_state['commerce_order'];
if ($form_state['values']['revision'] || !empty($form_state['values']['log'])) {
$order->revision = TRUE;
$order->log = $form_state['values']['log'];
}
// Set the order's owner uid based on the supplied name.
$converted = FALSE;
if (!empty($form_state['values']['name']) && ($account = user_load_by_name($form_state['values']['name']))) {
// If the order is being converted to an authenticated order from an
// anonymous order...
if ($order->uid == 0) {
// Set the converted boolean for later processing.
$converted = TRUE;
}
$order->uid = $account->uid;
if (empty($form_state['values']['mail'])) {
$order->mail = $account->mail;
}
}
else {
$order->uid = 0;
}
if (!empty($form_state['values']['mail'])) {
$order->mail = $form_state['values']['mail'];
}
$order->created = !empty($form_state['values']['date_created']) ? strtotime($form_state['values']['date_created']) : REQUEST_TIME;
if (!empty($form_state['values']['date_placed'])) {
$order->placed = strtotime($form_state['values']['date_placed']);
}
// Notify field widgets.
field_attach_submit('commerce_order', $order, $form, $form_state);
// Ensure the attached customer profiles are associated with the order owner
// if they do not have a uid yet and the order does.
if ($converted) {
$wrapper = entity_metadata_wrapper('commerce_order', $order);
foreach (field_info_instances('commerce_order', $order->type) as $field_name => $instance) {
$field_info = field_info_field($field_name);
if ($field_info['type'] == 'commerce_customer_profile_reference') {
if (!is_null($wrapper->{$field_name}
->value()) && $wrapper->{$field_name}->uid
->value() == 0) {
$wrapper->{$field_name}->uid = $order->uid;
$wrapper->{$field_name}
->save();
}
}
}
}
// Update the order status if specified.
if ($form_state['values']['status'] != $form_state['values']['status_original']) {
// We skip order saving in the update since we do it below once for the
// entire form submission.
commerce_order_status_update($order, $form_state['values']['status'], TRUE);
}
// Save the order.
commerce_order_save($order);
// Ensure the attached line items are associated with the order if they do not
// have an order_id set yet.
foreach (entity_metadata_wrapper('commerce_order', $order)->commerce_line_items as $delta => $line_item_wrapper) {
if ($line_item_wrapper->order_id
->value() == 0) {
$line_item_wrapper->order_id = $order->order_id;
commerce_line_item_save($line_item_wrapper
->value());
}
}
}