Index: nodereferrer.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodereferrer/nodereferrer.module,v
retrieving revision 1.20
diff -u -p -r1.20 nodereferrer.module
--- nodereferrer.module	22 Sep 2009 11:35:59 -0000	1.20
+++ nodereferrer.module	31 Oct 2009 14:10:38 -0000
@@ -391,7 +391,8 @@ function nodereferrer_referrers($nid,  $
       $db_info = content_database_info($fields[$fieldname]);
 
       if ($translations) {
-        $query = "SELECT       n.nid, n.vid, n.title
+        //Original Query
+       /* $query = "SELECT       n.nid, n.vid, n.title
                   FROM         {" . $db_info['table'] . "} nr
                   INNER JOIN   {node} current_node ON current_node.nid = %d
                   INNER JOIN   {node} n ON n.vid = nr.vid AND n.status = 1 " . $filter_nodetypes . "
@@ -399,7 +400,45 @@ function nodereferrer_referrers($nid,  $
                   WHERE        (current_node.tnid = 0 AND nr." . $db_info['columns']['nid']['column'] . " = current_node.nid)
                                OR
                                (current_node.tnid > 0 AND nr." . $db_info['columns']['nid']['column'] . " = translations.nid)
-                  ORDER BY     " . $order;
+                  ORDER BY     " . $order;*/
+        
+        //This Query gets all the untranslated reffering nodes (n.tnid = 0)
+        //Thats why we run it through db_rewrite_sql SQL with array('view' => true) this switches off i18n for this query
+        $query = "SELECT       n.nid, n.vid, n.title
+                  FROM         {" . $db_info['table'] . "} nr
+                  INNER JOIN   {node} current_node ON  current_node.nid = %d
+                  INNER JOIN   {node} n ON n.vid = nr.vid AND n.status = 1 " . $filter_nodetypes . "
+                  LEFT JOIN    {node} translations ON current_node.tnid > 0 AND translations.tnid = current_node.tnid
+                  WHERE        n.tnid = 0 
+                                AND (
+                                  (current_node.tnid = 0 AND nr." . $db_info['columns']['nid']['column'] . " = current_node.nid)
+                                  OR
+                                   (current_node.tnid > 0 AND nr." . $db_info['columns']['nid']['column'] . " = translations.nid)
+                                )
+                  ";
+
+        $query = db_rewrite_sql($query,'n','nid',array('view' => true));
+        $result = db_query($query, $nid); 
+        while ($value = db_fetch_array($result)) {
+          // avoid duplicate referrers by using nid as key
+          $values[$value['nid']] = $value;
+        }
+        
+        //this Query gets the translated refferers and also respects the language settings later.
+        //note: this only includes nodes with translation (n.tnid > 0)
+        $query = "SELECT       n.nid, n.vid, n.title
+                  FROM         {" . $db_info['table'] . "} nr
+                  INNER JOIN   {node} current_node ON current_node.nid =  %d
+                  INNER JOIN   {node} n ON n.vid = nr.vid AND n.status = 1 " . $filter_nodetypes . "
+                  LEFT JOIN    {node} translations ON current_node.tnid > 0 AND translations.tnid = current_node.tnid
+                  WHERE        n.tnid > 0 
+                                AND (
+                                  (current_node.tnid = 0 AND nr." . $db_info['columns']['nid']['column'] . " = current_node.nid)
+                                  OR
+                                   (current_node.tnid > 0 AND nr." . $db_info['columns']['nid']['column'] . " = translations.nid)
+                                )
+                    ";
+                  
       }
       else {
         $query = "SELECT       n.nid, n.vid, n.title
