camaleon_mailchimp 0.0.1 → 0.0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59b9b2da65e3f63e6462246b1b7c96a53cfb90c0
4
- data.tar.gz: 124848d87d8748172d8f8f5982aed820008be02a
3
+ metadata.gz: a9e776ce4cb8f1f415064c900e6357d0ebff414b
4
+ data.tar.gz: 2a4448b63a1c6d7b9147a37449aad23ef91b41fb
5
5
  SHA512:
6
- metadata.gz: 5689a4bfbd2eef0c0871f92ffc63b4cfff67c7ec33ef843bf837673b329462fa841cd2a19ec7630b3a79773cf0dccc7f73f0ebb6770ed8d8dc1f71711f518b0f
7
- data.tar.gz: 47f39ff6f1c94ec6ba3260201060b8b6a4c964fa82f71947161dd7ebd0904ee0d2efb2e0339b9e3d37d7168a94528f4668afd77dc805887f990fa4a817229202
6
+ metadata.gz: 946e9ad7ca5c5b80ef623b76a65a5eb176fdee3bee4e38a8189d7b81fd56b0d980c474793cadd7530cbbb5c22d66e12ace46daf1f0aa111e1adaebe924d55d29
7
+ data.tar.gz: b288963ab166bc7395f681fd7ccef50b41bd93cd7c97ec1df1d95909ff2686574674d60c5838d69b11041af11ca47ad19f2d2fd2886705934c00007a7646b7a8
@@ -1,4 +1,4 @@
1
- class Plugins::CamaleonMailchimp::AdminController < Apps::PluginsAdminController
1
+ class Plugins::CamaleonMailchimp::AdminController < CamaleonCms::Apps::PluginsAdminController
2
2
  include Plugins::CamaleonMailchimp::MainHelper
3
3
 
4
4
  def settings
@@ -1,8 +1,17 @@
1
- class Plugins::CamaleonMailchimp::FrontController < Apps::PluginsFrontController
1
+ class Plugins::CamaleonMailchimp::FrontController < CamaleonCms::Apps::PluginsFrontController
2
2
  include Plugins::CamaleonMailchimp::MainHelper
3
- def index
4
- # actions for frontend module
5
- end
6
3
 
7
- # add custom methods below
4
+ skip_before_action :verify_authenticity_token
5
+
6
+ def hook
7
+ case params[:type]
8
+ when 'subscribe' then
9
+ subscribe_hook(params)
10
+ when 'unsubscribe' then
11
+ unsubscribe_hook(params)
12
+ when 'cleaned' then
13
+ user_cleaned_hook(param)
14
+ end
15
+ render :nothing => true
16
+ end
8
17
  end
@@ -42,10 +42,37 @@ module Plugins::CamaleonMailchimp::MainHelper
42
42
  end
43
43
  end
44
44
 
45
+ def subscribe_hook(hook_data)
46
+ subscription_date = hook_data[:fired_at]
47
+ extra_data = hook_data[:data]
48
+ extra_data[:list_id]
49
+ extra_data[:email]
50
+ if extra_data[:list_id] == the_mailchimp_list_id
51
+ user = CamaleonCms::User.find_by_email(extra_data[:email])
52
+ user.update_mailchimp_values(1, subscription_date, '')
53
+ end
54
+ end
55
+
56
+ def unsubscribe_hook(hook_data)
57
+ extra_data = hook_data[:data]
58
+ user = CamaleonCms::User.find_by_email(extra_data[:email])
59
+ user.mailchimp_unsubscribe!(extra_data[:list_id]) unless user.nil?
60
+ end
61
+
62
+ # Equals that unsubscribe hook
63
+ def user_cleaned_hook(hook_data)
64
+ unsubscribe_hook(hook_data)
65
+ end
66
+
67
+ def the_mailchimp_list_id
68
+ plugin_config = current_site.get_meta('mailchimp_config')
69
+ plugin_config[:list_id]
70
+ end
71
+
45
72
  private
46
73
 
47
74
  def generate_custom_field_newsletter
48
- group = User.first.get_user_field_groups(current_site).where({slug: 'plugin_mailchimp_user_data'})
75
+ group = CamaleonCms::User.first.get_user_field_groups(current_site).where({slug: 'plugin_mailchimp_user_data'})
49
76
  unless group.present?
50
77
  new_group = group.create({name: 'Mailchimp user data', slug: 'plugin_mailchimp_user_data', description: 'Mailchimp newsletter user subscription data'})
51
78
  new_group.add_field({:name => "t('plugin.mailchimp.user.newsletter_subscribed')", :slug => 'mailchimp_newsletter_subscribed'}, {field_key: 'checkbox', default_value: false})
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class="modal-body">
33
33
  <p><%= t('plugin.mailchimp.modal.subscribe.body') %></p>
34
- <%= form_for @user, url: @user.new_record? ? admin_users_path : admin_plugins_camaleon_mailchimp_subscribe_path(@user), html: {class: 'form-ajax-mailchimp-subscribe'} do |f| %>
34
+ <%= form_for @user, url: @user.new_record? ? cama_admin_users_path : admin_plugins_camaleon_mailchimp_subscribe_path(@user), html: {class: 'form-ajax-mailchimp-subscribe'} do |f| %>
35
35
  <div class="modal-body form-horizontal form-group-separated">
36
36
  <div class="modal-footer">
37
37
  <button type="submit" class="btn btn-danger mailchimp-subscribe-btn"><%= t('plugin.mailchimp.modal.subscribe.submit') %></button>
@@ -55,7 +55,7 @@
55
55
  </div>
56
56
  <div class="modal-body">
57
57
  <p><%= t('plugin.mailchimp.modal.unsubscribe.body') %></p>
58
- <%= form_for @user, url: @user.new_record? ? admin_users_path : admin_plugins_camaleon_mailchimp_unsubscribe_path(@user), html: {class: 'form-ajax-mailchimp-unsubscribe'} do |f| %>
58
+ <%= form_for @user, url: @user.new_record? ? cama_admin_users_path : admin_plugins_camaleon_mailchimp_unsubscribe_path(@user), html: {class: 'form-ajax-mailchimp-unsubscribe'} do |f| %>
59
59
  <div class="modal-body form-horizontal form-group-separated">
60
60
  <div class="modal-footer">
61
61
  <button type="submit" class="btn btn-danger"><%= t('plugin.mailchimp.modal.unsubscribe.submit') %></button>
@@ -85,7 +85,7 @@
85
85
  } else {
86
86
  $.fn.alert({title: res.message.msg, close: res.message.close});
87
87
  $("#modal_plugin_mailchimp_subscribe").modal('hide');
88
- window.location.href = '<%= admin_users_path %>';
88
+ window.location.href = '<%= cama_admin_users_path %>';
89
89
  }
90
90
  }
91
91
  });
@@ -103,7 +103,7 @@
103
103
  } else {
104
104
  $.fn.alert({title: res.message.msg, close: res.message.close});
105
105
  $("#modal_plugin_mailchimp_unsubscribe").modal('hide');
106
- window.location.href = '<%= admin_users_path %>';
106
+ window.location.href = '<%= cama_admin_users_path %>';
107
107
  }
108
108
  }
109
109
  });
@@ -19,7 +19,7 @@
19
19
  </div>
20
20
  </div>
21
21
  <div class="panel-footer">
22
- <a class="btn btn-default" href="<%= url_for admin_plugins_path %>"><%= t('admin.button.back') %></a>
22
+ <a class="btn btn-default" href="<%= url_for cama_admin_plugins_path %>"><%= t('admin.button.back') %></a>
23
23
  <button class="btn btn-primary pull-right" type="submit"><%= t('admin.button.submit') %></button>
24
24
  </div>
25
25
  </div>
@@ -1,6 +1,6 @@
1
1
  require 'gibbon'
2
2
  # Extending User Model to add newsletter attributes
3
- User.class_eval do
3
+ CamaleonCms::User.class_eval do
4
4
 
5
5
  def the_newsletter_subscribed?
6
6
  self.get_field_value('mailchimp_newsletter_subscribed').to_s.to_bool
@@ -11,6 +11,7 @@ User.class_eval do
11
11
  end
12
12
 
13
13
  def the_mailchimp_member_id
14
+
14
15
  self.get_field_value('mailchimp_member_id').to_s
15
16
  end
16
17
 
@@ -44,18 +45,15 @@ User.class_eval do
44
45
  end
45
46
  end
46
47
 
47
- def mailchimp_unsubscribe!
48
+ def mailchimp_unsubscribe!(list_id = nil)
48
49
  begin
49
- body_value = {
50
- status: 'unsubscribed'
51
- }
52
50
  plugin_config = current_site.get_meta('mailchimp_config')
53
51
  mailchimp_api_key = plugin_config[:api_key]
54
- list_id = plugin_config[:list_id]
52
+ mailchimp_list_id = list_id.nil? ? plugin_config[:list_id] : list_id
55
53
  member_id = the_mailchimp_member_id
56
- Rails.logger.info "[Mailchimp plugin] Start unsubscribe list: #{list_id} api: #{mailchimp_api_key} member_id: #{member_id}"
57
- gibbon = Gibbon::Request.new(api_key: mailchimp_api_key)
58
- gibbon.lists(list_id).members(member_id).update(body: body_value)
54
+ Rails.logger.info "[Mailchimp plugin] Start unsubscribe list: #{mailchimp_list_id} api: #{mailchimp_api_key} member_id: #{member_id}"
55
+ gibbon = Gibbon::API.new(mailchimp_api_key)
56
+ gibbon.lists.unsubscribe(:id => mailchimp_list_id, :email => {:email => email}, :send_notify => true)
59
57
  mailchimp_update_unsubscription_values!
60
58
  rescue Gibbon::MailChimpError => exception
61
59
  Rails.logger.error "[Mailchimp plugin error] exception: #{exception} title: #{exception.title} detail: #{exception.detail} body: #{exception.body}"
@@ -66,6 +64,21 @@ User.class_eval do
66
64
  end
67
65
  end
68
66
 
67
+ def update_mailchimp_values(subscribed, enabled_at, member_id)
68
+ field_groups = self.get_user_field_groups(current_site).where({:slug => 'plugin_mailchimp_user_data'}).first
69
+ field_newsletter_subscribed = field_groups.get_field('mailchimp_newsletter_subscribed')
70
+ field_newsletter_enabled_at = field_groups.get_field('mailchimp_newsletter_enabled_at')
71
+ field_member_id = field_groups.get_field('mailchimp_member_id')
72
+
73
+ values_to_save = {
74
+ :mailchimp_newsletter_subscribed => {id: field_newsletter_subscribed.id, values: [subscribed]},
75
+ :mailchimp_newsletter_enabled_at => {id: field_newsletter_enabled_at.id, values: [enabled_at]},
76
+ :mailchimp_member_id => {id: field_member_id.id, values: [member_id]}
77
+ }
78
+
79
+ set_field_values(values_to_save)
80
+ end
81
+
69
82
  private
70
83
 
71
84
  def mailchimp_api_subscribe
@@ -80,32 +93,11 @@ User.class_eval do
80
93
  plugin_config = current_site.get_meta('mailchimp_config')
81
94
  mailchimp_api_key = plugin_config[:api_key]
82
95
  list_id = plugin_config[:list_id]
83
- gibbon = Gibbon::Request.new(api_key: mailchimp_api_key)
84
- gibbon.lists(list_id).members.create(body: body_value)
96
+ gibbon = Gibbon::API.new(mailchimp_api_key)
97
+ # gibbon.lists(list_id).members.create(body: body_value)
98
+ gibbon.lists.subscribe({:id => list_id, :email => {:email => email}, :merge_vars => {:FNAME => meta[:first_name], :LNAME => meta[:last_name]}})
85
99
  end
86
100
 
87
- #
88
- # def mailchimp_api_update_subscription
89
- # begin
90
- # body_value = {
91
- # email_address: email,
92
- # status: 'subscribed',
93
- # merge_fields: {
94
- # FNAME: meta[:first_name],
95
- # LNAME: meta[:last_name]
96
- # }
97
- # }
98
- # plugin_config = current_site.get_meta('mailchimp_config')
99
- # mailchimp_api_key = plugin_config[:api_key]
100
- # list_id = plugin_config[:list_id]
101
- # gibbon = Gibbon::Request.new(api_key: mailchimp_api_key)
102
- # gibbon.lists(list_id).members(mem).update(body: body_value)
103
- # rescue Gibbon::MailChimpError => exception
104
- # Rails.logger.error "[Mailchimp plugin error] exception: #{exception} title: #{exception.title} detail: #{exception.detail} body: #{exception.body}"
105
- # nil
106
- # end
107
- # end
108
-
109
101
  def mailchimp_update_unsubscription_values!
110
102
  update_mailchimp_values(0, '', '')
111
103
  end
@@ -113,21 +105,5 @@ User.class_eval do
113
105
  def mailchimp_update_subscription_values!(new_member)
114
106
  update_mailchimp_values(1, Time.zone.now, new_member['id'])
115
107
  end
116
-
117
-
118
- def update_mailchimp_values(subscribed, enabled_at, member_id)
119
- field_groups = self.get_user_field_groups(current_site).where({:slug => 'plugin_mailchimp_user_data'}).first
120
- field_newsletter_subscribed = field_groups.get_field('mailchimp_newsletter_subscribed')
121
- field_newsletter_enabled_at = field_groups.get_field('mailchimp_newsletter_enabled_at')
122
- field_member_id = field_groups.get_field('mailchimp_member_id')
123
-
124
- values_to_save = {
125
- :mailchimp_newsletter_subscribed => {id: field_newsletter_subscribed.id, values: [subscribed]},
126
- :mailchimp_newsletter_enabled_at => {id: field_newsletter_enabled_at.id, values: [enabled_at]},
127
- :mailchimp_member_id => {id: field_member_id.id, values: [member_id]}
128
- }
129
-
130
- set_field_values(values_to_save)
131
- end
132
108
  end
133
109
 
@@ -5,6 +5,7 @@ Rails.application.routes.draw do
5
5
  namespace :plugins do
6
6
  namespace 'camaleon_mailchimp' do
7
7
  get 'index' => 'front#index'
8
+ post 'hooks' => 'front#hook'
8
9
  end
9
10
  end
10
11
  end
@@ -1,3 +1,3 @@
1
1
  module CamaleonMailchimp
2
- VERSION = "0.0.1"
2
+ VERSION = '0.0.3.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camaleon_mailchimp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3.1
5
5
  platform: ruby
6
6
  authors:
7
- - Raúl Anatol
7
+ - raulanatol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-09 00:00:00.000000000 Z
11
+ date: 2015-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '2.0'
39
+ version: '1.1'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '2.0'
46
+ version: '1.1'
47
47
  description: ": Description of CamaleonMailchimp."
48
48
  email:
49
49
  - raul@natol.es
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  requirements: []
128
128
  rubyforge_project:
129
- rubygems_version: 2.4.8
129
+ rubygems_version: 2.5.1
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: ": Summary of CamaleonMailchimp."