mirror of
https://github.com/discourse/discourse.git
synced 2025-09-06 10:50:21 +08:00
FIX: Update and rebake uses of the old centralized avatar service (#16086)
This URL was originally updated in 89cb537fae
. However, some sites are not using the proxy, and have configured their forum to hotlink images directly to avatars.discourse.org.
We intend to shut down this domain in favor of `avatars.discourse-cdn.com`, so this migration will re-write any matching site setting values and queue affected posts for rebaking.
This commit is contained in:
parent
36e7163d16
commit
241e34e6cf
2 changed files with 57 additions and 0 deletions
27
db/migrate/20220302163246_update_avatar_service_domain.rb
Normal file
27
db/migrate/20220302163246_update_avatar_service_domain.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class UpdateAvatarServiceDomain < ActiveRecord::Migration[6.1]
|
||||
def up
|
||||
existing_value = DB.query_single("SELECT value FROM site_settings WHERE name = 'external_system_avatars_url'")&.[](0)
|
||||
|
||||
if existing_value&.include?("avatars.discourse.org")
|
||||
new_value = DB.query_single(<<~SQL)&.[](0)
|
||||
UPDATE site_settings
|
||||
SET value = REPLACE(value, 'avatars.discourse.org', 'avatars.discourse-cdn.com')
|
||||
WHERE name = 'external_system_avatars_url'
|
||||
AND value LIKE '%avatars.discourse.org%'
|
||||
RETURNING value
|
||||
SQL
|
||||
|
||||
DB.exec <<~SQL, previous: existing_value, new: new_value
|
||||
INSERT INTO user_histories
|
||||
(action, subject, previous_value, new_value, admin_only, updated_at, created_at, acting_user_id)
|
||||
VALUES (3, 'external_system_avatars_url', :previous, :new, true, NOW(), NOW(), -1)
|
||||
SQL
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
# Nothing to do
|
||||
end
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RebakeOldAvatarServiceUrls < ActiveRecord::Migration[6.1]
|
||||
def up
|
||||
# Only need to run this migration if 20220302163246
|
||||
# changed the site setting. We can determine that
|
||||
# by checking for a user_histories entry in the last
|
||||
# month
|
||||
|
||||
recently_changed = DB.query_single(<<~SQL).[](0)
|
||||
SELECT 1
|
||||
FROM user_histories
|
||||
WHERE action = 3
|
||||
AND subject = 'external_system_avatars_url'
|
||||
AND previous_value LIKE '%avatars.discourse.org%'
|
||||
AND created_at > NOW() - INTERVAL '1 month'
|
||||
SQL
|
||||
|
||||
if recently_changed
|
||||
execute <<~SQL
|
||||
UPDATE posts SET baked_version = 0
|
||||
WHERE cooked LIKE '%avatars.discourse.org%'
|
||||
SQL
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
# Nothing to do
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue