-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