discourse/db/migrate/20220302163246_update_avatar_service_domain.rb
David Taylor 241e34e6cf
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.
2022-03-07 09:45:20 +00:00

28 lines
945 B
Ruby

# 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