DigitalPianism_CampaignMonitor - Version 0.7.5

Version Notes

- Fix bugs with the unsubscribe controller
- Fix bug with the backend mass unsubscribe controller
- Next release will include a subscribe on checkout feature.

Download this release

Release Info

Developer Digital Pianism
Extension DigitalPianism_CampaignMonitor
Version 0.7.5
Comparing to
See all releases


Code changes from version 0.7.4 to 0.7.5

app/code/community/DigitalPianism/CampaignMonitor/Helper/Data.php CHANGED
@@ -7,7 +7,7 @@ class DigitalPianism_CampaignMonitor_Helper_Data extends Mage_Core_Helper_Abstra
7
  const CAMPAIGNMONITOR_CONFIG_DATA_KEY = 'newsletter/campaignmonitor/campaignmonitor_data';
8
  const CAMPAIGNMONITOR_SESSION_DATA_KEY = 'campaignmonitor_session_data';
9
 
10
- protected $logFileName = 'factoryx_campaignmonitor.log';
11
 
12
  /**
13
  * Log data
7
  const CAMPAIGNMONITOR_CONFIG_DATA_KEY = 'newsletter/campaignmonitor/campaignmonitor_data';
8
  const CAMPAIGNMONITOR_SESSION_DATA_KEY = 'campaignmonitor_session_data';
9
 
10
+ protected $logFileName = 'digitalpianism_campaignmonitor.log';
11
 
12
  /**
13
  * Log data
app/code/community/DigitalPianism/CampaignMonitor/Model/Checkout/Observer.php ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // TODO MAPPING
3
+ include_once MAGENTO_ROOT . "/lib/createsend/csrest_subscribers.php";
4
+ class DigitalPianism_CampaignMonitor_Model_Checkout_Observer
5
+ {
6
+ public function subscribeCustomer($observer)
7
+ {
8
+ // Check if the checkbox has been ticked using the sessions
9
+ if ((bool) Mage::getSingleton('checkout/session')->getCustomerIsSubscribed())
10
+ {
11
+ // Get the quote & customer
12
+ $quote = $observer->getEvent()->getQuote();
13
+ $order = $observer->getEvent()->getOrder();
14
+
15
+ // if (!$order->getCustomerIsGuest()) return;
16
+ // Mage::helper('campaignmonitor')->log('passed');
17
+
18
+ $customer = $quote->getCustomer();
19
+ $session = Mage::getSingleton('core/session');
20
+
21
+ // Get the email using during checking out
22
+ $email = $order->getCustomerEmail();
23
+
24
+ // We get the API and List ID
25
+ if (Mage::helper('campaignmonitor')->isOAuth())
26
+ {
27
+ $accessToken = Mage::getModel('campaignmonitor/auth')->getAccessToken();
28
+ $refreshToken = Mage::getModel('campaignmonitor/auth')->getRefreshToken();
29
+
30
+ $auth = array(
31
+ 'access_token' => $accessToken,
32
+ 'refresh_token' => $refreshToken
33
+ );
34
+ }
35
+ else
36
+ {
37
+ $auth = Mage::helper('campaignmonitor')->getApiKey();
38
+ }
39
+
40
+ $listID = Mage::helper('campaignmonitor')->getListId();
41
+ $apiKey = Mage::helper('campaignmonitor')->getApiKey();
42
+
43
+ // Variables
44
+ $firstname = "";
45
+ $lastname = "";
46
+ $mobile = "";
47
+ $state = "";
48
+ $postcode = "";
49
+ $mobilesubscription = "";
50
+ $jobinterest = "";
51
+ $preferred_store = "";
52
+ $promocode = "";
53
+ $periodicity = "";
54
+ $dob = "";
55
+ $subscriptiondate = date("Y-m-d");
56
+
57
+ // Check if already susbcribed
58
+ try {
59
+ $client = new CS_REST_Subscribers($listID,$auth);
60
+ $result = $client->get($email);
61
+ if (!$result->was_successful()) {
62
+ // If you receive '121: Expired OAuth Token', refresh the access token
63
+ if ($result->response->Code == 121) {
64
+ // Refresh the token
65
+ Mage::helper('campaignmonitor')->refreshToken();
66
+ }
67
+ // Make the call again
68
+ $result = $client->get($email);
69
+ }
70
+ } catch(Exception $e) {
71
+ Mage::helper('campaignmonitor')->log("Error in REST call: ".$e->getMessage());
72
+ $session->addException($e, Mage::helper('campaignmonitor')->__('There was a problem with the subscription'));
73
+ }
74
+
75
+ // If we are not subscribed in Campaign Monitor
76
+ if ($result->was_successful() && $result->response->State != 'Active')
77
+ {
78
+ // We generate the custom fields
79
+ if ($mobile = $quote->getBillingAddress()->getTelephone())
80
+ {
81
+ $customFields[] = array("Key" => "Mobile", "Value" => $mobile);
82
+ }
83
+ $state = $quote->getBillingAddress()->getRegion();
84
+ $country = $quote->getBillingAddress()->getCountryId();
85
+ if ($state || $country)
86
+ {
87
+ $campaignMonitorStates = Mage::helper('campaignmonitor')->getCampaignMonitorStates();
88
+ if ($country == "AU" && in_array($state,$campaignMonitorStates))
89
+ {
90
+ $customFields[] = array("Key" => "State", "Value" => $state);
91
+ }
92
+ elseif($country == "NZ")
93
+ {
94
+ $customFields[] = array("Key" => "State", "Value" => "New Zealand");
95
+ }
96
+ elseif($country)
97
+ {
98
+ $customFields[] = array("Key" => "State", "Value" => "Other");
99
+ }
100
+ else
101
+ {
102
+ $customFields[] = array("Key" => "State", "Value" => "Unknown");
103
+ }
104
+ }
105
+ else
106
+ {
107
+ $customFields[] = array("Key" => "State", "Value" => "Unknown");
108
+ }
109
+ if ($postcode = $quote->getBillingAddress()->getPostcode())
110
+ {
111
+ $customFields[] = array("Key" => "Postcode", "Value" => $postcode);
112
+ }
113
+ if ($dob = $quote->getCustomerDob())
114
+ {
115
+ $customFields[] = array("Key" => "DOB", "Value" => $dob);
116
+ }
117
+ // And generate the hash
118
+ $customFields[] = array("Key" => "securehash", "Value" => md5($email.$apiKey));
119
+ // We generate the Magento fields
120
+ $fullname = $quote->getBillingAddress()->getName();
121
+ $fullname = trim($fullname);
122
+ $names = explode(" ", $fullname, 2);
123
+ if (!empty($names) && isset($names[0]) && isset($names[1]))
124
+ {
125
+ $firstname = (string) $names[0];
126
+ $lastname = (string) $names[1];
127
+ }
128
+ else
129
+ {
130
+ $firstname = $fullname;
131
+ $lastname = "";
132
+ }
133
+ $customFields[] = array("Key" => "fullname", "Value" => $fullname);
134
+
135
+ // Check the checkout method (logged in, register or guest)
136
+ switch ($quote->getCheckoutMethod())
137
+ {
138
+ // Customer is logged in
139
+ case Mage_Sales_Model_Quote::CHECKOUT_METHOD_LOGIN_IN:
140
+ // Customer is registering
141
+ case Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER:
142
+ // Customer is a guest
143
+ case Mage_Sales_Model_Quote::CHECKOUT_METHOD_GUEST:
144
+ try {
145
+ // Subscribe the customer to CampaignMonitor
146
+ if($client) {
147
+ $result = $client->add(array(
148
+ "EmailAddress" => $email,
149
+ "Name" => $fullname,
150
+ "CustomFields" => $customFields,
151
+ "Resubscribe" => true));
152
+ if (!$result->was_successful()) {
153
+ // If you receive '121: Expired OAuth Token', refresh the access token
154
+ if ($result->response->Code == 121) {
155
+ // Refresh the token
156
+ Mage::helper('campaignmonitor')->refreshToken();
157
+ }
158
+ // Make the call again
159
+ $result = $client->add(array(
160
+ "EmailAddress" => $email,
161
+ "Name" => $fullname,
162
+ "CustomFields" => $customFields,
163
+ "Resubscribe" => true));
164
+ }
165
+ }
166
+ }
167
+ catch (Exception $e)
168
+ {
169
+ Mage::helper('campaignmonitor')->log("Error in CampaignMonitor REST call: ".$e->getMessage());
170
+ $session->addException($e, Mage::helper('campaignmonitor')->__('There was a problem with the subscription'));
171
+ }
172
+ break;
173
+ }
174
+ }
175
+
176
+ // Remove the session variable
177
+ Mage::getSingleton('checkout/session')->setCustomerIsSubscribed(0);
178
+
179
+ Mage::getModel('campaignmonitor/subscriber')->syncSubscriber($email,true);
180
+ }
181
+ }
182
+ }
app/code/community/DigitalPianism/CampaignMonitor/Model/Checkout/Type/Onepage.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class DigitalPianism_CampaignMonitor_Model_Checkout_Type_Onepage extends Mage_Checkout_Model_Type_Onepage
4
+ {
5
+ public function saveBilling($data, $customerAddressId)
6
+ {
7
+ if (isset($data['is_subscribed']) && !empty($data['is_subscribed']))
8
+ {
9
+ $this->getCheckout()->setCustomerIsSubscribed(1);
10
+ }
11
+ else
12
+ {
13
+ $this->getCheckout()->setCustomerIsSubscribed(0);
14
+ }
15
+ return parent::saveBilling($data, $customerAddressId);
16
+ }
17
+ }
app/code/community/DigitalPianism/CampaignMonitor/controllers/Newsletter/SubscriberController.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ include_once MAGENTO_ROOT . "/lib/createsend/csrest_subscribers.php";
3
+ require_once 'Mage/Adminhtml/controllers/Newsletter/SubscriberController.php';
4
+
5
+ class DigitalPianism_CampaignMonitor_Newsletter_SubscriberController extends Mage_Adminhtml_Newsletter_SubscriberController
6
+ {
7
+ public function massUnsubscribeAction()
8
+ {
9
+ Mage::helper('campaignmonitor')->log("massUnsubscribeAction");
10
+
11
+ $subscribersIds = $this->getRequest()->getParam('subscriber');
12
+ if (!is_array($subscribersIds)) {
13
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
14
+ $this->_redirect('*/*/index');
15
+ }
16
+ else {
17
+ try {
18
+
19
+ if (Mage::helper('campaignmonitor')->isOAuth())
20
+ {
21
+ $accessToken = Mage::getModel('campaignmonitor/auth')->getAccessToken();
22
+ $refreshToken = Mage::getModel('campaignmonitor/auth')->getRefreshToken();
23
+
24
+ $auth = array(
25
+ 'access_token' => $accessToken,
26
+ 'refresh_token' => $refreshToken
27
+ );
28
+ }
29
+ else
30
+ {
31
+ $auth = Mage::helper('campaignmonitor')->getApiKey();
32
+ }
33
+
34
+ $listID = Mage::helper('campaignmonitor')->getListId();
35
+
36
+ try
37
+ {
38
+ $client = new CS_REST_Subscribers($listID,$auth);
39
+ }
40
+ catch(Exception $e)
41
+ {
42
+ Mage::helper('campaignmonitor')->log("Error connecting to CampaignMonitor server: ".$e->getMessage());
43
+ $session->addException($e, $this->__('There was a problem with the subscription'));
44
+ $this->_redirectReferer();
45
+ }
46
+
47
+ foreach ($subscribersIds as $subscriberId)
48
+ {
49
+ $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
50
+ $email = $subscriber->getEmail();
51
+ Mage::helper('campaignmonitor')->log($this->__("Unsubscribing: %s", $email));
52
+
53
+ try
54
+ {
55
+ $result = $client->unsubscribe($email);
56
+ if (!$result->was_successful()) {
57
+ // If you receive '121: Expired OAuth Token', refresh the access token
58
+ if ($result->response->Code == 121) {
59
+ // Refresh the token
60
+ Mage::helper('campaignmonitor')->refreshToken();
61
+ }
62
+ // Make the call again
63
+ $result = $client->unsubscribe($email);
64
+ }
65
+ }
66
+ catch (Exception $e)
67
+ {
68
+ Mage::helper('campaignmonitor')->log("Error in CampaignMonitor SOAP call: ".$e->getMessage());
69
+ }
70
+ }
71
+ }
72
+ catch (Exception $e)
73
+ {
74
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
75
+ }
76
+ }
77
+
78
+ parent::massUnsubscribeAction();
79
+ }
80
+ }
81
+ ?>
app/code/community/DigitalPianism/CampaignMonitor/controllers/UnsubscribeController.php CHANGED
@@ -43,7 +43,7 @@ class DigitalPianism_CampaignMonitor_UnsubscribeController extends Mage_Core_Con
43
  Mage::helper('campaignmonitor')->refreshToken();
44
  }
45
  // Make the call again
46
- $result = $client->get($email));
47
  }
48
  }
49
  catch (Exception $e)
@@ -68,22 +68,68 @@ class DigitalPianism_CampaignMonitor_UnsubscribeController extends Mage_Core_Con
68
  $session->addException($e, $this->__('There was a problem with the unsubscription'));
69
  $this->_redirectReferer();
70
  }
71
-
72
- // If we are unsubscribed in Campaign Monitor, mark us as
73
  // unsubscribed in Magento.
74
- if($state == "Unsubscribed")
75
  {
76
  try
77
  {
78
- Mage::helper('campaignmonitor')->log($this->__('Unsubscribing %s from Magento',$email));
 
 
 
 
 
 
 
 
 
79
 
80
- $unsubscribe = Mage::getModel('newsletter/subscriber')
 
 
81
  ->loadByEmail($email)
82
  ->unsubscribe();
83
- Mage::getSingleton('customer/session')->addSuccess($this->__('You were successfully unsubscribed'));
84
- }
85
- catch (Exception $e)
 
 
 
 
 
 
 
 
 
86
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  Mage::helper('campaignmonitor')->log(sprintf("%s", $e->getMessage()));
88
  Mage::getSingleton('customer/session')->addError($this->__('There was an error while saving your subscription details'));
89
  }
@@ -94,6 +140,7 @@ class DigitalPianism_CampaignMonitor_UnsubscribeController extends Mage_Core_Con
94
  }
95
  }
96
  }
 
97
  }
98
  }
99
  ?>
43
  Mage::helper('campaignmonitor')->refreshToken();
44
  }
45
  // Make the call again
46
+ $result = $client->get($email);
47
  }
48
  }
49
  catch (Exception $e)
68
  $session->addException($e, $this->__('There was a problem with the unsubscription'));
69
  $this->_redirectReferer();
70
  }
71
+
72
+ // If we are unsubscribed, deleted or not subscribed in Campaign Monitor, mark us as
73
  // unsubscribed in Magento.
74
+ if ($state != "Unsubscribed" && $state != "Not Subscribed" && $state != "Deleted")
75
  {
76
  try
77
  {
78
+ $result = $client->unsubscribe($email);
79
+ if (!$result->was_successful()) {
80
+ // If you receive '121: Expired OAuth Token', refresh the access token
81
+ if ($result->response->Code == 121) {
82
+ // Refresh the token
83
+ Mage::helper('campaignmonitor')->refreshToken();
84
+ }
85
+ // Make the call again
86
+ $result = $client->unsubscribe($email);
87
+ }
88
 
89
+ if($result->was_successful())
90
+ {
91
+ $collection = Mage::getModel('newsletter/subscriber')
92
  ->loadByEmail($email)
93
  ->unsubscribe();
94
+ Mage::getSingleton('customer/session')->addSuccess($this->__('You were successfully unsubscribed'));
95
+ }
96
+ }
97
+ catch (Exception $e)
98
+ {
99
+ Mage::helper('campaignmonitor')->log(sprintf("%s", $e->getMessage()));
100
+ Mage::getSingleton('customer/session')->addError($this->__('There was an error while saving your subscription details'));
101
+ }
102
+ }
103
+ elseif($state == "Unsubscribed" || $state == "Not Subscribed" || $state == "Deleted")
104
+ {
105
+ try
106
  {
107
+ $subscriberStatus = Mage::getModel('newsletter/subscriber')
108
+ ->loadByEmail($email)
109
+ ->getStatus();
110
+ // 2 = Not Activated
111
+ // 1 = Subscribed
112
+ // 3 = Unsubscribed
113
+ // 4 = Unconfirmed
114
+ if ($subscriberStatus != 3)
115
+ {
116
+ $unsubscribe = Mage::getModel('newsletter/subscriber')
117
+ ->loadByEmail($email)
118
+ ->unsubscribe();
119
+ Mage::getSingleton('customer/session')->addSuccess($this->__('You were successfully unsubscribed'));
120
+
121
+ $block = Mage::getModel('cms/block')->load('unsubscribe-custom-message');
122
+
123
+ if ($block)
124
+ {
125
+ Mage::getSingleton('customer/session')->addNotice($block->getContent());
126
+ }
127
+ }
128
+ else
129
+ {
130
+ Mage::getSingleton('customer/session')->addSuccess($this->__('You have already unsubscribed to our newsletter, click <a href="/subscribe">here</a> to resubscribe'));
131
+ }
132
+ } catch (Exception $e) {
133
  Mage::helper('campaignmonitor')->log(sprintf("%s", $e->getMessage()));
134
  Mage::getSingleton('customer/session')->addError($this->__('There was an error while saving your subscription details'));
135
  }
140
  }
141
  }
142
  }
143
+ $this->_redirect('/');
144
  }
145
  }
146
  ?>
app/code/community/DigitalPianism/CampaignMonitor/etc/config.xml CHANGED
@@ -3,7 +3,7 @@
3
 
4
  <modules>
5
  <DigitalPianism_CampaignMonitor>
6
- <version>0.7.4</version>
7
  </DigitalPianism_CampaignMonitor>
8
  </modules>
9
 
@@ -18,6 +18,16 @@
18
  </args>
19
  </campaignmonitor>
20
  </routers>
 
 
 
 
 
 
 
 
 
 
21
  </frontend>
22
 
23
  <admin>
@@ -29,6 +39,13 @@
29
  <frontName>admincampaignmonitor</frontName>
30
  </args>
31
  </campaignmonitor>
 
 
 
 
 
 
 
32
  </routers>
33
  </admin>
34
 
@@ -40,10 +57,6 @@
40
  <from><![CDATA[#^/newsletter/subscriber#]]></from>
41
  <to>/campaignmonitor/hook</to>
42
  </digitalpianism_campaignmonitor_new>
43
- <digitalpianism_campaignmonitor_admin>
44
- <from><![CDATA[#^/admin/newsletter_subscriber/massUnsubscribe#]]></from>
45
- <to>/admincampaignmonitor/adminhook</to>
46
- </digitalpianism_campaignmonitor_admin>
47
  </rewrite>
48
 
49
  <helpers>
@@ -58,6 +71,13 @@
58
  <campaignmonitor>
59
  <class>DigitalPianism_CampaignMonitor_Model</class>
60
  </campaignmonitor>
 
 
 
 
 
 
 
61
  </models>
62
 
63
  <!-- Observer events -->
@@ -80,6 +100,17 @@
80
  </digitalpianism_campaignmonitor_observer_2>
81
  </observers>
82
  </customer_delete_before>
 
 
 
 
 
 
 
 
 
 
 
83
  </events>
84
 
85
  </global>
3
 
4
  <modules>
5
  <DigitalPianism_CampaignMonitor>
6
+ <version>0.7.5</version>
7
  </DigitalPianism_CampaignMonitor>
8
  </modules>
9
 
18
  </args>
19
  </campaignmonitor>
20
  </routers>
21
+ <!-- Frontend layout file -->
22
+ <!--
23
+ <layout>
24
+ <updates>
25
+ <campaignmonitor>
26
+ <file>digitalpianism/campaignmonitor.xml</file>
27
+ </campaignmonitor>
28
+ </updates>
29
+ </layout>
30
+ -->
31
  </frontend>
32
 
33
  <admin>
39
  <frontName>admincampaignmonitor</frontName>
40
  </args>
41
  </campaignmonitor>
42
+ <adminhtml>
43
+ <args>
44
+ <modules>
45
+ <DigitalPianism_CampaignMonitor before="Mage_Adminhtml">DigitalPianism_CampaignMonitor</DigitalPianism_CampaignMonitor>
46
+ </modules>
47
+ </args>
48
+ </adminhtml>
49
  </routers>
50
  </admin>
51
 
57
  <from><![CDATA[#^/newsletter/subscriber#]]></from>
58
  <to>/campaignmonitor/hook</to>
59
  </digitalpianism_campaignmonitor_new>
 
 
 
 
60
  </rewrite>
61
 
62
  <helpers>
71
  <campaignmonitor>
72
  <class>DigitalPianism_CampaignMonitor_Model</class>
73
  </campaignmonitor>
74
+ <!-- Override original checkout onepage model -->
75
+ <checkout>
76
+ <rewrite>
77
+ <!-- Mage_Checkout_Model_Type_Onepage -->
78
+ <!--<type_onepage>DigitalPianism_CampaignMonitor_Model_Checkout_Type_Onepage</type_onepage>-->
79
+ </rewrite>
80
+ </checkout>
81
  </models>
82
 
83
  <!-- Observer events -->
100
  </digitalpianism_campaignmonitor_observer_2>
101
  </observers>
102
  </customer_delete_before>
103
+ <!-- TODO
104
+ <checkout_type_onepage_save_order_after>
105
+ <observers>
106
+ <subscribeCustomer>
107
+ <type>singleton</type>
108
+ <class>campaignmonitor/checkout_observer</class>
109
+ <method>subscribeCustomer</method>
110
+ </subscribeCustomer>
111
+ </observers>
112
+ </checkout_type_onepage_save_order_after>
113
+ -->
114
  </events>
115
 
116
  </global>
app/code/community/DigitalPianism/CampaignMonitor/etc/system.xml CHANGED
@@ -86,6 +86,54 @@
86
  </m_to_cm_attributes>
87
  </fields>
88
  </campaignmonitor>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  </groups>
90
  </newsletter>
91
  </sections>
86
  </m_to_cm_attributes>
87
  </fields>
88
  </campaignmonitor>
89
+ <!--
90
+ <checkoutnewsletter translate="label">
91
+ <label>Checkout Newsletter</label>
92
+ <frontend_type>text</frontend_type>
93
+ <sort_order>2</sort_order>
94
+ <show_in_default>1</show_in_default>
95
+ <show_in_website>1</show_in_website>
96
+ <show_in_store>1</show_in_store>
97
+ <fields>
98
+ <enable translate="label">
99
+ <label>Enable</label>
100
+ <frontend_type>select</frontend_type>
101
+ <source_model>adminhtml/system_config_source_yesno</source_model>
102
+ <sort_order>1</sort_order>
103
+ <show_in_default>1</show_in_default>
104
+ <show_in_website>1</show_in_website>
105
+ <show_in_store>1</show_in_store>
106
+ </enable>
107
+ <checked translate="label">
108
+ <label>Checked by default</label>
109
+ <frontend_type>select</frontend_type>
110
+ <source_model>adminhtml/system_config_source_yesno</source_model>
111
+ <sort_order>2</sort_order>
112
+ <show_in_default>1</show_in_default>
113
+ <show_in_website>1</show_in_website>
114
+ <show_in_store>1</show_in_store>
115
+ </checked>
116
+ <visible_guest translate="label">
117
+ <label>Visible to guest</label>
118
+ <frontend_type>select</frontend_type>
119
+ <source_model>adminhtml/system_config_source_yesno</source_model>
120
+ <sort_order>3</sort_order>
121
+ <show_in_default>1</show_in_default>
122
+ <show_in_website>1</show_in_website>
123
+ <show_in_store>1</show_in_store>
124
+ </visible_guest>
125
+ <visible_register translate="label">
126
+ <label>Visible to registrant</label>
127
+ <frontend_type>select</frontend_type>
128
+ <source_model>adminhtml/system_config_source_yesno</source_model>
129
+ <sort_order>4</sort_order>
130
+ <show_in_default>1</show_in_default>
131
+ <show_in_website>1</show_in_website>
132
+ <show_in_store>1</show_in_store>
133
+ </visible_register>
134
+ </fields>
135
+ </checkoutnewsletter>
136
+ -->
137
  </groups>
138
  </newsletter>
139
  </sections>
app/design/frontend/base/default/layout/digitalpianism/campaignmonitor.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <checkout_onepage_index>
4
+ <reference name="checkout.onepage.billing">
5
+ <action method="setTemplate"><template>digitalpianism/campaignmonitor/persistent/checkout/onepage/billing.phtml</template></action>
6
+ <block type="campaignmonitor/checkoutnewsletter" name="checkoutnewsletter" template="digitalpianism/campaignmonitor/persistent/checkout/onepage/checkoutnewsletter.phtml" />
7
+ </reference>
8
+ </checkout_onepage_index>
9
+ </layout>
app/design/frontend/base/default/template/digitalpianism/campaignmonitor/persistent/checkout/billing.phtml ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <form id="co-billing-form" action="">
2
+ <fieldset>
3
+ <ul class="form-list">
4
+ <?php if ($this->customerHasAddresses()): ?>
5
+ <li class="wide">
6
+ <label for="billing-address-select"><?php echo $this->__('Select a billing address from your address book or enter a new address.') ?></label>
7
+ <div class="input-box">
8
+ <?php echo $this->getAddressesHtmlSelect('billing') ?>
9
+ </div>
10
+ </li>
11
+ <?php endif; ?>
12
+ <li id="billing-new-address-form"<?php if ($this->customerHasAddresses()): ?> style="display:none;"<?php endif; ?>>
13
+ <fieldset>
14
+ <input type="hidden" name="billing[address_id]" value="<?php echo $this->getAddress()->getId() ?>" id="billing:address_id" />
15
+ <ul>
16
+ <li class="fields"><?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getAddress()->getFirstname() ? $this->getAddress() : $this->getQuote()->getCustomer())->setForceUseCustomerRequiredAttributes(!$this->isCustomerLoggedIn())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?></li>
17
+ <li class="fields">
18
+ <div class="field">
19
+ <label for="billing:company"><?php echo $this->__('Company') ?></label>
20
+ <div class="input-box">
21
+ <input type="text" id="billing:company" name="billing[company]" value="<?php echo $this->escapeHtml($this->getAddress()->getCompany()) ?>" title="<?php echo $this->__('Company') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('company') ?>" />
22
+ </div>
23
+ </div>
24
+ <?php if(!$this->isCustomerLoggedIn()): ?>
25
+ <div class="field">
26
+ <label for="billing:email" class="required"><em>*</em><?php echo $this->__('Email Address') ?></label>
27
+ <div class="input-box">
28
+ <input type="text" name="billing[email]" id="billing:email" value="<?php echo $this->escapeHtml($this->getAddress()->getEmail()) ?>" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" />
29
+ </div>
30
+ </div>
31
+ <?php endif; ?>
32
+ </li>
33
+ <?php $_streetValidationClass = $this->helper('customer/address')->getAttributeValidationClass('street'); ?>
34
+ <li class="wide">
35
+ <label for="billing:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
36
+ <div class="input-box">
37
+ <input type="text" title="<?php echo $this->__('Street Address') ?>" name="billing[street][]" id="billing:street1" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet(1)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
38
+ </div>
39
+ </li>
40
+ <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
41
+ <?php for ($_i = 2, $_n = $this->helper('customer/address')->getStreetLines(); $_i <= $_n; $_i++): ?>
42
+ <li class="wide">
43
+ <div class="input-box">
44
+ <input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="billing[street][]" id="billing:street<?php echo $_i ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet($_i)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
45
+ </div>
46
+ </li>
47
+ <?php endfor; ?>
48
+ <?php if ($this->helper('customer/address')->isVatAttributeVisible()) : ?>
49
+ <li class="wide">
50
+ <label for="billing:vat_id"><?php echo $this->__('VAT Number') ?></label>
51
+ <div class="input-box">
52
+ <input type="text" id="billing:vat_id" name="billing[vat_id]" value="<?php echo $this->escapeHtml($this->getAddress()->getVatId()) ?>" title="<?php echo $this->__('VAT Number') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('vat_id') ?>" />
53
+ </div>
54
+ </li>
55
+ <?php endif; ?>
56
+ <li class="fields">
57
+ <div class="field">
58
+ <label for="billing:city" class="required"><em>*</em><?php echo $this->__('City') ?></label>
59
+ <div class="input-box">
60
+ <input type="text" title="<?php echo $this->__('City') ?>" name="billing[city]" value="<?php echo $this->escapeHtml($this->getAddress()->getCity()) ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('city') ?>" id="billing:city" />
61
+ </div>
62
+ </div>
63
+ <div class="field">
64
+ <label for="billing:region_id" class="required"><em>*</em><?php echo $this->__('State/Province') ?></label>
65
+ <div class="input-box">
66
+ <select id="billing:region_id" name="billing[region_id]" title="<?php echo $this->__('State/Province') ?>" class="validate-select" style="display:none;">
67
+ <option value=""><?php echo $this->__('Please select region, state or province') ?></option>
68
+ </select>
69
+ <script type="text/javascript">
70
+ //<![CDATA[
71
+ $('billing:region_id').setAttribute('defaultValue', "<?php echo $this->getAddress()->getRegionId() ?>");
72
+ //]]>
73
+ </script>
74
+ <input type="text" id="billing:region" name="billing[region]" value="<?php echo $this->escapeHtml($this->getAddress()->getRegion()) ?>" title="<?php echo $this->__('State/Province') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('region') ?>" style="display:none;" />
75
+ </div>
76
+ </div>
77
+ </li>
78
+ <li class="fields">
79
+ <div class="field">
80
+ <label for="billing:postcode" class="required"><em>*</em><?php echo $this->__('Zip/Postal Code') ?></label>
81
+ <div class="input-box">
82
+ <input type="text" title="<?php echo $this->__('Zip/Postal Code') ?>" name="billing[postcode]" id="billing:postcode" value="<?php echo $this->escapeHtml($this->getAddress()->getPostcode()) ?>" class="input-text validate-zip-international <?php echo $this->helper('customer/address')->getAttributeValidationClass('postcode') ?>" />
83
+ </div>
84
+ </div>
85
+ <div class="field">
86
+ <label for="billing:country_id" class="required"><em>*</em><?php echo $this->__('Country') ?></label>
87
+ <div class="input-box">
88
+ <?php echo $this->getCountryHtmlSelect('billing') ?>
89
+ </div>
90
+ </div>
91
+ </li>
92
+ <li class="fields">
93
+ <div class="field">
94
+ <label for="billing:telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
95
+ <div class="input-box">
96
+ <input type="text" name="billing[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="billing:telephone" />
97
+ </div>
98
+ </div>
99
+ <div class="field">
100
+ <label for="billing:fax"><?php echo $this->__('Fax') ?></label>
101
+ <div class="input-box">
102
+ <input type="text" name="billing[fax]" value="<?php echo $this->escapeHtml($this->getAddress()->getFax()) ?>" title="<?php echo $this->__('Fax') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('fax') ?>" id="billing:fax" />
103
+ </div>
104
+ </div>
105
+ </li>
106
+ <?php if(!$this->isCustomerLoggedIn()): ?>
107
+
108
+ <?php $_dob = $this->getLayout()->createBlock('customer/widget_dob') ?>
109
+ <?php $_gender = $this->getLayout()->createBlock('customer/widget_gender') ?>
110
+ <?php if ($_dob->isEnabled() || $_gender->isEnabled()): ?>
111
+ <li class="fields">
112
+ <?php if ($_dob->isEnabled()): ?>
113
+ <div class="field">
114
+ <?php echo $_dob->setDate($this->getQuote()->getCustomerDob())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
115
+ </div>
116
+ <?php endif; ?>
117
+ <?php if ($_gender->isEnabled()): ?>
118
+ <div class="field">
119
+ <?php echo $_gender->setGender($this->getQuote()->getCustomerGender())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
120
+ </div>
121
+ <?php endif ?>
122
+ </li>
123
+ <?php endif ?>
124
+
125
+ <?php if ($this->isTaxvatEnabled()):?>
126
+ <li><?php echo $this->getTaxvatHtml() ?></li>
127
+ <?php endif; ?>
128
+
129
+ <li class="fields" id="register-customer-password">
130
+ <div class="field">
131
+ <label for="billing:customer_password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
132
+ <div class="input-box">
133
+ <input type="password" name="billing[customer_password]" id="billing:customer_password" title="<?php echo $this->__('Password') ?>" class="input-text required-entry validate-password" />
134
+ </div>
135
+ </div>
136
+ <div class="field">
137
+ <label for="billing:confirm_password" class="required"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
138
+ <div class="input-box">
139
+ <input type="password" name="billing[confirm_password]" title="<?php echo $this->__('Confirm Password') ?>" id="billing:confirm_password" class="input-text required-entry validate-cpassword" />
140
+ </div>
141
+ </div>
142
+ </li>
143
+ <?php echo $this->getChildHtml('persistent.remember.me'); ?>
144
+ <?php endif; ?>
145
+ <?php if ($this->isCustomerLoggedIn() && $this->customerHasAddresses()):?>
146
+ <li class="control">
147
+ <input type="checkbox" name="billing[save_in_address_book]" value="1" title="<?php echo $this->__('Save in address book') ?>" id="billing:save_in_address_book" onchange="if(window.shipping) shipping.setSameAsBilling(false);"<?php if ($this->getAddress()->getSaveInAddressBook()):?> checked="checked"<?php endif;?> class="checkbox" /><label for="billing:save_in_address_book"><?php echo $this->__('Save in address book') ?></label>
148
+ </li>
149
+ <?php else:?>
150
+ <li class="no-display"><input type="hidden" name="billing[save_in_address_book]" value="1" /></li>
151
+ <?php endif; ?>
152
+ <?php echo $this->getChildHtml('checkoutnewsletter'); ?>
153
+ <?php echo $this->getChildHtml('form.additional.info'); ?>
154
+ </ul>
155
+ <?php echo $this->getChildHtml('persistent.remember.me.tooltip'); ?>
156
+ </fieldset>
157
+ </li>
158
+ <?php if ($this->canShip()): ?>
159
+ <li class="control">
160
+ <input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_yes" value="1"<?php if ($this->isUseBillingAddressForShipping()) {?> checked="checked"<?php }?> title="<?php echo $this->__('Ship to this address') ?>" onclick="$('shipping:same_as_billing').checked = true;" class="radio" /><label for="billing:use_for_shipping_yes"><?php echo $this->__('Ship to this address') ?></label></li>
161
+ <li class="control">
162
+ <input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_no" value="0"<?php if (!$this->isUseBillingAddressForShipping()) {?> checked="checked"<?php }?> title="<?php echo $this->__('Ship to different address') ?>" onclick="$('shipping:same_as_billing').checked = false;" class="radio" /><label for="billing:use_for_shipping_no"><?php echo $this->__('Ship to different address') ?></label>
163
+ </li>
164
+ <?php endif; ?>
165
+ </ul>
166
+ <?php if (!$this->canShip()): ?>
167
+ <input type="hidden" name="billing[use_for_shipping]" value="1" />
168
+ <?php endif; ?>
169
+ <div class="buttons-set" id="billing-buttons-container">
170
+ <p class="required"><?php echo $this->__('* Required Fields') ?></p>
171
+ <button type="button" title="<?php echo $this->__('Continue') ?>" class="button" onclick="billing.save()"><span><span><?php echo $this->__('Continue') ?></span></span></button>
172
+ <span class="please-wait" id="billing-please-wait" style="display:none;">
173
+ <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Loading next step...') ?>" title="<?php echo $this->__('Loading next step...') ?>" class="v-middle" /> <?php echo $this->__('Loading next step...') ?>
174
+ </span>
175
+ </div>
176
+ </fieldset>
177
+ </form>
178
+ <script type="text/javascript">
179
+ //<![CDATA[
180
+ var billing = new Billing('co-billing-form', '<?php echo $this->getUrl('checkout/onepage/getAddress') ?>address/', '<?php echo $this->getUrl('checkout/onepage/saveBilling') ?>');
181
+ var billingForm = new VarienForm('co-billing-form');
182
+
183
+ //billingForm.setElementsRelation('billing:country_id', 'billing:region', '<?php echo $this->getUrl('directory/json/childRegion') ?>', '<?php echo $this->__('Select State/Province...') ?>');
184
+ $('billing-address-select') && billing.newAddress(!$('billing-address-select').value);
185
+
186
+ var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', <?php echo $this->helper('directory')->getRegionJson() ?>, undefined, 'billing:postcode');
187
+ if ($('onepage-guest-register-button')) {
188
+ Event.observe($('onepage-guest-register-button'), 'click', function(event) {
189
+ var billingRememberMe = $('co-billing-form').select('#remember-me-box');
190
+ if (billingRememberMe.length > 0) {
191
+ if ($('login:guest') && $('login:guest').checked) {
192
+ billingRememberMe[0].hide();
193
+ } else if ($('login:register') && ($('login:register').checked || $('login:register').type == 'hidden')) {
194
+ billingRememberMe[0].show();
195
+ }
196
+ }
197
+ });
198
+ }
199
+ //]]>
200
+ </script>
app/design/frontend/base/default/template/digitalpianism/campaignmonitor/persistent/checkout/onepage/checkoutnewsletter.phtml ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $helper = Mage::helper('campaignmonitor');
3
+ if (Mage::helper('campaignmonitor')->isCheckoutNewsletterEnabled()): ?>
4
+ <li id="register-customer-newsletter">
5
+ <input type="checkbox" name="billing[is_subscribed]" value="1" title="<?php echo Mage::helper('customer')->__('Sign Up for Newsletter') ?>" id="billing:is_subscribed"<?php echo ($this->isChecked() || $helper->isCheckoutNewsletterChecked())?' checked="checked"':'' ?> />
6
+ <label for="billing:is_subscribed">
7
+ <?php echo Mage::helper('customer')->__('Sign Up for Newsletter') ?>
8
+ </label>
9
+ </li>
10
+
11
+ <script type="text/javascript">
12
+ //<![CDATA[
13
+ Element.show('register-customer-newsletter');
14
+ var hasRunHideCheckoutNewsletter = false;
15
+ jQuery(document).ready(function() {
16
+ // add fix so it only runs once, checks checkout-step-billing & hasRunHideCheckoutNewsletter
17
+ hideCheckoutNewsletter = function () {
18
+ if (jQuery('#checkout-step-billing').is(":visible") && !hasRunHideCheckoutNewsletter && typeof(checkout) != 'undefined'){
19
+ if (checkout.method == 'register'){
20
+ <?php if (!$helper->isCheckoutNewsletterVisibleRegister()): ?>
21
+ Element.hide('register-customer-newsletter');
22
+ $('billing:is_subscribed').checked = false;
23
+ <?php else: ?>
24
+ Element.show('register-customer-newsletter');
25
+ <?php if ($this->isChecked() || $helper->isCheckoutNewsletterChecked()): ?>
26
+ $('billing:is_subscribed').checked = true;
27
+ <?php endif ?>
28
+ <?php endif ?>
29
+ }
30
+ else if (checkout.method == 'guest'){
31
+ <?php if (!$helper->isCheckoutNewsletterVisibleGuest()): ?>
32
+ Element.hide('register-customer-newsletter');
33
+ $('billing:is_subscribed').checked = false;
34
+ <?php else: ?>
35
+ Element.show('register-customer-newsletter');
36
+ <?php if ($this->isChecked() || $helper->isCheckoutNewsletterChecked()): ?>
37
+ $('billing:is_subscribed').checked = true;
38
+ <?php endif ?>
39
+ <?php endif ?>
40
+ }
41
+ hasRunHideCheckoutNewsletter = true;
42
+ }
43
+ }
44
+ setInterval("hideCheckoutNewsletter()", 100);
45
+ });
46
+ //]]>
47
+ </script>
48
+ <?php endif ?>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>DigitalPianism_CampaignMonitor</name>
4
- <version>0.7.4</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
@@ -12,11 +12,13 @@
12
  &lt;p&gt;Campaign Monitor is built for designers who can create great looking emails for themselves and their clients, but need software to send each campaign, track the results and manage their subscribers." www.campaignmonitor.com&lt;/p&gt;&#xD;
13
  &#xD;
14
  &lt;p&gt;This extension integrates Magento with the Campaign Monitor mailing list manager. Users are added to a specified Campaign Monitor email list when they subscribe to the newsletter in Magento, and removed when they unsubscribe. Users are also marked as unsubscribed in Magento when they click an unsubscribe link in a Campaign Monitor email.&lt;/p&gt;</description>
15
- <notes>- Use a different router name for admin to avoid issues between frontend and backend controllers.</notes>
 
 
16
  <authors><author><name>Digital Pianism</name><user>digitalpianism</user><email>contact@digital-pianism.com</email></author></authors>
17
- <date>2014-09-17</date>
18
- <time>12:14:39</time>
19
- <contents><target name="magecommunity"><dir name="DigitalPianism"><dir name="CampaignMonitor"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Auth.php" hash="a95501d852759b07a4f5f5e24743a0e7"/><file name="Refreshtoken.php" hash="8053f23d810219471e581e071bef96c6"/></dir></dir><dir name="Source"><file name="Authtype.php" hash="087491d524ceb6c74470673fca8e612d"/></dir></dir></dir></dir><file name="Linkedattributes.php" hash="3c5d00f9352fa53fbd36243c0d87db6e"/></dir><dir name="Helper"><file name="Data.php" hash="dacf12b145ebc49e06249155c35de7b8"/></dir><dir name="Model"><file name="Auth.php" hash="5f21e27b1b71d778ff49e3e46ab95bd5"/><dir name="Customer"><file name="Observer.php" hash="2b6cb4bfdfb63b2e611d5dea60fa667b"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Authtype.php" hash="2bba7379821e48b18d78327d02868b54"/></dir></dir></dir></dir><dir name="controllers"><file name="AdminhookController.php" hash="0598814f0cd09e4fd200520c94f9bad6"/><dir name="Adminhtml"><file name="AuthController.php" hash="fa7a2bbd67293a8145da6acfef5b9ec4"/></dir><file name="AuthController.php" hash="10c1c99b9c4a36455eceddbecee68b26"/><file name="HookController.php" hash="4e93ea76a5eb65bfbc40ef073578f091"/><file name="UnsubscribeController.php" hash="10fab41617bfd1430c426cf3458739cd"/></dir><dir name="etc"><file name="config.xml" hash="b2a657d00d53ac458bf18696731a9d96"/><file name="system.xml" hash="d3b61d1e71d59de1aa1aa9afe41744a4"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="DigitalPianism_CampaignMonitor.xml" hash="6044d29d2b2e7d0689315376e3c27acd"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="digitalpianism"><dir name="campaignmonitor"><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array_dropdown.phtml" hash="ac84db9b1e8b342337a478ecba62e0b1"/><file name="auth.phtml" hash="ec611006cadbb39caff40e5115b78586"/><file name="refreshtoken.phtml" hash="1d43c3e66c3c89a1d857b328eae6997f"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="lib"><dir name="createsend"><file name="HISTORY.md" hash="ab283bd0126e8c10edf6da099c80a661"/><file name="LICENSE" hash="e4306d4b6c77f2db816ec4aed73a13c7"/><file name="README.md" hash="90a7855700d85e14211baf5399810a3d"/><file name="RELEASE.md" hash="5efce8234607beab27bf466b23fc4535"/><dir name="class"><file name="base_classes.php" hash="8a3f82c1204d7de080d2f3d15cb70ea9"/><file name="cacert.pem" hash="c29d362201b1bd232898d2b658811db2"/><file name="log.php" hash="11ff6a9006a6386c1cd8880cd3c0f41b"/><file name="serialisation.php" hash="3eb39437970e8787f0ef9ac292b688e6"/><file name="services_json.php" hash="c9e9ef0d35d7d34f9d216344da27915d"/><file name="transport.php" hash="da2967846daf164a70e649c9f2ee0094"/></dir><file name="composer.json" hash="eccad7521596b5fe0d81af51ab2f16a1"/><file name="composer.lock" hash="e64bca0a5accd8086e4e49bf41aa8629"/><file name="csrest_administrators.php" hash="72480342a46e8d82fd44096b4818f090"/><file name="csrest_campaigns.php" hash="38e2c429abaaa4609d30f28622e5fc3f"/><file name="csrest_clients.php" hash="df11ce1c1fd5fd43980db42cb83a6fa3"/><file name="csrest_general.php" hash="b8d1de7d1e435231955cdf8bc0311632"/><file name="csrest_lists.php" hash="42904680a424977d7c6f3211cf0d7a9c"/><file name="csrest_people.php" hash="ff2a14af7e171a11d73bef3d4995f512"/><file name="csrest_segments.php" hash="bac0e031058e7e08ae97906738cc65fc"/><file name="csrest_subscribers.php" hash="b5ad794e2cc2f65a278a8aa9de4af7d7"/><file name="csrest_templates.php" hash="4c94511a505a868eef2f8109ca3c35d6"/><dir name="samples"><dir name="campaign"><file name="create.php" hash="af4016e1b3539b3710d4b8e05bc7001b"/><file name="create_from_template.php" hash="4868b7f363abebc3d9fe9f561e59a743"/><file name="delete.php" hash="b96c2421084e77c241ea270894719aff"/><file name="get_bounces.php" hash="3bd2b2faa8d4b99bf7b9d682ce7402d3"/><file name="get_clicks.php" hash="92209680bdd73ecf3f94ecd1c33374ce"/><file name="get_email_client_usage.php" hash="fcf3a316f03460f26b6f12bcb20c17b0"/><file name="get_lists_and_segments.php" hash="e7d07e56924abfbd2d390b468d2df14b"/><file name="get_opens.php" hash="e155bf6a72a26fd34997d9024bd9911c"/><file name="get_recipients.php" hash="488f76fba7f7e2dc0680abefe5fe1fb5"/><file name="get_spam.php" hash="35c0beea84a51e3e447546f6b11ba754"/><file name="get_summary.php" hash="85ee04ac9adc616aa41d5a02824e6f7c"/><file name="get_unsubscribes.php" hash="af39956e9f46d9ecd1e78fff830f87b0"/><file name="send.php" hash="9e33ed7bd15e246929f52847f93827ce"/><file name="send_preview.php" hash="4eb7bff25251b00915791b96b20ee2ab"/><file name="unschedule.php" hash="83f0374d69eee6ae284c7fe27fdb65d7"/></dir><dir name="client"><file name="create.php" hash="8fbadcd57df2246a8447d3a3b9843d64"/><file name="delete.php" hash="a7a9945427a64737981c4a3a5c047d97"/><file name="get.php" hash="0b53f225d317d3d97bb0f3bafe83cf53"/><file name="get_campaigns.php" hash="242ed8ed7338a502751ead210283cb04"/><file name="get_drafts.php" hash="2efeea55251ec1e7e7c7767820dd28f1"/><file name="get_lists.php" hash="97ffa5cd9ccc765ae79baff0f50ece64"/><file name="get_lists_for_email.php" hash="a402b11a7b93dc6992dc69998a0ebf80"/><file name="get_scheduled.php" hash="163d89985d5fdc29d9f3a5d50787fd81"/><file name="get_segments.php" hash="9acd7c148db84fd03d825a6eaebd0b88"/><file name="get_suppressionlist.php" hash="2ae6c31510338b307f93d49369c964d1"/><file name="get_templates.php" hash="756789c223be6664b3517b79063f5143"/><file name="set_basics.php" hash="839bc9f656d26caf7335b2a4f4336ae8"/><file name="set_monthly_billing.php" hash="7f4ff840e6fe78932f9bc72e68c282da"/><file name="set_payg_billing.php" hash="2f67604445e8807a70a9e28759f3bb55"/><file name="suppress.php" hash="f78f0ddb442c9dfc53865c00ee57d266"/><file name="transfer_credits.php" hash="3fe8a12cef59a2d126d8ed7437563ec8"/><file name="unsuppress.php" hash="3442665090da89c2f5d91f6b69c18ade"/></dir><file name="get_apikey.php" hash="36f399338a612b2771ed3c53058d1d6f"/><file name="get_billing_details.php" hash="bfe297ec441b25eaa6155e283b4c0bf7"/><file name="get_clients.php" hash="521e3174750e8c41236c1c4fae5ae8f4"/><file name="get_countries.php" hash="6a71a585ef76eedec4589ecc303415f5"/><file name="get_systemdate.php" hash="7b5eeae853d164667140fb3c99a5b8ff"/><file name="get_timezones.php" hash="f756ab9b392af894320defe0f7f7296d"/><dir name="list"><file name="activate_webhook.php" hash="ca496e62c78429fa745f624738b80ce7"/><file name="create.php" hash="16a635a4de9ec820b08a7f30319534bd"/><file name="create_custom_field.php" hash="59ad0fe4d6b2038ceeda7681e4515dd0"/><file name="create_webhook.php" hash="d968c28b19521f6d3c5e6852c5c13806"/><file name="deactivate_webhook.php" hash="68478920fca13c0c1f98a450be8cb3c2"/><file name="delete.php" hash="12f035403835a63c7a0c1ba4704b3e46"/><file name="delete_custom_field.php" hash="f5031a6eac6ba776b54ac22a79c023b5"/><file name="delete_webhook.php" hash="080320b7e078ce0e33586e4c6a944172"/><file name="get.php" hash="25dcb3de68cd41792ec88d7d937217e8"/><file name="get_active_subscribers.php" hash="afcee93bc1b922a99c9e19f48894417b"/><file name="get_bounced_subscribers.php" hash="2fa45e557cca0d93924a6415fbc302d5"/><file name="get_custom_fields.php" hash="ddcaf8ee644474bb77d597894f8e501e"/><file name="get_deleted_subscribers.php" hash="400adee5529e1e0f16ff7b64b09e8bca"/><file name="get_segments.php" hash="1ddba11f0968d2d7e7109e14140e7663"/><file name="get_stats.php" hash="74ab2cf477a5049505f1959c3e9e272c"/><file name="get_unconfirmed_subscribers.php" hash="e6062d83308ccc7648d8c17200d5f277"/><file name="get_unsubscribed_subscribers.php" hash="366d5bbd88a4028b664be59420a1a0aa"/><file name="get_webhooks.php" hash="bbcb6401f2a1d3268f25405b3cbe4598"/><file name="list_webhook_receiver.php" hash="12ca45146c050f341423f80acbe688aa"/><file name="test_webhook.php" hash="22bf2bdf4c277bc86300d43018e4926e"/><file name="update.php" hash="acb1f015b02b9d66da6d286843def237"/><file name="update_custom_field.php" hash="8b5f33bc803fa29fb0a44847a0d399ec"/><file name="update_field_options.php" hash="809ed63991f1e799ee2c2b70f3c692f4"/></dir><dir name="segment"><file name="add_rule.php" hash="3ed9335f70c354cf068a176eb6dd8f6f"/><file name="clear_rules.php" hash="da68802f93c3c25a60fcf1a2b7603273"/><file name="create.php" hash="4f12c0099e9edc42ab55acfd80239ecd"/><file name="delete.php" hash="9079d2812da34ce862f9543513eb7efc"/><file name="get.php" hash="f4e65cd88d02dc5fa0c2d9d7d1a444e6"/><file name="get_subscribers.php" hash="a580a7c33025bd516cae2e8b87cc10dd"/><file name="update.php" hash="cb37cd60257eb361f80f69dfa830ab94"/></dir><dir name="subscriber"><file name="add.php" hash="f266ce4459f71665e29d25bb5181ba76"/><file name="delete.php" hash="08325db91e593b855749bc5d9381f5e3"/><file name="get.php" hash="e4d4cda7ed515df7ab7e81c72906601d"/><file name="get_history.php" hash="445b5dfc75fec5433986655437f5f608"/><file name="import.php" hash="119de43ee1e4b31ce2b710ad4507a25f"/><file name="unsubscribe.php" hash="7896a14a7bbb69a8b4d1db9ead52053f"/><file name="update.php" hash="4a62f2b72d31cb168258738483366707"/></dir><dir name="template"><file name="create.php" hash="0ed844ae8d5fc1025902a7fcfb8a949b"/><file name="delete.php" hash="ddd8cbab53644e863d5f0d4807e03719"/><file name="get.php" hash="3d5147086b92c85e7b0289ba065f9434"/><file name="update.php" hash="0854c3686f1339434cb6fb12897f801f"/></dir></dir><dir name="tests"><file name="all_tests.php" hash="3fafbd947aa885d9056ed62e832ca61b"/><dir name="class_tests"><file name="response_tests.php" hash="ae5b4f541ac5bcba7a9417544d2156a9"/><file name="transport_test.php" hash="3033343417f283136c43d0bab77ac355"/></dir><file name="csrest_administrators_test.php" hash="77830067da14a226bfdc86b445f68f30"/><file name="csrest_campaigns_test.php" hash="ce68576c81c314dbdeba2b229903d865"/><file name="csrest_clients_test.php" hash="d3023b37bc3ebf222171606a100532d5"/><file name="csrest_lists_test.php" hash="533753c96477cad7598382c94e9a8937"/><file name="csrest_people_test.php" hash="72269f3d21caaf5648684da44b0ad319"/><file name="csrest_segments_test.php" hash="33f275bcab02eacb32299d6fc63e1b7c"/><file name="csrest_subscribers_test.php" hash="8b6ec2dade2d5b59d8f27f7e32df049f"/><file name="csrest_template_test.php" hash="3645fc50d5e43da11fa1a2b496b692c4"/><file name="csrest_test.php" hash="de298e06f8b584018f8e6b1d14000f32"/><dir name="responses"><file name="active_subscribers.json" hash="414033ce6952d88c0edd3c7b04d4f14e"/><file name="add_subscriber.json" hash="236507977b97832343c87955243068ad"/><file name="apikey.json" hash="4ca4132cc99f80bfc3d4a029a77a7a6e"/><file name="bounced_subscribers.json" hash="78c52687485c30c0fb031eb82e472fb3"/><file name="campaign_bounces.json" hash="55471525555dacee6ca1eb9ed5826cea"/><file name="campaign_clicks.json" hash="57d3357f4a0d8b55042a80e6d984e1ea"/><file name="campaign_listsandsegments.json" hash="a0d21dda2042a25b1266036b5d945f0c"/><file name="campaign_opens.json" hash="50c3052eebc922dfd0293498b5374ef0"/><file name="campaign_recipients.json" hash="be59c57f1f497669260f5124c13d109e"/><file name="campaign_spam.json" hash="48fa85397d6d8da1a685a94c404d14a9"/><file name="campaign_summary.json" hash="248d074230990e424dedb26afac895eb"/><file name="campaign_unsubscribes.json" hash="87d6b967ec28f8b3cd7845acc3ba0a16"/><file name="campaigns.json" hash="3b160d6e1a5de3e6163f2fffa502e4cb"/><file name="client_details.json" hash="964787a45923035cdd7330d4af13dfd9"/><file name="clients.json" hash="b243ae5d2f1b0686a6f45bbc262b1ad5"/><file name="countries.json" hash="7baa975380541216a7829128d4d7fb5b"/><file name="create_campaign.json" hash="61079127bd26d95434347f30803a85b2"/><file name="create_client.json" hash="0b5ea68aeecf1f61c8a00fb5d2b89104"/><file name="create_custom_field.json" hash="49b9878fd944fa8ea2f283a3d0b6576b"/><file name="create_list.json" hash="33b7d284c287fa44edb649234bc2ac6b"/><file name="create_list_webhook.json" hash="8a1c9ea0268a3a58d8f8fdaa4f159519"/><file name="create_segment.json" hash="6183146c3898ae281ea640e40fb5b3b0"/><file name="create_template.json" hash="9b1fcc1ae0925bd552cb23e364d48cca"/><file name="custom_api_error.json" hash="6be6c0df48a411fc54a5abf1d8502690"/><file name="custom_fields.json" hash="fe40aa43df15068516cdc6b7d9e2148c"/><file name="deleted_subscribers.json" hash="176235e9b24405ed329cc40a9ac5d1cd"/><file name="drafts.json" hash="8b36d3bf66ebb683b6926fcef95ae106"/><file name="import_subscribers.json" hash="3c7c7d85d510224197dc597d3a6cf585"/><file name="import_subscribers_partial_success.json" hash="4e1ff5c7b33a77d709530a31f544a22d"/><file name="list_details.json" hash="09d06afb7cd013e74fe615ddfd5a6799"/><file name="list_stats.json" hash="b8cd04e30e5e30862f005208997655de"/><file name="list_webhooks.json" hash="93194d66734e07372cac1b5c9c04f2b5"/><file name="lists.json" hash="0b7f8013e3e93a105a7a7d8c156daf4d"/><file name="listsforemail.json" hash="c7eb2e23b02883e0a0f9a9b2ca9bc94a"/><file name="scheduled.json" hash="d7c9df96fbfa5bafb1e1cfc0643123b7"/><file name="segment_details.json" hash="9ec00f104a565fc723270e3ceb91d509"/><file name="segment_subscribers.json" hash="cf5cec4bc4e7970315ea929a0bd29ecd"/><file name="segments.json" hash="d2d9265fd87ed661cd65c9c96b31a2f0"/><file name="subscriber_details.json" hash="1c5733a762560ed1dc27449edea3c27f"/><file name="subscriber_history.json" hash="93d3efaa0f0373156146e9f3060ca855"/><file name="suppressionlist.json" hash="13fff3aeddf64804cf8d9232b79ab45b"/><file name="systemdate.json" hash="5f2f368919effd4c7d36bc11d42d8198"/><file name="template_details.json" hash="81fa02e23c0a9c00c55730956a2868b0"/><file name="templates.json" hash="64aca93871da82620071a26c818da4ce"/><file name="timezones.json" hash="ff9bbd7171fe05f5bace2fc8087953d0"/><file name="unsubscribed_subscribers.json" hash="0f7cec268e4241426a5c7dcc33ba99eb"/></dir></dir><file name=".gitignore" hash="1416491a3a84679680a343e7adf1f20d"/><file name=".travis.yml" hash="3f3c6ec40583a10d8ec8dfa89a2010e8"/></dir></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>4.1.0</min><max>6.0.0</max></php></required></dependencies>
22
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>DigitalPianism_CampaignMonitor</name>
4
+ <version>0.7.5</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
12
  &lt;p&gt;Campaign Monitor is built for designers who can create great looking emails for themselves and their clients, but need software to send each campaign, track the results and manage their subscribers." www.campaignmonitor.com&lt;/p&gt;&#xD;
13
  &#xD;
14
  &lt;p&gt;This extension integrates Magento with the Campaign Monitor mailing list manager. Users are added to a specified Campaign Monitor email list when they subscribe to the newsletter in Magento, and removed when they unsubscribe. Users are also marked as unsubscribed in Magento when they click an unsubscribe link in a Campaign Monitor email.&lt;/p&gt;</description>
15
+ <notes>- Fix bugs with the unsubscribe controller&#xD;
16
+ - Fix bug with the backend mass unsubscribe controller&#xD;
17
+ - Next release will include a subscribe on checkout feature.</notes>
18
  <authors><author><name>Digital Pianism</name><user>digitalpianism</user><email>contact@digital-pianism.com</email></author></authors>
19
+ <date>2014-10-23</date>
20
+ <time>10:34:30</time>
21
+ <contents><target name="magecommunity"><dir name="DigitalPianism"><dir name="CampaignMonitor"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Auth.php" hash="a95501d852759b07a4f5f5e24743a0e7"/><file name="Refreshtoken.php" hash="8053f23d810219471e581e071bef96c6"/></dir></dir><dir name="Source"><file name="Authtype.php" hash="087491d524ceb6c74470673fca8e612d"/></dir></dir></dir></dir><file name="Linkedattributes.php" hash="3c5d00f9352fa53fbd36243c0d87db6e"/></dir><dir name="Helper"><file name="Data.php" hash="4dd651073df9534bb4a094021d515def"/></dir><dir name="Model"><file name="Auth.php" hash="5f21e27b1b71d778ff49e3e46ab95bd5"/><dir name="Checkout"><file name="Observer.php" hash="4b76c6b2431baed187095b7a1b0e608f"/><dir name="Type"><file name="Onepage.php" hash="32cdc82ead13d07a1d23121b5f0dd995"/></dir></dir><dir name="Customer"><file name="Observer.php" hash="2b6cb4bfdfb63b2e611d5dea60fa667b"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Authtype.php" hash="2bba7379821e48b18d78327d02868b54"/></dir></dir></dir></dir><dir name="controllers"><file name="AdminhookController.php" hash="0598814f0cd09e4fd200520c94f9bad6"/><dir name="Adminhtml"><file name="AuthController.php" hash="fa7a2bbd67293a8145da6acfef5b9ec4"/></dir><file name="AuthController.php" hash="10c1c99b9c4a36455eceddbecee68b26"/><file name="HookController.php" hash="4e93ea76a5eb65bfbc40ef073578f091"/><dir name="Newsletter"><file name="SubscriberController.php" hash="6498dc9c8608370d0ed4103d8067d173"/></dir><file name="UnsubscribeController.php" hash="3060b2242988d3bfbb799d46cb9501c2"/></dir><dir name="etc"><file name="config.xml" hash="4547ae30686b8164e025c845bd34d80a"/><file name="system.xml" hash="bf9b3e5c5f5c622ca69db63664b2bb77"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="DigitalPianism_CampaignMonitor.xml" hash="6044d29d2b2e7d0689315376e3c27acd"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="digitalpianism"><dir name="campaignmonitor"><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array_dropdown.phtml" hash="ac84db9b1e8b342337a478ecba62e0b1"/><file name="auth.phtml" hash="ec611006cadbb39caff40e5115b78586"/><file name="refreshtoken.phtml" hash="1d43c3e66c3c89a1d857b328eae6997f"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="digitalpianism"><file name="campaignmonitor.xml" hash="d01714d890051c5d01c82ad9624fcba6"/></dir></dir><dir name="template"><dir name="digitalpianism"><dir name="campaignmonitor"><dir name="persistent"><dir name="checkout"><file name="billing.phtml" hash="64b8515cd7eab3136d64ec5a0f2328d2"/><dir name="onepage"><file name="checkoutnewsletter.phtml" hash="ae24dcbc1ee1bcc353533f5ea7c7d572"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="lib"><dir name="createsend"><file name="HISTORY.md" hash="ab283bd0126e8c10edf6da099c80a661"/><file name="LICENSE" hash="e4306d4b6c77f2db816ec4aed73a13c7"/><file name="README.md" hash="90a7855700d85e14211baf5399810a3d"/><file name="RELEASE.md" hash="5efce8234607beab27bf466b23fc4535"/><dir name="class"><file name="base_classes.php" hash="8a3f82c1204d7de080d2f3d15cb70ea9"/><file name="cacert.pem" hash="c29d362201b1bd232898d2b658811db2"/><file name="log.php" hash="11ff6a9006a6386c1cd8880cd3c0f41b"/><file name="serialisation.php" hash="3eb39437970e8787f0ef9ac292b688e6"/><file name="services_json.php" hash="c9e9ef0d35d7d34f9d216344da27915d"/><file name="transport.php" hash="da2967846daf164a70e649c9f2ee0094"/></dir><file name="composer.json" hash="eccad7521596b5fe0d81af51ab2f16a1"/><file name="composer.lock" hash="e64bca0a5accd8086e4e49bf41aa8629"/><file name="csrest_administrators.php" hash="72480342a46e8d82fd44096b4818f090"/><file name="csrest_campaigns.php" hash="38e2c429abaaa4609d30f28622e5fc3f"/><file name="csrest_clients.php" hash="df11ce1c1fd5fd43980db42cb83a6fa3"/><file name="csrest_general.php" hash="b8d1de7d1e435231955cdf8bc0311632"/><file name="csrest_lists.php" hash="42904680a424977d7c6f3211cf0d7a9c"/><file name="csrest_people.php" hash="ff2a14af7e171a11d73bef3d4995f512"/><file name="csrest_segments.php" hash="bac0e031058e7e08ae97906738cc65fc"/><file name="csrest_subscribers.php" hash="b5ad794e2cc2f65a278a8aa9de4af7d7"/><file name="csrest_templates.php" hash="4c94511a505a868eef2f8109ca3c35d6"/><dir name="samples"><dir name="campaign"><file name="create.php" hash="af4016e1b3539b3710d4b8e05bc7001b"/><file name="create_from_template.php" hash="4868b7f363abebc3d9fe9f561e59a743"/><file name="delete.php" hash="b96c2421084e77c241ea270894719aff"/><file name="get_bounces.php" hash="3bd2b2faa8d4b99bf7b9d682ce7402d3"/><file name="get_clicks.php" hash="92209680bdd73ecf3f94ecd1c33374ce"/><file name="get_email_client_usage.php" hash="fcf3a316f03460f26b6f12bcb20c17b0"/><file name="get_lists_and_segments.php" hash="e7d07e56924abfbd2d390b468d2df14b"/><file name="get_opens.php" hash="e155bf6a72a26fd34997d9024bd9911c"/><file name="get_recipients.php" hash="488f76fba7f7e2dc0680abefe5fe1fb5"/><file name="get_spam.php" hash="35c0beea84a51e3e447546f6b11ba754"/><file name="get_summary.php" hash="85ee04ac9adc616aa41d5a02824e6f7c"/><file name="get_unsubscribes.php" hash="af39956e9f46d9ecd1e78fff830f87b0"/><file name="send.php" hash="9e33ed7bd15e246929f52847f93827ce"/><file name="send_preview.php" hash="4eb7bff25251b00915791b96b20ee2ab"/><file name="unschedule.php" hash="83f0374d69eee6ae284c7fe27fdb65d7"/></dir><dir name="client"><file name="create.php" hash="8fbadcd57df2246a8447d3a3b9843d64"/><file name="delete.php" hash="a7a9945427a64737981c4a3a5c047d97"/><file name="get.php" hash="0b53f225d317d3d97bb0f3bafe83cf53"/><file name="get_campaigns.php" hash="242ed8ed7338a502751ead210283cb04"/><file name="get_drafts.php" hash="2efeea55251ec1e7e7c7767820dd28f1"/><file name="get_lists.php" hash="97ffa5cd9ccc765ae79baff0f50ece64"/><file name="get_lists_for_email.php" hash="a402b11a7b93dc6992dc69998a0ebf80"/><file name="get_scheduled.php" hash="163d89985d5fdc29d9f3a5d50787fd81"/><file name="get_segments.php" hash="9acd7c148db84fd03d825a6eaebd0b88"/><file name="get_suppressionlist.php" hash="2ae6c31510338b307f93d49369c964d1"/><file name="get_templates.php" hash="756789c223be6664b3517b79063f5143"/><file name="set_basics.php" hash="839bc9f656d26caf7335b2a4f4336ae8"/><file name="set_monthly_billing.php" hash="7f4ff840e6fe78932f9bc72e68c282da"/><file name="set_payg_billing.php" hash="2f67604445e8807a70a9e28759f3bb55"/><file name="suppress.php" hash="f78f0ddb442c9dfc53865c00ee57d266"/><file name="transfer_credits.php" hash="3fe8a12cef59a2d126d8ed7437563ec8"/><file name="unsuppress.php" hash="3442665090da89c2f5d91f6b69c18ade"/></dir><file name="get_apikey.php" hash="36f399338a612b2771ed3c53058d1d6f"/><file name="get_billing_details.php" hash="bfe297ec441b25eaa6155e283b4c0bf7"/><file name="get_clients.php" hash="521e3174750e8c41236c1c4fae5ae8f4"/><file name="get_countries.php" hash="6a71a585ef76eedec4589ecc303415f5"/><file name="get_systemdate.php" hash="7b5eeae853d164667140fb3c99a5b8ff"/><file name="get_timezones.php" hash="f756ab9b392af894320defe0f7f7296d"/><dir name="list"><file name="activate_webhook.php" hash="ca496e62c78429fa745f624738b80ce7"/><file name="create.php" hash="16a635a4de9ec820b08a7f30319534bd"/><file name="create_custom_field.php" hash="59ad0fe4d6b2038ceeda7681e4515dd0"/><file name="create_webhook.php" hash="d968c28b19521f6d3c5e6852c5c13806"/><file name="deactivate_webhook.php" hash="68478920fca13c0c1f98a450be8cb3c2"/><file name="delete.php" hash="12f035403835a63c7a0c1ba4704b3e46"/><file name="delete_custom_field.php" hash="f5031a6eac6ba776b54ac22a79c023b5"/><file name="delete_webhook.php" hash="080320b7e078ce0e33586e4c6a944172"/><file name="get.php" hash="25dcb3de68cd41792ec88d7d937217e8"/><file name="get_active_subscribers.php" hash="afcee93bc1b922a99c9e19f48894417b"/><file name="get_bounced_subscribers.php" hash="2fa45e557cca0d93924a6415fbc302d5"/><file name="get_custom_fields.php" hash="ddcaf8ee644474bb77d597894f8e501e"/><file name="get_deleted_subscribers.php" hash="400adee5529e1e0f16ff7b64b09e8bca"/><file name="get_segments.php" hash="1ddba11f0968d2d7e7109e14140e7663"/><file name="get_stats.php" hash="74ab2cf477a5049505f1959c3e9e272c"/><file name="get_unconfirmed_subscribers.php" hash="e6062d83308ccc7648d8c17200d5f277"/><file name="get_unsubscribed_subscribers.php" hash="366d5bbd88a4028b664be59420a1a0aa"/><file name="get_webhooks.php" hash="bbcb6401f2a1d3268f25405b3cbe4598"/><file name="list_webhook_receiver.php" hash="12ca45146c050f341423f80acbe688aa"/><file name="test_webhook.php" hash="22bf2bdf4c277bc86300d43018e4926e"/><file name="update.php" hash="acb1f015b02b9d66da6d286843def237"/><file name="update_custom_field.php" hash="8b5f33bc803fa29fb0a44847a0d399ec"/><file name="update_field_options.php" hash="809ed63991f1e799ee2c2b70f3c692f4"/></dir><dir name="segment"><file name="add_rule.php" hash="3ed9335f70c354cf068a176eb6dd8f6f"/><file name="clear_rules.php" hash="da68802f93c3c25a60fcf1a2b7603273"/><file name="create.php" hash="4f12c0099e9edc42ab55acfd80239ecd"/><file name="delete.php" hash="9079d2812da34ce862f9543513eb7efc"/><file name="get.php" hash="f4e65cd88d02dc5fa0c2d9d7d1a444e6"/><file name="get_subscribers.php" hash="a580a7c33025bd516cae2e8b87cc10dd"/><file name="update.php" hash="cb37cd60257eb361f80f69dfa830ab94"/></dir><dir name="subscriber"><file name="add.php" hash="f266ce4459f71665e29d25bb5181ba76"/><file name="delete.php" hash="08325db91e593b855749bc5d9381f5e3"/><file name="get.php" hash="e4d4cda7ed515df7ab7e81c72906601d"/><file name="get_history.php" hash="445b5dfc75fec5433986655437f5f608"/><file name="import.php" hash="119de43ee1e4b31ce2b710ad4507a25f"/><file name="unsubscribe.php" hash="7896a14a7bbb69a8b4d1db9ead52053f"/><file name="update.php" hash="4a62f2b72d31cb168258738483366707"/></dir><dir name="template"><file name="create.php" hash="0ed844ae8d5fc1025902a7fcfb8a949b"/><file name="delete.php" hash="ddd8cbab53644e863d5f0d4807e03719"/><file name="get.php" hash="3d5147086b92c85e7b0289ba065f9434"/><file name="update.php" hash="0854c3686f1339434cb6fb12897f801f"/></dir></dir><dir name="tests"><file name="all_tests.php" hash="3fafbd947aa885d9056ed62e832ca61b"/><dir name="class_tests"><file name="response_tests.php" hash="ae5b4f541ac5bcba7a9417544d2156a9"/><file name="transport_test.php" hash="3033343417f283136c43d0bab77ac355"/></dir><file name="csrest_administrators_test.php" hash="77830067da14a226bfdc86b445f68f30"/><file name="csrest_campaigns_test.php" hash="ce68576c81c314dbdeba2b229903d865"/><file name="csrest_clients_test.php" hash="d3023b37bc3ebf222171606a100532d5"/><file name="csrest_lists_test.php" hash="533753c96477cad7598382c94e9a8937"/><file name="csrest_people_test.php" hash="72269f3d21caaf5648684da44b0ad319"/><file name="csrest_segments_test.php" hash="33f275bcab02eacb32299d6fc63e1b7c"/><file name="csrest_subscribers_test.php" hash="8b6ec2dade2d5b59d8f27f7e32df049f"/><file name="csrest_template_test.php" hash="3645fc50d5e43da11fa1a2b496b692c4"/><file name="csrest_test.php" hash="de298e06f8b584018f8e6b1d14000f32"/><dir name="responses"><file name="active_subscribers.json" hash="414033ce6952d88c0edd3c7b04d4f14e"/><file name="add_subscriber.json" hash="236507977b97832343c87955243068ad"/><file name="apikey.json" hash="4ca4132cc99f80bfc3d4a029a77a7a6e"/><file name="bounced_subscribers.json" hash="78c52687485c30c0fb031eb82e472fb3"/><file name="campaign_bounces.json" hash="55471525555dacee6ca1eb9ed5826cea"/><file name="campaign_clicks.json" hash="57d3357f4a0d8b55042a80e6d984e1ea"/><file name="campaign_listsandsegments.json" hash="a0d21dda2042a25b1266036b5d945f0c"/><file name="campaign_opens.json" hash="50c3052eebc922dfd0293498b5374ef0"/><file name="campaign_recipients.json" hash="be59c57f1f497669260f5124c13d109e"/><file name="campaign_spam.json" hash="48fa85397d6d8da1a685a94c404d14a9"/><file name="campaign_summary.json" hash="248d074230990e424dedb26afac895eb"/><file name="campaign_unsubscribes.json" hash="87d6b967ec28f8b3cd7845acc3ba0a16"/><file name="campaigns.json" hash="3b160d6e1a5de3e6163f2fffa502e4cb"/><file name="client_details.json" hash="964787a45923035cdd7330d4af13dfd9"/><file name="clients.json" hash="b243ae5d2f1b0686a6f45bbc262b1ad5"/><file name="countries.json" hash="7baa975380541216a7829128d4d7fb5b"/><file name="create_campaign.json" hash="61079127bd26d95434347f30803a85b2"/><file name="create_client.json" hash="0b5ea68aeecf1f61c8a00fb5d2b89104"/><file name="create_custom_field.json" hash="49b9878fd944fa8ea2f283a3d0b6576b"/><file name="create_list.json" hash="33b7d284c287fa44edb649234bc2ac6b"/><file name="create_list_webhook.json" hash="8a1c9ea0268a3a58d8f8fdaa4f159519"/><file name="create_segment.json" hash="6183146c3898ae281ea640e40fb5b3b0"/><file name="create_template.json" hash="9b1fcc1ae0925bd552cb23e364d48cca"/><file name="custom_api_error.json" hash="6be6c0df48a411fc54a5abf1d8502690"/><file name="custom_fields.json" hash="fe40aa43df15068516cdc6b7d9e2148c"/><file name="deleted_subscribers.json" hash="176235e9b24405ed329cc40a9ac5d1cd"/><file name="drafts.json" hash="8b36d3bf66ebb683b6926fcef95ae106"/><file name="import_subscribers.json" hash="3c7c7d85d510224197dc597d3a6cf585"/><file name="import_subscribers_partial_success.json" hash="4e1ff5c7b33a77d709530a31f544a22d"/><file name="list_details.json" hash="09d06afb7cd013e74fe615ddfd5a6799"/><file name="list_stats.json" hash="b8cd04e30e5e30862f005208997655de"/><file name="list_webhooks.json" hash="93194d66734e07372cac1b5c9c04f2b5"/><file name="lists.json" hash="0b7f8013e3e93a105a7a7d8c156daf4d"/><file name="listsforemail.json" hash="c7eb2e23b02883e0a0f9a9b2ca9bc94a"/><file name="scheduled.json" hash="d7c9df96fbfa5bafb1e1cfc0643123b7"/><file name="segment_details.json" hash="9ec00f104a565fc723270e3ceb91d509"/><file name="segment_subscribers.json" hash="cf5cec4bc4e7970315ea929a0bd29ecd"/><file name="segments.json" hash="d2d9265fd87ed661cd65c9c96b31a2f0"/><file name="subscriber_details.json" hash="1c5733a762560ed1dc27449edea3c27f"/><file name="subscriber_history.json" hash="93d3efaa0f0373156146e9f3060ca855"/><file name="suppressionlist.json" hash="13fff3aeddf64804cf8d9232b79ab45b"/><file name="systemdate.json" hash="5f2f368919effd4c7d36bc11d42d8198"/><file name="template_details.json" hash="81fa02e23c0a9c00c55730956a2868b0"/><file name="templates.json" hash="64aca93871da82620071a26c818da4ce"/><file name="timezones.json" hash="ff9bbd7171fe05f5bace2fc8087953d0"/><file name="unsubscribed_subscribers.json" hash="0f7cec268e4241426a5c7dcc33ba99eb"/></dir></dir><file name=".gitignore" hash="1416491a3a84679680a343e7adf1f20d"/><file name=".travis.yml" hash="3f3c6ec40583a10d8ec8dfa89a2010e8"/></dir></dir></target></contents>
22
  <compatible/>
23
  <dependencies><required><php><min>4.1.0</min><max>6.0.0</max></php></required></dependencies>
24
  </package>