diff --git a/plugins/messages/app/controllers/message_threads_controller.rb b/plugins/messages/app/controllers/message_threads_controller.rb index 22a18e28..ea8d5cb5 100644 --- a/plugins/messages/app/controllers/message_threads_controller.rb +++ b/plugins/messages/app/controllers/message_threads_controller.rb @@ -8,6 +8,6 @@ class MessageThreadsController < ApplicationController def show @group = Group.find_by_id(params[:id]) - @message_threads = Message.pub.threads.where(group: @group).page(params[:page]).per(@per_page).order(created_at: :desc) + @message_threads = Message.readable_for(current_user).threads.where(group: @group).page(params[:page]).per(@per_page).order(created_at: :desc) end end diff --git a/plugins/messages/app/controllers/messages_controller.rb b/plugins/messages/app/controllers/messages_controller.rb index b4aebb22..7a6ccd12 100644 --- a/plugins/messages/app/controllers/messages_controller.rb +++ b/plugins/messages/app/controllers/messages_controller.rb @@ -4,7 +4,7 @@ class MessagesController < ApplicationController # Renders the "inbox" action. def index - @messages = Message.pub.page(params[:page]).per(@per_page).order('created_at DESC').includes(:sender) + @messages = Message.readable_for(current_user).page(params[:page]).per(@per_page).order('created_at DESC').includes(:sender) end # Creates a new message object. diff --git a/plugins/messages/app/models/message.rb b/plugins/messages/app/models/message.rb index d423dbb5..03a9a45f 100644 --- a/plugins/messages/app/models/message.rb +++ b/plugins/messages/app/models/message.rb @@ -9,9 +9,11 @@ class Message < ApplicationRecord attr_accessor :send_method, :recipient_tokens, :order_id - scope :pub, -> { where(:private => false) } scope :threads, -> { where(:reply_to => nil) } scope :thread, -> (id) { where("id = ? OR reply_to = ?", id, id) } + scope :readable_for, -> (user) { + joins(:message_recipients).where('private = ? OR message_recipients.user_id = ?', false, user.try(&:id)).distinct + } validates_presence_of :message_recipients, :subject, :body validates_length_of :subject, :in => 1..255 diff --git a/plugins/messages/app/overrides/home/index/latest_public_messages_index.html.haml.deface b/plugins/messages/app/overrides/home/index/latest_public_messages_index.html.haml.deface index b264102e..3a999d8c 100644 --- a/plugins/messages/app/overrides/home/index/latest_public_messages_index.html.haml.deface +++ b/plugins/messages/app/overrides/home/index/latest_public_messages_index.html.haml.deface @@ -1,7 +1,7 @@ / insert_after 'erb[silent]:contains("")' - if FoodsoftMessages.enabled? - - unless Message.pub.empty? + - unless Message.readable_for(current_user).empty? %section#messages %h2= t '.messages.title' - = render 'messages/messages', messages: Message.pub.order('created_at DESC').limit(5), pagination: false + = render 'messages/messages', messages: Message.readable_for(current_user).order('created_at DESC').limit(5), pagination: false %p= raw t '.messages.view_all.text', messages: link_to(t('.messages.view_all.messages'), messages_path), threads: link_to(t('.messages.view_all.threads'), message_threads_path) diff --git a/plugins/messages/app/views/message_threads/_groupmessage_threads.html.haml b/plugins/messages/app/views/message_threads/_groupmessage_threads.html.haml index 443fc1d8..fe21ed44 100644 --- a/plugins/messages/app/views/message_threads/_groupmessage_threads.html.haml +++ b/plugins/messages/app/views/message_threads/_groupmessage_threads.html.haml @@ -1,4 +1,4 @@ -- message_threads = Message.pub.threads.where(group: group).order(created_at: :desc).limit(5) +- message_threads = Message.readable_for(current_user).threads.where(group: group).order(created_at: :desc).limit(5) - unless message_threads.empty? %section %h3 diff --git a/plugins/messages/app/views/message_threads/_message_threads.html.haml b/plugins/messages/app/views/message_threads/_message_threads.html.haml index 9be5779d..c3859b93 100644 --- a/plugins/messages/app/views/message_threads/_message_threads.html.haml +++ b/plugins/messages/app/views/message_threads/_message_threads.html.haml @@ -1,5 +1,5 @@ - if pagination - - if Message.pub.count > 20 + - if Message.readable_for(current_user).count > 20 = items_per_page = pagination_links_remote message_threads diff --git a/plugins/messages/app/views/messages/_messages.html.haml b/plugins/messages/app/views/messages/_messages.html.haml index 51a4c9e9..4d27b75f 100644 --- a/plugins/messages/app/views/messages/_messages.html.haml +++ b/plugins/messages/app/views/messages/_messages.html.haml @@ -1,5 +1,5 @@ - if pagination - - if Message.pub.count > 20 + - if Message.readable_for(current_user).count > 20 = items_per_page = pagination_links_remote messages