mirror of
https://github.com/discourse/discourse.git
synced 2026-07-29 15:54:48 -05:00
DEV: Remove enable_whispers site setting (#19196)
* 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.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user