You are here

function msnf_save_step in Multistep Nodeform 7

Same name and namespace in other branches
  1. 6 includes/msnf.steps.inc \msnf_save_step()

Saves a step for a content-type.

Parameters

<string> $type_name: Name of content type to associate the form step with.

<array> $step: Step informations to save.

File

includes/msnf.steps.inc, line 154
Step crud functions.

Code

function msnf_save_step($type_name, $step) {
  $steps = msnf_steps($type_name);

  // Allow other modules to intervene when the step is saved.
  foreach (module_implements('msnf_save_step') as $module) {
    $function = $module . '_msnf_save_step';
    $function($step);
  }
  $result = SAVED_NEW;
  if (!isset($steps[$step['step_name']])) {

    // Accept step name from programmed submissions if valid.
    db_query('INSERT INTO {msnf_step} (step_type, type_name, step_name, label, settings, weight)' . " VALUES ('%s', '%s', '%s', '%s', '%s', %d)", $step['step_type'], $type_name, $step['step_name'], $step['label'], serialize($step['settings']), $step['weight']);
    cache_clear_all('msnf_step_data:', 'cache', TRUE);
  }
  else {
    db_query("UPDATE {msnf_step} SET step_type = '%s', label = '%s', settings = '%s', weight = %d " . "WHERE type_name = '%s' AND step_name = '%s'", $step['step_type'], $step['label'], serialize($step['settings']), $step['weight'], $type_name, $step['step_name']);
    cache_clear_all('msnf_step_data:', 'cache', TRUE);
    $result = SAVED_UPDATED;
  }

  // Update field and group mapping.
  foreach (array(
    'fields',
    'groups',
  ) as $item_type) {
    if (isset($step[$item_type])) {
      foreach ($step[$item_type] as $item_name => $item) {
        $values = array(
          'type_name' => $type_name,
          'step' => $step['step_name'],
          "field_name" => $item_name,
          'weight' => $item['weight'],
        );
        msnf_step_update_fields($values);
      }
    }
  }
  return $result;
}