facebook_app 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.textile CHANGED
@@ -34,7 +34,12 @@ Controller
34
34
  before_filter :ensure_logged_in, :load_graph
35
35
 
36
36
  begin_tracking
37
- (start tracking at stage 1)
37
+ (start tracking at stage 1), e.g. splash_choose page
38
+
39
+ After redirect your app must match GET "logged_in" and connect it to something
40
+
41
+
42
+ track_conversion(:conversion_event)
38
43
 
39
44
  login_as_app
40
45
  (you can log in as the app or as a user)
@@ -2,7 +2,7 @@ module FacebookApp
2
2
  class ExternalTrackingsController < FacebookAppController
3
3
 
4
4
  def identified_signup
5
- Conversion.find_by_id(cookies[:conversion_id]).try(:sign_up_on_identified)
5
+ track_conversion(:sign_up_on_identified)
6
6
  show_single_pixel
7
7
  end
8
8
 
@@ -22,18 +22,20 @@ module FacebookApp
22
22
  needs_login = ! (session[:at] && session[:oauth_expiry] && session[:oauth_expiry].to_i > Time.now.utc.to_i )
23
23
  if needs_login
24
24
  # tracking is only relevant for users who will log in
25
- begin_tracking
25
+ track_conversion(:see_permissions_dialogue)
26
26
  session[:oauth_expiry] = nil
27
27
  redirect_to oauth_code_link
28
28
  end
29
29
  end
30
30
 
31
31
  def begin_tracking
32
- # only track the first time they visit
33
- unless cookies[:conversion_id]
34
- @conversion = Conversion.create(:marketing_mode =>params[:marketing_mode])
35
- cookies[:conversion_id] = @conversion.id
36
- end
32
+ Conversion.find_or_create(cookies[:conversion_id],params[:marketing_mode])
33
+ end
34
+
35
+ def track_conversion(conversion_state)
36
+ Conversion.track(cookies[:conversion_id], conversion_state)
37
+ rescue
38
+
37
39
  end
38
40
 
39
41
  # loads the graph from the users point of view
@@ -2,7 +2,7 @@ module FacebookApp
2
2
  class OauthController < FacebookAppController
3
3
 
4
4
  def denied
5
- Conversion.track(cookies[:conversion_id], :deny_permissions)
5
+ track_conversion(:deny_permissions)
6
6
  client_side_redirect= %Q{
7
7
  <script>
8
8
  top.location="#{identified_tracking_link}";
@@ -22,11 +22,11 @@ module FacebookApp
22
22
  session[:oauth_expiry] = token_expiration_time
23
23
 
24
24
  if didnt_grant_extended_permissions
25
- Conversion.track(cookies[:conversion_id], :deny_extended_permissions)
25
+ track_conversion(:deny_extended_permissions)
26
26
  session[:at] = nil
27
27
  redirect_to facebook_app.identified_path
28
28
  else
29
- Conversion.track(cookies[:conversion_id], :accept_permissions)
29
+ track_conversion(:accept_permissions)
30
30
  redirect_to logged_in_url
31
31
  end
32
32
  end
@@ -2,12 +2,15 @@ module FacebookApp
2
2
  class Conversion < ActiveRecord::Base
3
3
 
4
4
  set_table_name "facebook_app_conversions"
5
- state_machine :state, :initial => :permissions_dialogue do
5
+ state_machine :state, :initial => :splash_page do
6
6
 
7
7
  # after_transition :on => :accept_permissions, :do => :record_permissions_acceptance
8
8
  # after_transition :on => :deny_permissions, :do => :record_permissions_denial
9
9
  # after_transition :on => :generated_infographic, :do => :record_infographic_generation
10
- #
10
+
11
+ event :see_permissions_dialogue do
12
+ transition :splash_page => :permissions_dialogue
13
+ end
11
14
 
12
15
  event :deny_permissions do
13
16
  transition :permissions_dialogue => :denied_permissions
@@ -18,11 +21,11 @@ module FacebookApp
18
21
  end
19
22
 
20
23
  event :accept_permissions do
21
- transition :permissions_dialogue => :installed
24
+ transition [:deny_permissions, :denied_extended_permissions, :permissions_dialogue] => :installed
22
25
  end
23
26
 
24
27
  event :generate_infographic do
25
- transition [:accept_permissions, :installed] => :generated_infographic
28
+ transition [:installed] => :generated_infographic
26
29
  end
27
30
 
28
31
  event :sign_up_on_identified do
@@ -30,16 +33,16 @@ module FacebookApp
30
33
  end
31
34
  end
32
35
 
33
- def self.find_or_create(conversion_id)
36
+ def self.find_or_create(conversion_id, marketing_mode)
34
37
  find(conversion_id)
35
38
  rescue
36
- create
39
+ create(:marketing_mode => marketing_mode)
37
40
  end
38
41
 
39
- def self.track(conversion_id, conversion_state=nil)
40
- conversion = find_or_create(conversion_id)
41
- conversion.send(conversion_state) unless conversion_state.nil?
42
- conversion
42
+ def self.track(conversion_id, conversion_event=nil, marketing_mode=nil)
43
+ find_or_create(conversion_id, marketing_mode)
44
+ conversion.send(conversion_event) unless conversion_event.nil?
45
+ return conversion
43
46
  end
44
47
 
45
48
  def recent?
@@ -5,6 +5,10 @@ module FacebookApp
5
5
  (send(state, :viral).to_i.fdiv(send(state, :advertising).to_i)*100).to_s
6
6
  end
7
7
 
8
+ def splash_state_count(marketing_mode)
9
+ state_count(:splash_page, marketing_mode).to_s
10
+ end
11
+
8
12
  def permissions_state_count(marketing_mode)
9
13
  state_count(:permissions_dialogue, marketing_mode).to_s
10
14
  end
@@ -45,10 +49,14 @@ module FacebookApp
45
49
  # as per state machine
46
50
  def state_fragment(state_to_calculate)
47
51
  case state_to_calculate
52
+ when :splash_page
53
+ "state in ('splash_page', 'generated_infographic', 'denied_permissions', 'denied_extended_permissions', 'installed', 'signed_up_for_identified', 'permissions_dialogue')"
48
54
  when :permissions_dialogue
49
55
  "state in ('generated_infographic', 'denied_permissions', 'denied_extended_permissions', 'installed', 'signed_up_for_identified', 'permissions_dialogue')"
50
56
  when :installed
51
57
  "state in ('installed', 'generated_infographic', 'signed_up_for_identified')"
58
+ when :generated_infographic
59
+ "state in ('generated_infographic', 'signed_up_for_identified')"
52
60
  else
53
61
  "state = '#{state_to_calculate.to_s}'"
54
62
  end
@@ -1,4 +1,6 @@
1
1
  h1 Spamalytics
2
+ h2 Unique users who reached splash page
3
+ = render :partial => 'conversion_stage', :locals => {:state => :splash_page, :conversion_summary => conversion_summary }
2
4
  h2 Unique users who saw permissions dialogue for this app
3
5
  = render :partial => 'conversion_stage', :locals => {:state => :permissions_state_count, :conversion_summary => conversion_summary }
4
6
  h2 Unique users who installed this facebook app (accepted permissions)
@@ -1,3 +1,3 @@
1
1
  module FacebookApp
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: facebook_app
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.8
5
+ version: 0.0.9
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jack Kinsella
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-01 00:00:00 Z
13
+ date: 2011-11-02 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails