Index: kml.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/kml/kml.module,v
retrieving revision 1.5.2.9
diff -u -r1.5.2.9 kml.module
--- kml.module	20 Sep 2007 17:27:06 -0000	1.5.2.9
+++ kml.module	18 Jun 2008 19:01:36 -0000
@@ -83,7 +83,12 @@
         kml_networklink($attributes);
       }
       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);
+        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($nodes, $attributes);
       }
     }
@@ -94,7 +99,12 @@
     }
     else {
       /* All location-enabled nodes */
-      $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);
+      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($nodes, $attributes);
     }
   }
@@ -111,7 +121,12 @@
         }
         else {
           /* All location-enabled nodes tagged with a certain term */
-          $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);
+          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($nodes, $attributes);
@@ -136,7 +151,12 @@
         }
         else {
           /* All location-enabled nodes in a certain group */
-          $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);
+          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($nodes, $attributes);
@@ -550,12 +570,13 @@
  */
 function kml_format_feed($nodes = array(), $channel = array()) {
   $items = '';
+  $nodes_array = array();
   if (is_array($nodes)) {
     foreach ($nodes as $node) {
       $nodes_array[] = $node['node'];
     }
   }
-  elseif (is_resource($nodes)) {  // required for kml/node
+  elseif (db_num_rows($nodes)) {  // required for kml/node
     while ($node = db_fetch_object($nodes)) {
       $nodes_array[] = $node;
     }

