From 343f09a8f87b882a033c4d50cd656ed85e458784 Mon Sep 17 00:00:00 2001
From: Roberto Montero <roberto.montero@achieveinternet.com>
Date: Thu, 26 Apr 2012 17:38:49 -0700
Subject: [PATCH] Fix link_validate_url reference

---
 webcam.module |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/webcam.module b/webcam.module
index 3712d8b..e7c4e34 100644
--- a/webcam.module
+++ b/webcam.module
@@ -85,21 +85,35 @@ function webcam_field_load($entity_type, $entities, $field, $instances, $langcod
  * Implements hook_field_validate().
  */
 function webcam_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
-  $optional_field_found = FALSE;
   foreach ($items as $delta => $value) {
-    // Validate the url.
-    if (link_validate_url(trim($value['url'])) == FALSE) {
-      form_set_error($field['field_name'] .']['. $delta .'][url', t('Not a valid URL.'));
-    }
-    // Validate the url.
-    $url_default = trim($value['url_default']);
-    if (!empty($url_default) && link_validate_url($url_default) == FALSE) {
-      form_set_error($field['field_name'] .']['. $delta .'][url', t('Not a valid Default URL.'));
+    $elements = array(
+      'url',
+      'url_default',
+      'link',
+    );
+
+    foreach ($elements as $element) {
+      $url = trim($value[$element]);
+      if (!empty($url) && !webcam_field_validate_url($url)) {
+        form_set_error($field['field_name'] .']['. $delta .'][' . $element, t('Not a valid URL.'));
+      }
     }
   }
 }
 
 /**
+ * Helper function, uses the link field validation if available. Falls back to
+ * valid_url().
+ */
+function webcam_field_validate_url($url, $absolute = FALSE) {
+  $url = trim($url);
+  if (module_exists('link')) {
+    return link_validate_url($url, $absolute);
+  }
+  return valid_url($url, $absolute);
+}
+
+/**
  * Implements hook_field_presave().
  */
 function webcam_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
-- 
1.7.2

