function uc_order_edit_form_submit in Ubercart 6.2
Same name and namespace in other branches
- 5 uc_order/uc_order.module \uc_order_edit_form_submit()
- 7.3 uc_order/uc_order.admin.inc \uc_order_edit_form_submit()
Form submission handler for uc_order_edit_form().
See also
File
- uc_order/
uc_order.admin.inc, line 1246 - Order administration menu items.
Code
function uc_order_edit_form_submit($form, &$form_state) {
if ($form_state['values']['op'] == t('Delete')) {
drupal_goto('admin/store/orders/' . $form_state['values']['order_id'] . '/delete');
}
$order = uc_order_load($form_state['values']['order_id']);
$log = array();
uc_order_module_invoke('edit-products', $order, $_POST);
$panes = _order_pane_list();
foreach ($panes as $pane) {
if (in_array('edit', $pane['show']) && variable_get('uc_order_pane_' . $pane['id'] . '_show_edit', TRUE)) {
$func = $pane['callback'];
if (function_exists($func)) {
if (($changes = $func('edit-process', $form_state['values'])) != NULL) {
foreach ($changes as $key => $value) {
if ($order->{$key} != $value) {
if (!is_array($value)) {
$log[$key] = array(
'old' => $order->{$key},
'new' => $value,
);
}
$order->{$key} = $value;
}
}
}
if (($ops = $func('edit-ops', NULL)) != NULL) {
$perform[$func] = $ops;
}
}
}
}
unset($order->products);
if (isset($_POST['products']) && is_array($_POST['products'])) {
foreach ($_POST['products'] as $product) {
if (!isset($product['remove']) && intval($product['qty']) > 0) {
$product['data'] = unserialize($product['data']);
$product = (object) $product;
$order->products[] = $product;
}
else {
$log['remove_' . $product['nid']] = $product['title'] . ' removed from order.';
}
}
}
// Load line items again, since some may have been updated by the form.
$order->line_items = uc_order_load_line_items($order, TRUE);
// Merge it with the defaultish line items.
$order->line_items = array_merge($order->line_items, uc_order_load_line_items($order, FALSE));
usort($order->line_items, 'uc_weight_sort');
if (variable_get('uc_order_logging', TRUE)) {
uc_order_log_changes($order->order_id, $log);
}
uc_order_save($order);
if (is_array($perform)) {
foreach ($perform as $func => $ops) {
if (in_array($form_state['values']['op'], $ops)) {
$func($form_state['values']['op'], $form_state['values']);
}
}
}
drupal_set_message(t('Order changes saved.'));
}