Fix database check in browse controller.
[rails.git] / app / controllers / message_controller.rb
1 class MessageController < ApplicationController
2   layout 'site'
3
4   before_filter :authorize_web
5   before_filter :require_user
6   before_filter :check_database_readable
7   before_filter :check_database_writable, :only => [:new, :reply, :mark]
8
9   def new
10     @title = 'send message'
11     if params[:message]
12       @message = Message.new(params[:message])
13       @message.to_user_id = params[:user_id]
14       @message.from_user_id = @user.id
15       @message.sent_on = Time.now
16    
17       if @message.save
18         flash[:notice] = 'Message sent'
19         Notifier::deliver_message_notification(@message)
20         redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
21       end
22     else
23       @title = params[:title]
24     end
25   end
26
27   def reply
28     message = Message.find(params[:message_id], :conditions => ["to_user_id = ? or from_user_id = ?", @user.id, @user.id ])
29     @body = "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}" 
30     @title = "Re: #{message.title.sub(/^Re:\s*/, '')}"
31     @user_id = message.from_user_id
32     render :action => 'new'
33   rescue ActiveRecord::RecordNotFound
34     render :nothing => true, :status => :not_found
35   end
36
37   def read
38     @title = 'read message'
39     @message = Message.find(params[:message_id], :conditions => ["to_user_id = ? or from_user_id = ?", @user.id, @user.id ])
40     @message.message_read = 1 if @message.to_user_id == @user.id
41     @message.save
42   rescue ActiveRecord::RecordNotFound
43     render :nothing => true, :status => :not_found
44   end
45
46   def inbox
47     @title = 'inbox'
48     if @user and params[:display_name] == @user.display_name
49     else
50       redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
51     end
52   end
53
54   def outbox
55     @title = 'outbox'
56     if @user and params[:display_name] == @user.display_name
57     else
58       redirect_to :controller => 'message', :action => 'outbox', :display_name => @user.display_name
59     end
60   end
61
62   def mark
63     if params[:message_id]
64       id = params[:message_id]
65       message = Message.find_by_id(id)
66       if params[:mark] == 'unread'
67         message_read = 0 
68         mark_type = 'unread'
69       else
70         message_read = 1
71         mark_type = 'read'
72       end
73       message.message_read = message_read
74       if message.save
75         flash[:notice] = "Message marked as #{mark_type}"
76         redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
77       end
78     end
79   end
80 end