You are here

function msnf_step_validate_name in Multistep Nodeform 7

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

API for step name validation.

Pulled into separate function to be re-usable.

File

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

Code

function msnf_step_validate_name($step, $type_name) {
  $errors = array();

  // No label.
  if (!$step['label']) {
    $errors['label'][] = t('You need to provide a label.');
  }

  // No step name.
  if (!$step['step_name']) {
    $errors['step_name'][] = t('You need to provide a step name.');
  }
  else {
    $step_name = $step['step_name'];
    $step['step_type'] = !empty($step['step_type']) ? $step['step_type'] : 'standard';

    // Add the 'step_' prefix.
    if (drupal_substr($step_name, 0, 6) != 'step_') {
      $step_name = 'step_' . $step_name;
    }

    // Invalid field name.
    if (!preg_match('!^step_[a-z0-9_]+$!', $step_name)) {
      $errors['step_name'][] = t('The step name %step_name is invalid. The name must include only lowercase unaccentuated letters, numbers, and underscores.', array(
        '%step_name' => $step_name,
      ));
    }
    if (drupal_strlen($step_name) > 32) {
      $errors['step_name'][] = t('The step name %step_name is too long. The name is limited to 32 characters, including the "step_" prefix.', array(
        '%step_name' => $step_name,
      ));
    }

    // Group name already exists.
    $steps = msnf_steps($type_name);
    if (isset($steps[$step_name])) {
      $errors['step_name'][] = t('The step name %step_name already exists.', array(
        '%step_name' => $step_name,
      ));
    }
    if (empty($errors['step_name'])) {
      $step['step_name'] = $step_name;
    }
  }
  return array(
    'step_name' => $step['step_name'],
    'errors' => $errors,
  );
}