You are here

function commerce_registration_line_item_control_reset in Commerce Registration 7.2

Submit callback for cleaning up line item registration controls.

1 string reference to 'commerce_registration_line_item_control_reset'
commerce_registration_form_commerce_order_ui_order_form_alter in ./commerce_registration.module
Implements hook_form_FORM_ID_alter().

File

./commerce_registration.module, line 1305
Commerce Registration module code.

Code

function commerce_registration_line_item_control_reset($form, &$form_state) {

  // Reset the registration form for the triggering button's associated
  // line item.
  if (!empty($form_state['triggering_element'])) {
    $trigger_parents = array_reverse($form_state['triggering_element']['#array_parents']);
    $triggering_element = $trigger_parents[0];
    if (isset($trigger_parents[3]) && $trigger_parents[3] === 'registration_control') {
      $line_item_id = $trigger_parents[4];
      if (isset($form_state['line_item_registration_add'][$line_item_id])) {
        unset($form_state['line_item_registration_add'][$line_item_id]);
      }
      $form_state['rebuild'] = TRUE;
      return;
    }
  }

  // Likely normal order form submission is happening in which case this is
  // probably not necessary, but might as well clean up the state anyway.
  if (isset($form['commerce_registration']['line_item_registrations'])) {

    // Loop through the registration enabled line items and reset any related
    // registration form controls.
    foreach (element_children($form['commerce_registration']['line_item_registrations']) as $line_item_id) {
      if (isset($form_state['line_item_registration_add'][$line_item_id])) {
        unset($form_state['line_item_registration_add'][$line_item_id]);
      }
    }
  }
}