]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/concerns/object_metadata.rb
Convert some model mixins to concerns
[rails.git] / app / models / concerns / object_metadata.rb
diff --git a/app/models/concerns/object_metadata.rb b/app/models/concerns/object_metadata.rb
new file mode 100644 (file)
index 0000000..dcfde88
--- /dev/null
@@ -0,0 +1,43 @@
+module ObjectMetadata
+  extend ActiveSupport::Concern
+
+  def add_metadata_to_xml_node(el, osm, changeset_cache, user_display_name_cache)
+    el["changeset"] = osm.changeset_id.to_s
+    el["redacted"] = osm.redaction.id.to_s if osm.redacted?
+    el["timestamp"] = osm.timestamp.xmlschema
+    el["version"] = osm.version.to_s
+    el["visible"] = osm.visible.to_s
+
+    if changeset_cache.key?(osm.changeset_id)
+      # use the cache if available
+    else
+      changeset_cache[osm.changeset_id] = osm.changeset.user_id
+    end
+
+    user_id = changeset_cache[osm.changeset_id]
+
+    if user_display_name_cache.key?(user_id)
+      # use the cache if available
+    elsif osm.changeset.user.data_public?
+      user_display_name_cache[user_id] = osm.changeset.user.display_name
+    else
+      user_display_name_cache[user_id] = nil
+    end
+
+    unless user_display_name_cache[user_id].nil?
+      el["user"] = user_display_name_cache[user_id]
+      el["uid"] = user_id.to_s
+    end
+  end
+
+  def add_tags_to_xml_node(el, tags)
+    tags.each do |tag|
+      tag_el = XML::Node.new("tag")
+
+      tag_el["k"] = tag.k
+      tag_el["v"] = tag.v
+
+      el << tag_el
+    end
+  end
+end