slight revert changes
authorRichard Fairhurst <richard@systemed.net>
Fri, 30 Nov 2007 18:40:57 +0000 (18:40 +0000)
committerRichard Fairhurst <richard@systemed.net>
Fri, 30 Nov 2007 18:40:57 +0000 (18:40 +0000)
app/controllers/amf_controller.rb
public/potlatch/potlatch.swf

index 20d667b8e4171c5d0ac79d1a842050cb9cbe8bc9..fcee6db3eed0e4a98d6ce574d4bc89368a73547f 100644 (file)
@@ -364,6 +364,7 @@ EOF
          FROM ways,users
         WHERE ways.id=#{wayid}
           AND ways.user_id=users.id
+          AND ways.visible=1
         ORDER BY version DESC
        EOF
        histlist=ActiveRecord::Base.connection.select_all(sql)
@@ -686,28 +687,27 @@ def readwayquery_old(id,version,historic)
   EOF
   rows=ActiveRecord::Base.connection.select_all(sql)
 
-  # if historic (full revert), get the old version of each node,
-  # and use this (though with a new id) if it differs from the current one
+  # if historic (full revert), get the old version of each node
+  # - if it's in another way now, generate a new id
+  # - if it's not in another way, use the old ID
   if historic then
        rows.each_index do |i|
          sql=<<-EOF
-         SELECT latitude*0.0000001 AS latitude,longitude*0.0000001 AS longitude,tags 
-           FROM nodes 
-          WHERE id=#{rows[i]['id']} 
-            AND timestamp<="#{waytime}" 
-          ORDER BY timestamp DESC 
+         SELECT latitude*0.0000001 AS latitude,longitude*0.0000001 AS longitude,tags,cwn.id AS currentway 
+           FROM nodes n
+   LEFT JOIN current_way_nodes cwn
+                 ON cwn.node_id=n.id
+          WHERE n.id=#{rows[i]['id']} 
+            AND n.timestamp<="#{waytime}" 
+                AND cwn.id!=#{id} 
+          ORDER BY n.timestamp DESC 
           LIMIT 1
          EOF
          row=ActiveRecord::Base.connection.select_one(sql)
          unless row.nil? then
            nx=row['longitude'].to_f
            ny=row['latitude'].to_f
-           if (nx!=rows[i]['longitude'].to_f or ny!=rows[i]['latitude'].to_f or row['tags']!=rows[i]['tags']) then
-                 rows[i]['id']=-1
-                 # This generates a new node id if x/y/tags differ from current node.
-                 # Strictly speaking, it need only do this for uniquenodes, but we're
-                 # not generating uniquenodes for historic ways (yet!).
-           end
+           if (row['currentway']) then rows[i]['id']=-1 end
                rows[i]['longitude']=nx
                rows[i]['latitude' ]=ny
                rows[i]['tags'     ]=row['tags']
index d78aace575216869b57c78c9d72486bcbaf09e65..bfbdc2c1de909a1e317bba98e41321870fc48ffa 100755 (executable)
Binary files a/public/potlatch/potlatch.swf and b/public/potlatch/potlatch.swf differ