Module Systems::Visit
In: lib/systems/visit.rb

Methods

Public Instance methods

[Source]

   # File lib/systems/visit.rb, line 2
2:   def active_visit=(visit)
3:     session[:visit_id] = visit.id
4:     session[:visit_ip_country_code] = visit.ip_country_code
5:   end

[Source]

    # File lib/systems/visit.rb, line 46
46:   def clear_prompt_for_question_visit(qid)
47:     visit = current_visit
48:     qv = ::QuestionsVisit.qv(qid, visit.id)
49:     qv.update_attribute(:prompt_id_ext, nil) if qv
50:   end

[Source]

    # File lib/systems/visit.rb, line 84
84:   def create_visit(locale = false)
85:     ip = ip_address
86:     visit = ::Visit.new do |v|
87:       v.locale = locale if locale
88:       v.ip_address = ip
89:       v.host = request.env['HTTP_HOST']
90:       v.user_agent = request.env['HTTP_USER_AGENT']
91:       v.referrer = request.env['HTTP_REFERER']
92:       v.request_uri = request.env['REQUEST_URI']
93:     end
94:     visit = GeoIP.location(ip, visit)
95:     visit.save!
96:     self.active_visit = visit
97:     visit
98:   end

[Source]

    # File lib/systems/visit.rb, line 23
23:   def current_visit
24:     current_visit_id && ::Visit.find(current_visit_id)
25:   end

[Source]

    # File lib/systems/visit.rb, line 27
27:   def current_visit!
28:     (current_visit_id && ::Visit.find(current_visit_id)) || create_visit
29:   end

[Source]

   # File lib/systems/visit.rb, line 7
7:   def current_visit_id
8:     session[:visit_id]
9:   end

[Source]

    # File lib/systems/visit.rb, line 11
11:   def current_visit_id!
12:     session[:visit_id] || create_visit.id
13:   end

[Source]

    # File lib/systems/visit.rb, line 15
15:   def current_visit_ip_country_code
16:     session[:visit_ip_country_code]
17:   end

[Source]

    # File lib/systems/visit.rb, line 19
19:   def exp_locale
20:     session[:exp_locale]
21:   end

[Source]

    # File lib/systems/visit.rb, line 52
52:   def fetch_prompt_for_question_visit(qid)
53:     visit = current_visit!
54:     set_pairwise_from_question_id(qid)
55:     voter_id_ext = Pairwise.voter(:ip_address => ip_address).first
56:     qv = ::QuestionsVisit.qv(qid, visit.id) || ::QuestionsVisit.create!(
57:       :question_id => qid,
58:       :visit_id => visit.id,
59:       :voter_id_ext => voter_id_ext
60:     )
61:     @prompt_id, @item_ids, @item_data = Pairwise.prompt(qid, qv.voter_id_ext, 1, false, 2, true)
62:     return false if @prompt_id.nil?
63:     @prompt_id = @prompt_id.first
64:     qv.update_attribute(:prompt_id_ext, @prompt_id)
65:     @item_ids = @item_ids.first
66:     @item_data = @item_data.first
67:   end

[Source]

    # File lib/systems/visit.rb, line 69
69:   def fetch_visit
70:     unless current_visit
71:       visit = ::Visit.first(:conditions => {
72:         :ip_address => ip_address,
73:         :user_agent => user_agent,
74:         :active => true
75:       })
76:       if visit && !fresh_visit?(visit)
77:         visit.update_attribute(:active, false)
78:         visit = nil
79:       end
80:       visit ? self.active_visit = visit : create_visit
81:     end
82:   end

time out visit if updated_at + const > now

[Source]

    # File lib/systems/visit.rb, line 32
32:   def fresh_visit?(visit = nil)
33:     visit ||= current_visit
34:     visit && visit.updated_at + Const::VISIT_STALE_AFTER > Time.now
35:   end

[Source]

     # File lib/systems/visit.rb, line 100
100:   def ip_address
101:     request.env['HTTP_X_REAL_IP'] || request.env['REMOTE_ADDR']
102:   end

[Source]

    # File lib/systems/visit.rb, line 37
37:   def prompt_for_question_visit(qid)
38:     visit = current_visit!
39:     qv = ::QuestionsVisit.qv(qid, visit.id)
40:     if qv && @prompt_id = qv.prompt_id_ext
41:       @item_ids = Pairwise.get_prompt(@prompt_id).last
42:       @item_data = @item_ids.map { |id| Pairwise.get_item(id)[1] }
43:     end
44:   end

[Source]

     # File lib/systems/visit.rb, line 104
104:   def user_agent
105:     request.env['HTTP_USER_AGENT']
106:   end

[Validate]