Conlabz_CrConnect - Version 3.0.5

Version Notes

Stability Improvements
PHP requirements changed

Download this release

Release Info

Developer Conlabz GmbH
Extension Conlabz_CrConnect
Version 3.0.5
Comparing to
See all releases


Code changes from version 3.0.4 to 3.0.5

app/code/community/Conlabz/CrConnect/.DS_Store DELETED
Binary file
app/code/community/Conlabz/CrConnect/Block/Groupsapis.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Conlabz_CrConnect_Block_GroupsApis extends Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstract
3
+ {
4
+ protected $magentoOptions;
5
+
6
+ public function __construct()
7
+ {
8
+ $this->addColumn('magento', array(
9
+ 'label' => Mage::helper('adminhtml')->__('Magento user groups'),
10
+ 'size' => 28,
11
+ ));
12
+ $this->addColumn('crconnect', array(
13
+ 'label' => Mage::helper('adminhtml')->__('CrConnect group API key'),
14
+ 'size' => 28
15
+ ));
16
+ $this->_addAfter = false;
17
+ $this->_addButtonLabel = Mage::helper('adminhtml')->__('Add API keys for group');
18
+
19
+ parent::__construct();
20
+ $this->setTemplate('crconnect/system/config/form/field/array_groups.phtml');
21
+
22
+ // customer options
23
+ $this->magentoOptions = array();
24
+ $allGroups = Mage::getModel('customer/group')->getCollection()->toOptionHash();
25
+ foreach($allGroups as $key=>$allGroup){
26
+ $this->magentoOptions[$key] = $allGroup;
27
+ }
28
+
29
+ }
30
+
31
+ protected function _renderCellTemplate($columnName)
32
+ {
33
+ if (empty($this->_columns[$columnName])) {
34
+ throw new Exception('Wrong column name specified.');
35
+ }
36
+ $column = $this->_columns[$columnName];
37
+ $inputName = $this->getElement()->getName() . '[#{_id}][' . $columnName . ']';
38
+
39
+ if($columnName == 'magento')
40
+ {
41
+ $rendered = '<select name="'.$inputName.'">';
42
+ foreach($this->magentoOptions as $att => $name)
43
+ {
44
+ $rendered .= '<option value="'.$att.'">'.$name.'</option>';
45
+ }
46
+ $rendered .= '</select>';
47
+ }
48
+ else
49
+ {
50
+ return '<input type="text" name="' . $inputName . '" value="#{' . $columnName . '}" ' . ($column['size'] ? 'size="' . $column['size'] . '"' : '') . '/>';
51
+ }
52
+
53
+ return $rendered;
54
+ }
55
+ }
app/code/community/Conlabz/CrConnect/Model/Checkout/Observer.php ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Conlabz GmbH
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com and you will be sent a copy immediately.
14
+ *
15
+ * @category CleverReach
16
+ * @package Conlabz_CrConnect
17
+ * @copyright Copyright (c) 2012 Conlabz GmbH (http://www.conlabz.de)
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+ class Conlabz_CrConnect_Model_Checkout_Observer
21
+ {
22
+ public function success_action($observer)
23
+ {
24
+ $event = $observer->getEvent();
25
+
26
+ $email = false;
27
+ $apiKey = trim(Mage::getStoreConfig('crroot/crconnect/api_key'));
28
+ $listID = trim(Mage::getStoreConfig('crroot/crconnect/list_id'));
29
+
30
+ $syncOrders = trim(Mage::getStoreConfig('crroot/crconnect/sync_orders'));
31
+ $syncOrderStatus = trim(Mage::getStoreConfig('crroot/crconnect/sync_order_status'));
32
+
33
+ if($syncOrders)
34
+ $lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
35
+ else{
36
+ $lastOrderId = false;
37
+ Mage::log("CleverReach_CrConnect: order sycing deactivated");
38
+ }
39
+ if ($lastOrderId){
40
+ $order = Mage::getModel('sales/order')->load($lastOrderId);
41
+ $customer = Mage::getModel('customer/customer')->load($order->getCustomerId());
42
+
43
+ $subscribed = $customer->getIsSubscribed();
44
+
45
+ if($subscribed === NULL)
46
+ {
47
+ $subscribed = Mage::getModel('newsletter/subscriber')->loadByCustomer($customer)->isSubscribed();
48
+ }
49
+
50
+ if($subscribed){
51
+ $add = array("newsletter" => "1");
52
+ }else{
53
+ $add = array("newsletter" => "0");
54
+ }
55
+
56
+ $email = $order->getCustomerEmail();
57
+
58
+ if($email){
59
+ if($customer->getEmail()){
60
+ $crReceiver = Mage::helper('crconnect')->prepareUserdata($customer, $add, false);
61
+ }else{
62
+ $shippingAddress = $order->getBillingAddress()->getData();
63
+ if($shippingAddress){
64
+ $crReceiver = array (
65
+ 'email' => $email,
66
+ //'registered' => strtotime($shippingAddress["created_at"]),
67
+ //'activated' => strtotime($shippingAddress["updated_at"]),
68
+ 'source' => 'MAGENTO',
69
+ 'attributes' => array(0 => array("key" => "firstname", "value" => @$shippingAddress["firstname"]),
70
+ 1 => array("key" => "lastname", "value" => @$shippingAddress["lastname"]),
71
+ 2 => array("key" => "street", "value" => @$shippingAddress["street"]),
72
+ 3 => array("key" => "zip", "value" => @$shippingAddress["postcode"]),
73
+ 4 => array("key" => "city", "value" => @$shippingAddress["city"]),
74
+ 5 => array("key" => "country", "value" => @$shippingAddress["country_id"]),
75
+ 6 => array("key" => "salutation", "value" => @$shippingAddress["prefix"]),
76
+ 7 => array("key" => "title", "value" => @$shippingAddress["suffix"]),
77
+ 8 => array("key" => "company", "value" => @$shippingAddress["company"]))
78
+ );
79
+
80
+ $cookie = Mage::getSingleton('core/cookie');
81
+ if ($cookie->get('crmailing')){
82
+ $crReceiver['orders'][0]['mailings_id'] = $cookie->get('crmailing');
83
+ }
84
+
85
+ if($subscribed){
86
+ $crReceiver["attributes"][] = array("key" => 'newsletter', "value" => "1");
87
+ }
88
+ }
89
+ }
90
+ }
91
+
92
+ }
93
+
94
+ if($apiKey && $listID && $email && $lastOrderId && $syncOrders)
95
+ {
96
+
97
+ try {
98
+ $client = new SoapClient(Mage::helper('crconnect')->getWsdl(), array("trace" => true));
99
+ } catch(Exception $e) {
100
+ Mage::log("CleverReach_CrConnect: Error connecting to CleverReach server: ".$e->getMessage());
101
+ }
102
+
103
+ /* ########################### */
104
+ if($crReceiver)
105
+ {
106
+ try {
107
+ $tmp = $crReceiver;
108
+ $addTxt="keeping status";
109
+ //if new users should be activated by default. do it
110
+ if($syncOrderStatus){
111
+ $tmp["deactivated"] = 0;
112
+ $addTxt = "forced active";
113
+ }
114
+
115
+ // Get keys for different user groups
116
+ if (Mage::getStoreConfig('crroot/crconnect/showgroup') == '1'){
117
+ $groupKeys = Mage::helper('crconnect')->getKeys();
118
+ if ($groupId = $customer->getGroupId()){
119
+ if (isset($groupKeys[$groupId])){
120
+ $return = $client->receiverAdd($apiKey, $groupKeys[$groupId], $tmp);
121
+ }
122
+ }
123
+ }else{
124
+ $return = $client->receiverAdd($apiKey, $listID, $tmp);
125
+ }
126
+
127
+ if($return->status=="SUCCESS"){
128
+ Mage::log("CleverReach_CrConnect: subscribed ($addTxt) - ".$crReceiver["email"]);
129
+ }else{
130
+ if($return->statuscode=="50"){ //seems to exists allready, try update
131
+ $return = $client->receiverUpdate($apiKey, $listID, $tmp);
132
+ if(!$return->status=="SUCCESS"){
133
+ Mage::log("CleverReach_CrConnect: order insert error - ".$return->message);
134
+ }else{
135
+ Mage::log("CleverReach_CrConnect: resubscribed ($addTxt) - ".$crReceiver["email"]);
136
+ }
137
+ }else{
138
+ Mage::log("CleverReach_CrConnect: error - ".$return->message);
139
+ }
140
+ }
141
+ } catch(Exception $e) {
142
+ Mage::log("CleverReach_CrConnect: Error in SOAP call: ".$e->getMessage());
143
+ }
144
+ }
145
+
146
+ /* ########################### */
147
+
148
+ $items = $order->getAllItems();
149
+ if($items)foreach ($items as $item){
150
+
151
+ $tmpItem = array();
152
+ $tmpItem["order_id"] = $lastOrderId;
153
+ $tmpItem["product"] = $item->getName();
154
+ $tmpItem["product_id"] = $item->getProductId();
155
+ $tmpItem["price"] = round($item->getPrice(),2);
156
+ $tmpItem["quantity"] = (integer)$item->getQtyOrdered();
157
+ $tmpItem["purchase_date"] = time();
158
+ $tmpItem["currency"] = $order->getData('order_currency_code');
159
+ $tmpItem["source"] = "MAGENTO Order";
160
+
161
+ $cookie = Mage::getSingleton('core/cookie');
162
+ if ($cookie->get('crmailing')){
163
+ $tmpItem['mailings_id'] = $cookie->get('crmailing');
164
+ }
165
+
166
+ $tmp = $client->receiverAddOrder($apiKey, $listID, $email, $tmpItem);
167
+ if($tmp->status!="SUCCESS"){
168
+ Mage::log("CleverReach_CrConnect: Error - ".$tmp->message);
169
+ }else{
170
+ Mage::log("CleverReach_CrConnect: submitted: ".$tmpItem["order_id"]." - ".$tmpItem["product"]);
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
app/code/community/Conlabz/CrConnect/Model/Customer/Observer.php ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Conlabz GmbH
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com and you will be sent a copy immediately.
14
+ *
15
+ * @category CleverReach
16
+ * @package Conlabz_CrConnect
17
+ * @copyright Copyright (c) 2012 Conlabz GmbH (http://conlabz.de)
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+
21
+ class SubscriberCustomField
22
+ {
23
+ function SubscriberCustomField($k, $v)
24
+ {
25
+ $this->Key = $k;
26
+ $this->Value = $v;
27
+ }
28
+ }
29
+
30
+ class Conlabz_CrConnect_Model_Customer_Observer
31
+ {
32
+ public function session_init($observer)
33
+ {
34
+
35
+ $mailingId = Mage::getSingleton('core/app')->getRequest()->getParam('crmailing');
36
+ $cookie = Mage::getSingleton('core/cookie');
37
+ if ($mailingId){
38
+ $cookie->set('crmailing', $mailingId ,time()+3600*24*14,'/');
39
+ }
40
+ $customerId = Mage::getSingleton('core/app')->getRequest()->getParam('crcustomer');
41
+ $cookie = Mage::getSingleton('core/cookie');
42
+ if ($customerId){
43
+ $cookie->set('crcustomer', $customerId ,time()+3600*24*14,'/');
44
+ }
45
+
46
+ }
47
+
48
+ public function check_subscription_status($observer)
49
+ {
50
+
51
+ $event = $observer->getEvent();
52
+ $customer = $event->getCustomer();
53
+
54
+ $apiKey = trim(Mage::getStoreConfig('crroot/crconnect/api_key'));
55
+ $listID = trim(Mage::getStoreConfig('crroot/crconnect/list_id'));
56
+
57
+ $name = $customer->getFirstname() . " " . $customer->getLastname();
58
+ $newEmail = $customer->getEmail();
59
+ $subscribed = $customer->getIsSubscribed();
60
+
61
+ $groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
62
+
63
+ $shippingAddress = false;
64
+ if($tmp = $customer->getDefaultBillingAddress())
65
+ $shippingAddress = $tmp->getData();
66
+
67
+
68
+ try {
69
+ $client = new SoapClient(Mage::helper('crconnect')->getWsdl(), array("trace" => true));
70
+ } catch(Exception $e) {
71
+ Mage::log("CleverReach_CrConnect: Error connecting to CleverReach server: ".$e->getMessage());
72
+ }
73
+
74
+ $keys = Mage::helper('crconnect')->getKeys();
75
+
76
+ $isCustomSubscribed = false;
77
+ if (isset($keys[$groupId])){
78
+ $isCustomSubscribed = Mage::helper('crconnect')->getSubscriber($newEmail, $groupId);
79
+ }
80
+
81
+ if ($isCustomSubscribed){
82
+ if (isset($_POST['is_gsubscribed']) && $_POST['is_gsubscribed'] == 1){
83
+
84
+ }else{
85
+ try {
86
+
87
+ $return = $client->receiverSetInactive($apiKey, $keys[$groupId], $newEmail);
88
+
89
+ } catch(Exception $e) {
90
+ Mage::log("CleverReach_CrConnect: Error in SOAP call: ".$e->getMessage());
91
+ return;
92
+ }
93
+ }
94
+ }else{
95
+
96
+ if (isset($_POST['is_gsubscribed']) && $_POST['is_gsubscribed'] == 1){
97
+
98
+ $crReceiver = Mage::helper('crconnect')->prepareUserdata($customer, array('newsletter'=>1), true);
99
+ $return = $client->receiverAdd($apiKey, $keys[$groupId], $crReceiver);
100
+ if ($return->status == "ERROR"){
101
+ if($return->statuscode=="50"){ //try update
102
+ $crReceiver["deactivated"] = 0;
103
+ $return = $client->receiverUpdate($apiKey, $keys[$groupId], $crReceiver);
104
+ Mage::log("CleverReach_CrConnect:". $crReceiver["attributes"][1]["key"]);
105
+ if(!$return->status=="SUCCESS"){
106
+ Mage::log("CleverReach_CrConnect: resubscribe error - ".$return->message);
107
+ }
108
+ }
109
+ }
110
+
111
+ }
112
+ }
113
+
114
+ $oldEmail = Mage::getModel('customer/customer')->load($customer->getId())->getEmail();
115
+
116
+ // if subscribed is NULL (i.e. because the form didn't set it one way
117
+ // or the other), get the existing value from the database
118
+
119
+ if($subscribed === NULL)
120
+ {
121
+ $subscribed = Mage::getModel('newsletter/subscriber')->loadByCustomer($customer)->isSubscribed();
122
+ }
123
+
124
+ if($apiKey and $listID)
125
+ {
126
+ if($subscribed)
127
+ {
128
+ $crReceiver = Mage::helper('crconnect')->prepareUserdata($customer, array('newsletter'=>1), true);
129
+ Mage::log("CleverReach_CrConnect: Subscribing new email address (ob): $newEmail");
130
+ try {
131
+
132
+ // Get keys for different user groups
133
+ if (Mage::getStoreConfig('crroot/crconnect/showgroup') == '1'){
134
+ $groupKeys = Mage::helper('crconnect')->getKeys();
135
+ if ($groupId = $customer->getGroupId()){
136
+ if (isset($groupKeys[$groupId])){
137
+ $return = $client->receiverSetInactive($apiKey, $listID, $crReceiver["email"]);
138
+ $listID = $groupKeys[$groupId];
139
+ }
140
+ }
141
+ }
142
+ $return = $client->receiverAdd($apiKey, $listID, $crReceiver);
143
+ if($return->status=="SUCCESS"){
144
+ Mage::log("CleverReach_CrConnect: subscribed - ".$crReceiver["email"]);
145
+ }else{
146
+ if($return->statuscode=="50"){ //try update
147
+ $crReceiver["deactivated"] = 0;
148
+ $return = $client->receiverUpdate($apiKey, $listID, $crReceiver);
149
+ Mage::log("CleverReach_CrConnect:". $crReceiver["attributes"][1]["key"]);
150
+ if(!$return->status=="SUCCESS"){
151
+ Mage::log("CleverReach_CrConnect: resubscribe error - ".$return->message);
152
+ }
153
+ }else{
154
+ Mage::log("CleverReach_CrConnect: error - ".$return->message);
155
+ }
156
+ }
157
+ } catch(Exception $e) {
158
+ Mage::log("CleverReach_CrConnect: Error in SOAP call: ".$e->getMessage());
159
+ }
160
+ }
161
+ elseif($oldEmail)
162
+ {
163
+
164
+ Mage::log("CleverReach_CrConnect: Unsubscribing: $oldEmail");
165
+ $crReceiver = Mage::helper('crconnect')->prepareUserdata($customer, array('newsletter'=>0), false);
166
+ try {
167
+ $return = $client->receiverSetInactive($apiKey, $listID, $crReceiver["email"]);
168
+ if($return->status=="SUCCESS"){
169
+ Mage::log("CleverReach_CrConnect: unsubscribed - ".$crReceiver["email"]);
170
+
171
+ if($return->status == "SUCCESS"){
172
+ Mage::log("CleverReach_CrConnect: updating newsletterflag");
173
+ $client->receiverUpdate($apiKey, $listID, $crReceiver);
174
+ }
175
+ }else{ //call failed
176
+ Mage::log("CleverReach_CrConnect: error - ".$return->message);
177
+ }
178
+ } catch(Exception $e) {
179
+ Mage::log("CleverReach_CrConnect: Error in SOAP call: ".$e->getMessage());
180
+ }
181
+ }
182
+ }
183
+ }
184
+
185
+ public function customer_deleted($observer)
186
+ {
187
+
188
+ $event = $observer->getEvent();
189
+ $customer = $event->getCustomer();
190
+
191
+ $apiKey = trim(Mage::getStoreConfig('newsletter/crconnect/api_key'));
192
+ $listID = trim(Mage::getStoreConfig('newsletter/crconnect/list_id'));
193
+
194
+ $email = $customer->getEmail();
195
+
196
+ $keys = Mage::helper('crconnect')->getKeys();
197
+
198
+ $isCustomSubscribed = false;
199
+ if (isset($keys[$customer->getGroupId()])){
200
+ $isCustomSubscribed = Mage::helper('crconnect')->getSubscriber($email, $customer->getGroupId());
201
+ }
202
+
203
+ if($apiKey and $listID)
204
+ {
205
+ try {
206
+ $client = new SoapClient(Mage::helper('crconnect')->getWsdl(), array("trace" => true));
207
+ } catch(Exception $e) {
208
+ Mage::log("CleverReach_CrConnect: Error connecting to server: ".$e->getMessage());
209
+ }
210
+
211
+ Mage::log("CleverReach_CrConnect: Customer deleted, unsubscribing: $email");
212
+ try {
213
+ $return = $client->receiverDelete($apiKey, $listID, $email);
214
+ if($return->status=="SUCCESS"){
215
+ Mage::log("CleverReach_CrConnect: deleted - ".$email);
216
+ }else{ //call failed
217
+ Mage::log("CleverReach_CrConnect: error - ".$return["message"]);
218
+ }
219
+
220
+ if ($isCustomSubscribed){
221
+ $return = $client->receiverDelete($apiKey, $keys[$groupId], $email);
222
+ if($return->status=="SUCCESS"){
223
+ Mage::log("CleverReach_CrConnect: deleted - ".$email);
224
+ }else{ //call failed
225
+ Mage::log("CleverReach_CrConnect: error - ".$return["message"]);
226
+ }
227
+ }
228
+
229
+ } catch(Exception $e) {
230
+ Mage::log("CleverReach_CrConnect: Error in SOAP call: ".$e->getMessage());
231
+ }
232
+ }
233
+ }
234
+
235
+
236
+ public function getIsSubscribed($observer){
237
+ Mage::log("CleverReach_CrConnect: stat");
238
+ //Mage_Customer_Block_Newsletter
239
+ }
240
+
241
+
242
+ }
243
+ ?>
app/code/community/Conlabz/CrConnect/Model/Website/Observer.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Conlabz GmbH
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com and you will be sent a copy immediately.
14
+ *
15
+ * @category CleverReach
16
+ * @package Conlanz_CrConnect
17
+ * @copyright Copyright (c) 2012 Conlabz GmbH (http://conlabz.de)
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+
21
+
22
+ class Conlabz_CrConnect_Model_Website_Observer
23
+ {
24
+ public function trackingCodeCheck(){
25
+ $mailingId = Mage::getSingleton('core/app')->getRequest()->getParam('crmailing');
26
+ $cookie = Mage::getSingleton('core/cookie');
27
+ if ($mailingId){
28
+ $cookie->set('crmailing', $mailingId ,time()+3600*24*14,'/');
29
+ }
30
+ }
31
+ }
app/code/community/Conlabz/CrConnect/controllers/AccountController.php ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ include "Mage/Customer/controllers/AccountController.php";
3
+
4
+ class Conlabz_CrConnect_AccountController extends Mage_Customer_AccountController
5
+ {
6
+
7
+ /**
8
+ * Create customer account action
9
+ */
10
+ public function createPostAction()
11
+ {
12
+ $session = $this->_getSession();
13
+ if ($session->isLoggedIn()) {
14
+ $this->_redirect('*/*/');
15
+ return;
16
+ }
17
+ $session->setEscapeMessages(true); // prevent XSS injection in user input
18
+ if ($this->getRequest()->isPost()) {
19
+ $errors = array();
20
+
21
+ if (!$customer = Mage::registry('current_customer')) {
22
+ $customer = Mage::getModel('customer/customer')->setId(null);
23
+ }
24
+
25
+ /* @var $customerForm Mage_Customer_Model_Form */
26
+ $customerForm = Mage::getModel('customer/form');
27
+ $customerForm->setFormCode('customer_account_create')
28
+ ->setEntity($customer);
29
+
30
+ $customerData = $customerForm->extractData($this->getRequest());
31
+
32
+ if (Mage::getStoreConfig("newsletter/subscription/confirm_logged_email_template") == 1){
33
+
34
+ $status = Mage::getModel("newsletter/subscriber")->subscribe($this->getRequest()->getPost('email'));
35
+ if ($status == Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE) {
36
+ Mage::getSingleton('customer/session')->addSuccess($this->__('Confirmation request has been sent.'));
37
+ }
38
+ else {
39
+ Mage::getSingleton('customer/session')->addSuccess($this->__('Thank you for your subscription.'));
40
+ }
41
+
42
+ }else{
43
+
44
+
45
+ if ($this->getRequest()->getParam('is_subscribed', false)) {
46
+ $customer->setIsSubscribed(1);
47
+ }
48
+
49
+ }
50
+ /**
51
+ * Initialize customer group id
52
+ */
53
+ $customer->getGroupId();
54
+
55
+ if ($this->getRequest()->getPost('create_address')) {
56
+ /* @var $address Mage_Customer_Model_Address */
57
+ $address = Mage::getModel('customer/address');
58
+ /* @var $addressForm Mage_Customer_Model_Form */
59
+ $addressForm = Mage::getModel('customer/form');
60
+ $addressForm->setFormCode('customer_register_address')
61
+ ->setEntity($address);
62
+
63
+ $addressData = $addressForm->extractData($this->getRequest(), 'address', false);
64
+ $addressErrors = $addressForm->validateData($addressData);
65
+ if ($addressErrors === true) {
66
+ $address->setId(null)
67
+ ->setIsDefaultBilling($this->getRequest()->getParam('default_billing', false))
68
+ ->setIsDefaultShipping($this->getRequest()->getParam('default_shipping', false));
69
+ $addressForm->compactData($addressData);
70
+ $customer->addAddress($address);
71
+
72
+ $addressErrors = $address->validate();
73
+ if (is_array($addressErrors)) {
74
+ $errors = array_merge($errors, $addressErrors);
75
+ }
76
+ } else {
77
+ $errors = array_merge($errors, $addressErrors);
78
+ }
79
+ }
80
+
81
+ try {
82
+ $customerErrors = $customerForm->validateData($customerData);
83
+ if ($customerErrors !== true) {
84
+ $errors = array_merge($customerErrors, $errors);
85
+ } else {
86
+ $customerForm->compactData($customerData);
87
+ $customer->setPassword($this->getRequest()->getPost('password'));
88
+ $customer->setConfirmation($this->getRequest()->getPost('confirmation'));
89
+ $customerErrors = $customer->validate();
90
+ if (is_array($customerErrors)) {
91
+ $errors = array_merge($customerErrors, $errors);
92
+ }
93
+ }
94
+
95
+ $validationResult = count($errors) == 0;
96
+
97
+ if (true === $validationResult) {
98
+ $customer->save();
99
+
100
+ Mage::dispatchEvent('customer_register_success',
101
+ array('account_controller' => $this, 'customer' => $customer)
102
+ );
103
+
104
+ if ($customer->isConfirmationRequired()) {
105
+ $customer->sendNewAccountEmail(
106
+ 'confirmation',
107
+ $session->getBeforeAuthUrl(),
108
+ Mage::app()->getStore()->getId()
109
+ );
110
+ $session->addSuccess($this->__('Account confirmation is required. Please, check your email for the confirmation link. To resend the confirmation email please <a href="%s">click here</a>.', Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail())));
111
+ $this->_redirectSuccess(Mage::getUrl('*/*/index', array('_secure'=>true)));
112
+ return;
113
+ } else {
114
+ $session->setCustomerAsLoggedIn($customer);
115
+ $url = $this->_welcomeCustomer($customer);
116
+ $this->_redirectSuccess($url);
117
+ return;
118
+ }
119
+ } else {
120
+ $session->setCustomerFormData($this->getRequest()->getPost());
121
+ if (is_array($errors)) {
122
+ foreach ($errors as $errorMessage) {
123
+ $session->addError($errorMessage);
124
+ }
125
+ } else {
126
+ $session->addError($this->__('Invalid customer data'));
127
+ }
128
+ }
129
+ } catch (Mage_Core_Exception $e) {
130
+ $session->setCustomerFormData($this->getRequest()->getPost());
131
+ if ($e->getCode() === Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS) {
132
+ $url = Mage::getUrl('customer/account/forgotpassword');
133
+ $message = $this->__('There is already an account with this email address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.', $url);
134
+ $session->setEscapeMessages(false);
135
+ } else {
136
+ $message = $e->getMessage();
137
+ }
138
+ $session->addError($message);
139
+ } catch (Exception $e) {
140
+ $session->setCustomerFormData($this->getRequest()->getPost())
141
+ ->addException($e, $this->__('Cannot save the customer.'));
142
+ }
143
+ }
144
+
145
+ $this->_redirectError(Mage::getUrl('*/*/create', array('_secure' => true)));
146
+ }
147
+
148
+
149
+ }
app/code/community/Conlabz/CrConnect/controllers/HookController.php ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Conlabz GmbH
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com and you will be sent a copy immediately.
14
+ *
15
+ * @category CleverReach
16
+ * @package Conlabz_CrConnect
17
+ * @copyright Copyright (c) 2012 Conlabz GmbH (http://www.cleverreach.com)
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+
21
+ include "Mage/Newsletter/controllers/SubscriberController.php";
22
+
23
+ // Class that 'hooks' newsletter subscriptions from the frontend sign-up box.
24
+ // This is necessary because the Mage_Newsletter_Model_Subscriber class
25
+ // doesn't extend Mage_Core_Model_Abstract and so can't be observed directly.
26
+ // Instead we redirect all requests for newsletter/subscriber to this
27
+ // controller, which extends Mage_Newsletter_SubscriberController and
28
+ // overrides the newAction method.
29
+ class Conlabz_CrConnect_HookController extends Mage_Newsletter_SubscriberController {
30
+
31
+ public function confirmAction()
32
+ {
33
+ $id = (int) $this->getRequest()->getParam('id');
34
+ $code = (string) $this->getRequest()->getParam('code');
35
+
36
+ if ($id && $code) {
37
+ $subscriber = Mage::getModel('newsletter/subscriber')->load($id);
38
+ $session = Mage::getSingleton('core/session');
39
+
40
+ if($subscriber->getId() && $subscriber->getCode()) {
41
+ if($subscriber->confirm($code)) {
42
+
43
+ Mage::log("Cleverreach_CrConnect: newsletter signup for ".$subscriber->getEmail().", confirmation");
44
+
45
+ $apiKey = trim(Mage::getStoreConfig('crroot/crconnect/api_key'));
46
+ $listID = trim(Mage::getStoreConfig('crroot/crconnect/list_id'));
47
+ $confirm = trim(Mage::getStoreConfig('newsletter/subscription/confirm'));
48
+
49
+
50
+
51
+ $customer = Mage::getModel('customer/customer')->setWebsiteId(Mage::app()->getStore()->getWebsiteId())->loadByEmail($subscriber->getEmail());
52
+
53
+ if ($customer->getId()){
54
+
55
+ if (Mage::getStoreConfig('crroot/crconnect/showgroup') == '1'){
56
+ $groupKeys = Mage::helper('crconnect')->getKeys();
57
+ if ($groupId = $customer->getGroupId()){
58
+ if (isset($groupKeys[$groupId])){
59
+ $listID = $groupKeys[$groupId];
60
+ }
61
+ }
62
+ }
63
+
64
+ }
65
+
66
+ try {
67
+ $client = new SoapClient(Mage::helper('crconnect')->getWsdl(),
68
+ array("trace" => true));
69
+ } catch(Exception $e) {
70
+ Mage::log("CleverReach_CrConnect: Error connecting to server: ".$e->getMessage());
71
+ $session->addException($e, $this->__('There was a problem with the subscription'));
72
+ $this->_redirectReferer();
73
+ }
74
+
75
+ try {
76
+ $result = $client->receiverAdd($apiKey, $listID, array(
77
+ "email" => $subscriber->getEmail(),
78
+ "source" => "MAGENTO (frontend)",
79
+ "attributes" => array("key" => "newsletter", "value" => "1"),
80
+ )
81
+ );
82
+
83
+ if($result->status!="SUCCESS" && $result->statuscode == "50"){
84
+
85
+ $result = $client->receiverUpdate($apiKey, $listID, array(
86
+ "email" => $subscriber->getEmail(),
87
+ "source" => "MAGENTO (frontend)",
88
+ "attributes" => array("key" => "newsletter", "value" => "1"),
89
+ "deactivated"=>0
90
+ ));
91
+
92
+ }
93
+
94
+ } catch (Exception $e) {
95
+ Mage::log("CleverReach_CrConnect: Error in SOAP call: ".$e->getMessage());
96
+ $session->addException($e, $this->__('Subscription was invalid'));
97
+ $this->_redirectReferer();
98
+ }
99
+
100
+ parent::confirmAction();
101
+ } else {
102
+ $session->addError($this->__('Invalid subscription confirmation code'));
103
+ }
104
+ } else {
105
+ $session->addError($this->__('Invalid subscription ID'));
106
+ }
107
+ }
108
+
109
+ $this->_redirectUrl(Mage::getBaseUrl());
110
+ }
111
+
112
+
113
+ public function newAction() {
114
+
115
+ if ($this->getRequest()->isPost() && $this->getRequest()->getPost('email')) {
116
+ $session = Mage::getSingleton('core/session');
117
+ $customerSession = Mage::getSingleton('customer/session');
118
+ $email = (string) $this->getRequest()->getPost('email');
119
+
120
+ $apiKey = trim(Mage::getStoreConfig('crroot/crconnect/api_key'));
121
+ $listID = trim(Mage::getStoreConfig('crroot/crconnect/list_id'));
122
+ $confirm = trim(Mage::getStoreConfig('newsletter/subscription/confirm'));
123
+
124
+ if($apiKey && $listID && !$confirm) {
125
+ Mage::log("Cleverreach_CrConnect: newsletter signup for $email, no confirmation");
126
+
127
+ try {
128
+ $client = new SoapClient(Mage::helper('crconnect')->getWsdl(), array("trace" => true));
129
+ } catch(Exception $e) {
130
+ Mage::log("CleverReach_CrConnect: Error connecting to server: ".$e->getMessage());
131
+ $session->addException($e, $this->__('There was a problem with the subscription'));
132
+ $this->_redirectReferer();
133
+ }
134
+
135
+
136
+ $customerHelper = Mage::helper('customer');
137
+ {
138
+ // otherwise if nobody's logged in, ignore the custom
139
+ // attributes and just set the name to '(Guest)'
140
+ try {
141
+ /* echo "<pre>"; */
142
+ /* $result = $client->receiverGetByEmail($apiKey, $listID, 'alex.nuzil@conlabz.de', 1); */
143
+ /* var_dump($result); */
144
+ /* exit; */
145
+
146
+ if (Mage::getStoreConfig('crroot/crconnect/showgroup') == '1'){
147
+ $groupKeys = Mage::helper('crconnect')->getKeys();
148
+ if ($groupId = $customerSession->getCustomerGroupId()){
149
+ if (isset($groupKeys[$groupId])){
150
+ $return = $listID = $groupKeys[$groupId];
151
+ }
152
+ }
153
+ }
154
+
155
+ $result = $client->receiverAdd($apiKey, $listID, array(
156
+ "email" => $email,
157
+ "source" => "MAGENTO (frontend)",
158
+ "attributes" => array('0'=>array('key'=>'store', 'value'=>Mage::app()->getStore()->getCode(), 'variable'=>'{STORE}'),"newsletter"=>"1"),
159
+ )
160
+ );
161
+ } catch (Exception $e) {
162
+ Mage::log("CleverReach_CrConnect: Error in SOAP call: ".$e->getMessage());
163
+ $session->addException($e, $this->__('There was a problem with the subscription'));
164
+ $this->_redirectReferer();
165
+ }
166
+ }
167
+ } else if($apiKey && $listID && $confirm){
168
+ Mage::log("Cleverreach_CrConnect: skiping $email, waiting for confirmation");
169
+ }else{
170
+ Mage::log("Cleverreach_CrConnect: error: API key and/or ListID missing");
171
+ }
172
+ }
173
+
174
+ parent::newAction();
175
+ }
176
+ }
app/code/community/Conlabz/CrConnect/controllers/UnsubscribeController.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Conlabz GmbH
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/osl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com and you will be sent a copy immediately.
15
+ *
16
+ * @category CleverReach
17
+ * @package Conlabz_CrConnect
18
+ * @copyright Copyright (c) 2012 Conlabz GmbH (http://conlabz.de)
19
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
+ */
21
+
22
+ class Conlabz_CrConnect_UnsubscribeController extends Mage_Core_Controller_Front_Action
23
+ {
24
+ public function indexAction()
25
+ {
26
+ // don't do anything if we didn't get the email parameter
27
+ if(isset($_GET['email']))
28
+ {
29
+ $email = $_GET['email'];
30
+ $apiKey = trim(Mage::getStoreConfig('newsletter/crconnect/api_key'));
31
+ $listID = trim(Mage::getStoreConfig('newsletter/crconnect/list_id'));
32
+
33
+ // Check that the email address actually is unsubscribed in
34
+ // CleverReach
35
+ if($apiKey && $listID)
36
+ {
37
+ try {
38
+ $client = new SoapClient(Mage::helper('crconnect')->getWsdl(), array("trace" => true));
39
+ } catch(Exception $e) {
40
+ Mage::log("CleverReach_CrConnect: Error connecting to CleverReach server: ".$e->getMessage());
41
+ $session->addException($e, $this->__('There was a problem with the subscription'));
42
+ $this->_redirectReferer();
43
+ }
44
+
45
+ //get data from cleverreach
46
+ Mage::log("CleverReach_CrConnect: Error - ".$tmp->message);
47
+ $tmp = $client->receiverGetByEmail($apiKey, $email);
48
+ if($tmp->status!="SUCCESS"){
49
+ Mage::log("CleverReach_CrConnect: Error - ".$tmp->message);
50
+ $session->addException($e, $this->__('There was a problem with the unsubscription'));
51
+ $this->_redirectReferer();
52
+ }else{
53
+ Mage::log("CleverReach_CrConnect: Error - ".$tmp->message);
54
+ }
55
+
56
+ // If we are unsubscribed in cleverreach, mark us as
57
+ // unsubscribed in Magento.
58
+ if($tmp->data->deactivated)
59
+ {
60
+ try
61
+ {
62
+ Mage::log("CleverReach_CrConnect: Unsubscribing $email");
63
+ $collection = Mage::getModel('newsletter/subscriber')
64
+ ->loadByEmail($email)
65
+ ->unsubscribe();
66
+
67
+ Mage::getSingleton('customer/session')->addSuccess($this->__('You were successfully unsubscribed'));
68
+ }
69
+ catch (Exception $e)
70
+ {
71
+ Mage::log("CleverReach_CrConnect: ".$e->getMessage());
72
+ Mage::getSingleton('customer/session')->addError($this->__('There was an error while saving your subscription details'));
73
+ }
74
+ }
75
+ else
76
+ {
77
+ Mage::log("CleverReach_CrConnect: Not unsubscribing $email, not unsubscribed in Campaign Monitor");
78
+ }
79
+ }
80
+ }
81
+
82
+ $this->_redirect('customer/account/');
83
+ }
84
+ }
app/design/adminhtml/default/default/template/crconnect/system/config/form/field/array_groups.phtml ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $_htmlId = $this->getHtmlId() ? $this->getHtmlId() : '_' . uniqid();
3
+
4
+ $_colspan = 2;
5
+ if (!$this->_addAfter) {
6
+ $_colspan -= 1;
7
+ }
8
+ $_colspan = $_colspan > 1 ? 'colspan="' . $_colspan . '"' : '';
9
+ ?>
10
+
11
+ <div class="grid" id="grid<?php echo $_htmlId ?>">
12
+ <table cellpadding="0" cellspacing="0" class="border">
13
+ <tbody>
14
+
15
+ <tr class="headings" id="headings<?php echo $_htmlId ?>">
16
+ <?php foreach ($this->_columns as $columnName => $column):?>
17
+ <th><?php echo $column['label'] ?></th>
18
+ <?php endforeach;?>
19
+ <th <?php echo $_colspan?>></th>
20
+ </tr>
21
+
22
+ <tr id="addRow<?php echo $_htmlId ?>">
23
+ <td colspan="<?php echo count($this->_columns) ?>"></td>
24
+ <td <?php echo $_colspan?>>
25
+ <button style="" onclick="" class="scalable add" type="button" id="addToEndBtn<?php echo $_htmlId ?>">
26
+ <span><?php echo $this->_addButtonLabel ?></span>
27
+ </button>
28
+ </td>
29
+ </tr>
30
+
31
+ </tbody>
32
+ </table>
33
+ <input type="hidden" name="<?php echo $this->getElement()->getName() ?>[__empty]" value="" />
34
+ </div>
35
+ <div id="empty<?php echo $_htmlId ?>">
36
+ <button style="" onclick="" class="scalable add" type="button" id="emptyAddBtn<?php echo $_htmlId ?>">
37
+ <span><?php echo $this->_addButtonLabel ?></span>
38
+ </button>
39
+ </div>
40
+
41
+ <script type="text/javascript">
42
+ // <!--
43
+ // create row creator
44
+ var arrayRow<?php echo $_htmlId ?> = {
45
+ // define row prototypeJS template
46
+ template : new Template(
47
+ '<tr id="#{_id}">'
48
+ <?php foreach ($this->_columns as $columnName => $column):?>
49
+ +'<td class="#{_id}-<?php echo $columnName?>">'
50
+ +'<?php echo $this->_renderCellTemplate($columnName)?>'
51
+ +'</td>'
52
+ <?php endforeach;?>
53
+ <?php if ($this->_addAfter):?>
54
+ +'<td><button onclick="" class="scalable add" type="button" id="addAfterBtn#{_id}"><span><?php echo Mage::helper('adminhtml')->__('Add after') ?></span></button></td>'
55
+ <?php endif;?>
56
+ +'<td><button onclick="arrayRow<?php echo $_htmlId ?>.del(\'#{_id}\')" class="scalable delete" type="button"><span><?php echo Mage::helper('adminhtml')->__('Delete') ?></span></button></td>'
57
+ +'</tr>'
58
+ ),
59
+
60
+ rowsCount : 0,
61
+
62
+ add : function(templateData, insertAfterId)
63
+ {
64
+ // generate default template data
65
+ if ('' == templateData) {
66
+ var d = new Date();
67
+ var templateData = {
68
+ <?php foreach ($this->_columns as $columnName => $column):?>
69
+ <?php echo $columnName ?> : '',
70
+ <?php endforeach;?>
71
+ _id : '_' + d.getTime() + '_' + d.getMilliseconds()
72
+ };
73
+ }
74
+
75
+ // insert before last row
76
+ if ('' == insertAfterId) {
77
+ new Insertion.Before(
78
+ $('addRow<?php echo $_htmlId ?>'),
79
+ this.template.evaluate(templateData)
80
+ );
81
+ }
82
+ // insert after specified row
83
+ else {
84
+ new Insertion.After(
85
+ $(insertAfterId),
86
+ this.template.evaluate(templateData)
87
+ );
88
+ }
89
+ // set the selected drop-down list item
90
+ <?php foreach ($this->_columns as $columnName => $column):?>
91
+ var options = $$('td.' + templateData._id + '-' + '<?php echo $columnName?>' + ' option')
92
+ for(var index = 0; index < options.length; ++index)
93
+ {
94
+ var option = options[index]
95
+ if(option.getAttribute('value') == templateData.<?php echo $columnName?>)
96
+ {
97
+ option.selected = true
98
+ }
99
+ }
100
+ <?php endforeach;?>
101
+
102
+ <?php if ($this->_addAfter):?>
103
+ Event.observe('addAfterBtn' + templateData._id, 'click', this.add.bind(this, '', templateData._id));
104
+ <?php endif;?>
105
+
106
+ this.rowsCount += 1;
107
+ },
108
+
109
+ del : function(rowId)
110
+ {
111
+ $(rowId).remove();
112
+ this.rowsCount -= 1;
113
+ if (0 == this.rowsCount) {
114
+ this.showButtonOnly();
115
+ }
116
+ },
117
+
118
+ showButtonOnly : function()
119
+ {
120
+ $('grid<?php echo $_htmlId ?>').hide();
121
+ $('empty<?php echo $_htmlId ?>').show();
122
+ }
123
+ }
124
+
125
+ // bind add action to "Add" button in last row
126
+ Event.observe('addToEndBtn<?php echo $_htmlId ?>', 'click', arrayRow<?php echo $_htmlId ?>.add.bind(arrayRow<?php echo $_htmlId ?>, '', ''));
127
+
128
+ // add existing rows
129
+ <?php
130
+ $_addAfterId = "headings{$_htmlId}";
131
+ foreach ($this->getArrayRows() as $_rowId => $_row) {
132
+ echo "arrayRow{$_htmlId}.add(" . $_row->toJson() . ", '{$_addAfterId}');\n";
133
+ /*print "%%%%%%%%%%%%%%%";
134
+ print_r($_row->toJson());*/
135
+ $_addAfterId = $_rowId;
136
+ }
137
+ ?>
138
+
139
+ // initialize standalone button
140
+ $('empty<?php echo $_htmlId ?>').hide();
141
+ Event.observe('emptyAddBtn<?php echo $_htmlId ?>', 'click', function () {
142
+ $('grid<?php echo $_htmlId ?>').show();
143
+ $('empty<?php echo $_htmlId ?>').hide();
144
+ arrayRow<?php echo $_htmlId ?>.add('', '');
145
+ });
146
+
147
+ // if no rows, hide grid and show button only
148
+ <?php if (!$this->getArrayRows()):?>
149
+ arrayRow<?php echo $_htmlId ?>.showButtonOnly();
150
+ <?php endif;?>
151
+
152
+ // toggle the grid, if element is disabled (depending on scope)
153
+ <?php if ($this->getElement()->getDisabled()):?>
154
+ toggleValueElements({checked:true}, $('grid<?php echo $_htmlId ?>').parentNode);
155
+ <?php endif;?>
156
+ // -->
157
+ </script>
app/locale/en_US/Conlabz_CleverReach.csv DELETED
@@ -1,74 +0,0 @@
1
- "CleverReach Settings","CleverReach Settings"
2
- "The CleverReach plugin will synchronize all subscriptions and orders with your account.","The CleverReach plugin will synchronize all subscriptions and orders with your account."
3
- "API Key","API Key"
4
- "This can be found on your Listsettings page in CleverReach.","This can be found on your Listsettings page in CleverReach."
5
- "CleverReach Form ID","CleverReach Form ID"
6
- "Create new Form in your CleverReach backend, if you want to use Double Opt-in","Create new Form in your CleverReach backend, if you want to use Double Opt-in"
7
- "Enable Douple Opi-in for registered customers","Enable Douple Opi-in for registered customers"
8
- "General Subscribers List ID","General Subscribers List ID"
9
- "Enable Orders Tracking","Enable Orders Tracking"
10
- "Sync sales with CleverReach. Required for ordertracking. Note: this will currently NOT work with the Multishipping Checkout","Sync sales with CleverReach. Required for ordertracking. Note: this will currently NOT work with the Multishipping Checkout"
11
- "Force order reactivation","Force order reactivation"
12
- "Separate customers by groups automatically","Separate customers by groups automatically"
13
- "During customers synchronization, they will be inserted in associated CleverReach groups lists","During customers synchronization, they will be inserted in associated CleverReach groups lists"
14
- "API keys for user groups","API keys for user groups"
15
- "Hide 'General' subscription for groups","Hide 'General' subscription for groups"
16
- "If 'No' - then not 'General' user group users, will have possibility to subscribe for both: 'General' and '% Group' newsletter. If 'Yes' - just to '% Groups' newsletter","If 'No' - then not 'General' user group users, will have possibility to subscribe for both: 'General' and '% Group' newsletter. If 'Yes' - just to '% Groups' newsletter"
17
- "CleverReach Search Settings","CleverReach Search Settings"
18
- "Feed-URL","Feed-URL"
19
- "Copy this Feed-URL to your CleverReach account. Store Id is optional parameter, add it in case, if you want use feed for other stores","Copy this Feed-URL to your CleverReach account. Store Id is optional parameter, add it in case, if you want use feed for other stores"
20
- "Password","Password"
21
- "Create your own password for CleverReach feed","Create your own password for CleverReach feed"
22
- "Magento user groups","Magento user groups"
23
- "CleverReach Group","CleverReach Group"
24
- "CleverReach Form","CleverReach Form"
25
- "Add keys for group","Add keys for group"
26
- "Newsletter Subscribers","Newsletter Subscribers"
27
- "Magento subscribers list has been deactivated since deactivation will most likly happen in Cleverreach.","Magento subscribers list has been deactivated since deactivation will most likly happen in Cleverreach."
28
- "Please use your Cleverreach account to activate/deactivate your subscribers.","Please use your Cleverreach account to activate/deactivate your subscribers."
29
- "CleverReach Connect general information","CleverReach Connect general information"
30
- "CleverReach client ID","CleverReach client ID"
31
- "Name","Name"
32
- "Company","Company"
33
- "E-Mail","E-Mail"
34
- "Login","Login"
35
- "CleverReach Connect General list information","CleverReach Connect General list information"
36
- "List name","List name"
37
- "Last mailing","Last mailing"
38
- "Active receivers","Active receivers"
39
- "Inactive receivers","Inactive receivers"
40
- "Total receivers","Total receivers"
41
- "Synchronize data with CleverReach","Synchronize data with CleverReach"
42
- "Warning: Please wait untill the synchronization is finished. Depending on the amount of data this might take a while.","Warning: Please wait untill the synchronization is finished. Depending on the amount of data this might take a while."
43
- "Connection to Cleverreach Server failed","Connection to Cleverreach Server failed"
44
- "Your API key seems to be invalid. Please check it!","Your API key seems to be invalid. Please check it!"
45
- "Your list ID (%s) seem to be wrong. Please correct it!","Your list ID (%s) seem to be wrong. Please correct it!"
46
- "Can not connect to CleverReach account. Please check your Cleverreach settings.","Can not connect to CleverReach account. Please check your Cleverreach settings."
47
- "Never Sent","Never Sent"
48
- "Active Subscribers in Magento system","Active Subscribers in Magento system"
49
- "Inactive Subscribers in Magento system","Inactive Subscribers in Magento system"
50
- "Synchronization successfull. %s users were transmitted.","Synchronization successfull. %s users were transmitted."
51
- "Error occured while synchronization process. Please try again later","Error occured while synchronization process. Please try again later"
52
- "Add new group","Add new group"
53
- "Please select subscribers group","Please select subscribers group"
54
- "Confirm key","Confirm key"
55
- "Your list ID (%s) seem to be wrong. Please select other group!","Your list ID (%s) seem to be wrong. Please select other group!"
56
- "Please set your CleverReach user group in Extension settings section.","Please set your CleverReach user group in Extension settings section."
57
- "This Email blocked or wrong","This Email blocked or wrong"
58
- "This Email already in our database","This Email already in our database"
59
- "Double Opt-In enabled, please select Form(s) and Group(s) for your Customer Groups","Double Opt-In enabled, please select Form(s) and Group(s) for your Customer Groups"
60
- "Category","Category"
61
- "Product","Product"
62
- "No forms to select","No forms to select"
63
- "No groups to select","No group to select"
64
- "Error occured while synchronization process. Please try again later.","Error occured while synchronization process. Please try again later."
65
- "Confirmation request has been sent.","Confirmation request has been sent."
66
- "Thank you for your subscription.","Thank you for your subscription."
67
- "Please select subscribers group","Please select subscribers group"
68
- "Please select form","Please select form"
69
- "%s Subscription","%s Subscription"
70
-
71
-
72
-
73
-
74
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package.xml CHANGED
@@ -1,28 +1,19 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Conlabz_CrConnect</name>
4
- <version>3.0.4</version>
5
  <stability>stable</stability>
6
  <license>GNU General Public License</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Synchronizes your Magento subscribers, customers and sales with CleverReach Email Marketing Software.</summary>
10
- <description>CleverReach Connect extension offers synchronization of your Magento newsletter subscribers and customers (imported from your orders if you like) with the CleverReach subscription groups.&#xD;
11
- &#xD;
12
- CleverReach email marketing tool (http://www.cleverreach.de) allows you to create professional emails online, dispatch them reliably, track their success and manage receivers.&#xD;
13
- &#xD;
14
- CleverReach is equipped with a particularly user-friendly interface, which is used intuitively and without special knowledge.&#xD;
15
- &#xD;
16
- To setup the synchronization, all you need is your CleverReach API key and the respective group's List ID which both can be found in your CleverReach account. Go to "Empf&#xE4;nger &gt; *GRUPPENNAME* &gt; "Einstellungen" &gt; "API Key").&#xD;
17
- &#xD;
18
- Once set up, the Extension will handle subscriptions and unsubscribe requests. Users can unsubscribe themselves in Magento or in CleverReach. CleverReach Connect will track users who have followed the links in your email campaign. When a user completes a purchase, the plugin will quietly send the basic details of the order back to your reporting dashboard in the CleverReach tool. Thus you will be able to analyse conversions which originated from your mailings.&#xD;
19
- &#xD;
20
- Please note that subscribers imported form an order won't have the "receive newsletter" flag set to 1.</description>
21
- <notes>Improve multistore behaviour. </notes>
22
  <authors><author><name>conlabz GmbH</name><user>conlabz</user><email>info@conlabz.de</email></author></authors>
23
- <date>2014-12-05</date>
24
- <time>09:28:23</time>
25
- <contents><target name="magecommunity"><dir name="Conlabz"><dir name="CrConnect"><dir name="Block"><dir name="Adminhtml"><dir name="Customer"><dir name="Edit"><dir name="Tab"><file name="Newsletter.php" hash="0354815224028e6fc90671a61abb2232"/></dir></dir></dir><dir name="Newsletter"><file name="Subscriber.php" hash="9eaf627b6255229e1861208dd1b9a280"/></dir></dir><dir name="Config"><file name="GroupsApis.php" hash="6ecac377484995a89c7718a015f74a89"/><file name="Key.php" hash="42f31c0d35632948a702106540d5e85b"/><file name="Url.php" hash="f330f299b19ed1b266ec6a3eb5d31fa1"/></dir><dir name="Customer"><file name="Newsletter.php" hash="f645682ece7817b4386538026fa580dc"/></dir></dir><dir name="Helper"><file name="Data.php" hash="d48f7bb40698232032dfda2267b0b27d"/></dir><dir name="Model"><file name="Api.php" hash="0f142c775407a3bf12904833c4ab6637"/><dir name="Newsletter"><file name="Subscriber.php" hash="51cb181afbd60baaadd5ed4385497763"/></dir><file name="Observer.php" hash="ceccd11d59c1a30d292243d69740809c"/><file name="Search.php" hash="e2bcaa4e316d028141075cbd0c964e67"/><file name="Subscriber.php" hash="932db13369c1f1d9e106b1600531d681"/><dir name="System"><dir name="Config"><dir name="Source"><file name="EmptyForms.php" hash="feb6f16d6b26e0cdaedb06bc68ce1c63"/><file name="EmptyList.php" hash="8f3f19184a183b1f5dce98d70608bcb1"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ConfigController.php" hash="d5a14810dea4a39e593f963119fca26e"/><file name="CrconnectController.php" hash="07e1950ceb80342fc006ea00db084596"/></dir><file name="ManageController.php" hash="739fdf9934ca2665b9ffdf43edbef733"/><file name="SearchController.php" hash="2f7947cf6774a6874c815f71d3468152"/><file name="SubscriberController.php" hash="9cd8eb59c885b6f0b9133c0a1271bbe9"/></dir><dir name="etc"><file name="adminhtml.xml" hash="00bab70876fc5def3883b74cb1da413c"/><file name="config.xml" hash="5457ab27cc61d7c0189f2894191470ac"/><file name="system.xml" hash="634952e319523e7640152ddaeedeaef9"/></dir><file name=".DS_Store" hash="c326f883f8d10a14a27425cc2181d789"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="crconnect"><dir name="config"><file name="header.phtml" hash="727bc6a2a9b67c1e5819faa91c06ffd3"/></dir><dir name="newsletter"><dir name="subscriber"><file name="list.phtml" hash="94952fb1921397c4ad33387d8387c463"/></dir></dir><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="cr_array_groups.phtml" hash="d2f70aa406d8b15f819481acbf0ccbee"/></dir></dir></dir></dir></dir></dir><dir name="layout"><file name="crconnect.xml" hash="1185a92ac6c2117d5e440f709d0eca24"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="crconnect.xml" hash="956fea6e3eb0e98fc6bbcc7241f9123e"/></dir><dir name="template"><dir name="crconnect"><dir name="customer"><dir name="account"><dir name="dashboard"><file name="info.phtml" hash="a533451e27b90284d3414e391b460231"/></dir></dir><dir name="form"><file name="newsletter.phtml" hash="4a1309d0d6d2587c8534dd4a1ccdf235"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Conlabz_CrConnect.xml" hash="282358cc102bf617b7d5afcaa47ec489"/></dir></target><target name="magelocale"><dir name="de_DE"><file name="Conlabz_CleverReach.csv" hash="4cb844c7288d9995d21d39eb4015fa44"/></dir><dir name="en_US"><file name="Conlabz_CleverReach.csv" hash="7d6b2f9b03bcba2abf2c5eacdd2192e1"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="images"><dir name="cleverreach"><file name="cleverreach-logo.png" hash="bff60f831ca9e1dc9bcbdb2e3f5a5805"/></dir></dir><dir name="js"><file name="crconnect.js" hash="72c951b0b46862253c7159255d82b2e0"/></dir></dir></dir></dir></target><target name="mage"><dir name="."><file name="CleverReachDocumentation.docx" hash=""/><file name="CleverReachDocumentationGerman.docx" hash=""/></dir></target></contents>
26
  <compatible/>
27
- <dependencies><required><php><min>5.2.13</min><max>5.5.0</max></php></required></dependencies>
28
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Conlabz_CrConnect</name>
4
+ <version>3.0.5</version>
5
  <stability>stable</stability>
6
  <license>GNU General Public License</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Synchronizes your Magento subscribers, customers and sales with CleverReach Email Marketing Software.</summary>
10
+ <description>With CleverReach (http://www.cleverreach.de) you can create professional emails online, dispatch them reliably, track their success and manage receivers. &#xFEFF;&#xFEFF;&#xFEFF;CleverReach&#xFEFF;&#xFEFF;&#xFEFF; is equipped with a particularly user-friendly interface, which you can use intuitively and without special knowledge.</description>
11
+ <notes>Stability Improvements&#xD;
12
+ PHP requirements changed</notes>
 
 
 
 
 
 
 
 
 
13
  <authors><author><name>conlabz GmbH</name><user>conlabz</user><email>info@conlabz.de</email></author></authors>
14
+ <date>2015-05-07</date>
15
+ <time>14:16:46</time>
16
+ <contents><target name="magecommunity"><dir name="Conlabz"><dir name="CrConnect"><dir name="Block"><dir name="Adminhtml"><dir name="Customer"><dir name="Edit"><dir name="Tab"><file name="Newsletter.php" hash="0354815224028e6fc90671a61abb2232"/></dir></dir></dir><dir name="Newsletter"><file name="Subscriber.php" hash="9eaf627b6255229e1861208dd1b9a280"/></dir></dir><dir name="Config"><file name="GroupsApis.php" hash="6ecac377484995a89c7718a015f74a89"/><file name="Key.php" hash="42f31c0d35632948a702106540d5e85b"/><file name="Url.php" hash="f330f299b19ed1b266ec6a3eb5d31fa1"/></dir><dir name="Customer"><file name="Newsletter.php" hash="f645682ece7817b4386538026fa580dc"/></dir><file name="Groupsapis.php" hash="cecd60a67b2e72effd2bc7ac1e1fdc58"/></dir><dir name="Helper"><file name="Data.php" hash="d48f7bb40698232032dfda2267b0b27d"/></dir><dir name="Model"><file name="Api.php" hash="0f142c775407a3bf12904833c4ab6637"/><dir name="Checkout"><file name="Observer.php" hash="cf99d26d4d85c3106d480b035b98287f"/></dir><dir name="Customer"><file name="Observer.php" hash="6dd8ed2fc9c3dd0e5a2771fb1857ec81"/></dir><dir name="Newsletter"><file name="Subscriber.php" hash="51cb181afbd60baaadd5ed4385497763"/></dir><file name="Observer.php" hash="ceccd11d59c1a30d292243d69740809c"/><file name="Search.php" hash="e2bcaa4e316d028141075cbd0c964e67"/><file name="Subscriber.php" hash="932db13369c1f1d9e106b1600531d681"/><dir name="System"><dir name="Config"><dir name="Source"><file name="EmptyForms.php" hash="feb6f16d6b26e0cdaedb06bc68ce1c63"/><file name="EmptyList.php" hash="8f3f19184a183b1f5dce98d70608bcb1"/></dir></dir></dir><dir name="Website"><file name="Observer.php" hash="db48be43fed458ed4169771a55cf2288"/></dir></dir><dir name="controllers"><file name="AccountController.php" hash="009b2b88f4d9a5daeb050ce617d677b6"/><dir name="Adminhtml"><file name="ConfigController.php" hash="d5a14810dea4a39e593f963119fca26e"/><file name="CrconnectController.php" hash="07e1950ceb80342fc006ea00db084596"/></dir><file name="HookController.php" hash="3235db4d5ecf422ff9d58771af94fca5"/><file name="ManageController.php" hash="739fdf9934ca2665b9ffdf43edbef733"/><file name="SearchController.php" hash="2f7947cf6774a6874c815f71d3468152"/><file name="SubscriberController.php" hash="9cd8eb59c885b6f0b9133c0a1271bbe9"/><file name="UnsubscribeController.php" hash="357908ed531f29de19b7ddbb549ed4e4"/></dir><dir name="etc"><file name="adminhtml.xml" hash="00bab70876fc5def3883b74cb1da413c"/><file name="config.xml" hash="5457ab27cc61d7c0189f2894191470ac"/><file name="system.xml" hash="634952e319523e7640152ddaeedeaef9"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Conlabz_CrConnect.xml" hash="282358cc102bf617b7d5afcaa47ec489"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="crconnect.xml" hash="956fea6e3eb0e98fc6bbcc7241f9123e"/></dir><dir name="template"><dir name="crconnect"><dir name="customer"><dir name="account"><dir name="dashboard"><file name="info.phtml" hash="a533451e27b90284d3414e391b460231"/></dir></dir><dir name="form"><file name="newsletter.phtml" hash="4a1309d0d6d2587c8534dd4a1ccdf235"/></dir></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="crconnect.xml" hash="1185a92ac6c2117d5e440f709d0eca24"/></dir><dir name="template"><dir name="crconnect"><dir name="config"><file name="header.phtml" hash="727bc6a2a9b67c1e5819faa91c06ffd3"/></dir><dir name="newsletter"><dir name="subscriber"><file name="list.phtml" hash="94952fb1921397c4ad33387d8387c463"/></dir></dir><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array_groups.phtml" hash="ac84db9b1e8b342337a478ecba62e0b1"/><file name="cr_array_groups.phtml" hash="d2f70aa406d8b15f819481acbf0ccbee"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Conlabz_CleverReach.csv" hash="4cb844c7288d9995d21d39eb4015fa44"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="images"><dir name="cleverreach"><file name="cleverreach-logo.png" hash="bff60f831ca9e1dc9bcbdb2e3f5a5805"/></dir></dir><dir name="js"><file name="crconnect.js" hash="72c951b0b46862253c7159255d82b2e0"/></dir></dir></dir></dir></target></contents>
17
  <compatible/>
18
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
19
  </package>