Pure360 - Version 1.1.3

Version Notes

1.1.3
- Added support for SUPEE-6788
- Remove LF and CR characters from lists csv rows;
- Fix bug Abandoned carts are triggered only 1 time for each customer in magento 1.9;
- Fix JavaScript problems so that the checkbox for subscribe displays also in magento 1.9 rwd theme;
- Changed text encoding for emails to UTF-8 when necessary so that sending one2one always works with pure360;

1.1.2
- Allow Response API to be accessed via HTTPS
- Also allow HTTP API access

1.1.1
- Opt out removal syncronisation fix

1.1.0
- Username/password check when changing API URL
- Increased the page refresh time in Cron job page
- Newsletter signup checkbox should not be checked by default if the use has already opted-out

1.0.4
- List opt-out support extended

1.0.3
- Stability fixes
- Verbose error handling
- List Sync fixes

1.0.2
- Dropdown values synced properly
- Boolean Yes/No synced
- Data consistency
- UI tweaks
- Admin routing updated

1.0.1
- Magento Connect compliance

Download this release

Release Info

Developer Stewart Waller
Extension Pure360
Version 1.1.3
Comparing to
See all releases


Code changes from version 1.1.2 to 1.1.3

app/code/community/Pure360/Cart/Helper/Data.php CHANGED
@@ -29,7 +29,7 @@ class Pure360_Cart_Helper_Data extends Pure360_Common_Helper_Data
29
  $storeIds = Mage::helper('pure360_common')->getStoreIdsForScope($scope, $scopeId);
30
 
31
  $sql = "UPDATE $table
32
- SET pure360_trigger_count = -1
33
  WHERE is_active = 1
34
  AND store_id IN (". implode(",", $storeIds) .")";
35
 
29
  $storeIds = Mage::helper('pure360_common')->getStoreIdsForScope($scope, $scopeId);
30
 
31
  $sql = "UPDATE $table
32
+ SET pure360_trigger_id = -1
33
  WHERE is_active = 1
34
  AND store_id IN (". implode(",", $storeIds) .")";
35
 
app/code/community/Pure360/Cart/Job/Trigger.php CHANGED
@@ -36,9 +36,9 @@ class Pure360_Cart_Job_Trigger extends Pure360_Cron_Job_Abstract
36
  $this->max_cart_size = Mage::helper('pure360_common')->getScopedConfig('pure360_cart/' . $filter . 'settings/max_cart_size', $scope, $scopeId);
37
  $this->processed = array();
38
 
39
- for($i = 1; $i <= 3; $i++)
40
  {
41
- $triggerName = 'trigger' . ($i);
42
  $triggerEnabled = Mage::helper('pure360_common')->getScopedConfig('pure360_cart/' . $filter . $triggerName . '/enabled', $scope, $scopeId);
43
 
44
  if($triggerEnabled)
@@ -62,13 +62,14 @@ class Pure360_Cart_Job_Trigger extends Pure360_Cron_Job_Abstract
62
  }
63
  }
64
 
65
- $quotes = $this->getQuotesForTrigger($scope, $scopeId, $triggerDelay, $i);
66
 
67
  foreach($quotes as $quote)
68
  {
69
- // Increment trigger count
70
- $this->incrementTriggerCount($quote);
71
- $quote->setPure360TriggerCount($quote->getPure360TriggerCount()+1);
 
72
 
73
  // Store Id as processed
74
  $this->processed[] = $quote->getEntityId();
@@ -147,9 +148,6 @@ class Pure360_Cart_Job_Trigger extends Pure360_Cron_Job_Abstract
147
  $to = date('Y-m-d H:i:s', $lastTime);
148
  $collection->addFieldToFilter('updated_at', array('to' => $to));
149
 
150
- // Add triggerNumber filter
151
- $collection->addFieldToFilter('pure360_trigger_count', array('eq' => ($triggerNumber - 1)));
152
-
153
  // Add processed filter
154
  if(!empty($this->processed))
155
  {
@@ -157,29 +155,29 @@ class Pure360_Cart_Job_Trigger extends Pure360_Cron_Job_Abstract
157
  }
158
 
159
  // Add order and limit
160
- $collection->getSelect()->order('updated_at asc')->limit($this->max_cart_size);
 
 
161
 
162
  return $collection;
163
  }
164
 
165
  /**
166
- * Increments trigger count by one
167
  *
168
  * @param Mage_Sales_Model_Quote $quote
169
  */
170
- private function incrementTriggerCount($quote)
171
  {
172
- $resource = Mage::getSingleton('core/resource');
173
- $write = $resource->getConnection('core_write');
174
- $table = $resource->getTableName('sales/quote');
175
- $createdAt = $quote->getCreatedAt();
176
- $updatedAt = $quote->getUpdatedAt();
177
- $entityId = $quote->getEntityId();
178
 
179
  $sql = "UPDATE $table
180
- SET created_at = '$createdAt',
181
- updated_at = '$updatedAt',
182
- pure360_trigger_count = pure360_trigger_count+1
183
  WHERE entity_id = $entityId";
184
 
185
  $write->query($sql);
@@ -242,8 +240,6 @@ class Pure360_Cart_Job_Trigger extends Pure360_Cron_Job_Abstract
242
  WHERE entity_id = $entityId
243
  AND is_active = 1";
244
 
245
- Mage::helper('pure360_cart')->writeDebug(__METHOD__ . " - $sql");
246
-
247
- $write->query($sql);
248
  }
249
  }
36
  $this->max_cart_size = Mage::helper('pure360_common')->getScopedConfig('pure360_cart/' . $filter . 'settings/max_cart_size', $scope, $scopeId);
37
  $this->processed = array();
38
 
39
+ for($triggerId = 1; $triggerId <= 3; $triggerId++)
40
  {
41
+ $triggerName = 'trigger' . ($triggerId);
42
  $triggerEnabled = Mage::helper('pure360_common')->getScopedConfig('pure360_cart/' . $filter . $triggerName . '/enabled', $scope, $scopeId);
43
 
44
  if($triggerEnabled)
62
  }
63
  }
64
 
65
+ $quotes = $this->getQuotesForTrigger($scope, $scopeId, $triggerDelay, $triggerId);
66
 
67
  foreach($quotes as $quote)
68
  {
69
+
70
+ $quote->setPure360TriggerId($triggerId);
71
+ // Update Trigger Id and date
72
+ $this->updateTriggerIdAndTriggerDate($quote);
73
 
74
  // Store Id as processed
75
  $this->processed[] = $quote->getEntityId();
148
  $to = date('Y-m-d H:i:s', $lastTime);
149
  $collection->addFieldToFilter('updated_at', array('to' => $to));
150
 
 
 
 
151
  // Add processed filter
152
  if(!empty($this->processed))
153
  {
155
  }
156
 
157
  // Add order and limit
158
+ $collection->getSelect()
159
+ ->where(new Zend_Db_Expr('pure360_trigger_id = '.($triggerNumber - 1).' OR updated_at > pure360_trigger_dt')) // Add triggerNumber filter
160
+ ->order('updated_at asc')->limit($this->max_cart_size);
161
 
162
  return $collection;
163
  }
164
 
165
  /**
166
+ * Update trigger id and trigger date
167
  *
168
  * @param Mage_Sales_Model_Quote $quote
169
  */
170
+ private function updateTriggerIdAndTriggerDate($quote)
171
  {
172
+ $resource = Mage::getSingleton('core/resource');
173
+ $write = $resource->getConnection('core_write');
174
+ $table = $resource->getTableName('sales/quote');
175
+ $entityId = $quote->getEntityId();
176
+ $triggerId = $quote->getPure360TriggerId();
 
177
 
178
  $sql = "UPDATE $table
179
+ SET pure360_trigger_id = $triggerId,
180
+ pure360_trigger_dt = NOW()
 
181
  WHERE entity_id = $entityId";
182
 
183
  $write->query($sql);
240
  WHERE entity_id = $entityId
241
  AND is_active = 1";
242
 
243
+ $write->query($sql);
 
 
244
  }
245
  }
app/code/community/Pure360/Cart/controllers/AjaxController.php CHANGED
@@ -4,7 +4,7 @@
4
  * @package Pure360\Cart
5
  * @copyright 2013 Pure360.com
6
  */
7
- class Pure360_Cart_AjaxController extends Mage_Adminhtml_Controller_Action
8
  {
9
 
10
  /**
4
  * @package Pure360\Cart
5
  * @copyright 2013 Pure360.com
6
  */
7
+ class Pure360_Cart_AjaxController extends Mage_Core_Controller_Front_Action
8
  {
9
 
10
  /**
app/code/community/Pure360/Cart/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Pure360_Cart>
5
- <version>1.1.2</version>
6
  </Pure360_Cart>
7
  </modules>
8
  <global>
@@ -107,15 +107,15 @@
107
  </layout>
108
  </adminhtml>
109
  <admin>
110
- <routers>
111
- <pure360_cart>
112
- <use>admin</use>
113
- <args>
114
- <module>Pure360_Cart</module>
115
- <frontName>pure360_cart</frontName>
116
- </args>
117
- </pure360_cart>
118
- </routers>
119
  </admin>
120
  <default>
121
  <pure360_cart>
2
  <config>
3
  <modules>
4
  <Pure360_Cart>
5
+ <version>1.1.3</version>
6
  </Pure360_Cart>
7
  </modules>
8
  <global>
107
  </layout>
108
  </adminhtml>
109
  <admin>
110
+ <routers>
111
+ <adminhtml>
112
+ <args>
113
+ <modules>
114
+ <pure360_cart before="Mage_Adminhtml">Pure360_Cart_Adminhtml</pure360_cart>
115
+ </modules>
116
+ </args>
117
+ </adminhtml>
118
+ </routers>
119
  </admin>
120
  <default>
121
  <pure360_cart>
app/code/community/Pure360/Cart/sql/pure360_cart_setup/mysql4-upgrade-1.1.2-1.1.3.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Mage_Sales_Model_Mysql4_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("
10
+ ALTER TABLE {$installer->getTable('sales/quote')}
11
+ CHANGE pure360_trigger_count pure360_trigger_id INT(11);
12
+ ");
13
+ } catch (Exception $e) {
14
+ //
15
+ }
16
+
17
+ try {
18
+ $installer->run("
19
+ ALTER TABLE {$installer->getTable('sales/quote')}
20
+ DROP INDEX IDX_PURE360_CART_TRIG_CNT,
21
+ ADD INDEX IDX_PURE360_CART_TRIG_ID(pure360_trigger_id);
22
+ ");
23
+ } catch (Exception $e) {
24
+ //
25
+ }
26
+
27
+ try {
28
+ $installer->run("
29
+ ALTER TABLE {$installer->getTable('sales/quote')}
30
+ ADD COLUMN pure360_trigger_dt TIMESTAMP DEFAULT '0000-00-00 00:00:00';
31
+ ");
32
+ } catch (Exception $e) {
33
+ //
34
+ }
35
+
36
+ try {
37
+ $installer->run("
38
+ UPDATE {$installer->getTable('sales/quote')}
39
+ SET pure360_trigger_dt = NOW();
40
+ ");
41
+ } catch (Exception $e) {
42
+ //
43
+ }
44
+
45
+ $installer->endSetup();
app/code/community/Pure360/Common/Helper/Api.php CHANGED
@@ -180,11 +180,10 @@ class Pure360_Common_Helper_Api extends Mage_Core_Helper_Abstract
180
  curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
181
 
182
  $res = curl_exec($curl);
183
- $info = curl_getinfo($curl);
184
- Mage::helper('pure360_common')->writeDebug("Res: " . $res);
185
- Mage::helper('pure360_common')->writeDebug("Info: " . print_r($info, true));
186
 
187
- curl_close($curl);
 
 
188
  }
189
 
190
  }
180
  curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
181
 
182
  $res = curl_exec($curl);
 
 
 
183
 
184
+ Mage::helper('pure360_common')->writeDebug($res);
185
+
186
+ curl_close($curl);
187
  }
188
 
189
  }
app/code/community/Pure360/Common/Helper/File.php CHANGED
@@ -165,7 +165,8 @@ class Pure360_Common_Helper_File extends Mage_Core_Helper_Abstract
165
  */
166
  public function outputCSV($filepath, $csv)
167
  {
168
-
 
169
  // Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
170
  $handle = fopen($filepath, "a");
171
 
165
  */
166
  public function outputCSV($filepath, $csv)
167
  {
168
+ $csv = preg_replace(array("/\r/", "/\n/"), " ", $csv);
169
+
170
  // Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
171
  $handle = fopen($filepath, "a");
172
 
app/code/community/Pure360/Common/controllers/AjaxController.php CHANGED
@@ -4,7 +4,7 @@
4
  * @package Pure360\Common
5
  * @copyright 2013 Pure360.com
6
  */
7
- class Pure360_Common_AjaxController extends Mage_Adminhtml_Controller_Action
8
  {
9
 
10
  /**
4
  * @package Pure360\Common
5
  * @copyright 2013 Pure360.com
6
  */
7
+ class Pure360_Common_AjaxController extends Mage_Core_Controller_Front_Action
8
  {
9
 
10
  /**
app/code/community/Pure360/Common/etc/config.xml CHANGED
@@ -97,15 +97,15 @@
97
  </layout>
98
  </adminhtml>
99
  <admin>
100
- <routers>
101
- <pure360_common>
102
- <use>admin</use>
103
- <args>
104
- <module>Pure360_Common</module>
105
- <frontName>pure360</frontName>
106
- </args>
107
- </pure360_common>
108
- </routers>
109
  </admin>
110
  <default>
111
  <pure360>
97
  </layout>
98
  </adminhtml>
99
  <admin>
100
+ <routers>
101
+ <adminhtml>
102
+ <args>
103
+ <modules>
104
+ <pure360_common after="Mage_Adminhtml">Pure360_Common_Adminhtml</pure360_common>
105
+ </modules>
106
+ </args>
107
+ </adminhtml>
108
+ </routers>
109
  </admin>
110
  <default>
111
  <pure360>
app/code/community/Pure360/Cron/controllers/AjaxController.php CHANGED
@@ -4,7 +4,7 @@
4
  * @package Pure360\Cron
5
  * @copyright 2013 Pure360.com
6
  */
7
- class Pure360_Cron_AjaxController extends Mage_Adminhtml_Controller_Action
8
  {
9
 
10
  /**
4
  * @package Pure360\Cron
5
  * @copyright 2013 Pure360.com
6
  */
7
+ class Pure360_Cron_AjaxController extends Mage_Core_Controller_Front_Action
8
  {
9
 
10
  /**
app/code/community/Pure360/Cron/etc/config.xml CHANGED
@@ -102,15 +102,15 @@
102
  </layout>
103
  </adminhtml>
104
  <admin>
105
- <routers>
106
- <pure360_cron>
107
- <use>admin</use>
108
- <args>
109
- <module>Pure360_Cron</module>
110
- <frontName>pure360_cron</frontName>
111
- </args>
112
- </pure360_cron>
113
- </routers>
114
  </admin>
115
  <default>
116
  <pure360_cron>
102
  </layout>
103
  </adminhtml>
104
  <admin>
105
+ <routers>
106
+ <adminhtml>
107
+ <args>
108
+ <modules>
109
+ <pure360_cron after="Mage_Adminhtml">Pure360_Cron_Adminhtml</pure360_cron>
110
+ </modules>
111
+ </args>
112
+ </adminhtml>
113
+ </routers>
114
  </admin>
115
  <default>
116
  <pure360_cron>
app/code/community/Pure360/Email/Helper/Api.php CHANGED
@@ -85,9 +85,7 @@ class Pure360_Email_Helper_Api extends Pure360_Common_Helper_Api
85
  'message_bodyHtml' => $messageBodyHtml,
86
  'message_bodyPlain' => $messageBodyPlain);
87
 
88
- Mage::helper('pure360_email')->writeDebug(__METHOD__ . ' - ' . print_r($inputData, true));
89
-
90
- if($fromDesc)
91
  {
92
  // $inputData['customFromDesc'] = $fromDesc;
93
  }
85
  'message_bodyHtml' => $messageBodyHtml,
86
  'message_bodyPlain' => $messageBodyPlain);
87
 
88
+ if($fromDesc)
 
 
89
  {
90
  // $inputData['customFromDesc'] = $fromDesc;
91
  }
app/code/community/Pure360/Email/Model/Email/Message.php CHANGED
@@ -166,9 +166,29 @@ class Pure360_Email_Model_Email_Message extends Mage_Core_Model_Email_Template
166
  $password = Mage::helper('pure360_common')->getModuleGroupKeyValue('pure360', 'settings_transactional', 'password', $storeId);
167
  $client = Mage::helper('pure360_common/api')->getClient($url, $username, $password);
168
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  // Send using Pure360 One2One
170
  // Todo: allow modification of the plain text message. Currently, only stripping the tags out of the HTML message.
171
- $messageSubject = $this->getProcessedTemplateSubject($variables);
172
  $messageName = $templateId;
173
  $messageBodyHtml = $this->isPlain() ? null : $text;
174
  $messageBodyPlain = $this->isPlain() ? $text : $plainText;
166
  $password = Mage::helper('pure360_common')->getModuleGroupKeyValue('pure360', 'settings_transactional', 'password', $storeId);
167
  $client = Mage::helper('pure360_common/api')->getClient($url, $username, $password);
168
 
169
+ $context = $client->getcontext();
170
+ $messageSubject = $this->getProcessedTemplateSubject($variables);
171
+
172
+ if (strpos($context["defaultLanguage"],'UTF-8') !== false )
173
+ {
174
+ // check if $text is already UTF-8 encoded
175
+ if (utf8_encode(utf8_decode($text)) !== $text){
176
+ $text = utf8_encode($text);
177
+ }
178
+
179
+ // check if $plainText is already UTF-8 encoded
180
+ if (utf8_encode(utf8_decode($plainText)) !== $plainText){
181
+ $plainText = utf8_encode($plainText);
182
+ }
183
+
184
+ // check if $messageSubject is already UTF-8 encoded
185
+ if (utf8_encode(utf8_decode($messageSubject)) !== $messageSubject){
186
+ $messageSubject = utf8_encode($messageSubject);
187
+ }
188
+ }
189
+
190
  // Send using Pure360 One2One
191
  // Todo: allow modification of the plain text message. Currently, only stripping the tags out of the HTML message.
 
192
  $messageName = $templateId;
193
  $messageBodyHtml = $this->isPlain() ? null : $text;
194
  $messageBodyPlain = $this->isPlain() ? $text : $plainText;
app/code/community/Pure360/Email/etc/config.xml CHANGED
@@ -96,15 +96,15 @@
96
  </layout>
97
  </adminhtml>
98
  <admin>
99
- <routers>
100
- <pure360_email>
101
- <use>admin</use>
102
- <args>
103
- <module>Pure360_Email</module>
104
- <frontName>pure360_email</frontName>
105
- </args>
106
- </pure360_email>
107
- </routers>
108
  </admin>
109
  <default>
110
  <pure360_email>
96
  </layout>
97
  </adminhtml>
98
  <admin>
99
+ <routers>
100
+ <adminhtml>
101
+ <args>
102
+ <modules>
103
+ <pure360_email after="Mage_Adminhtml">Pure360_Email_Adminhtml</pure360_email>
104
+ </modules>
105
+ </args>
106
+ </adminhtml>
107
+ </routers>
108
  </admin>
109
  <default>
110
  <pure360_email>
app/code/community/Pure360/List/Job/Sync.php CHANGED
@@ -95,6 +95,8 @@ class Pure360_List_Job_Sync extends Pure360_Cron_Job_Abstract
95
 
96
  // Update message with rows uploaded
97
  $this->_data->setData('message', $list->rows . ' rows processed, ' . $list->optout_rows . ' rows opted out ');
 
 
98
 
99
  // Save list data
100
  $this->_data->save();
@@ -283,7 +285,9 @@ class Pure360_List_Job_Sync extends Pure360_Cron_Job_Abstract
283
 
284
  unset($currentBatch);
285
  } while($condition == $batchSize && $list->rows < $this->max_sync_size);
286
-
 
 
287
  Mage::helper('pure360_list')->writeDebug(__METHOD__ . ' - end');
288
  }
289
 
@@ -310,7 +314,7 @@ class Pure360_List_Job_Sync extends Pure360_Cron_Job_Abstract
310
  ->addAttributeToSelect('subscriber_status')
311
  ->addAttributeToSelect('subscription_date')
312
  ;
313
-
314
  // Add Custom Select
315
  foreach($list->getListFields() as $field)
316
  {
@@ -520,7 +524,9 @@ class Pure360_List_Job_Sync extends Pure360_Cron_Job_Abstract
520
 
521
  unset($currentBatch);
522
  } while($condition == $batchSize && $list->rows <= $this->max_sync_size);
523
-
 
 
524
  Mage::helper('pure360_list')->writeDebug(__METHOD__ . ' - end');
525
  }
526
 
@@ -669,7 +675,9 @@ class Pure360_List_Job_Sync extends Pure360_Cron_Job_Abstract
669
 
670
  unset($currentBatch);
671
  } while($condition == $batchSize && $list->optout_rows <= $this->max_sync_size);
672
-
 
 
673
  Mage::helper('pure360_list')->writeDebug(__METHOD__ . ' - end');
674
  }
675
 
@@ -719,6 +727,8 @@ class Pure360_List_Job_Sync extends Pure360_Cron_Job_Abstract
719
  $count = count($files);
720
  $page = 1;
721
 
 
 
722
  // Create file
723
  $api->createFile($this->client, $fileCategory, $fileName, $count, "Y");
724
 
@@ -729,7 +739,7 @@ class Pure360_List_Job_Sync extends Pure360_Cron_Job_Abstract
729
  $api->uploadFileChunk($this->client, $fileCategory, $fileName, $page, $chunkData, "base64");
730
  $page++;
731
  }
732
-
733
  reset($files);
734
 
735
  // Create/Append list
95
 
96
  // Update message with rows uploaded
97
  $this->_data->setData('message', $list->rows . ' rows processed, ' . $list->optout_rows . ' rows opted out ');
98
+
99
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ . ' message: '. $list->rows . ' rows processed, ' . $list->optout_rows . ' rows opted out ');
100
 
101
  // Save list data
102
  $this->_data->save();
285
 
286
  unset($currentBatch);
287
  } while($condition == $batchSize && $list->rows < $this->max_sync_size);
288
+
289
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ .' FilePath where data is temporarily saved - '.$filePath);
290
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ .' Number of rows to sync - '. $list->rows);
291
  Mage::helper('pure360_list')->writeDebug(__METHOD__ . ' - end');
292
  }
293
 
314
  ->addAttributeToSelect('subscriber_status')
315
  ->addAttributeToSelect('subscription_date')
316
  ;
317
+
318
  // Add Custom Select
319
  foreach($list->getListFields() as $field)
320
  {
524
 
525
  unset($currentBatch);
526
  } while($condition == $batchSize && $list->rows <= $this->max_sync_size);
527
+
528
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ .' FilePath where data is temporarily saved - '.$filePath);
529
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ .' Number of rows to sync - '. $list->rows);
530
  Mage::helper('pure360_list')->writeDebug(__METHOD__ . ' - end');
531
  }
532
 
675
 
676
  unset($currentBatch);
677
  } while($condition == $batchSize && $list->optout_rows <= $this->max_sync_size);
678
+
679
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ .' FilePath where data is temporarily saved - '.$filePath);
680
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ .' Number of rows to sync - '. $list->rows);
681
  Mage::helper('pure360_list')->writeDebug(__METHOD__ . ' - end');
682
  }
683
 
727
  $count = count($files);
728
  $page = 1;
729
 
730
+ Mage::helper('pure360_list')->writeDebug(__METHOD__ .' Number of chunks - '.$count);
731
+
732
  // Create file
733
  $api->createFile($this->client, $fileCategory, $fileName, $count, "Y");
734
 
739
  $api->uploadFileChunk($this->client, $fileCategory, $fileName, $page, $chunkData, "base64");
740
  $page++;
741
  }
742
+
743
  reset($files);
744
 
745
  // Create/Append list
app/code/community/Pure360/List/controllers/AjaxController.php CHANGED
@@ -4,7 +4,7 @@
4
  * @package Pure360\List
5
  * @copyright 2013 Pure360.com
6
  */
7
- class Pure360_List_AjaxController extends Mage_Adminhtml_Controller_Action
8
  {
9
  /**
10
  * Save / Update list from request parameters
4
  * @package Pure360\List
5
  * @copyright 2013 Pure360.com
6
  */
7
+ class Pure360_List_AjaxController extends Mage_Core_Controller_Front_Action
8
  {
9
  /**
10
  * Save / Update list from request parameters
app/code/community/Pure360/List/etc/config.xml CHANGED
@@ -153,15 +153,15 @@
153
  </layout>
154
  </adminhtml>
155
  <admin>
156
- <routers>
157
- <pure360_list>
158
- <use>admin</use>
159
- <args>
160
- <module>Pure360_List</module>
161
- <frontName>pure360_list</frontName>
162
- </args>
163
- </pure360_list>
164
- </routers>
165
  </admin>
166
  <default>
167
  <pure360_list>
153
  </layout>
154
  </adminhtml>
155
  <admin>
156
+ <routers>
157
+ <adminhtml>
158
+ <args>
159
+ <modules>
160
+ <pure360_list after="Mage_Adminhtml">Pure360_List_Adminhtml</pure360_list>
161
+ </modules>
162
+ </args>
163
+ </adminhtml>
164
+ </routers>
165
  </admin>
166
  <default>
167
  <pure360_list>
app/code/community/Pure360/Newsletter/Helper/Api.php CHANGED
@@ -91,10 +91,10 @@ class Pure360_Newsletter_Helper_Api extends Pure360_Common_Helper_Api
91
  {
92
  $domain = Mage::helper('pure360_common')->getModuleGroupKeyValue('pure360', 'settings', 'api_url');
93
  }
94
- //$domain = str_replace("http://", "", $domain);
95
 
96
  // Build url
97
- $url = $domain . '/interface/list.php';
98
 
99
  // Get store and webste ids
100
  $storeId = $customer->getStoreId();
91
  {
92
  $domain = Mage::helper('pure360_common')->getModuleGroupKeyValue('pure360', 'settings', 'api_url');
93
  }
94
+ $domain = str_replace("http://", "", $domain);
95
 
96
  // Build url
97
+ $url = 'http://' . $domain . '/interface/list.php';
98
 
99
  // Get store and webste ids
100
  $storeId = $customer->getStoreId();
app/code/community/Pure360/Newsletter/etc/config.xml CHANGED
@@ -112,15 +112,15 @@
112
  </layout>
113
  </adminhtml>
114
  <admin>
115
- <routers>
116
- <pure360_newsletter>
117
- <use>admin</use>
118
- <args>
119
- <module>Pure360_Newsletter</module>
120
- <frontName>pure360_newsletter</frontName>
121
- </args>
122
- </pure360_newsletter>
123
- </routers>
124
  </admin>
125
  <default>
126
  <pure360_newsletter>
112
  </layout>
113
  </adminhtml>
114
  <admin>
115
+ <routers>
116
+ <adminhtml>
117
+ <args>
118
+ <modules>
119
+ <pure360_newsletter after="Mage_Adminhtml">Pure360_Newsletter_Adminhtml</pure360_newsletter>
120
+ </modules>
121
+ </args>
122
+ </adminhtml>
123
+ </routers>
124
  </admin>
125
  <default>
126
  <pure360_newsletter>
app/design/frontend/base/default/template/pure360/newsletter/jsinit.phtml CHANGED
@@ -35,7 +35,7 @@
35
  });
36
  }
37
 
38
- $$('#co-billing-form fieldset ul').first().insert(
39
  '<li><!-- --></li>' +
40
  '<li class="control" id="customer-subscribe" style="display:none;">' +
41
  '<input name="billing[is_subscribed]" id="billing:is_subscribed_box" value="1" checked="checked" title="Ship to this address" onchange="setSubscribedValue(this); return false;" class="checkbox" type="checkbox" />' +
@@ -43,7 +43,7 @@
43
  '</li>'
44
  );
45
 
46
- $$('#co-billing-form fieldset')[0].insert(
47
  '<input id="billing:is_subscribed_original" type="hidden" name="billing[is_subscribed_original]" value="1" />' +
48
  '<input id="billing:is_subscribed" type="hidden" name="billing[is_subscribed]" value="1" />');
49
 
35
  });
36
  }
37
 
38
+ $$('#co-billing-form .fieldset ul, #co-billing-form fieldset ul').first().insert(
39
  '<li><!-- --></li>' +
40
  '<li class="control" id="customer-subscribe" style="display:none;">' +
41
  '<input name="billing[is_subscribed]" id="billing:is_subscribed_box" value="1" checked="checked" title="Ship to this address" onchange="setSubscribedValue(this); return false;" class="checkbox" type="checkbox" />' +
43
  '</li>'
44
  );
45
 
46
+ $$('#co-billing-form .fieldset, #co-billing-form fieldset')[0].insert(
47
  '<input id="billing:is_subscribed_original" type="hidden" name="billing[is_subscribed_original]" value="1" />' +
48
  '<input id="billing:is_subscribed" type="hidden" name="billing[is_subscribed]" value="1" />');
49
 
lib/Pure360/Client.php CHANGED
@@ -129,44 +129,48 @@ class Pure360_Client
129
 
130
  } catch (Exception $e)
131
  {
132
- throw new Exception('[Pure360] Could not connect to host');
133
  }
134
-
135
- // Validate response
136
- if (isset($response['result']))
137
- {
138
- switch ($response["result"])
139
  {
140
- case "success":
141
- if (!empty($response["resultData"]))
142
- {
143
- $results = $response["resultData"];
144
- } else
145
- {
146
- $results = array();
147
- }
148
- break;
 
 
149
 
150
- case "bean_exception_validation":
151
-
152
- throw new Pure360_Exception_ValidationException($response["resultData"]);
153
 
154
- case "bean_exception_security":
155
-
156
- throw new Pure360_Exception_SecurityException($response["resultData"]);
157
 
158
- case "bean_exception_system":
159
-
160
- throw new Pure360_Exception_SystemException($response["resultData"]);
161
 
162
- default:
163
-
164
- throw new Exception("[Pure360] Unhandled exception");
165
- }
 
 
 
 
 
 
166
 
167
- } else
 
 
 
 
168
  {
169
- throw new Exception("[Pure360] Invalid api response.");
170
  }
171
 
172
  // Save request and response
129
 
130
  } catch (Exception $e)
131
  {
132
+ throw new Exception('[Pure360] Could not connect to host: '.$class.'::'.$process.' '. $e->getMessage());
133
  }
134
+ try {
135
+ // Validate response
136
+ if (isset($response['result']))
 
 
137
  {
138
+ switch ($response["result"])
139
+ {
140
+ case "success":
141
+ if (!empty($response["resultData"]))
142
+ {
143
+ $results = $response["resultData"];
144
+ } else
145
+ {
146
+ $results = array();
147
+ }
148
+ break;
149
 
150
+ case "bean_exception_validation":
 
 
151
 
152
+ throw new Pure360_Exception_ValidationException($response["resultData"]);
 
 
153
 
154
+ case "bean_exception_security":
 
 
155
 
156
+ throw new Pure360_Exception_SecurityException($response["resultData"]);
157
+
158
+ case "bean_exception_system":
159
+
160
+ throw new Pure360_Exception_SystemException($response["resultData"]);
161
+
162
+ default:
163
+
164
+ throw new Exception("[Pure360] Unhandled exception");
165
+ }
166
 
167
+ } else
168
+ {
169
+ throw new Exception("[Pure360] Invalid api response.");
170
+ }
171
+ } catch (Exception $e)
172
  {
173
+ Mage::helper('pure360_list')->writeError("Client - ".$e->getMessage());
174
  }
175
 
176
  // Save request and response
lib/Pure360/Session.php CHANGED
@@ -40,7 +40,8 @@ class Pure360_Session
40
  $this->beanData = $context->login($this->properties["username"], $this->properties["password"]);
41
 
42
  // Set context
43
- $this->context = $this->beanData["bus_entity_context"];
 
44
  $this->client->setContext($this->context);
45
 
46
  // Set identity
40
  $this->beanData = $context->login($this->properties["username"], $this->properties["password"]);
41
 
42
  // Set context
43
+ $this->context = $this->beanData["bus_entity_context"];
44
+ $this->context['defaultLanguage'] = $this->beanData["bus_entity_account_identity"]["defaultLanguage"];
45
  $this->client->setContext($this->context);
46
 
47
  // Set identity
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Pure360</name>
4
- <version>1.1.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License</license>
7
  <channel>community</channel>
@@ -68,7 +68,14 @@
68
  &lt;h3&gt;Pricing&lt;/h3&gt;&#xD;
69
  &#xD;
70
  &lt;p&gt;To see Pure360 pricing &lt;a title="Sign up here" href="http://www.pure360.com/take-a-trial-software-august"&gt;sign up here&lt;/a&gt; and a member of the team will be in touch to discuss your requirements and build a package that suits your individual needs.&lt;/p&gt;</description>
71
- <notes>1.1.2&#xD;
 
 
 
 
 
 
 
72
  - Allow Response API to be accessed via HTTPS&#xD;
73
  - Also allow HTTP API access&#xD;
74
  &#xD;
@@ -98,9 +105,9 @@
98
  1.0.1&#xD;
99
  - Magento Connect compliance</notes>
100
  <authors><author><name>Stewart Waller</name><user>stewart_pure360</user><email>stewart.waller@pure360.com</email></author></authors>
101
- <date>2014-03-19</date>
102
- <time>12:10:32</time>
103
- <contents><target name="magecommunity"><dir name="Pure360"><dir name="Cart"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b2a89a4eb5a0cc07a4ddb9851b5d8490"/></dir></dir></dir><dir name="Email"><dir name="Order"><file name="Items.php" hash="45b9becd073ab968872f142243d52d63"/></dir></dir><file name="Jsinit.php" hash="9ba1a3c3b20736d2b2376046da2b3fcf"/></dir><dir name="Helper"><file name="Data.php" hash="bc15d6ba50c4e6f0242eb07532b13c99"/></dir><dir name="Job"><file name="Trigger.php" hash="4d6b810cb226a16b6fe2d2eb99352789"/></dir><dir name="Model"><dir name="System"><dir name="Config"><dir name="Backend"><file name="Enable.php" hash="742234ea19b737b33de9af1aea4dcf6e"/></dir><dir name="Source"><file name="Delay.php" hash="386d7aa81411c136516e8c4cc3f13ad3"/><dir name="Email"><file name="Template.php" hash="9f2fab6d42a1da181f272d70c5236172"/><file name="TemplateGuest.php" hash="682117c74cecda7395941cb5fcbdc729"/></dir><file name="Type.php" hash="a4a09a9fcaf0f970e823479bb784e92c"/></dir></dir></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="82a5cba1c9069306bbd9886fd9ad1bf9"/></dir><dir name="etc"><file name="config.xml" hash="f4f011ad70bd62231ce05fc157d3056f"/><file name="system.xml" hash="02bfe0ba69816df211fb6851067414dc"/></dir><dir name="sql"><dir name="pure360_cart_setup"><file name="mysql4-install-1.0.4.php" hash="49960b758d00481bad2d3baa2daba9cd"/></dir></dir></dir><dir name="Common"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="29091a400a1ce9c9207d732de03ce7bd"/><file name="Disabled.php" hash="9970f5fc1b0b34000b8219f2519eccaa"/><dir name="Form"><dir name="Field"><file name="Hidden.php" hash="95ed0e83cd87c03de709789eb21ab1b2"/></dir><file name="Field.php" hash="34766e8795a023cdf19c2fc0bb0c976f"/><file name="Fieldset.php" hash="0605c96e429b6d1c5ae6081b6a1bf76e"/></dir><file name="Form.php" hash="d8c5c4aa3d8132c7318311981cd1fdee"/><file name="Hidden.php" hash="b4b32095413ebdd63f4de1194e20ea0e"/><file name="Modules.php" hash="3deb577d540a7537d91059a8393d759d"/><file name="Tabs.php" hash="de833cdcb3b278923e53ee85d685820f"/><dir name="Validate"><file name="Marketing.php" hash="86513e7b18dc53ab3f6a17ae1c2ffb07"/><file name="Transactional.php" hash="578130a5e13e24848eea90dede3d8ab5"/></dir></dir></dir></dir><file name="Jsinit.php" hash="47c0e55bbe05d6adc07840090034eca7"/></dir><dir name="Helper"><file name="Ajax.php" hash="57787267c712dd712f74fc54e6f2765f"/><file name="Api.php" hash="f90ea58e582ecb13bcb9284c6906e0ea"/><file name="Data.php" hash="37fba89884930b660c000910b73ff159"/><file name="File.php" hash="9ce95f89acca0eddc0745e21dccdb165"/></dir><dir name="Interface"><file name="Job.php" hash="59c3fcfe0e35f2a7867a3bd8e5f51d61"/></dir><dir name="Model"><file name="Observer.php" hash="045ba8d185a9646cc2bfb0adfe96e6ef"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Enable.php" hash="9445b26df9a78548fd0c22be126acc7c"/></dir><dir name="Source"><dir name="Cron"><file name="Days.php" hash="0174fb71a0cd1979b4b1a74b4d5dfe6e"/><file name="Frequency.php" hash="0c0afecf1341100e4ba90e180df6facf"/><file name="Minutes.php" hash="b7a8eef1155ca8cddadc79d643ac56bc"/></dir><file name="Field.php" hash="da1801ccb45426ce8e960a4d40952303"/><file name="Global.php" hash="412071d06a25bf92962d2c2be1eb411a"/><file name="Message.php" hash="aa72d6227f29795dadf9c45405cafffd"/></dir></dir></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="6e267f11b1d7df2ef27a721ae4c10887"/><file name="JobController.php" hash="99b6026a540c4f02c8c827e66a85d48b"/><file name="Pure360Controller.php" hash="07599b0ad90725bda1201b8bd291e0d5"/></dir><dir name="etc"><file name="config.xml" hash="08237b0385d86f54f54692942c785285"/><file name="system.xml" hash="9b467fbbc758e3933e1343f8a0f63715"/></dir></dir><dir name="Cron"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="4c08269367666f8aa9ea9028f1afc0b7"/></dir><dir name="Cron"><dir name="Manager"><dir name="Grid"><dir name="Renderer"><file name="Actions.php" hash="c0ee554f426a5147b486384c52f8eae3"/><file name="Crontab.php" hash="b28f87aeb8259bd17583b2a86fa16e19"/><file name="Force.php" hash="69f68ee9b7e7deccf161991aff2013fe"/><file name="Pause.php" hash="780dd8620f8c0c0a7094c558d6c1b0fc"/></dir></dir><file name="Grid.php" hash="a654543f57a356152eb7119cf971f4a9"/><dir name="Logs"><dir name="Renderer"><file name="Bytes.php" hash="a252cdb9290293c58962b19ec376d11f"/><file name="Clean.php" hash="448c3aae8e6fef07e676a53ac1225e11"/><file name="Download.php" hash="1046ed159db6e270d78823af78e4dec0"/><file name="Tail.php" hash="57ad12798b10af495e3e3d34e84ecb36"/></dir></dir><file name="Logs.php" hash="bbad87b3c1ff4165179ffa799554f568"/></dir><file name="Manager.php" hash="407928e5052d387a45f02b5c8e70810b"/></dir></dir></dir><file name="Jsinit.php" hash="28d2d2074598dd783db41884fc624f88"/></dir><dir name="Helper"><file name="Data.php" hash="fa6c7e721a561c014382692aa2a49eab"/></dir><dir name="Job"><file name="Abstract.php" hash="f59fb9712d9001f3406d10c202a45223"/><file name="Interface.php" hash="306c4c9de6dc281ce2d50012759da82c"/></dir><dir name="Model"><file name="Job.php" hash="2876e7fcff63de170d0b34d2aef92254"/><file name="Observer.php" hash="788e7fbcca63ac8aea5ed254097886aa"/><dir name="Resource"><dir name="Job"><file name="Collection.php" hash="a42b6c45b4786f35d2d808bd3e0860da"/></dir><file name="Job.php" hash="ca3d4f31293d6419fb4b84a10dec4464"/></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="01b2c823877a8e7838c8e1cd5f3f568b"/></dir><dir name="etc"><file name="config.xml" hash="e67c70c16b7fa82205e756c85d704abd"/><file name="system.xml" hash="d398d5ef4758562b8e8c7007b2470b7b"/></dir><dir name="sql"><dir name="pure360_cron_setup"><file name="mysql4-install-1.0.4.php" hash="6819eab799199893f65c05a53451e3a0"/></dir></dir></dir><dir name="Email"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="c03154f20bdfbe72631bc09fbd3f86da"/><file name="Transactional.php" hash="37476f57155a4d28a9a16d75f1c2269c"/></dir></dir></dir><file name="Jsinit.php" hash="463a0092939237b6de4c4e9b47e897d8"/></dir><dir name="Helper"><file name="Api.php" hash="e1a7690edb0ab53ed52b55c357dab505"/><file name="Data.php" hash="ca33046f86cd97daff222e2386879ee8"/></dir><dir name="Model"><dir name="Email"><file name="Message.php" hash="b944f24c52dd5ae00dea03254bdc6950"/></dir><file name="Messages.php" hash="56eeb27a00e794774759d4631df0df0d"/><dir name="Resource"><dir name="Transactional"><file name="Collection.php" hash="92714dd16f619e43ae8695bf6b9a5d59"/></dir><file name="Transactional.php" hash="c2c02bf63ab5c7314eca1f94f4f953bc"/></dir><dir name="System"><dir name="Config"><dir name="Source"><dir name="Email"><file name="Template.php" hash="6e04d1a0f99becc198a940ef1c8ebf57"/></dir></dir></dir></dir><file name="Transactional.php" hash="f71a307d7dc6bb652a1267921b78a7e6"/></dir><dir name="controllers"><file name="AjaxController.php" hash="1d81c0ad2620918a07266c40d772b8e0"/></dir><dir name="etc"><file name="config.xml" hash="2c4029df647f64a3d537db9ed49624e0"/><file name="system.xml" hash="b1ed057cfe7d27ecfb86fdf5a3f02e27"/></dir><dir name="sql"><dir name="pure360_email_setup"><file name="mysql4-install-1.0.4.php" hash="bb37fdf2a7c8907b13e003eb56f13542"/></dir></dir></dir><dir name="List"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="f66afdcd44d13a9a4dbd92fc3d77114a"/><file name="Form.php" hash="9b8b1a093cc9c455fb108a6f9d3960c0"/><file name="List.php" hash="9ee4a1c9e91b63402060f85726296f16"/></dir></dir></dir><file name="Jsinit.php" hash="78daf97d49034d34c36007322408c9a8"/></dir><dir name="Helper"><file name="Api.php" hash="159d953cad20a35eeaebab802e4b3b2a"/><file name="Data.php" hash="2bf3dd35442b2dc6191cb765512e28f7"/></dir><dir name="Job"><file name="Sync.php" hash="3d9d7a0a433db1805c94a033735f104f"/></dir><dir name="Model"><file name="Address.php" hash="844441bf49a1f1ac492939449c33f28c"/><file name="Customer.php" hash="69e24f841868d937b403c5a95b2b70ae"/><file name="Data.php" hash="1e70c242bcfd71a92832cc300d8697fc"/><file name="Groups.php" hash="05f58791bbd56a161b8dc614831197ca"/><file name="List.php" hash="9125566c34a2500734e1c2583371aec3"/><file name="Observer.php" hash="ca2ea4a8ca36f7203c1a9ea30c70aa08"/><file name="Optout.php" hash="8ef1933d96623fd1e74038be26b37034"/><dir name="Resource"><dir name="List"><file name="Collection.php" hash="503fae2e6c778646ba730eaf98a67ae5"/></dir><file name="List.php" hash="5b443a43c67230dca205cf44e568b613"/><dir name="Optout"><file name="Collection.php" hash="51f4304dcdbd28e90e98d0f3c165c3b6"/></dir><file name="Optout.php" hash="7c59ba27cdb4a565ce08a92ef43ec89d"/></dir><file name="Sales.php" hash="9910099ba6f492c414e951a49e5960c1"/><file name="Segments.php" hash="6bf9009dc93f71224d29644c333c1a61"/><file name="Subscriber.php" hash="f5ba2429a89167639bad5ca63e971012"/></dir><dir name="controllers"><file name="AjaxController.php" hash="20084d7deabcb5ba6c37b53da0d8524e"/></dir><dir name="etc"><file name="config.xml" hash="305a233b9895a7add36c4e49f0af4e44"/><file name="system.xml" hash="33bc7c064f682b6009e650213ee49854"/></dir><dir name="sql"><dir name="pure360_list_setup"><file name="mysql4-install-1.0.4.php" hash="f9babd3b5b9b11100638e688a7c59379"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="bd6d2cd02673217a8c5846e789c9467d"/></dir></dir></dir><dir name="Newsletter"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="dbc0efc7099f1ac9af12d02fc87f559c"/></dir></dir></dir><dir name="Checkout"><dir name="Onepage"><file name="Newsletter.php" hash="7f58aea512497487aeaec8b8e23f4107"/></dir></dir><file name="Jsinit.php" hash="3cdd4b0da1539ac253e440997bb56308"/></dir><dir name="Helper"><file name="Api.php" hash="01d99d4e8a31e16fd54929abdae96f06"/><file name="Data.php" hash="c2c63a8c9546183b6cb5048e6d7ddf7b"/></dir><dir name="Model"><file name="Observer.php" hash="0320f4334ef874f2c112e5d595760ec1"/><file name="Subscriber.php" hash="a35b3346fb4d0e6c12856e0e04451074"/></dir><dir name="controllers"><file name="IndexController.php" hash="da4dfea12608bf7ef6e177b9a0be47ba"/></dir><dir name="etc"><file name="config.xml" hash="0706ea55b6aa46f954e7360c448ca898"/><file name="system.xml" hash="35d9f9afe40ee6ea617906a3a830252f"/></dir><dir name="sql"><dir name="pure360_newsletter_setup"><file name="mysql4-install-1.0.4.php" hash="8487bc8b8483b9a941f9895e25280455"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="pure360_cart.xml" hash="273917f43f2d5b661005cfe09ef19981"/><file name="pure360_common.xml" hash="936bcb981defde27e7ec4fb0d9d64333"/><file name="pure360_cron.xml" hash="f3a1e028121e2abcca8c48aa588c61aa"/><file name="pure360_email.xml" hash="3d455306546061dd3845dc66647a6c67"/><file name="pure360_list.xml" hash="16622be692caa1bdb4ea95f864faca74"/><file name="pure360_newsletter.xml" hash="2cbc34cdb97a0f0e87df04d72c4cee02"/></dir><dir name="template"><dir name="pure360"><dir name="cart"><file name="jsinit.phtml" hash="2bca290370210037cb71c62e15b0d9cc"/></dir><dir name="common"><file name="about.phtml" hash="c532330d3f02612b6bc04b5b918f3c46"/><file name="config.phtml" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="disabled.phtml" hash="3fe3a819a246c58ee95404ce7428285e"/><file name="error.phtml" hash="891d140f2a5616f2929b307edf39c18b"/><file name="hidden.phtml" hash="bd8768ad057df0a9dda8e50a0507b3ed"/><file name="jsinit.phtml" hash="fe043d6f61686949e2098108686ecad4"/><file name="modules.phtml" hash="2dcf7bab0da85eb4533d07f8479c4c38"/></dir><dir name="cron"><file name="jsinit.phtml" hash="697388afb41375e3dfe9f7c4fff25712"/><file name="manager.phtml" hash="a413d279ec78fce33ffe2c7196fd2acb"/></dir><dir name="email"><file name="jsinit.phtml" hash="91b9745ad690249ea58b5f80c7487a1f"/><file name="transactional.phtml" hash="2002641f30185ea1d63f2c492478ff95"/></dir><file name="hint.phtml" hash="6e50c5cce42b12e8481e5211e8cf0f35"/><dir name="list"><file name="jsinit.phtml" hash="2a66b7d233cdf95c751e102974504ca0"/><file name="list.phtml" hash="f310c3197118223821176f4f791eeed4"/></dir><dir name="newsletter"><file name="jsinit.phtml" hash="e57d9c2279ff4440df096e79643f9bca"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="pure360"><file name="cart.xml" hash="ae1b704553530b74108d9759f575376b"/><file name="newsletter.xml" hash="678ce91ac72cce3f541daae259a4ef32"/></dir></dir><dir name="template"><dir name="pure360"><dir name="cart"><dir name="email"><dir name="order"><dir name="items"><dir name="order"><file name="default.phtml" hash="307ede936c9f667a7fbd64115942a721"/></dir></dir><file name="items.phtml" hash="0e349df6e260ca4d4be1092e58c7be24"/></dir></dir></dir><dir name="newsletter"><file name="jsinit.phtml" hash="e99f59688cef74ad2aa3f57751c25a9f"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Pure360_Cart.xml" hash="29d028bc4960d42dd9ae5471c9bbf904"/><file name="Pure360_Common.xml" hash="21ce1650dac593cf9d1293167592ce9d"/><file name="Pure360_Cron.xml" hash="3fac7040468efecd5ae487b3e0509737"/><file name="Pure360_Email.xml" hash="e58b87357af6ed25523afd5983a63297"/><file name="Pure360_List.xml" hash="277e4aea059838480e1af90a3b2d0a7a"/><file name="Pure360_Newsletter.xml" hash="500c3d494e2c3edc7b0a0bdb0a429126"/></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><dir name="pure360"><file name="abandoned_cart.html" hash="e2b9facb56c028a2e19a69f5420052ff"/><file name="abandoned_cart_guest.html" hash="00cbc838e6f4e44fc87c51d98cedd2a2"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="mage"><dir name="adminhtml"><dir name="pure360"><file name="cart.js" hash="ee5b1110af04c4d24f0ed5f1668cf4d5"/><file name="common.js" hash="2ffa56e258da7022973ec1568d00785c"/><file name="cron.js" hash="29b6311859e63be290a9ececc3dbc547"/><file name="email.js" hash="3c9259fe31d2ade24aacc622b0790ea2"/><file name="list.js" hash="443b0acec1d1a3016f3b606e92a435d5"/><file name="newsletter.js" hash="15d462e8eaab011460431cc10a75bdb2"/></dir></dir></dir></dir></target><target name="magelib"><dir name="Pure360"><file name="Client.php" hash="2daae4bee1c878da1c4a316ed9d0b8c7"/><file name="Entity.php" hash="ba76dccb0a80ce11a110d3e1c5e108a1"/><dir name="Exception"><file name="SecurityException.php" hash="1e30dd834995651eb8ab0ff19c022713"/><file name="SystemException.php" hash="dbb715d39318c4a63db0d05eaeb85eab"/><file name="ValidationException.php" hash="69540e782165d00400c1ae460aa755ed"/></dir><dir name="Package"><dir name="Account"><file name="Identity.php" hash="56a192c63b4b82f95a03bf01dfb0e320"/><file name="Login.php" hash="b5cf3c5a7f02c34a7714492cb088b12d"/><file name="Pool.php" hash="6ca9929fae710c8d3b6baff9bb9ebd56"/></dir><file name="Account.php" hash="549fc8c168e102b5d622192e7161314f"/><dir name="Campaign"><file name="Automation.php" hash="7ef9a900dd1e48b5bc131aa3c801c4bb"/><file name="AutomationByDate.php" hash="0042f336568ce900d74e8e19e9d70a9b"/><file name="AutomationBySignup.php" hash="23e9d9e19a02c602ab67a2e706e64184"/><file name="ContentItem.php" hash="797bfd1d0fee23e2d8a00a7118934fc9"/><file name="Delivery.php" hash="a38c9f831977dc635140af291f529bbb"/><file name="DynamicRegion.php" hash="f81afeb8f67d3b5d6adb279126325321"/><file name="Email.php" hash="ae09ee6eb161c2032a68af8486227a8f"/><file name="Filter.php" hash="16cbfe1f34080bf88326315cde2c7fae"/><file name="GroupDelivery.php" hash="e470a337c36cd6c6e6c2126c2d8a6b05"/><file name="MarketingList.php" hash="62a2cb099555c922abc8971fb904af84"/><file name="Message.php" hash="115a7a8d5d313cc1fc91c404af4e277f"/><file name="One2One.php" hash="b3f229593bc9e78f717807967923e181"/><file name="Person.php" hash="465cc7928b872f1a1f9c71099e70e640"/><file name="Sms.php" hash="c525a6fb395d67651e91c1fe6481777b"/></dir><file name="Campaign.php" hash="bfab52155c32995acd3b7e376b683001"/><dir name="Context"><file name="Context.php" hash="2fe3109a45d6459f4cf441b3aa1ed7a3"/><file name="Preference.php" hash="8a390e782e04ad0decc26f72cc7f362c"/></dir><file name="Context.php" hash="7032b8dd4c00fded3f49511b174ebeba"/><dir name="Data"><file name="Meta.php" hash="a0489bfbbd52443eeb3f019f36840846"/><file name="Scheduler.php" hash="a37efb3c2d5497bc37393a8fa4879b57"/></dir><file name="Data.php" hash="77c4d9c47b4a2cd161a506d74024e639"/><dir name="Other"><file name="EventNotification.php" hash="c880abfad0408709e7c801f74c0c1882"/><file name="File.php" hash="71f3239c95c09f03a954d47ebdd20233"/></dir><file name="Other.php" hash="bea8844bf4037303bcf7bd064e18ae3f"/></dir><file name="Package.php" hash="2b1d5236b81621130c7522ddc105bd90"/><file name="Session.php" hash="340e63e5c25296bbe9baf8426dba1726"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="pure360"><file name="pure360.css" hash="ea0485422716685e1753945731b3391e"/></dir><dir name="images"><dir name="pure360"><file name="pure_logo.png" hash="e03329ae9efacfeb292f079992a18a41"/><file name="switch.png" hash="dc4dd15ad074ab584444bda7660afe7a"/></dir></dir></dir></dir></dir></target></contents>
104
  <compatible/>
105
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>soap</name><min></min><max></max></extension></required></dependencies>
106
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Pure360</name>
4
+ <version>1.1.3</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License</license>
7
  <channel>community</channel>
68
  &lt;h3&gt;Pricing&lt;/h3&gt;&#xD;
69
  &#xD;
70
  &lt;p&gt;To see Pure360 pricing &lt;a title="Sign up here" href="http://www.pure360.com/take-a-trial-software-august"&gt;sign up here&lt;/a&gt; and a member of the team will be in touch to discuss your requirements and build a package that suits your individual needs.&lt;/p&gt;</description>
71
+ <notes>1.1.3&#xD;
72
+ - Added support for SUPEE-6788&#xD;
73
+ - Remove LF and CR characters from lists csv rows;&#xD;
74
+ - Fix bug Abandoned carts are triggered only 1 time for each customer in magento 1.9;&#xD;
75
+ - Fix JavaScript problems so that the checkbox for subscribe displays also in magento 1.9 rwd theme;&#xD;
76
+ - Changed text encoding for emails to UTF-8 when necessary so that sending one2one always works with pure360;&#xD;
77
+ &#xD;
78
+ 1.1.2&#xD;
79
  - Allow Response API to be accessed via HTTPS&#xD;
80
  - Also allow HTTP API access&#xD;
81
  &#xD;
105
  1.0.1&#xD;
106
  - Magento Connect compliance</notes>
107
  <authors><author><name>Stewart Waller</name><user>stewart_pure360</user><email>stewart.waller@pure360.com</email></author></authors>
108
+ <date>2015-11-06</date>
109
+ <time>12:58:07</time>
110
+ <contents><target name="magecommunity"><dir name="Pure360"><dir name="Cart"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b2a89a4eb5a0cc07a4ddb9851b5d8490"/></dir></dir></dir><dir name="Email"><dir name="Order"><file name="Items.php" hash="45b9becd073ab968872f142243d52d63"/></dir></dir><file name="Jsinit.php" hash="9ba1a3c3b20736d2b2376046da2b3fcf"/></dir><dir name="Helper"><file name="Data.php" hash="48fd162115b086d3a02628a448bf7abd"/></dir><dir name="Job"><file name="Trigger.php" hash="08625794841c4bbf0ff1956428e50412"/></dir><dir name="Model"><dir name="System"><dir name="Config"><dir name="Backend"><file name="Enable.php" hash="742234ea19b737b33de9af1aea4dcf6e"/></dir><dir name="Source"><file name="Delay.php" hash="386d7aa81411c136516e8c4cc3f13ad3"/><dir name="Email"><file name="Template.php" hash="9f2fab6d42a1da181f272d70c5236172"/><file name="TemplateGuest.php" hash="682117c74cecda7395941cb5fcbdc729"/></dir><file name="Type.php" hash="a4a09a9fcaf0f970e823479bb784e92c"/></dir></dir></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="c084c8b407d66b68d859c9e21b11e863"/></dir><dir name="etc"><file name="config.xml" hash="0bca6e17fd6e26ce76c5cb896fe72818"/><file name="system.xml" hash="02bfe0ba69816df211fb6851067414dc"/></dir><dir name="sql"><dir name="pure360_cart_setup"><file name="mysql4-install-1.0.4.php" hash="49960b758d00481bad2d3baa2daba9cd"/><file name="mysql4-upgrade-1.1.2-1.1.3.php" hash="603d4269a49fc664313bd3c3f05cfac9"/></dir></dir></dir><dir name="Common"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="29091a400a1ce9c9207d732de03ce7bd"/><file name="Disabled.php" hash="9970f5fc1b0b34000b8219f2519eccaa"/><dir name="Form"><dir name="Field"><file name="Hidden.php" hash="95ed0e83cd87c03de709789eb21ab1b2"/></dir><file name="Field.php" hash="34766e8795a023cdf19c2fc0bb0c976f"/><file name="Fieldset.php" hash="0605c96e429b6d1c5ae6081b6a1bf76e"/></dir><file name="Form.php" hash="d8c5c4aa3d8132c7318311981cd1fdee"/><file name="Hidden.php" hash="b4b32095413ebdd63f4de1194e20ea0e"/><file name="Modules.php" hash="3deb577d540a7537d91059a8393d759d"/><file name="Tabs.php" hash="de833cdcb3b278923e53ee85d685820f"/><dir name="Validate"><file name="Marketing.php" hash="86513e7b18dc53ab3f6a17ae1c2ffb07"/><file name="Transactional.php" hash="578130a5e13e24848eea90dede3d8ab5"/></dir></dir></dir></dir><file name="Jsinit.php" hash="47c0e55bbe05d6adc07840090034eca7"/></dir><dir name="Helper"><file name="Ajax.php" hash="57787267c712dd712f74fc54e6f2765f"/><file name="Api.php" hash="5bbe4e34310f1dfb7f83395a622b6a08"/><file name="Data.php" hash="37fba89884930b660c000910b73ff159"/><file name="File.php" hash="f3439f121e49b1dbf52aa4b15436a75f"/></dir><dir name="Interface"><file name="Job.php" hash="59c3fcfe0e35f2a7867a3bd8e5f51d61"/></dir><dir name="Model"><file name="Observer.php" hash="045ba8d185a9646cc2bfb0adfe96e6ef"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Enable.php" hash="9445b26df9a78548fd0c22be126acc7c"/></dir><dir name="Source"><dir name="Cron"><file name="Days.php" hash="0174fb71a0cd1979b4b1a74b4d5dfe6e"/><file name="Frequency.php" hash="0c0afecf1341100e4ba90e180df6facf"/><file name="Minutes.php" hash="b7a8eef1155ca8cddadc79d643ac56bc"/></dir><file name="Field.php" hash="da1801ccb45426ce8e960a4d40952303"/><file name="Global.php" hash="412071d06a25bf92962d2c2be1eb411a"/><file name="Message.php" hash="aa72d6227f29795dadf9c45405cafffd"/></dir></dir></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="1b13dcdd114be2ae40a6386ac304fdb9"/><file name="JobController.php" hash="99b6026a540c4f02c8c827e66a85d48b"/><file name="Pure360Controller.php" hash="07599b0ad90725bda1201b8bd291e0d5"/></dir><dir name="etc"><file name="config.xml" hash="a33da4e0cc1f3344a532730ed499315b"/><file name="system.xml" hash="9b467fbbc758e3933e1343f8a0f63715"/></dir></dir><dir name="Cron"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="4c08269367666f8aa9ea9028f1afc0b7"/></dir><dir name="Cron"><dir name="Manager"><dir name="Grid"><dir name="Renderer"><file name="Actions.php" hash="c0ee554f426a5147b486384c52f8eae3"/><file name="Crontab.php" hash="b28f87aeb8259bd17583b2a86fa16e19"/><file name="Force.php" hash="69f68ee9b7e7deccf161991aff2013fe"/><file name="Pause.php" hash="780dd8620f8c0c0a7094c558d6c1b0fc"/></dir></dir><file name="Grid.php" hash="a654543f57a356152eb7119cf971f4a9"/><dir name="Logs"><dir name="Renderer"><file name="Bytes.php" hash="a252cdb9290293c58962b19ec376d11f"/><file name="Clean.php" hash="448c3aae8e6fef07e676a53ac1225e11"/><file name="Download.php" hash="1046ed159db6e270d78823af78e4dec0"/><file name="Tail.php" hash="57ad12798b10af495e3e3d34e84ecb36"/></dir></dir><file name="Logs.php" hash="bbad87b3c1ff4165179ffa799554f568"/></dir><file name="Manager.php" hash="407928e5052d387a45f02b5c8e70810b"/></dir></dir></dir><file name="Jsinit.php" hash="28d2d2074598dd783db41884fc624f88"/></dir><dir name="Helper"><file name="Data.php" hash="fa6c7e721a561c014382692aa2a49eab"/></dir><dir name="Job"><file name="Abstract.php" hash="f59fb9712d9001f3406d10c202a45223"/><file name="Interface.php" hash="306c4c9de6dc281ce2d50012759da82c"/></dir><dir name="Model"><file name="Job.php" hash="2876e7fcff63de170d0b34d2aef92254"/><file name="Observer.php" hash="788e7fbcca63ac8aea5ed254097886aa"/><dir name="Resource"><dir name="Job"><file name="Collection.php" hash="a42b6c45b4786f35d2d808bd3e0860da"/></dir><file name="Job.php" hash="ca3d4f31293d6419fb4b84a10dec4464"/></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="0bc1a43d2f780d1d1685e729c643439b"/></dir><dir name="etc"><file name="config.xml" hash="f8ad2e8b8aef8ff49df707ab2e2e168c"/><file name="system.xml" hash="d398d5ef4758562b8e8c7007b2470b7b"/></dir><dir name="sql"><dir name="pure360_cron_setup"><file name="mysql4-install-1.0.4.php" hash="6819eab799199893f65c05a53451e3a0"/></dir></dir></dir><dir name="Email"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="c03154f20bdfbe72631bc09fbd3f86da"/><file name="Transactional.php" hash="37476f57155a4d28a9a16d75f1c2269c"/></dir></dir></dir><file name="Jsinit.php" hash="463a0092939237b6de4c4e9b47e897d8"/></dir><dir name="Helper"><file name="Api.php" hash="ddeb4f28ee7f82530b96055c4b5ccaa8"/><file name="Data.php" hash="ca33046f86cd97daff222e2386879ee8"/></dir><dir name="Model"><dir name="Email"><file name="Message.php" hash="658029c96a60ce6f542934fdf9993bb2"/></dir><file name="Messages.php" hash="56eeb27a00e794774759d4631df0df0d"/><dir name="Resource"><dir name="Transactional"><file name="Collection.php" hash="92714dd16f619e43ae8695bf6b9a5d59"/></dir><file name="Transactional.php" hash="c2c02bf63ab5c7314eca1f94f4f953bc"/></dir><dir name="System"><dir name="Config"><dir name="Source"><dir name="Email"><file name="Template.php" hash="6e04d1a0f99becc198a940ef1c8ebf57"/></dir></dir></dir></dir><file name="Transactional.php" hash="f71a307d7dc6bb652a1267921b78a7e6"/></dir><dir name="controllers"><file name="AjaxController.php" hash="1d81c0ad2620918a07266c40d772b8e0"/></dir><dir name="etc"><file name="config.xml" hash="aebec2970abf97ebf4ccca84d554fa51"/><file name="system.xml" hash="b1ed057cfe7d27ecfb86fdf5a3f02e27"/></dir><dir name="sql"><dir name="pure360_email_setup"><file name="mysql4-install-1.0.4.php" hash="bb37fdf2a7c8907b13e003eb56f13542"/></dir></dir></dir><dir name="List"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="f66afdcd44d13a9a4dbd92fc3d77114a"/><file name="Form.php" hash="9b8b1a093cc9c455fb108a6f9d3960c0"/><file name="List.php" hash="9ee4a1c9e91b63402060f85726296f16"/></dir></dir></dir><file name="Jsinit.php" hash="78daf97d49034d34c36007322408c9a8"/></dir><dir name="Helper"><file name="Api.php" hash="159d953cad20a35eeaebab802e4b3b2a"/><file name="Data.php" hash="2bf3dd35442b2dc6191cb765512e28f7"/></dir><dir name="Job"><file name="Sync.php" hash="656178fd017807d5c8854a439933dc34"/></dir><dir name="Model"><file name="Address.php" hash="844441bf49a1f1ac492939449c33f28c"/><file name="Customer.php" hash="69e24f841868d937b403c5a95b2b70ae"/><file name="Data.php" hash="1e70c242bcfd71a92832cc300d8697fc"/><file name="Groups.php" hash="05f58791bbd56a161b8dc614831197ca"/><file name="List.php" hash="9125566c34a2500734e1c2583371aec3"/><file name="Observer.php" hash="ca2ea4a8ca36f7203c1a9ea30c70aa08"/><file name="Optout.php" hash="8ef1933d96623fd1e74038be26b37034"/><dir name="Resource"><dir name="List"><file name="Collection.php" hash="503fae2e6c778646ba730eaf98a67ae5"/></dir><file name="List.php" hash="5b443a43c67230dca205cf44e568b613"/><dir name="Optout"><file name="Collection.php" hash="51f4304dcdbd28e90e98d0f3c165c3b6"/></dir><file name="Optout.php" hash="7c59ba27cdb4a565ce08a92ef43ec89d"/></dir><file name="Sales.php" hash="9910099ba6f492c414e951a49e5960c1"/><file name="Segments.php" hash="6bf9009dc93f71224d29644c333c1a61"/><file name="Subscriber.php" hash="f5ba2429a89167639bad5ca63e971012"/></dir><dir name="controllers"><file name="AjaxController.php" hash="844117b2639e1e0540c4ea7bcadd5b29"/></dir><dir name="etc"><file name="config.xml" hash="135d804e2df4c858afcaa0cd7fc36b27"/><file name="system.xml" hash="33bc7c064f682b6009e650213ee49854"/></dir><dir name="sql"><dir name="pure360_list_setup"><file name="mysql4-install-1.0.4.php" hash="f9babd3b5b9b11100638e688a7c59379"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="bd6d2cd02673217a8c5846e789c9467d"/></dir></dir></dir><dir name="Newsletter"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="dbc0efc7099f1ac9af12d02fc87f559c"/></dir></dir></dir><dir name="Checkout"><dir name="Onepage"><file name="Newsletter.php" hash="7f58aea512497487aeaec8b8e23f4107"/></dir></dir><file name="Jsinit.php" hash="3cdd4b0da1539ac253e440997bb56308"/></dir><dir name="Helper"><file name="Api.php" hash="3219caeb42f3e36ec0e40b5c4cd727e5"/><file name="Data.php" hash="c2c63a8c9546183b6cb5048e6d7ddf7b"/></dir><dir name="Model"><file name="Observer.php" hash="0320f4334ef874f2c112e5d595760ec1"/><file name="Subscriber.php" hash="a35b3346fb4d0e6c12856e0e04451074"/></dir><dir name="controllers"><file name="IndexController.php" hash="da4dfea12608bf7ef6e177b9a0be47ba"/></dir><dir name="etc"><file name="config.xml" hash="2a166b47c3718c3d5a2bbe1b7d142222"/><file name="system.xml" hash="35d9f9afe40ee6ea617906a3a830252f"/></dir><dir name="sql"><dir name="pure360_newsletter_setup"><file name="mysql4-install-1.0.4.php" hash="8487bc8b8483b9a941f9895e25280455"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="pure360_cart.xml" hash="273917f43f2d5b661005cfe09ef19981"/><file name="pure360_common.xml" hash="936bcb981defde27e7ec4fb0d9d64333"/><file name="pure360_cron.xml" hash="f3a1e028121e2abcca8c48aa588c61aa"/><file name="pure360_email.xml" hash="3d455306546061dd3845dc66647a6c67"/><file name="pure360_list.xml" hash="16622be692caa1bdb4ea95f864faca74"/><file name="pure360_newsletter.xml" hash="2cbc34cdb97a0f0e87df04d72c4cee02"/></dir><dir name="template"><dir name="pure360"><dir name="cart"><file name="jsinit.phtml" hash="2bca290370210037cb71c62e15b0d9cc"/></dir><dir name="common"><file name="about.phtml" hash="c532330d3f02612b6bc04b5b918f3c46"/><file name="config.phtml" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="disabled.phtml" hash="3fe3a819a246c58ee95404ce7428285e"/><file name="error.phtml" hash="891d140f2a5616f2929b307edf39c18b"/><file name="hidden.phtml" hash="bd8768ad057df0a9dda8e50a0507b3ed"/><file name="jsinit.phtml" hash="fe043d6f61686949e2098108686ecad4"/><file name="modules.phtml" hash="2dcf7bab0da85eb4533d07f8479c4c38"/></dir><dir name="cron"><file name="jsinit.phtml" hash="697388afb41375e3dfe9f7c4fff25712"/><file name="manager.phtml" hash="a413d279ec78fce33ffe2c7196fd2acb"/></dir><dir name="email"><file name="jsinit.phtml" hash="91b9745ad690249ea58b5f80c7487a1f"/><file name="transactional.phtml" hash="2002641f30185ea1d63f2c492478ff95"/></dir><file name="hint.phtml" hash="6e50c5cce42b12e8481e5211e8cf0f35"/><dir name="list"><file name="jsinit.phtml" hash="2a66b7d233cdf95c751e102974504ca0"/><file name="list.phtml" hash="f310c3197118223821176f4f791eeed4"/></dir><dir name="newsletter"><file name="jsinit.phtml" hash="e57d9c2279ff4440df096e79643f9bca"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="pure360"><file name="cart.xml" hash="ae1b704553530b74108d9759f575376b"/><file name="newsletter.xml" hash="678ce91ac72cce3f541daae259a4ef32"/></dir></dir><dir name="template"><dir name="pure360"><dir name="cart"><dir name="email"><dir name="order"><dir name="items"><dir name="order"><file name="default.phtml" hash="307ede936c9f667a7fbd64115942a721"/></dir></dir><file name="items.phtml" hash="0e349df6e260ca4d4be1092e58c7be24"/></dir></dir></dir><dir name="newsletter"><file name="jsinit.phtml" hash="db2d4424149c02ace0f501fad2c77d36"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Pure360_Cart.xml" hash="29d028bc4960d42dd9ae5471c9bbf904"/><file name="Pure360_Common.xml" hash="21ce1650dac593cf9d1293167592ce9d"/><file name="Pure360_Cron.xml" hash="3fac7040468efecd5ae487b3e0509737"/><file name="Pure360_Email.xml" hash="e58b87357af6ed25523afd5983a63297"/><file name="Pure360_List.xml" hash="277e4aea059838480e1af90a3b2d0a7a"/><file name="Pure360_Newsletter.xml" hash="500c3d494e2c3edc7b0a0bdb0a429126"/></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><dir name="pure360"><file name="abandoned_cart.html" hash="e2b9facb56c028a2e19a69f5420052ff"/><file name="abandoned_cart_guest.html" hash="00cbc838e6f4e44fc87c51d98cedd2a2"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="mage"><dir name="adminhtml"><dir name="pure360"><file name="cart.js" hash="ee5b1110af04c4d24f0ed5f1668cf4d5"/><file name="common.js" hash="2ffa56e258da7022973ec1568d00785c"/><file name="cron.js" hash="29b6311859e63be290a9ececc3dbc547"/><file name="email.js" hash="3c9259fe31d2ade24aacc622b0790ea2"/><file name="list.js" hash="443b0acec1d1a3016f3b606e92a435d5"/><file name="newsletter.js" hash="15d462e8eaab011460431cc10a75bdb2"/></dir></dir></dir></dir></target><target name="magelib"><dir name="Pure360"><file name="Client.php" hash="61f3e6ab0345e05d92d0b2161395f378"/><file name="Entity.php" hash="ba76dccb0a80ce11a110d3e1c5e108a1"/><dir name="Exception"><file name="SecurityException.php" hash="1e30dd834995651eb8ab0ff19c022713"/><file name="SystemException.php" hash="dbb715d39318c4a63db0d05eaeb85eab"/><file name="ValidationException.php" hash="69540e782165d00400c1ae460aa755ed"/></dir><dir name="Package"><dir name="Account"><file name="Identity.php" hash="56a192c63b4b82f95a03bf01dfb0e320"/><file name="Login.php" hash="b5cf3c5a7f02c34a7714492cb088b12d"/><file name="Pool.php" hash="6ca9929fae710c8d3b6baff9bb9ebd56"/></dir><file name="Account.php" hash="549fc8c168e102b5d622192e7161314f"/><dir name="Campaign"><file name="Automation.php" hash="7ef9a900dd1e48b5bc131aa3c801c4bb"/><file name="AutomationByDate.php" hash="0042f336568ce900d74e8e19e9d70a9b"/><file name="AutomationBySignup.php" hash="23e9d9e19a02c602ab67a2e706e64184"/><file name="ContentItem.php" hash="797bfd1d0fee23e2d8a00a7118934fc9"/><file name="Delivery.php" hash="a38c9f831977dc635140af291f529bbb"/><file name="DynamicRegion.php" hash="f81afeb8f67d3b5d6adb279126325321"/><file name="Email.php" hash="ae09ee6eb161c2032a68af8486227a8f"/><file name="Filter.php" hash="16cbfe1f34080bf88326315cde2c7fae"/><file name="GroupDelivery.php" hash="e470a337c36cd6c6e6c2126c2d8a6b05"/><file name="MarketingList.php" hash="62a2cb099555c922abc8971fb904af84"/><file name="Message.php" hash="115a7a8d5d313cc1fc91c404af4e277f"/><file name="One2One.php" hash="b3f229593bc9e78f717807967923e181"/><file name="Person.php" hash="465cc7928b872f1a1f9c71099e70e640"/><file name="Sms.php" hash="c525a6fb395d67651e91c1fe6481777b"/></dir><file name="Campaign.php" hash="bfab52155c32995acd3b7e376b683001"/><dir name="Context"><file name="Context.php" hash="2fe3109a45d6459f4cf441b3aa1ed7a3"/><file name="Preference.php" hash="8a390e782e04ad0decc26f72cc7f362c"/></dir><file name="Context.php" hash="7032b8dd4c00fded3f49511b174ebeba"/><dir name="Data"><file name="Meta.php" hash="a0489bfbbd52443eeb3f019f36840846"/><file name="Scheduler.php" hash="a37efb3c2d5497bc37393a8fa4879b57"/></dir><file name="Data.php" hash="77c4d9c47b4a2cd161a506d74024e639"/><dir name="Other"><file name="EventNotification.php" hash="c880abfad0408709e7c801f74c0c1882"/><file name="File.php" hash="71f3239c95c09f03a954d47ebdd20233"/></dir><file name="Other.php" hash="bea8844bf4037303bcf7bd064e18ae3f"/></dir><file name="Package.php" hash="2b1d5236b81621130c7522ddc105bd90"/><file name="Session.php" hash="281fbef841672f74682b6a7ad58915d3"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="pure360"><file name="pure360.css" hash="ea0485422716685e1753945731b3391e"/></dir><dir name="images"><dir name="pure360"><file name="pure_logo.png" hash="e03329ae9efacfeb292f079992a18a41"/><file name="switch.png" hash="dc4dd15ad074ab584444bda7660afe7a"/></dir></dir></dir></dir></dir></target></contents>
111
  <compatible/>
112
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>soap</name><min></min><max></max></extension></required></dependencies>
113
  </package>