You are here

function socialfield_field_validate in Social field 7

Implements hook_field_validate().

File

./socialfield.module, line 516
Provides a field for adding social services links.

Code

function socialfield_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {

  // Clicked remove button. No validation needed.
  if (!isset($items['validate_link']) || !$items['validate_link']) {
    return;
  }
  $services = variable_get('socialfield_services');
  $form_elements = array(
    $field['field_name'],
    $langcode,
    'social_buttons',
  );
  foreach ($items as $delta => &$item) {
    if (!$item['url']) {

      // No url inserted. Nothing to validate here.
      continue;
    }
    if (!valid_url($item['url'], TRUE)) {

      // Checking if the url is valid.
      $form_element = array_merge($form_elements, array(
        'element_' . $delta,
        'url',
      ));
      form_set_error(implode('][', $form_element), t('Not a valid URL.'));
    }
    else {

      // Checking if the url matches the pattern.
      $match = drupal_match_path($item['url'], $services[$item['service']]['validation_pattern']);
      if (!$match) {
        $form_element = array_merge($form_elements, array(
          'element_' . $delta,
          'url',
        ));
        form_set_error(implode('][', $form_element), t("%service link should match the following pattern: %pattern", array(
          '%service' => $services[$item['service']]['name'],
          '%pattern' => $services[$item['service']]['validation_pattern'],
        )));
      }
    }
  }
}