diff --git a/plugin.rb b/plugin.rb index 981da48..c1d5c7f 100644 --- a/plugin.rb +++ b/plugin.rb @@ -4,7 +4,7 @@ # name: discourse-legacy_links # about: A plugin to handle legacy Gossamer Forums URLs -# version: 0.48 +# version: 0.49 # authors: saint@federated.computer # url: https://gitea.federated.computer/saint/discourse-legacy_links.git @@ -52,10 +52,21 @@ after_initialize do # Attempts to extract a post ID from various parts of the request def extract_post_id_from_request +# post_id = params[:post_id].presence || +# request.path.match(%r{/forum/[^/]+/P(\d+)/?})&.[](1) || +# request.query_string.match(/post=(\d+)/)&.[](1) || +# request.query_string.match(/parent_post_id=(\d+)/)&.[](1) +# post_id = params[:post_id].presence || +# request.path.match(%r{/P(\d+)/?})&. || # Matches URLs like /P40796/ +# request.path.match(%r{/forum/ || # Matches URLs like /forum/.../P6751045/ +# request.query_string.match(/post=(\d+)/)&. || # Matches URLs with ?post= in query string +# request.query_string.match(/parent_post_id=(\d+)/)&. || # Matches URLs with ?parent_post_id= in query string +# request.path.match(%r{/forum/.*?_P(\d+)/?})&. # Matches URLs like /forum/..._P6751045/ post_id = params[:post_id].presence || - request.path.match(%r{/forum/[^/]+/P(\d+)/?})&.[](1) || - request.query_string.match(/post=(\d+)/)&.[](1) || - request.query_string.match(/parent_post_id=(\d+)/)&.[](1) + request.path.match(%r{/P(\d+)(?:/|$)})&. || # Matches URLs like /P40796/ or /P40796 (no trailing slash) + request.path.match(%r{/forum/ || # Matches URLs like /forum/.../P6751045/ or /forum/.../P6751045 + request.query_string.match(/post=(\d+)/)&. || # Matches URLs with ?post= in query string + request.query_string.match(/parent_post_id=(\d+)/)&. # Matches URLs with ?parent_post_id= in query string Rails.logger.info("DiscourseLegacyLinks: Extracted raw post_id: #{post_id || 'nil'}") post_id.to_i if post_id