0.48 More rewrite based on recent success with blocker.

This commit is contained in:
David Sainty 2024-09-09 12:11:39 +10:00
parent 66ff59a915
commit edb05aa37b

View File

@ -4,7 +4,7 @@
# name: discourse-legacy_links # name: discourse-legacy_links
# about: A plugin to handle legacy Gossamer Forums URLs # about: A plugin to handle legacy Gossamer Forums URLs
# version: 0.47 # version: 0.48
# authors: saint@federated.computer # authors: saint@federated.computer
# url: https://gitea.federated.computer/saint/discourse-legacy_links.git # url: https://gitea.federated.computer/saint/discourse-legacy_links.git
@ -64,20 +64,34 @@ after_initialize do
# Finds a post by looking up the custom field on the associated topic # Finds a post by looking up the custom field on the associated topic
def find_post_by_custom_field(post_id) def find_post_by_custom_field(post_id)
Rails.logger.info("DiscourseLegacyLinks: Searching for post with original_gossamer_id: #{post_id}") Rails.logger.info("DiscourseLegacyLinks: Searching for post with original_gossamer_id: #{post_id}")
topic = Topic.joins(:custom_fields) post_custom_field = PostCustomField.find_by(name: 'original_gossamer_id', value: post_id.to_s)
.where(topic_custom_fields: { name: 'original_gossamer_id', value: post_id.to_s })
.first if post_custom_field
post = post_custom_field.post
if topic Rails.logger.info("DiscourseLegacyLinks: Found post with id: #{post.id}")
post = topic.posts.first
Rails.logger.info("DiscourseLegacyLinks: Found topic #{topic.id}, first post id: #{post&.id || 'nil'}")
post post
else else
Rails.logger.warn("DiscourseLegacyLinks: No topic found with original_gossamer_id: #{post_id}") Rails.logger.warn("DiscourseLegacyLinks: No post found with original_gossamer_id: #{post_id}")
nil nil
end end
end end
# def find_post_by_custom_field(post_id)
# Rails.logger.info("DiscourseLegacyLinks: Searching for post with original_gossamer_id: #{post_id}")
#
# topic = Topic.joins(:custom_fields)
# .where(topic_custom_fields: { name: 'original_gossamer_id', value: post_id.to_s })
# .first
#
# if topic
# post = topic.posts.first
# Rails.logger.info("DiscourseLegacyLinks: Found topic #{topic.id}, first post id: #{post&.id || 'nil'}")
# post
# else
# Rails.logger.warn("DiscourseLegacyLinks: No topic found with original_gossamer_id: #{post_id}")
# nil
# end
# end
# Redirects to the URL of the found post # Redirects to the URL of the found post
def redirect_to_post(post) def redirect_to_post(post)