You are here

function geofield_field_validate in Geofield 7.2

Implements hook_field_validate().

File

./geofield.module, line 156

Code

function geofield_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
  ctools_include('plugins');
  $backend = ctools_get_plugins('geofield', 'geofield_backend', $field['settings']['backend']);
  foreach ($items as $delta => $item) {
    $geom_empty = geofield_geom_is_empty($item);

    // Required field empty.
    if ($instance['required'] && $geom_empty) {
      $errors[$field['field_name']][$langcode][$delta][] = array(
        'error' => 'data_missing',
        'message' => t('%name is required and must not be empty.', array(
          '%name' => $instance['label'],
        )),
      );
    }
    else {

      // Geometry errors.
      if ($geom_empty) {
        return FALSE;
      }
      else {
        $error = geofield_validate_geom($item);
        if ($error) {
          $errors[$field['field_name']][$langcode][$delta][] = array(
            'error' => 'data_faulty',
            'message' => t('%name: Specified location data is invalid.', array(
              '%name' => $instance['label'],
            )),
          );
        }
        if (!empty($backend['validate'])) {
          $validate_callback = $backend['validate'];
          $error = $validate_callback($item);
          if ($error) {
            $errors[$field['field_name']][$langcode][$delta][] = array(
              'error' => 'data_faulty',
              'message' => t('%name: Specified location data is invalid.', array(
                '%name' => $instance['label'],
              )),
            );
          }
        }
      }
    }
  }
}