Index: nodereference.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/nodereference.module,v
retrieving revision 1.15
diff -u -r1.15 nodereference.module
--- nodereference.module	6 Apr 2006 03:07:47 -0000	1.15
+++ nodereference.module	8 Apr 2006 21:11:20 -0000
@@ -17,6 +17,13 @@
 }
 
 /**
+ * Implementation of hook_perm().
+ */
+function nodereference_perm() {
+  return array('administer node references');
+}
+
+/**
  * Implementation of hook_menu().
  */
 function nodereference_menu($may_cache) {
@@ -53,13 +60,22 @@
         '#default_value' => $field['referenceable_types'],
         '#options' => node_get_types(),
       );
+      $form['filter'] = array(
+        '#type' => 'checkboxes',
+        '#title' => t('Content Filters'),
+        'owner' => array(
+          '#type' => 'checkbox',
+          '#title' => t('Limit to content owned by the same user'),
+          '#default_value' => $field['filter']['owner'],
+        ),
+      );
       return $form;
 
     case 'validate':
       break;
 
     case 'save':
-      return array('referenceable_types');
+      return array('referenceable_types', 'filter');
     
     case 'database columns':
       $columns = array(
@@ -221,6 +237,7 @@
  * Fetch an array of all candidate referenced nodes, for use in presenting the selection form to the user.
  */
 function _nodereference_potential_references($field, $return_full_nodes = FALSE) {
+  global $user;
   $related_types = array();
 
   foreach ($field['referenceable_types'] as $related_type) {
@@ -230,6 +247,10 @@
   }
 
   $related_clause = implode(' OR ', $related_types);
+  
+  if ($field['filter']['owner'] && $user->uid && !user_access('administer node references')) {
+    $related_clause .= ' AND n.uid = '.$user->uid;
+  }
 
   if (!count($related_types)) {
     return array();
