// Add in our callback function so we can intercept values during submit $form['#submit'] = array_merge($form['#submit'], array('donate_giftaid_intercept_submit' => array())); // Yes, the above doesn't work on ecommerce module as they have their own form // submission technique which by-passes Drupal's standard method and they don't // export an API outside of their own modules. Thanks guys! (not) // BLACK MAGIC BEGIN by removing their redirect so the standard callback is called if (isset($form['#action'])) { $form['donate_giftaid_action'] = array( '#type' => 'value', '#value' => $form['#action'] ); unset($form['#action']); } } } /** * Form callback function */ function donate_giftaid_intercept_submit($form_id, &$form_values, $form = NULL) { if (isset($form_values['donate_giftaid_action'])) { $form_values['#action'] = $form_values['donate_giftaid_action']; unset($form_values['donate_giftaid_action']); } if (function_exists('cart_add_item')) { cart_add_item(arg(1), 1, $form_values); // BLACK MAGIC END :) } }