You are here

function rules_admin_form_add_rule_set_validate in Rules 6

Validates the set and builds it -> $form_state['set']

File

rules_admin/rules_admin.sets.inc, line 247

Code

function rules_admin_form_add_rule_set_validate($form, &$form_state) {

  // Validate machine name.
  rules_admin_validate_machine_name('rule_sets', 'name', $form_state['values']['name']);

  //validate the arguments
  unset($form_state['values']['args']['rules_more']);
  foreach ($form_state['values']['args'] as $i => $values) {
    if (array_filter($values)) {
      foreach (array(
        'name',
        'type',
        'label',
      ) as $key) {
        if (!$values[$key]) {
          form_set_error(implode('][', array(
            'args',
            $i,
            $key,
          )), t('All fields of an argument are required.'));
        }
      }
      if (!preg_match('/^[a-z][a-z0-9_]*$/', $values['name'])) {
        form_set_error(implode('][', array(
          'args',
          $i,
          'name',
        )), t('The name may contain only digits, numbers and underscores.'));
      }
    }
    else {
      unset($form_state['values']['args'][$i]);
    }
  }

  //build  the set
  $set_info = array(
    'arguments' => array(),
  );
  $set_info['label'] = $form_state['values']['label'];
  $set_info['name'] = $form_state['values']['name'];
  foreach ($form_state['values']['args'] as $i => $values) {
    if (isset($set_info['arguments'][$values['name']])) {
      form_set_error('args][' . $i . '][name', t('Each name may be used only once.'));
    }
    else {
      $set_info['arguments'][$values['name']] = array(
        'label' => $values['label'],
        'type' => $values['type'],
      );
    }
  }
  $form_state['set'] = $set_info;
}