end
bodies=AMF.getint(req) # Read number of bodies
- render :content_type => "application/x-amf", :text => proc { |response, output|
+
+ self.status = :ok
+ self.content_type = Mime::AMF
+ self.response_body = proc { |response, output|
a,b=bodies.divmod(256)
output.write 0.chr+0.chr+0.chr+0.chr+a.chr+b.chr
bodies.times do # Read each body
end
bodies=AMF.getint(req) # Read number of bodies
- render :content_type => "application/x-amf", :text => proc { |response, output|
+
+ self.status = :ok
+ self.content_type = Mime::AMF
+ self.response_body = proc { |response, output|
a,b=bodies.divmod(256)
output.write 0.chr+0.chr+0.chr+0.chr+a.chr+b.chr
bodies.times do # Read each body
relations = sql_find_relations_in_area_and_ways(xmin, ymin, xmax, ymax, ways.collect {|x| x[0]})
else
# find the way ids in an area
- nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => ["current_nodes.visible = ?", true], :include => :ways)
+ nodes_in_area = Node.bbox(ymin, xmin, ymax, xmax).visible.includes(:ways)
ways = nodes_in_area.inject([]) { |sum, node|
visible_ways = node.ways.select { |w| w.visible? }
sum + visible_ways.collect { |w| [w.id,w.version] }
points = nodes_not_used_in_area.collect { |n| [n.id, n.lon, n.lat, n.tags, n.version] }.uniq
# find the relations used by those nodes and ways
- relations = Relation.find_for_nodes(nodes_in_area.collect { |n| n.id }, :conditions => {:visible => true}) +
- Relation.find_for_ways(ways.collect { |w| w[0] }, :conditions => {:visible => true})
+ relations = Relation.nodes(nodes_in_area.collect { |n| n.id }).visible +
+ Relation.ways(ways.collect { |w| w[0] }).visible
relations = relations.collect { |relation| [relation.id,relation.version] }.uniq
end
# see /config/application.yml
check_boundaries(xmin, ymin, xmax, ymax)
- nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => ["current_ways.visible = ?", false], :include => :ways_via_history)
- way_ids = nodes_in_area.collect { |node| node.ways_via_history_ids }.flatten.uniq
+ nodes_in_area = Node.bbox(ymin, xmin, ymax, xmax).joins(:ways_via_history).where(:current_ways => { :visible => false })
+ way_ids = nodes_in_area.collect { |node| node.ways_via_history.invisible.collect { |way| way.id } }.flatten.uniq
[0,'',way_ids]
end
# 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(:first, :conditions => { :id => wayid }, :include => { :nodes => :node_tags })
+ way = Way.where(:id => wayid).preload(:nodes => :node_tags).first
# check case where way has been deleted or doesn't exist
return [-4, 'way', wayid] if way.nil? or !way.visible
amf_handle_error_with_timeout("'getway_old' #{id}, #{timestamp}", 'way',id) do
if timestamp == ''
# undelete
- old_way = OldWay.find(:first, :conditions => ['visible = ? AND id = ?', true, id], :order => 'version DESC')
+ old_way = OldWay.where(:visible => true, :id => id).order("version DESC").first
points = old_way.get_nodes_undelete unless old_way.nil?
else
begin
# revert
timestamp = DateTime.strptime(timestamp.to_s, "%d %b %Y, %H:%M:%S")
- old_way = OldWay.find(:first, :conditions => ['id = ? AND timestamp <= ?', id, timestamp], :order => 'timestamp DESC')
+ old_way = OldWay.where("id = ? AND timestamp <= ?", id, timestamp).order("timestamp DESC").first
unless old_way.nil?
points = old_way.get_nodes_revert(timestamp)
if !old_way.visible
if !user then return -1,"You must be logged in to search for GPX traces." end
unless user.active_blocks.empty? then return -1,t('application.setup_user_auth.blocked') end
- gpxs = []
- if searchterm.to_i>0 then
- gpx = Trace.find(searchterm.to_i, :conditions => ["visible=? AND (public=? OR user_id=?)",true,true,user.id] )
- if gpx then
- gpxs.push([gpx.id, gpx.name, gpx.description])
- end
+ query = Trace.visible_to(user)
+ if searchterm.to_i > 0 then
+ query = query.where(:id => searchterm.to_i)
else
- Trace.find(:all, :limit => 21, :conditions => ["visible=? AND (public=? OR user_id=?) AND MATCH(name) AGAINST (?)",true,true,user.id,searchterm] ).each do |gpx|
- gpxs.push([gpx.id, gpx.name, gpx.description])
- end
+ query = query.where("MATCH(name) AGAINST (?)", searchterm).limit(21)
+ end
+ gpxs = query.collect do |gpx|
+ [gpx.id, gpx.name, gpx.description]
end
[0,'',gpxs]
end
def getrelation(relid) #:doc:
amf_handle_error("'getrelation' #{relid}" ,'relation',relid) do
- rel = Relation.find(:first, :conditions => { :id => relid })
+ rel = Relation.where(:id => relid).first
return [-4, 'relation', relid] if rel.nil? or !rel.visible
[0, '', relid, rel.tags, rel.members, rel.version]
def findrelations(searchterm)
rels = []
if searchterm.to_i>0 then
- rel = Relation.find(searchterm.to_i)
+ rel = Relation.where(:id => searchterm.to_i).first
if rel and rel.visible then
rels.push([rel.id, rel.tags, rel.members, rel.version])
end
else
- RelationTag.find(:all, :limit => 11, :conditions => ["v like ?", "%#{searchterm}%"] ).each do |t|
+ RelationTag.where("v like ?", "%#{searchterm}%").limit(11).each do |t|
if t.relation.visible then
rels.push([t.relation.id, t.relation.tags, t.relation.members, t.relation.version])
end
n = Node.find(id)
v = n.version
unless timestamp == ''
- n = OldNode.find(:first, :conditions => ['id = ? AND timestamp <= ?', id, timestamp], :order => 'timestamp DESC')
+ n = OldNode.where("id = ? AND timestamp <= ?", id, timestamp).order("timestamp DESC").first
end
if n