]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/api_controller.rb
Pass a list of visible nodes when generating XML for a way. Closes #553.
[rails.git] / app / controllers / api_controller.rb
index 2e693042e98a70c4e1efd04d85d751c964526796..cec8cf2bf523b644bbdb23c25511e68c34269f55 100644 (file)
@@ -201,12 +201,17 @@ class ApiController < ApplicationController
     # collect relationships. currently done in one big block at the end;
     # may need to move this upwards if people want automatic completion of
     # relationships, i.e. deliver referenced objects like we do with ways...
-    relations = Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
-        "e.visible=1 and " +
-        "em.id = e.id and em.member_type='node' and em.member_id in (#{visible_nodes.keys.join(',')})")
-    relations += Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
-        "e.visible=1 and " +
-        "em.id = e.id and em.member_type='way' and em.member_id in (#{way_ids.join(',')})")
+    relations = Array.new
+    if visible_nodes.length > 0
+        relations += Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
+            "e.visible=1 and " +
+            "em.id = e.id and em.member_type='node' and em.member_id in (#{visible_nodes.keys.join(',')})")
+    end
+    if way_ids.length > 0
+        relations += Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
+            "e.visible=1 and " +
+            "em.id = e.id and em.member_type='way' and em.member_id in (#{way_ids.join(',')})")
+    end
     # we do not normally return the "other" partners referenced by an relation, 
     # e.g. if we return a way A that is referenced by relation X, and there's 
     # another way B also referenced, that is not returned. But we do make