Index: feeds_imagegrabber.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feeds_imagegrabber/feeds_imagegrabber.module,v
retrieving revision 1.1.4.16
diff -u -r1.1.4.16 feeds_imagegrabber.module
--- feeds_imagegrabber.module	17 Nov 2010 18:14:06 -0000	1.1.4.16
+++ feeds_imagegrabber.module	4 Jan 2011 19:00:44 -0000
@@ -15,6 +15,14 @@
  */
 define('FIG_HTTP_REQUEST_TIMEOUT', 1);
 
+/**
+ * Codes to indicate the scraping method to be used inside the feeds_imagegrabber_webpage_scaper().
+ */
+define('FIG_SCRAPER_METHOD_NONE', 0);
+define('FIG_SCRAPER_METHOD_ID', 1);
+define('FIG_SCRAPER_METHOD_CLASS', 2);
+define('FIG_SCRAPER_METHOD_URL', 3);
+
 //=============
 //DRUPAL HOOKS.
 //=============
@@ -59,9 +67,10 @@
         '#type' => 'radios',
         '#title' => t('Search for an image between the tag which is identified by'),
         '#options' => array(
-          t('None, search the whole web-page for the image.'),
-          t('an Id'),
-          t('a Class'),
+          FIG_SCRAPER_METHOD_NONE => t('None, search the whole web-page for the image.'),
+          FIG_SCRAPER_METHOD_ID => t('an Id'),
+          FIG_SCRAPER_METHOD_CLASS => t('a Class'),
+          FIG_SCRAPER_METHOD_URL => t('No scraping, the link is a direct path to an image.'),
         ),
         '#default_value' => $settings['id_class'],
       );
@@ -100,7 +109,7 @@
   if ($form_state['values']['feeds_imagegrabber']['enabled'] == 1) {
     $id_class = $form_state['values']['feeds_imagegrabber']['id_class'];
     $id_class_desc = $form_state['values']['feeds_imagegrabber']['id_class_desc'];
-    if ($id_class) {
+    if ($id_class == FIG_SCRAPER_METHOD_ID || $id_class == FIG_SCRAPER_METHOD_CLASS) {
       if (!isset($id_class_desc) || empty($id_class_desc) || $id_class_desc == '') {
         form_set_error('feeds_imagegrabber][id_class_desc', "Specify the id/class of the desired tag.");
       }
@@ -195,6 +204,7 @@
 function feeds_imagegrabber_feeds_set_target($node, $target, $page_url) {
   $feed_nid     = $node->feeds_node_item->feed_nid;
   $settings     = feeds_imagegrabber_get_settings($feed_nid);
+  
   if(!$settings || !$settings['enabled']) {
     return;
   }
@@ -218,20 +228,29 @@
   }
   
   if (valid_url($page_url)) {
-    $xml = feeds_imagegrabber_webpage_scraper($page_url, $settings['id_class'], $settings['id_class_desc'], $timeout);
-    if ($xml == FALSE) {
-      return;
+    if ($settings['id_class'] == FIG_SCRAPER_METHOD_URL) {
+      // No scraping, just get the image directly.
+      $images = array($page_url => 0);
     }
-  $timeout = $timeout - timer_read('page')/1000 + $page_time;
-  
-    $options = array(
-      'max_imagesize' => $max_filesize,
-      'timeout' => $timeout,
-      'feeling_lucky' => $settings['feeling_lucky'],
-    );
+    else {
+      $xml = feeds_imagegrabber_webpage_scraper($page_url, $settings['id_class'], $settings['id_class_desc'], $timeout);
+      if ($xml == FALSE) {
+        return;
+      }
+      $timeout = $timeout - timer_read('page')/1000 + $page_time;
+    
+      $options = array(
+        'max_imagesize' => $max_filesize,
+        'timeout' => $timeout,
+        'feeling_lucky' => $settings['feeling_lucky'],
+      );
 
-    $images = feeds_imagegrabber_scrape_images($xml, $page_url, $options);
-    if ($images == FALSE || count($images) <= 0) {
+      $images = feeds_imagegrabber_scrape_images($xml, $page_url, $options);
+      //Done scraping.
+    }
+    
+    if (empty($images)) {
+      watchdog('feeds_imagegrabber', 'No images to import from @url', array('@url' => $page_url), WATCHDOG_NOTICE);
       return;
     }
 
@@ -259,9 +278,15 @@
           break;
         }
       }
+      else {
+        watchdog('feeds_imagegrabber', 'Failed to retrieve image file from @url', array('@url' => $url), WATCHDOG_WARNING);
+      }
     }
     $node->$field_name = $items;
   }
+  else {
+    watchdog('feeds_imagegrabber', 'Input to field was not a valid URL. @url', array('@url' => $page_url), WATCHDOG_WARNING);
+  }
 }
 
 //==================
@@ -384,17 +409,17 @@
     return FALSE;
   }
 
-  if ($itype == 0) {
+  if ($itype == FIG_SCRAPER_METHOD_NONE) {
     $items = @$doc->getElementsByTagName("body");
     if ($items != NULL && $items->length > 0) {
       $dist = $items->item(0);
     }
     else $dist = NULL;
   }
-  elseif ($itype == 1) {
+  elseif ($itype == FIG_SCRAPER_METHOD_ID) {
     $dist = @$doc->getElementById($ivalue);
   }
-  elseif ($itype == 2) {
+  elseif ($itype == FIG_SCRAPER_METHOD_CLASS) {
     $xpath = new DOMXPath($doc);
     //Normalize whitespaces.
     $ivalue = preg_replace('/\s\s+/', ' ', trim($ivalue));

