+
+ # ----- getway_old (objectname, way, version, baselong, basey, masterscale)
+ # returns old version of way
+
+ def getway_old(args)
+ RAILS_DEFAULT_LOGGER.info(" Message: getway_old (server is #{SERVER_URL})")
+ if SERVER_URL=="www.openstreetmap.org" then return -1,"Revert is not currently enabled on the OpenStreetMap server." end
+
+ objname,wayid,version,baselong,basey,masterscale=args
+ wayid = wayid.to_i
+ version = version.to_i
+ xmin = ymin = 999999
+ xmax = ymax = -999999
+ points=[]
+ if version<0
+ historic=false
+ version=getlastversion(wayid,version)
+ else
+ historic=true
+ end
+ readwayquery_old(wayid,version,historic).each { |row|
+ points<<[long2coord(row['longitude'].to_f,baselong,masterscale),lat2coord(row['latitude'].to_f,basey,masterscale),row['id'].to_i,row['visible'].to_i,tag2array(row['tags'].to_s)]
+ xmin=[xmin,row['longitude'].to_f].min
+ xmax=[xmax,row['longitude'].to_f].max
+ ymin=[ymin,row['latitude' ].to_f].min
+ ymax=[ymax,row['latitude' ].to_f].max
+ }
+
+ # get tags from this version
+ attributes={}
+ attrlist=ActiveRecord::Base.connection.select_all "SELECT k,v FROM way_tags WHERE id=#{wayid} AND version=#{version}"
+ attrlist.each {|a| attributes[a['k'].gsub(':','|')]=a['v'] }
+ attributes['history']="Retrieved from v"+version.to_s
+
+ [0,objname,points,attributes,xmin,xmax,ymin,ymax,version]
+ end
+
+ # ----- getway_history (way)
+ # returns array of previous versions (version,timestamp,visible,user)
+ # should also show 'created_by'
+
+ def getway_history(wayid)
+ history=[]
+ sql=<<-EOF
+ SELECT version,timestamp,visible,display_name,data_public
+ FROM ways,users
+ WHERE ways.id=#{wayid}
+ AND ways.user_id=users.id
+ ORDER BY version DESC
+ EOF
+ histlist=ActiveRecord::Base.connection.select_all(sql)
+ histlist.each { |row|
+ if row['data_public'] then user=row['display_name'] else user='anonymous' end
+ history<<[row['version'],row['timestamp'],row['visible'],user]
+ }
+ [history]
+ end