You are here

function openlayers_presets_ui_presets_manage_add_validate in Openlayers 6

OpenLayers Preset Form Validate

Validates a preset form submission.

Parameters

$map_form: Array of values to validate

Return value

Does not return anything. Uses form_set_error() to communicate errors.

File

modules/openlayers_presets_ui/includes/openlayers_presets_ui.ui.inc, line 551
This file holds the functions for the openlayers presets ui

Code

function openlayers_presets_ui_presets_manage_add_validate($form, &$form_state) {
  $values = $form_state['values'];
  $found_error = FALSE;

  // Check if ahah submitting
  if ($form_state['clicked_button']['#id'] == 'edit-openlayers-projection-ahah') {
    return TRUE;
  }

  // Check for cancel
  if ($form_state['clicked_button']['#id'] == 'edit-openlayers-cancel') {
    return TRUE;
  }

  // Check for values.  We manually do required fields because, it would otherwise
  // mess with the AHAH stuff.  Maybe a way around it.
  if (empty($values['preset_name'])) {
    form_set_error('preset_name', t('Preset Name is required.'));
    $found_error = TRUE;
  }
  if (empty($values['preset_title'])) {
    form_set_error('preset_title', t('Preset Title is required.'));
    $found_error = TRUE;
  }
  if (empty($values['preset_description'])) {
    form_set_error('preset_description', t('Preset Description is required.'));
    $found_error = TRUE;
  }
  if (empty($values['width'])) {
    form_set_error('width', t('Width is required.'));
    $found_error = TRUE;
  }
  if (empty($values['height'])) {
    form_set_error('height', t('Height is required.'));
    $found_error = TRUE;
  }

  // Check preset name first
  if (!preg_match('!^[a-z0-9_]+$!', $values['preset_name'])) {
    form_set_error('preset_name', t('Preset Name must contain only lowercase letters, numbers, and underscores.'));
    $found_error = TRUE;
  }

  // Check if adding and name already exists
  $existing = openlayers_get_preset($values['preset_name'], TRUE);
  if (!empty($existing) && !$form_state['values']['preset_edit'] && $existing['type'] != OPENLAYERS_STORAGE_DEFAULT) {
    form_set_error('preset_name', t('The Preset Name already exists.'));
    $found_error = TRUE;
  }

  // Convert form to map array
  $map = _openlayers_presets_ui_convert_form_to_map($form_state['values']);

  // Attempt to render map to find any errors
  $map = openlayers_render_map($map, FALSE);

  // Check if any errors found
  if (is_array($map['errors']) && count($map['errors']) > 0) {
    foreach ($map['errors'] as $error) {
      form_set_error('openlayers', t('OpenLayers Map Rendering Error: !error', array(
        '!error' => $error,
      )));
      $found_error = TRUE;
    }
  }

  // If found error, rebuild form
  if ($found_error) {
    $form_state['rebuild'] = TRUE;
  }
}