camaleon_mailchimp 0.0.1 → 0.0.3.1

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.
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."