From f1d626248c2444a9483644217169c7990f7f2f9d Mon Sep 17 00:00:00 2001 From: saint Date: Sat, 7 Sep 2024 01:34:11 +1000 Subject: [PATCH] v0.7 Huge re-write... hoping it may work... added debug output --- plugin.rb | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/plugin.rb b/plugin.rb index f0bd5b4..7cc7c12 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.6 +# version: 0.7 # authors: saint@federated.computer # url: https://gitea.federated.computer/saint/discourse-legacy_links.git @@ -28,22 +28,22 @@ after_initialize do post_id = extract_post_id_from_request if post_id - logger.warn "[DEBUG] Processing request for post_id: #{post_id}" + Rails.logger.warn "[DEBUG] Processing request for post_id: #{post_id}" post = find_post_by_custom_field(post_id) if post # Redirect to the post URL if found - logger.warn "[DEBUG] Redirecting to post with ID: #{post.id}" + Rails.logger.warn "[DEBUG] Redirecting to post with ID: #{post.id}" # redirect_to post_url(post) redirect_to_post(post) else # Return 404 if the post is not found - logger.warn "[ERROR] Post with original_gossamer_id #{post_id} not found" + Rails.logger.warn "[ERROR] Post with original_gossamer_id #{post_id} not found" render plain: 'Post not found', status: 404 end else # Handle cases where the post_id cannot be extracted - logger.warn "[ERROR] Could not extract post_id from the request" + Rails.logger.warn "[ERROR] Could not extract post_id from the request" render plain: 'Invalid URL', status: 400 end end @@ -57,33 +57,33 @@ after_initialize do # Check if post_id is passed as a query parameter (?post=post_id) if params[:post_id] post_id = params[:post_id].to_i - logger.warn "[DEBUG] Extracted post_id from query param: #{post_id}" + Rails.logger.warn "[DEBUG] Extracted post_id from query param: #{post_id}" return post_id end # Check for post_id in the URL path (e.g., /forum/.../P12345/) if match = request.path.match(%r{/forum/[^/]+/P(\d+)/?}) post_id = match[1].to_i - logger.warn "[DEBUG] Extracted post_id from URL path: #{post_id}" + Rails.logger.warn "[DEBUG] Extracted post_id from URL path: #{post_id}" return post_id end # Check for post_id in the query string (e.g., ?post=12345) if match = request.query_string.match(/post=(\d+)/) post_id = match[1].to_i - logger.warn "[DEBUG] Extracted post_id from query string (?post=): #{post_id}" + Rails.logger.warn "[DEBUG] Extracted post_id from query string (?post=): #{post_id}" return post_id end # Check for parent_post_id in the query string (e.g., ?parent_post_id=12345) if match = request.query_string.match(/parent_post_id=(\d+)/) post_id = match[1].to_i - logger.warn "[DEBUG] Extracted parent_post_id from query string: #{post_id}" + Rails.logger.warn "[DEBUG] Extracted parent_post_id from query string: #{post_id}" return post_id end # If no post_id was found in any format - logger.warn "[DEBUG] Could not extract post_id from request" + Rails.logger.warn "[DEBUG] Could not extract post_id from request" nil end @@ -92,7 +92,7 @@ after_initialize do # @param post_id [Integer] The extracted Gossamer forum post ID # @return [Post, nil] The corresponding Discourse post or nil if not found def find_post_by_custom_field(post_id) - logger.warn "[DEBUG] Searching for post with custom field 'original_gossamer_id' and value #{post_id}" + Rails.logger.warn "[DEBUG] Searching for post with custom field 'original_gossamer_id' and value #{post_id}" # Use ActiveRecord query to find the post by the custom field value post = Post.joins(:topic_custom_fields) @@ -100,9 +100,9 @@ after_initialize do .first if post - logger.warn "[DEBUG] Found post with ID: #{post.id} for original_gossamer_id: #{post_id}" + Rails.logger.warn "[DEBUG] Found post with ID: #{post.id} for original_gossamer_id: #{post_id}" else - logger.warn "[DEBUG] No post found for original_gossamer_id: #{post_id}" + Rails.logger.warn "[DEBUG] No post found for original_gossamer_id: #{post_id}" end post @@ -112,7 +112,7 @@ after_initialize do # @param post [Post] The Discourse post to redirect to def redirect_to_post(post) topic_url = "#{Discourse.base_url}/t/#{post.topic_id}/#{post.post_number}" - logger.warn "[DEBUG] Redirecting to topic URL: #{topic_url}" + Rails.logger.warn "[DEBUG] Redirecting to topic URL: #{topic_url}" redirect topic_url end end @@ -121,6 +121,9 @@ after_initialize do Discourse::Application.routes.append do get '/forum/*path' => 'discourse_legacy_links/custom_post#index' end + Discourse::Application.routes.append do + get '/forum' => 'discourse_legacy_links/custom_post#index' + end end end