Index: userreference.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/userreference.module,v
retrieving revision 1.22
diff -u -r1.22 userreference.module
--- userreference.module	1 May 2006 15:45:29 -0000	1.22
+++ userreference.module	2 May 2006 12:57:50 -0000
@@ -195,3 +195,66 @@
 
   return $values;
 }
+
+/**
+ * Implementation of hook_user().
+ */
+function userreference_user($op, &$edit, &$account, $category = NULL) {
+    
+  switch ($op) {
+  case ("load"): 
+    // find cck userreference field tables
+    // search through them for matching user ids and load those nodes
+    $additions = array();
+    $result = db_query("SELECT * FROM {node_field} nf INNER JOIN {node_field_instance} ni ON nf.field_name = ni.field_name WHERE nf.type='userreference'");
+    while ($field = db_fetch_array($result)) {
+      $settings = unserialize($field['widget_settings']);
+      $db_info = content_database_info($field);
+      $ids = db_query("SELECT vid FROM {". $db_info['table'] ."} WHERE ". $db_info['columns']['uid']['column'] ."=". $account->uid);
+      while ($data = db_fetch_object($ids)) {
+        $node = node_load($data->vid);
+        $node->reverse_link = $settings['reverse_link'];
+        $additions[] = $node;
+      }
+    }
+    $account->content = $additions;
+    return;
+    break;
+
+  case("view"):
+    $node_types = (array) _content_types();
+    $links = array();
+    foreach ($account->content as $link => $node) {
+      if ($node->reverse_link) {
+        $links[] = array('title' => $node_types[$node->type]->label, 'value' => l($node->title, 'node/'. $node->nid));
+      }
+    }
+    return array(t('Related Content') => $links);
+    break;
+  }
+}
+
+/**
+ * Implementation of hook_field_settings().
+ */
+function userreference_widget_settings($op, $field) {
+  switch ($op) {
+    case 'form':
+      $form = array();
+      $form['reverse_link'] = array(
+        '#type' => 'radios',
+        '#title' => t('Reverse Link'),
+        '#default_value' => isset($field['reverse_link']) ? $field['reverse_link'] : 0,
+        '#options' => array(0 => t('No'), 1 => t('Yes')),
+        '#required' => TRUE,
+        '#description' => t('If selected, a reverse link back to the referencing node will displayed on the referenced user record.'),
+      );
+      return $form;
+      break;
+
+    case 'save':
+      return array('reverse_link');
+      break;
+  }
+}
+
