]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/amf_controller.rb
Reject 0/1-length ways.
[rails.git] / app / controllers / amf_controller.rb
index 9592cf94100e61b35f98074e0f411d74dfe929fb..84e9f4537d7092d3b445566b8cc65e7b675473a7 100644 (file)
@@ -58,8 +58,8 @@ class AmfController < ApplicationController
       when 'getway_old';               results[index]=AMF.putdata(index,getway_old(args))
       when 'getway_history';   results[index]=AMF.putdata(index,getway_history(args))
       when 'putway';                   r=putway(args,renumberednodes)
-        renumberednodes=r[3]
-        results[index]=AMF.putdata(index,r)
+                                                               renumberednodes=r[3]
+                                                               results[index]=AMF.putdata(index,r)
       when 'deleteway';                        results[index]=AMF.putdata(index,deleteway(args))
       when 'putpoi';                   results[index]=AMF.putdata(index,putpoi(args))
       when 'getpoi';                   results[index]=AMF.putdata(index,getpoi(args))
@@ -167,7 +167,11 @@ class AmfController < ApplicationController
 
     RAILS_DEFAULT_LOGGER.info("  Message: getway, id=#{wayid}")
 
+    # Ideally we would do ":include => :nodes" here but if we do that
+    # then rails only seems to return the first copy of a node when a
+    # way includes a node more than once
     way = Way.find(wayid)
+
     long_array = []
     lat_array = []
     points = []
@@ -289,11 +293,13 @@ class AmfController < ApplicationController
 
     RAILS_DEFAULT_LOGGER.info("  Message: putway, id=#{originalway}")
 
-    # -- Temporary check for null IDs
+    # -- Check for null IDs or short ways
 
     points.each do |a|
       if a[2]==0 or a[2].nil? then return -2,"Server error - node with id 0 found in way #{originalway}." end
     end
+    
+    if points.length<2 then return -2,"Server error - way is only #{points.length} points long." end
 
     # -- 3.    read original way into memory
 
@@ -556,7 +562,7 @@ class AmfController < ApplicationController
 
   # Get the latest version id of a way
   def getlastversion(id,version) #:doc:
-    old_way = OldWay.find(:first, :conditions => ['id = ?' , id], :order => 'version DESC')
+    old_way = OldWay.find(:first, :conditions => ['visible=1 AND id=?' , id], :order => 'version DESC')
     old_way.version
   end