Index: reference.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield_sources/sources/reference.inc,v
retrieving revision 1.1
diff -u -p -r1.1 reference.inc
--- reference.inc	17 Apr 2009 00:20:14 -0000	1.1
+++ reference.inc	3 Jan 2010 19:52:30 -0000
@@ -63,13 +63,26 @@ function filefield_source_reference_them
 /**
  * Implementation of hook_filefield_source_settings().
  */
-function filefield_source_reference_settings($op, $field) {
-  $return = array();
-
-  // Add settings to the FileField widget form.
-
-  return $return;
-
+function filefield_source_reference_settings(&$settings, $op, $widget) {
+  if ($op == 'form') {
+    if (!empty($settings['filefield_sources']['sources_reference'])) {
+      //Add settings to the FileField widget form.
+      foreach (content_fields() as $field) {
+        if ($field['type'] == 'filefield') {
+          $reference_options[$field['field_name']] = t($field['field_name']);
+        }
+      }
+      $settings['filefield_sources']['sources_reference']['referenceable_fields'] = array(
+        '#title' => t('Referenceable Fields'),
+        '#type' => 'checkboxes',
+        '#options' => $reference_options,
+        '#default_value' => $widget['referenceable_fields'], 
+      );
+    }
+  }
+  if ($op == 'save') {
+    $settings = array_merge($settings, array('referenceable_fields'));
+  }
 }
 
 /**
@@ -173,7 +186,8 @@ function theme_filefield_source_referenc
  *   Optional. A CCK field array for which to filter returned files.
  */
 function filefield_source_reference_get_files($filename, $field = NULL) {
-  if (!isset($field)) {
+$fields = array();
+  if (!isset($field['widget']['referenceable_fields'])) {
     foreach (content_fields() as $field) {
       if ($field['type'] == 'filefield') {
         $fields[] = $field;
@@ -181,15 +195,22 @@ function filefield_source_reference_get_
     }
   }
   else {
-    $fields = array($field);
+    foreach ($field['widget']['referenceable_fields'] as $field_name => $enabled) {
+      if ($enabled != '0') {
+        $fields[] = content_fields($field_name);
+      }
+    }
   }
-
+  unset($field);
   $files = array();
-  foreach ($fields as $field) {
-    $db_info = content_database_info($field);
-    $result = db_query("SELECT f.* FROM {" . $db_info['table'] . "} c INNER JOIN {files} f ON c." . $db_info['columns']['fid']['column'] . " = f.fid WHERE f.filename LIKE '%s%%' AND status = 1", $filename);
-    while ($file = db_fetch_object($result)) {
-      $files[$file->fid] = $file;
+
+  if (!empty($fields)) {
+    foreach ($fields as $field) {
+      $db_info = content_database_info($field);
+      $result = db_query("SELECT f.* FROM {" . $db_info['table'] . "} c INNER JOIN {files} f ON c." . $db_info['columns']['fid']['column'] . " = f.fid WHERE f.filename LIKE '%s%%' AND status = 1", $filename);
+      while ($file = db_fetch_object($result)) {
+        $files[$file->fid] = $file;
+      }
     }
   }
 
