mirror of
https://github.com/discourse/discourse.git
synced 2024-12-30 08:33:45 +08:00
b80765f1f4
* DEV: Remove enable_whispers site setting Whispers are enabled as long as there is at least one group allowed to whisper, see whispers_allowed_groups site setting. * DEV: Always enable whispers for admins if at least one group is allowed.
42 lines
1.4 KiB
Ruby
42 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class RemoveEnableWhispersSiteSetting < ActiveRecord::Migration[7.0]
|
|
def up
|
|
# If enable_whispers was true, insert whispers_allowed_groups or add
|
|
# staff group to whispers_allowed_groups. This is necessary to keep
|
|
# the current behavior which has a bypass for staff members.
|
|
execute <<~SQL
|
|
INSERT INTO site_settings(name, data_type, value, created_at, updated_at)
|
|
SELECT 'whispers_allowed_groups', '20', '3', created_at, NOW()
|
|
FROM site_settings
|
|
WHERE name = 'enable_whispers' AND value = 't'
|
|
ON CONFLICT DO NOTHING
|
|
SQL
|
|
|
|
execute <<~SQL
|
|
UPDATE site_settings
|
|
SET value = array_to_string(array_append(string_to_array(value, '|'), '3'), '|')
|
|
WHERE name = 'whispers_allowed_groups' AND
|
|
EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't') AND
|
|
NOT '3' = ANY(string_to_array(value, '|'))
|
|
SQL
|
|
|
|
# If enable_whispers was false, reset whispers_allowed_groups
|
|
execute <<~SQL
|
|
UPDATE site_settings
|
|
SET value = ''
|
|
WHERE name = 'whispers_allowed_groups' AND
|
|
NOT EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't')
|
|
SQL
|
|
|
|
# Delete enable_whispers site setting
|
|
execute <<~SQL
|
|
DELETE FROM site_settings WHERE name = 'enable_whispers'
|
|
SQL
|
|
end
|
|
|
|
def down
|
|
raise ActiveRecord::IrreversibleMigration
|
|
end
|
|
end
|