Class: FabulatorContext

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/fabulator_context.rb

Class Method Summary collapse

Class Method Details

.find_by_page(p) ⇒ Object



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
# File 'app/models/fabulator_context.rb', line 6

def self.find_by_page(p)
  if p.request.session[:user_id].blank?
    c = self.first(:conditions => [
      'page_id = ? AND session = ? AND (user_id IS NULL OR user_id=0)',
      p.id, p.request.session[:session_id]
    ] )
  else
    c = self.first(:conditions => [
      'page_id = ? AND session = ? AND user_id = ?',
      p.id, p.request.session[:session_id], p.request.session[:user_id]
    ] )
  end
  if c.nil? && !p.request.session[:user_id].blank?
    c = self.first(:conditions => [
      'page_id = ? AND session = ?',
      p.id, p.request.session[:session_id]
    ] )
    if !c.nil? && c.user.nil?
      c.update_attribute(:user_id, p.request.session[:user_id])
    end
  end
  p.fabulator_context = c.context unless c.nil?
  return c unless c.nil?
  self.new(
    :context => YAML::dump(p.fabulator_context),
    :page_id => p.id,
    :user_id => p.request.session[:user_id],
    :session => p.request.session[:session_id]
  )
end