? kml-location3.module.1.patch
Index: kml.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/kml/kml.module,v
retrieving revision 1.5.2.15
diff -u -p -r1.5.2.15 kml.module
--- kml.module	7 Aug 2008 11:22:29 -0000	1.5.2.15
+++ kml.module	9 Sep 2008 16:01:06 -0000
@@ -83,8 +83,13 @@ function kml_interface($a = NULL, $b = N
         kml_networklink($attributes);
       }
       else {
-        $cache_name = 'kml:node:' . $b;
-        $nodes = db_query("SELECT n.nid, n.type, n.status, n.uid, n.created, n.changed FROM {node} n WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) AND n.nid = %d", $b);
+        $cache_name = 'kml:node:'. $b;
+        if (function_exists('location_newapi')) {
+          $nodes = db_query("SELECT n.nid, n.created FROM {node} n INNER JOIN {location_instance} l ON n.vid = l.vid WHERE n.status = 1 AND n.nid = %d", $b);
+        }
+        else {
+          $nodes = db_query("SELECT n.nid, n.created FROM {node} n WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) AND n.nid = %d", $b);
+        }
         _kml_feed_check_access($nodes, $attributes, $cache_name);
       }
     }
@@ -96,7 +101,12 @@ function kml_interface($a = NULL, $b = N
     else {
       /* All location-enabled nodes */
       $cache_name = 'kml:node';
-      $nodes = db_query("SELECT n.nid, n.type, n.status, n.uid, n.created, n.changed FROM {node} n WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) ORDER BY %s %s", $sortmode, $sortorder);
+      if (function_exists('location_newapi')) {
+        $nodes = db_query("SELECT n.nid, n.created FROM {node} n INNER JOIN {location_instance} l ON n.vid = l.vid WHERE n.status = 1 ORDER BY %s %s", $sortmode, $sortorder);
+      }
+      else {
+        $nodes = db_query("SELECT n.nid, n.created FROM {node} n WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) ORDER BY %s %s", $sortmode, $sortorder);
+      }
       _kml_feed_check_access($nodes, $attributes, $cache_name);
     }
   }
@@ -113,8 +123,13 @@ function kml_interface($a = NULL, $b = N
         }
         else {
           /* All location-enabled nodes tagged with a certain term */
-          $cache_name = 'kml:term:' . $b;
-          $nodes = db_query("SELECT n.nid, n.type, n.status, n.uid, n.created, n.changed FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) AND tn.tid = %d ORDER BY %s %s", $b, $sortmode, $sortorder);
+          $cache_name = 'kml:term:'. $b;
+          if (function_exists('location_newapi')) {
+            $nodes = db_query("SELECT n.nid, n.created FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid INNER JOIN {location_instance} l ON n.vid = l.vid WHERE n.status = 1 AND tn.tid = %d ORDER BY %s %s", $b, $sortmode, $sortorder);
+          }
+          else {
+            $nodes = db_query("SELECT n.nid, n.created FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) AND tn.tid = %d ORDER BY %s %s", $b, $sortmode, $sortorder);
+          }
           $attributes['title'] = t('Tag: %tag', array('%tag' => $tag));
           $attributes['description'] = t('Nodes tagged with %tag', array('%tag' => $tag));
           _kml_feed_check_access($nodes, $attributes, $cache_name);
@@ -139,8 +154,13 @@ function kml_interface($a = NULL, $b = N
         }
         else {
           /* All location-enabled nodes in a certain group */
-          $cache_name = 'kml:group:' . $b;
-          $nodes = db_query("SELECT n.nid, n.type, n.status, n.uid, n.created, n.changed FROM {node} n INNER JOIN {node_access} na ON n.nid = na.nid WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) AND na.gid = %d ORDER BY %s %s", $b, $sortmode, $sortorder);
+          $cache_name = 'kml:group:'. $b;
+          if (function_exists('location_newapi')) {
+            $nodes = db_query("SELECT n.nid, n.created FROM {node} n INNER JOIN {node_access} na ON n.nid = na.nid INNER JOIN {location_instance} l ON n.vid = l.vid WHERE n.status = 1 AND na.gid = %d ORDER BY %s %s", $b, $sortmode, $sortorder);
+          }
+          else {
+            $nodes = db_query("SELECT n.nid, n.created FROM {node} n INNER JOIN {node_access} na ON n.nid = na.nid WHERE n.status = 1 AND n.vid IN (SELECT l.eid FROM {location} l WHERE l.type = 'node' AND l.eid = n.vid) AND na.gid = %d ORDER BY %s %s", $b, $sortmode, $sortorder);
+          }
           $attributes['title'] = t('Group: %group', array('%group' => $group_name));
           $attributes['description'] = t('Nodes in %group', array('%group' => $group_name));
           _kml_feed_check_access($nodes, $attributes, $cache_name);
