aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/admin_raw_email_controller.rb
blob: 1b3ee28717c5c687e8330c801405aa7a393d158c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# app/controllers/admin_raw_email_controller.rb:
# Controller for managing raw emails from the admin interface.
#
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: hello@mysociety.org; WWW: http://www.mysociety.org/

class AdminRawEmailController < AdminController

    def show
        @raw_email = RawEmail.find(params[:id])
        respond_to do |format|
            format.html do
                # For the holding pen, try to guess where it should be ...
                @holding_pen = false
                if (@raw_email.incoming_message.info_request == InfoRequest.holding_pen_request && !@raw_email.incoming_message.empty_from_field?)
                    @holding_pen = true

                    # 1. Use domain of email to try and guess which public body it
                    # is associated with, so we can display that.
                    email = @raw_email.incoming_message.from_email
                    domain = PublicBody.extract_domain_from_email(email)

                    if domain.nil?
                        @public_bodies = []
                    else
                        @public_bodies = PublicBody.find(:all, :order => "name",
                            :conditions => [ "lower(request_email) like lower('%'||?||'%')", domain ])
                    end

                    # 2. Match the email address in the message without matching the hash
                    @info_requests =  InfoRequest.guess_by_incoming_email(@raw_email.incoming_message)

                    # 3. Give a reason why it's in the holding pen
                    last_event = InfoRequestEvent.find_by_incoming_message_id(@raw_email.incoming_message.id)
                    @rejected_reason = last_event.params[:rejected_reason] || "unknown reason"
                end
            end
            format.text do
                response.content_type = 'message/rfc822'
                render :text => @raw_email.data
            end
        end
    end

end