You are here

function msnf_entity_form_validate in Multistep Nodeform 7

Custom validation callback.

Parameters

<array> $form: Form to validate.

<array> $form_state: Current form state.

1 string reference to 'msnf_entity_form_validate'
msnf_form_node_form_alter in ./msnf.module
Implements hook_form_FORM_ID_alter().

File

./msnf.module, line 1024
Main functions for module "Multistep Nodeform".

Code

function msnf_entity_form_validate($form, &$form_state) {
  if (!isset($form['#steps']) || count($form['#steps']) == 0) {

    // Nothing to do here.
    return;
  }
  if (!isset($form_state['triggering_element']['#name']) || !in_array($form_state['triggering_element']['#name'], array(
    'previous',
    'skip',
    'next',
  ))) {
    return;
  }
  $form_state['rebuild'] = TRUE;
  $form_state['cache'] = TRUE;
  if (isset($form_state['node'])) {

    // Update node object based on submitted form values.
    entity_form_submit_build_entity('node', $form_state['node'], $form, $form_state);
  }
  if (($current_step = _msnf_form_step_get_current($form, $form_state)) === FALSE) {

    // Step not found. Do nothing.
    return;
  }
  $step_names = array_keys($form['#steps']);
  $step_index = array_search($current_step->step_name, $step_names);
  if ($form_state['triggering_element']['#name'] == 'next') {
    $step_index++;
  }
  elseif ($form_state['triggering_element']['#name'] == 'skip') {
    $step_index += 2;
  }
  elseif ($form_state['triggering_element']['#name'] == 'previous') {
    $step_index--;
  }
  if (isset($step_names[$step_index])) {

    // Set name of next step to display.
    $form_state['storage']['step'] = $step_names[$step_index];
  }
  else {

    // Display first step.
    $form_state['storage']['step'] = array_shift($step_names);
  }
}