{{plugin-outlet name="user-preferences-notifications" args=(hash model=model save=(action "save"))}}
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 9dbf412bab7..482814f4d0d 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -993,7 +993,6 @@ class UsersController < ApplicationController
end
def notification_level
- raise Discourse::NotFound unless SiteSetting.ignore_user_enabled
user = fetch_user_from_params
if params[:notification_level] == "ignore"
diff --git a/app/jobs/scheduled/ignored_users_summary.rb b/app/jobs/scheduled/ignored_users_summary.rb
index 137109113ae..b050d9b5f4c 100644
--- a/app/jobs/scheduled/ignored_users_summary.rb
+++ b/app/jobs/scheduled/ignored_users_summary.rb
@@ -3,8 +3,6 @@ module Jobs
every 1.day
def execute(args)
- return unless SiteSetting.ignore_user_enabled
-
params = {
threshold: SiteSetting.ignored_users_count_message_threshold,
gap_days: SiteSetting.ignored_users_message_gap_days,
diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index 585cc6fe9a6..0fcf19eea0b 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -1837,8 +1837,6 @@ en:
log_personal_messages_views: "Log personal message views by Admin for other users/groups."
- ignore_user_enabled: "[Beta] Allow ignoring users."
-
ignored_users_count_message_threshold: "Notify moderators if a particular user is ignored by this many other users."
ignored_users_message_gap_days: "How long to wait before notifying moderators again about a user who has been ignored by many others."
diff --git a/config/site_settings.yml b/config/site_settings.yml
index 6b9a16cecc7..73ccd665c62 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -529,9 +529,6 @@ users:
default: false
client: true
log_personal_messages_views: false
- ignore_user_enabled:
- default: false
- client: true
ignored_users_count_message_threshold:
default: 5
client: true
diff --git a/db/migrate/20190410102915_remove_ignore_user_enabled_site_setting.rb b/db/migrate/20190410102915_remove_ignore_user_enabled_site_setting.rb
new file mode 100644
index 00000000000..126a7d15a8a
--- /dev/null
+++ b/db/migrate/20190410102915_remove_ignore_user_enabled_site_setting.rb
@@ -0,0 +1,8 @@
+class RemoveIgnoreUserEnabledSiteSetting < ActiveRecord::Migration[5.2]
+ def up
+ execute "DELETE FROM site_settings WHERE name = 'ignore_user_enabled'"
+ end
+
+ def down
+ end
+end
diff --git a/lib/guardian.rb b/lib/guardian.rb
index c5fe976c2f7..5207989df1a 100644
--- a/lib/guardian.rb
+++ b/lib/guardian.rb
@@ -407,7 +407,7 @@ class Guardian
def can_ignore_users?
return false if anonymous?
- SiteSetting.ignore_user_enabled? && (@user.staff? || @user.trust_level >= TrustLevel.levels[:member])
+ @user.staff? || @user.trust_level >= TrustLevel.levels[:member]
end
def allow_themes?(theme_ids, include_preview: false)
diff --git a/lib/topic_view.rb b/lib/topic_view.rb
index 5705ab3ff7c..66da453ba05 100644
--- a/lib/topic_view.rb
+++ b/lib/topic_view.rb
@@ -602,24 +602,21 @@ class TopicView
@contains_gaps = false
@filtered_posts = unfiltered_posts
- if SiteSetting.ignore_user_enabled
+ sql = <<~SQL
+ SELECT ignored_user_id
+ FROM ignored_users as ig
+ JOIN users as u ON u.id = ig.ignored_user_id
+ WHERE ig.user_id = :current_user_id
+ AND ig.ignored_user_id <> :current_user_id
+ AND NOT u.admin
+ AND NOT u.moderator
+ SQL
- sql = <<~SQL
- SELECT ignored_user_id
- FROM ignored_users as ig
- JOIN users as u ON u.id = ig.ignored_user_id
- WHERE ig.user_id = :current_user_id
- AND ig.ignored_user_id <> :current_user_id
- AND NOT u.admin
- AND NOT u.moderator
- SQL
+ ignored_user_ids = DB.query_single(sql, current_user_id: @user&.id)
- ignored_user_ids = DB.query_single(sql, current_user_id: @user&.id)
-
- if ignored_user_ids.present?
- @filtered_posts = @filtered_posts.where.not("user_id IN (?) AND id <> ?", ignored_user_ids, first_post_id)
- @contains_gaps = true
- end
+ if ignored_user_ids.present?
+ @filtered_posts = @filtered_posts.where.not("user_id IN (?) AND id <> ?", ignored_user_ids, first_post_id)
+ @contains_gaps = true
end
# Filters
diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb
index 9fa878dd2b1..1fff9137a9e 100644
--- a/spec/components/guardian_spec.rb
+++ b/spec/components/guardian_spec.rb
@@ -2676,9 +2676,6 @@ describe Guardian do
end
describe '#can_ignore_user?' do
- before do
- SiteSetting.ignore_user_enabled = true
- end
let(:guardian) { Guardian.new(trust_level_2) }
diff --git a/spec/components/topic_view_spec.rb b/spec/components/topic_view_spec.rb
index 8999f634361..11e1c2d29a0 100644
--- a/spec/components/topic_view_spec.rb
+++ b/spec/components/topic_view_spec.rb
@@ -39,64 +39,48 @@ describe TopicView do
let!(:post2) { Fabricate(:post, topic: topic, user: evil_trout) }
let!(:post3) { Fabricate(:post, topic: topic, user: user) }
- describe "when SiteSetting.ignore_user_enabled is false" do
- it "does not filter out ignored user posts" do
- SiteSetting.ignore_user_enabled = false
-
- tv = TopicView.new(topic.id, evil_trout)
- expect(tv.filtered_post_ids).to eq([post.id, post2.id, post3.id])
- end
+ it "filters out ignored user posts" do
+ tv = TopicView.new(topic.id, evil_trout)
+ expect(tv.filtered_post_ids).to eq([post.id, post2.id])
end
- describe "when SiteSetting.ignore_user_enabled is true" do
+ describe "when an ignored user made the original post" do
+ let!(:post) { Fabricate(:post, topic: topic, user: user) }
- before do
- SiteSetting.ignore_user_enabled = true
- end
-
- it "filters out ignored user posts" do
+ it "filters out ignored user posts only" do
tv = TopicView.new(topic.id, evil_trout)
expect(tv.filtered_post_ids).to eq([post.id, post2.id])
end
+ end
- describe "when an ignored user made the original post" do
- let!(:post) { Fabricate(:post, topic: topic, user: user) }
+ describe "when an anonymous user made a post" do
+ let(:anonymous) { Fabricate(:anonymous) }
+ let!(:post4) { Fabricate(:post, topic: topic, user: anonymous) }
- it "filters out ignored user posts only" do
- tv = TopicView.new(topic.id, evil_trout)
- expect(tv.filtered_post_ids).to eq([post.id, post2.id])
- end
+ it "filters out ignored user posts only" do
+ tv = TopicView.new(topic.id, evil_trout)
+ expect(tv.filtered_post_ids).to eq([post.id, post2.id, post4.id])
end
+ end
- describe "when an anonymous user made a post" do
- let(:anonymous) { Fabricate(:anonymous) }
- let!(:post4) { Fabricate(:post, topic: topic, user: anonymous) }
+ describe "when an anonymous (non signed-in) user is viewing a Topic" do
+ let(:anonymous) { Fabricate(:anonymous) }
+ let!(:post4) { Fabricate(:post, topic: topic, user: anonymous) }
- it "filters out ignored user posts only" do
- tv = TopicView.new(topic.id, evil_trout)
- expect(tv.filtered_post_ids).to eq([post.id, post2.id, post4.id])
- end
+ it "filters out ignored user posts only" do
+ tv = TopicView.new(topic.id, nil)
+ expect(tv.filtered_post_ids).to eq([post.id, post2.id, post3.id, post4.id])
end
+ end
- describe "when an anonymous (non signed-in) user is viewing a Topic" do
- let(:anonymous) { Fabricate(:anonymous) }
- let!(:post4) { Fabricate(:post, topic: topic, user: anonymous) }
+ describe "when a staff user is ignored" do
+ let!(:admin) { Fabricate(:user, admin: true) }
+ let!(:admin_ignored_user) { Fabricate(:ignored_user, user: evil_trout, ignored_user: admin) }
+ let!(:post4) { Fabricate(:post, topic: topic, user: admin) }
- it "filters out ignored user posts only" do
- tv = TopicView.new(topic.id, nil)
- expect(tv.filtered_post_ids).to eq([post.id, post2.id, post3.id, post4.id])
- end
- end
-
- describe "when a staff user is ignored" do
- let!(:admin) { Fabricate(:user, admin: true) }
- let!(:admin_ignored_user) { Fabricate(:ignored_user, user: evil_trout, ignored_user: admin) }
- let!(:post4) { Fabricate(:post, topic: topic, user: admin) }
-
- it "filters out ignored user excluding the staff user" do
- tv = TopicView.new(topic.id, evil_trout)
- expect(tv.filtered_post_ids).to eq([post.id, post2.id, post4.id])
- end
+ it "filters out ignored user excluding the staff user" do
+ tv = TopicView.new(topic.id, evil_trout)
+ expect(tv.filtered_post_ids).to eq([post.id, post2.id, post4.id])
end
end
end
diff --git a/spec/jobs/ignored_users_summary_spec.rb b/spec/jobs/ignored_users_summary_spec.rb
index e4cff1f9b00..1d01e823996 100644
--- a/spec/jobs/ignored_users_summary_spec.rb
+++ b/spec/jobs/ignored_users_summary_spec.rb
@@ -4,7 +4,6 @@ require_dependency 'jobs/scheduled/ignored_users_summary'
describe Jobs::IgnoredUsersSummary do
before do
- SiteSetting.ignore_user_enabled = true
SiteSetting.ignored_users_count_message_threshold = 1
SiteSetting.ignored_users_message_gap_days = 365
end
diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb
index 6473b25a23f..5b7a9a8a060 100644
--- a/spec/requests/users_controller_spec.rb
+++ b/spec/requests/users_controller_spec.rb
@@ -2033,55 +2033,42 @@ describe UsersController do
sign_in(user)
end
- context 'when ignore_user_enable is OFF' do
- it 'raises an error when not logged in' do
- put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "" }
- expect(response.status).to eq(404)
+ let!(:ignored_user) { Fabricate(:ignored_user, user: user, ignored_user: another_user) }
+ let!(:muted_user) { Fabricate(:muted_user, user: user, muted_user: another_user) }
+
+ context 'when changing notification level to normal' do
+ it 'changes notification level to normal' do
+ put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "normal" }
+ expect(IgnoredUser.count).to eq(0)
+ expect(MutedUser.count).to eq(0)
end
end
- context 'when ignore_user_enable is ON' do
- before do
- SiteSetting.ignore_user_enabled = true
+ context 'when changing notification level to mute' do
+ it 'changes notification level to mute' do
+ put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "mute" }
+ expect(IgnoredUser.count).to eq(0)
+ expect(MutedUser.find_by(user_id: user.id, muted_user_id: another_user.id)).to be_present
+ end
+ end
+
+ context 'when changing notification level to ignore' do
+ it 'changes notification level to ignore' do
+ put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "ignore" }
+ expect(MutedUser.count).to eq(0)
+ expect(IgnoredUser.find_by(user_id: user.id, ignored_user_id: another_user.id)).to be_present
end
- let!(:ignored_user) { Fabricate(:ignored_user, user: user, ignored_user: another_user) }
- let!(:muted_user) { Fabricate(:muted_user, user: user, muted_user: another_user) }
-
- context 'when changing notification level to normal' do
- it 'changes notification level to normal' do
- put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "normal" }
- expect(IgnoredUser.count).to eq(0)
- expect(MutedUser.count).to eq(0)
- end
- end
-
- context 'when changing notification level to mute' do
- it 'changes notification level to mute' do
- put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "mute" }
- expect(IgnoredUser.count).to eq(0)
- expect(MutedUser.find_by(user_id: user.id, muted_user_id: another_user.id)).to be_present
- end
- end
-
- context 'when changing notification level to ignore' do
+ context 'when expiring_at param is set' do
it 'changes notification level to ignore' do
- put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "ignore" }
- expect(MutedUser.count).to eq(0)
- expect(IgnoredUser.find_by(user_id: user.id, ignored_user_id: another_user.id)).to be_present
- end
+ freeze_time(Time.now) do
+ expiring_at = 3.days.from_now
+ put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "ignore", expiring_at: expiring_at }
- context 'when expiring_at param is set' do
- it 'changes notification level to ignore' do
- freeze_time(Time.now) do
- expiring_at = 3.days.from_now
- put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "ignore", expiring_at: expiring_at }
-
- ignored_user = IgnoredUser.find_by(user_id: user.id, ignored_user_id: another_user.id)
- expect(ignored_user).to be_present
- expect(ignored_user.expiring_at.to_i).to eq(expiring_at.to_i)
- expect(MutedUser.count).to eq(0)
- end
+ ignored_user = IgnoredUser.find_by(user_id: user.id, ignored_user_id: another_user.id)
+ expect(ignored_user).to be_present
+ expect(ignored_user.expiring_at.to_i).to eq(expiring_at.to_i)
+ expect(MutedUser.count).to eq(0)
end
end
end
diff --git a/spec/services/user_updater_spec.rb b/spec/services/user_updater_spec.rb
index a10fc260e7a..31a8ca78961 100644
--- a/spec/services/user_updater_spec.rb
+++ b/spec/services/user_updater_spec.rb
@@ -35,10 +35,6 @@ describe UserUpdater do
end
describe '#update_ignored_users' do
- before do
- SiteSetting.ignore_user_enabled = true
- end
-
it 'updates ignored users' do
u1 = Fabricate(:user, trust_level: 2)
u2 = Fabricate(:user, trust_level: 2)