Index: userreference.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/userreference.module,v retrieving revision 1.22.2.9 diff -u -p -r1.22.2.9 userreference.module --- userreference.module 21 Aug 2006 03:06:45 -0000 1.22.2.9 +++ userreference.module 13 Oct 2006 23:36:31 -0000 @@ -280,3 +280,66 @@ function _userreference_filter_handler($ $options = array_merge($options, _userreference_potential_references($filterinfo['extra']['field'])); return $options; } + +/** + * 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_widget_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; + } +} +