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