Bronto_Extension - Version 2.2.1

Version Notes

For installation and configuration instructions, as well as a full list of new features and known issues, please review the Implementation Guide.

Download this release

Release Info

Developer Chris Geiss
Extension Bronto_Extension
Version 2.2.1
Comparing to
See all releases


Code changes from version 2.2.0 to 2.2.1

Files changed (75) hide show
  1. app/code/community/Bronto/Common/Block/Adminhtml/System/Config/Cron/Error.php +14 -0
  2. app/code/community/Bronto/Common/Block/Adminhtml/System/Config/Guide.php +2 -1
  3. app/code/community/Bronto/Common/Helper/Api.php +229 -0
  4. app/code/community/Bronto/Common/Helper/Data.php +33 -28
  5. app/code/community/Bronto/Common/Helper/Product.php +2 -1
  6. app/code/community/Bronto/Common/Helper/Support.php +39 -2
  7. app/code/community/Bronto/Common/Model/Api.php +79 -35
  8. app/code/community/Bronto/Common/Model/Delivery.php +57 -0
  9. app/code/community/Bronto/Common/Model/Email/Template.php +44 -3
  10. app/code/community/Bronto/Common/Model/Email/Template/Filter.php +14 -2
  11. app/code/community/Bronto/Common/Model/Error.php +117 -0
  12. app/code/community/Bronto/Common/Model/Mysql4/Api.php +14 -0
  13. app/code/community/Bronto/Common/Model/Mysql4/Api/Collection.php +13 -0
  14. app/code/community/Bronto/Common/Model/Mysql4/Error.php +12 -0
  15. app/code/community/Bronto/Common/Model/Mysql4/Error/Collection.php +35 -0
  16. app/code/community/Bronto/Common/Model/Observer.php +54 -0
  17. app/code/community/Bronto/Common/Model/SoapClient.php +1 -1
  18. app/code/community/Bronto/Common/Model/System/Config/Backend/Cron/Error.php +7 -0
  19. app/code/community/Bronto/Common/etc/adminhtml.xml +4 -0
  20. app/code/community/Bronto/Common/etc/config.xml +62 -14
  21. app/code/community/Bronto/Common/etc/system.xml +320 -3
  22. app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-install-2.2.1.php +38 -0
  23. app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-1.7.0-2.2.1.php +38 -0
  24. app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.0.4-2.2.1.php +38 -0
  25. app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.0.4.2-2.2.1.php +38 -0
  26. app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.1.0-2.2.1.php +38 -0
  27. app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.2.0-2.2.1.php +38 -0
  28. app/code/community/Bronto/Customer/Helper/Data.php +0 -5
  29. app/code/community/Bronto/Email/Block/Adminhtml/System/Email/Template.php +1 -1
  30. app/code/community/Bronto/Email/Block/Adminhtml/System/Email/Template/Edit.php +2 -2
  31. app/code/community/Bronto/Email/Helper/Data.php +6 -6
  32. app/code/community/Bronto/Email/Model/Mysql4/Message.php +0 -1
  33. app/code/community/Bronto/Email/Model/Mysql4/Template.php +1 -1
  34. app/code/community/Bronto/Email/Model/Mysql4/Template/Collection.php +1 -1
  35. app/code/community/Bronto/Email/Model/Template.php +9 -1
  36. app/code/community/Bronto/Email/Model/Template/Import.php +1 -1
  37. app/code/community/Bronto/Email/etc/config.xml +1 -1
  38. app/code/community/Bronto/Email/sql/bronto_email_setup/mysql4-install-1.1.9.php +65 -0
  39. app/code/community/Bronto/Email/sql/bronto_email_setup/mysql4-upgrade-1.1.8-1.1.9.php +20 -0
  40. app/code/community/Bronto/Emailcapture/Model/Queue.php +3 -2
  41. app/code/community/Bronto/Newsletter/Helper/Contact.php +11 -15
  42. app/code/community/Bronto/Newsletter/Helper/Data.php +0 -5
  43. app/code/community/Bronto/Newsletter/Model/Observer.php +3 -3
  44. app/code/community/Bronto/Newsletter/Model/Resource/Setup.php +17 -0
  45. app/code/community/Bronto/Newsletter/controllers/Adminhtml/NewsletterController.php +3 -0
  46. app/code/community/Bronto/Newsletter/etc/config.xml +3 -2
  47. app/code/community/Bronto/Newsletter/sql/bronto_newsletter_setup/mysql4-install-1.4.7.php +61 -0
  48. app/code/community/Bronto/Newsletter/sql/bronto_newsletter_setup/mysql4-upgrade-1.4.5-1.4.6.php +1 -1
  49. app/code/community/Bronto/Newsletter/sql/bronto_newsletter_setup/mysql4-upgrade-1.4.6-1.4.7.php +13 -0
  50. app/code/community/Bronto/Order/Helper/Data.php +0 -5
  51. app/code/community/Bronto/Order/Model/Observer.php +15 -1
  52. app/code/community/Bronto/Order/Model/Queue.php +2 -2
  53. app/code/community/Bronto/Reminder/Helper/Data.php +0 -5
  54. app/code/community/Bronto/Reminder/Model/Email/Message.php +8 -0
  55. app/code/community/Bronto/Reviews/Helper/Data.php +18 -8
  56. app/code/community/Bronto/Reviews/Model/Observer.php +1 -1
  57. app/code/community/Bronto/Verify/Block/Adminhtml/System/Config/Form/Magecron.php +2 -0
  58. app/code/community/Bronto/Verify/Block/Adminhtml/System/Config/Installs.php +1 -0
  59. app/code/community/Bronto/Verify/Helper/Data.php +0 -115
  60. app/code/community/Bronto/Verify/Model/Contact/Builder.php +1 -1
  61. app/code/community/Bronto/Verify/etc/config.xml +0 -9
  62. app/code/community/Bronto/Verify/etc/system.xml +12 -119
  63. app/design/adminhtml/default/default/layout/bronto/common.xml +1 -0
  64. app/design/adminhtml/default/default/template/bronto/api/guide.phtml +239 -0
  65. app/design/adminhtml/default/default/template/bronto/common/about.phtml +2 -2
  66. app/design/adminhtml/default/default/template/bronto/common/cron.phtml +1 -1
  67. app/design/adminhtml/default/default/template/bronto/verify/guide.phtml +7 -50
  68. lib/Bronto/Api.php +69 -5
  69. lib/Bronto/Api/Login.php +0 -8
  70. lib/Bronto/Api/Object.php +1 -1
  71. lib/Bronto/Observer.php +35 -0
  72. lib/Bronto/SoapClient.php +4 -3
  73. package.xml +4 -4
  74. shell/bronto/cron.php +18 -10
  75. shell/bronto/fix.php +2 -0
app/code/community/Bronto/Common/Block/Adminhtml/System/Config/Cron/Error.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Block_Adminhtml_System_Config_Cron_Error extends Bronto_Common_Block_Adminhtml_System_Config_Cron
4
+ {
5
+ protected $_jobCode = 'bronto_common_errors';
6
+
7
+ /**
8
+ * @return bool
9
+ */
10
+ public function showCronTable()
11
+ {
12
+ return Mage::helper('bronto_common/api')->canUseMageCron();
13
+ }
14
+ }
app/code/community/Bronto/Common/Block/Adminhtml/System/Config/Guide.php CHANGED
@@ -13,6 +13,7 @@ class Bronto_Common_Block_Adminhtml_System_Config_Guide extends Mage_Adminhtml_B
13
  */
14
  private $_sections = array(
15
  'bronto',
 
16
  'bronto_common',
17
  'bronto_news',
18
  'bronto_newsletter',
@@ -106,4 +107,4 @@ class Bronto_Common_Block_Adminhtml_System_Config_Guide extends Mage_Adminhtml_B
106
 
107
  return ($scopeParams['scope'] == 'default');
108
  }
109
- }
13
  */
14
  private $_sections = array(
15
  'bronto',
16
+ 'bronto_api',
17
  'bronto_common',
18
  'bronto_news',
19
  'bronto_newsletter',
107
 
108
  return ($scopeParams['scope'] == 'default');
109
  }
110
+ }
app/code/community/Bronto/Common/Helper/Api.php ADDED
@@ -0,0 +1,229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Helper_Api extends Bronto_Common_Helper_Data
4
+ {
5
+ const XML_PATH_ENABLED = 'bronto_api/settings/enabled';
6
+ const XML_PATH_MAGE_CRON = 'bronto_api/settings/mage_cron';
7
+ const XML_PATH_ATTEMPT_THRES = 'bronto_api/settings/threshold';
8
+ const XML_PATH_TIME = 'bronto_api/settings/time';
9
+ const XML_PATH_INTERVAL = 'bronto_api/settings/interval';
10
+ const XML_PATH_FREQUENCY = 'bronto_api/settings/frequency';
11
+ const XML_PATH_FREQUENCY_MIN = 'bronto_api/settings/minutes';
12
+ const XML_PATH_ERROR_THRES = 'bronto_api/setting/limit';
13
+
14
+ const XML_PATH_SOAP_CLIENT = 'bronto_api/soap_options/soap_client';
15
+ const XML_PATH_API_OBSERVER = 'bronto_api/soap_options/observer';
16
+ const XML_PATH_API_RETRYER = 'bronto_api/soap_options/retryer';
17
+ const XML_PATH_SOAP_STREAM_CONTEXT = 'bronto_api/soap_options/stream_context';
18
+ const XML_PATH_SOAP_RETRY_LIMIT = 'bronto_api/soap_options/retry_limit';
19
+ const XML_PATH_SOAP_CONNECTION_TIMEOUT = 'bronto_api/soap_options/connection_timeout';
20
+ const XML_PATH_SOAP_TRACE = 'bronto_api/soap_options/trace';
21
+ const XML_PATH_SOAP_EXCEPTIONS = 'bronto_api/soap_options/exceptions';
22
+ const XML_PATH_WSDL_CACHE = 'bronto_api/soap_options/wsdl_cache';
23
+
24
+ const DEFAULT_SOAP_CLIENT = 'Bronto_SoapClient';
25
+
26
+ /**
27
+ * Gets the Canonical name of the helper
28
+ *
29
+ * @return string
30
+ */
31
+ public function getName()
32
+ {
33
+ return $this->__('Bronto API Retry');
34
+ }
35
+
36
+ /**
37
+ * Checks if the api retryer is enabled
38
+ *
39
+ * @return bool
40
+ */
41
+ public function isEnabled($scope = 'default', $scopeId = 0)
42
+ {
43
+ return (bool) $this->getAdminScopedConfig(self::XML_PATH_ENABLED);
44
+ }
45
+
46
+ /**
47
+ * Gets the entries whose attempts are less than this amount
48
+ *
49
+ * @return int
50
+ */
51
+ public function getAttemptThreshold()
52
+ {
53
+ return (int) $this->getAdminScopedConfig(self::XML_PATH_ATTEMPT_THRES);
54
+ }
55
+
56
+ /**
57
+ * Gets the number of error entries to process
58
+ *
59
+ * @return int
60
+ */
61
+ public function getErrorThreshold()
62
+ {
63
+ return (int) $this->getAdminScopedConfig(self::XML_PATH_ERROR_THRES);
64
+ }
65
+
66
+ /**
67
+ * Whether or not to use Magento cron
68
+ *
69
+ * @return bool
70
+ */
71
+ public function canUseMageCron()
72
+ {
73
+ return (bool) $this->getAdminScopedConfig(self::XML_PATH_MAGE_CRON, 'default', 0);
74
+ }
75
+
76
+ /**
77
+ * Get SOAP Options
78
+ *
79
+ * @return array
80
+ */
81
+ public function getSoapOptions()
82
+ {
83
+ // Return Default Options
84
+ return array(
85
+ 'soap_client' => $this->getSoapClient(),
86
+ 'observer' => $this->getApiObserver(),
87
+ 'retry_limit' => $this->getSoapRetryLimit(),
88
+ 'connection_timeout' => $this->getSoapConnectionTimeout(),
89
+ 'trace' => $this->getSoapTrace(),
90
+ 'exceptions' => $this->getSoapExceptions(),
91
+ 'cache_wsdl' => $this->getSoapCacheWsdl(),
92
+ 'debug' => $this->isDebugEnabled(),
93
+ 'retryer' => $this->getApiRetryer()
94
+ );
95
+ }
96
+
97
+ /**
98
+ * Gets the class name for the retryer
99
+ *
100
+ * @return string
101
+ */
102
+ public function getApiRetryer()
103
+ {
104
+ $class = $this->getAdminScopedConfig(self::XML_PATH_API_RETRYER);
105
+ $options = array('type' => 'custom');
106
+ if (empty($class) || !class_exists($class)) {
107
+ $options['object'] = Mage::getModel('bronto_common/error');
108
+ } else {
109
+ $options['path'] = $class;
110
+ }
111
+ return $options;
112
+ }
113
+
114
+ /**
115
+ * Override the Bronto_SoapCLient class name
116
+ *
117
+ * @return string
118
+ */
119
+ public function getSoapClient()
120
+ {
121
+ $class = $this->getAdminScopedConfig(self::XML_PATH_SOAP_CLIENT);
122
+ if (empty($class)) {
123
+ $class = self::DEFAULT_SOAP_CLIENT;
124
+ }
125
+ if (
126
+ $this->isStreamContextOverride() &&
127
+ $class == self::DEFAULT_SOAP_CLIENT
128
+ ) {
129
+ $class = 'Bronto_Common_Model_SoapClient';
130
+ }
131
+ return $class;
132
+ }
133
+
134
+ /**
135
+ * Overrides the Bronto_Observer use in Bronto_Api
136
+ *
137
+ * @return string
138
+ */
139
+ public function getApiObserver()
140
+ {
141
+ return $this->getAdminScopedConfig(self::XML_PATH_API_OBSERVER);
142
+ }
143
+
144
+ /**
145
+ * Override the default Soap client with the stream context override
146
+ *
147
+ * @return bool
148
+ */
149
+ public function isStreamContextOverride()
150
+ {
151
+ return (bool)$this->getAdminScopedConfig(self::XML_PATH_SOAP_STREAM_CONTEXT);
152
+ }
153
+
154
+ /**
155
+ * Turn on stream context override
156
+ *
157
+ * @param bool $state
158
+ * @return Bronto_Common_Helper_Api
159
+ */
160
+ public function setStreamContext($state)
161
+ {
162
+ $config = Mage::getModel('core/config');
163
+ $config->saveConfig(self::XML_PATH_SOAP_STREAM_CONTEXT, $state ? '1' : '0', 'default', 0);
164
+
165
+ Mage::getConfig()->reinit();
166
+ Mage::app()->reinitStores();
167
+ return $this;
168
+ }
169
+
170
+ /**
171
+ * Get Config Value for SOAP Retry Limit
172
+ *
173
+ * @return int
174
+ */
175
+ public function getSoapRetryLimit()
176
+ {
177
+ return (int)$this->getAdminScopedConfig(self::XML_PATH_SOAP_RETRY_LIMIT);
178
+ }
179
+
180
+ /**
181
+ * Get Config Value for SOAP Connection Timeout
182
+ *
183
+ * @return int
184
+ */
185
+ public function getSoapConnectionTimeout()
186
+ {
187
+ return (int)$this->getAdminScopedConfig(self::XML_PATH_SOAP_CONNECTION_TIMEOUT);
188
+ }
189
+
190
+ /**
191
+ * Get Config Value for SOAP Trace
192
+ *
193
+ * @return bool
194
+ */
195
+ public function getSoapTrace()
196
+ {
197
+ return (bool)$this->getAdminScopedConfig(self::XML_PATH_SOAP_TRACE) == '1';
198
+ }
199
+
200
+ /**
201
+ * Get Config Value for SOAP Exceptions
202
+ *
203
+ * @return bool
204
+ */
205
+ public function getSoapExceptions()
206
+ {
207
+ return (bool)$this->getAdminScopedConfig(self::XML_PATH_SOAP_EXCEPTIONS) == '1';
208
+ }
209
+
210
+ /**
211
+ * @return string
212
+ */
213
+ public function getSoapCacheWsdl()
214
+ {
215
+ $cacheWsdl = $this->getAdminScopedConfig(self::XML_PATH_WSDL_CACHE);
216
+ switch ($cacheWsdl) {
217
+ case 'WSDL_CACHE_NONE':
218
+ return WSDL_CACHE_NONE;
219
+ case 'WSDL_CACHE_DISK':
220
+ return WSDL_CACHE_DISK;
221
+ case 'WSDL_CACHE_MEMORY':
222
+ return WSDL_CACHE_MEMORY;
223
+ case 'WSDL_CACHE_BOTH':
224
+ default:
225
+ return WSDL_CACHE_BOTH;
226
+ }
227
+ }
228
+
229
+ }
app/code/community/Bronto/Common/Helper/Data.php CHANGED
@@ -17,6 +17,7 @@ class Bronto_Common_Helper_Data
17
  const XML_PATH_TEST = 'bronto/settings/test';
18
  const XML_PATH_NOTICES = 'bronto/settings/notices';
19
  const XML_PATH_ENABLED = 'bronto/settings/enabled';
 
20
 
21
  /**
22
  * Formatting Settings
@@ -81,6 +82,18 @@ class Bronto_Common_Helper_Data
81
  return $this->__('If you have changed your API token, please ensure you reconfigure all available options.');
82
  }
83
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  /**
85
  * Get Javascript for Pop-up
86
  *
@@ -301,11 +314,6 @@ class Bronto_Common_Helper_Data
301
  return false;
302
  }
303
 
304
- // If module is missing token, return false
305
- if (!$this->getApiToken()) {
306
- return false;
307
- }
308
-
309
  // If requirements are not met, return false
310
  if (!$this->verifyRequirements($this->_getModuleName())) {
311
  return false;
@@ -407,7 +415,9 @@ class Bronto_Common_Helper_Data
407
  $token = $this->getApiToken($scope, $scopeId);
408
  }
409
 
410
- return Bronto_Common_Model_Api::getInstance($token);
 
 
411
  }
412
 
413
  /**
@@ -456,13 +466,27 @@ class Bronto_Common_Helper_Data
456
  }
457
 
458
  try {
459
- $api = new Bronto_Api($token, array('debug' => true));
460
- $api->login();
461
  $tokenRow = $api->getTokenInfo();
462
 
463
  return $tokenRow->hasPermissions(7);
464
  } catch (Exception $e) {
465
- return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
466
  }
467
  }
468
 
@@ -591,25 +615,6 @@ class Bronto_Common_Helper_Data
591
  return ($modules[$moduleName]->active == 'true');
592
  }
593
 
594
- /**
595
- * Get SOAP Options
596
- *
597
- * @return array
598
- */
599
- public function getSoapOptions()
600
- {
601
- // If Verify Module is enabled, use the settings from there
602
- if ($this->isModuleInstalled('Bronto_Verify') && $this->isModuleActive()) {
603
- return Mage::helper('bronto_verify')->getSoapOptions();
604
- }
605
-
606
- // Return Default Options
607
- return array(
608
- 'retry_limit' => 2,
609
- 'debug' => $this->isDebugEnabled(),
610
- );
611
- }
612
-
613
  /**
614
  * @param string $moduleName
615
  *
17
  const XML_PATH_TEST = 'bronto/settings/test';
18
  const XML_PATH_NOTICES = 'bronto/settings/notices';
19
  const XML_PATH_ENABLED = 'bronto/settings/enabled';
20
+ const XML_PATH_TABLE_RUN = 'bronto/settings/fix_script';
21
 
22
  /**
23
  * Formatting Settings
82
  return $this->__('If you have changed your API token, please ensure you reconfigure all available options.');
83
  }
84
 
85
+ /**
86
+ * Determines if the last time the table schema scan was a previous version
87
+ *
88
+ * @return bool
89
+ */
90
+ public function shouldRunFixScript()
91
+ {
92
+ return $this->getModuleVersion() != $this->getAdminScopedConfig(
93
+ self::XML_PATH_TABLE_RUN,
94
+ 'default', $scopeId = 0);
95
+ }
96
+
97
  /**
98
  * Get Javascript for Pop-up
99
  *
314
  return false;
315
  }
316
 
 
 
 
 
 
317
  // If requirements are not met, return false
318
  if (!$this->verifyRequirements($this->_getModuleName())) {
319
  return false;
415
  $token = $this->getApiToken($scope, $scopeId);
416
  }
417
 
418
+ return Mage::getModel('bronto_common/api')
419
+ ->setToken($token)
420
+ ->getClient();
421
  }
422
 
423
  /**
466
  }
467
 
468
  try {
469
+ $api = $this->getApi($token, $scope, $scopeId);
 
470
  $tokenRow = $api->getTokenInfo();
471
 
472
  return $tokenRow->hasPermissions(7);
473
  } catch (Exception $e) {
474
+ $helper = Mage::helper('bronto_common/api');
475
+ if (
476
+ !$helper->isStreamContextOverride() &&
477
+ (
478
+ $e->getCode() == Bronto_Api_Exception::WSDL_PARSE_ERROR ||
479
+ $e->getCode() == Bronto_Api_Exception::CONNECTION_RESET
480
+ )
481
+ ) {
482
+ $helper->setStreamContext(true);
483
+ return $this->validApiToken($token, $scope, $scopeId);
484
+ } else {
485
+ if ($helper->isStreamContextOverride()) {
486
+ $helper->setStreamContext(false);
487
+ }
488
+ return false;
489
+ }
490
  }
491
  }
492
 
615
  return ($modules[$moduleName]->active == 'true');
616
  }
617
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
618
  /**
619
  * @param string $moduleName
620
  *
app/code/community/Bronto/Common/Helper/Product.php CHANGED
@@ -118,7 +118,8 @@ class Bronto_Common_Helper_Product extends Mage_Core_Helper_Abstract
118
  switch ($name) {
119
  case 'img':
120
  case 'image':
121
- return $product->getSmallImageUrl();
 
122
  case 'url':
123
  return Mage::helper('catalog/product')->getProductUrl($product);
124
  }
118
  switch ($name) {
119
  case 'img':
120
  case 'image':
121
+ return Mage::helper('bronto_common')->getProductImageUrl($product);
122
+ // return $product->getSmallImageUrl();
123
  case 'url':
124
  return Mage::helper('catalog/product')->getProductUrl($product);
125
  }
app/code/community/Bronto/Common/Helper/Support.php CHANGED
@@ -6,6 +6,9 @@ class Bronto_Common_Helper_Support extends Bronto_Common_Helper_Data
6
  const XML_PATH_LAST_RUN = 'bronto/support/last_run';
7
  const XML_PATH_REGISTERED = 'bronto/support/registered';
8
 
 
 
 
9
  // Process registration
10
  protected $_registrationUrl = 'https://brontops.com/register/magento';
11
 
@@ -35,6 +38,19 @@ class Bronto_Common_Helper_Support extends Bronto_Common_Helper_Data
35
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_REGISTERED);
36
  }
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  /**
39
  * @param $onBronto boolean (optional)
40
  * @return boolean
@@ -348,7 +364,7 @@ class Bronto_Common_Helper_Support extends Bronto_Common_Helper_Data
348
  $archive = Mage::getModel('bronto_common/archive');
349
  if ($archive->open($file, ZipArchive::OVERWRITE)) {
350
  $now = time();
351
- $threshold = $now - (60 * 60 * 24 * 30);
352
 
353
  $archive->addEmptyDir('log');
354
 
@@ -377,6 +393,26 @@ class Bronto_Common_Helper_Support extends Bronto_Common_Helper_Data
377
  return $archive;
378
  }
379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380
  /**
381
  * Tails a given log for output
382
  *
@@ -493,8 +529,9 @@ class Bronto_Common_Helper_Support extends Bronto_Common_Helper_Data
493
  CURLOPT_SSL_VERIFYPEER => 0,
494
  CURLOPT_POSTFIELDS => $json
495
  ));
496
- $client->post($this->_registrationUrl, $json);
497
  } catch (Exception $e) {
 
498
  $this->writeError('Registration submission failed: ', $e->getMessage());
499
 
500
  return false;
6
  const XML_PATH_LAST_RUN = 'bronto/support/last_run';
7
  const XML_PATH_REGISTERED = 'bronto/support/registered';
8
 
9
+ const XML_PATH_CLEAR_LOGS = 'bronto/settings/clear_logs';
10
+ const XML_PATH_LOG_THRES = 'bronto/settings/log_threshold';
11
+
12
  // Process registration
13
  protected $_registrationUrl = 'https://brontops.com/register/magento';
14
 
38
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_REGISTERED);
39
  }
40
 
41
+ /**
42
+ * @return bool
43
+ */
44
+ public function shouldClearLogs()
45
+ {
46
+ return (bool)$this->getAdminScopedConfig(self::XML_PATH_CLEAR_LOGS);
47
+ }
48
+
49
+ public function getLogThreshold()
50
+ {
51
+ return (int)$this->getAdminScopedConfig(self::XML_PATH_LOG_THRES) * (60 * 60 * 24);
52
+ }
53
+
54
  /**
55
  * @param $onBronto boolean (optional)
56
  * @return boolean
364
  $archive = Mage::getModel('bronto_common/archive');
365
  if ($archive->open($file, ZipArchive::OVERWRITE)) {
366
  $now = time();
367
+ $threshold = $now - $this->getLogThreshold();
368
 
369
  $archive->addEmptyDir('log');
370
 
393
  return $archive;
394
  }
395
 
396
+ /**
397
+ * Removes log files that are over the threshold old
398
+ *
399
+ * @return bool
400
+ */
401
+ public function clearOldLogs()
402
+ {
403
+ $logDir = Mage::getBaseDir('var') . DS . 'log' . DS . 'bronto';
404
+ $threshold = time() - $this->getLogThreshold();
405
+
406
+ $success = true;
407
+ foreach (glob($logDir . DS . '*log') as $logFile) {
408
+ $stat = lstat($logFile);
409
+ if ($stat['mtime'] < $threshold) {
410
+ $success = $success && unlink($logFile);
411
+ }
412
+ }
413
+ return $success;
414
+ }
415
+
416
  /**
417
  * Tails a given log for output
418
  *
529
  CURLOPT_SSL_VERIFYPEER => 0,
530
  CURLOPT_POSTFIELDS => $json
531
  ));
532
+ $client->post($this->_registrationUrl, $params);
533
  } catch (Exception $e) {
534
+ var_dump($e->getMessage());
535
  $this->writeError('Registration submission failed: ', $e->getMessage());
536
 
537
  return false;
app/code/community/Bronto/Common/Model/Api.php CHANGED
@@ -4,65 +4,109 @@
4
  * @category Bronto
5
  * @package Common
6
  */
7
- class Bronto_Common_Model_Api extends Bronto_Api
8
  {
9
- // {{{ properties
 
 
10
 
11
  /**
12
- * @var array
13
  */
14
- static private $_instances = array();
15
-
16
- // }}}
17
- // {{{ getInstance()
 
18
 
19
  /**
20
- * @param string $token
21
- * @param bool $debug
22
  *
23
- * @return Bronto_Common_Model_Api
24
- * @access public
25
  */
26
- public static function getInstance($token, $debug = true)
27
  {
28
- $token = trim($token);
29
-
30
- $options = Mage::helper('bronto_common')->getSoapOptions();
31
-
32
  if (!isset(self::$_instances[$token])) {
33
- Mage::helper('bronto_common')->writeDebug("Initiating API for token: {$token}");
34
- self::$_instances[$token] = new self($token, $options);
 
 
 
35
  }
36
-
37
  return self::$_instances[$token];
38
  }
39
 
40
- // }}}
41
- // {{{ throwException()
 
 
 
 
 
42
 
43
  /**
44
- * @param string|Exception $exception
45
- * @param string $message
46
- * @param string $code
47
  *
48
- * @return void
49
- * @access public
50
- * @throws Bronto_Api_Exception
51
  */
52
- public function throwException($exception, $message = null, $code = null)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  {
54
  try {
55
- parent::throwException($exception, $message, $code);
56
- } catch (Bronto_Api_Exception $e) {
57
- if ($request = $e->getRequest()) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  Mage::helper('bronto_common')->writeDebug(var_export($request, true));
59
  }
60
- if ($response = $e->getResponse()) {
 
61
  Mage::helper('bronto_common')->writeDebug(var_export($response, true));
62
  }
63
- throw $e;
64
  }
65
  }
66
-
67
- // }}}
68
  }
4
  * @category Bronto
5
  * @package Common
6
  */
7
+ class Bronto_Common_Model_Api extends Mage_Core_Model_Abstract implements Bronto_Observer
8
  {
9
+
10
+ protected static $_instances = array();
11
+ protected $_setOnce = false;
12
 
13
  /**
14
+ * @see parent
15
  */
16
+ protected function _construct()
17
+ {
18
+ parent::_construct();
19
+ $this->_init('bronto_common/api');
20
+ }
21
 
22
  /**
23
+ * Gets the Bronto_Api client for for use in Magento
 
24
  *
25
+ * @return Bronto_Api
 
26
  */
27
+ public function getClient()
28
  {
29
+ $token = $this->getToken();
 
 
 
30
  if (!isset(self::$_instances[$token])) {
31
+ $options = Mage::helper('bronto_common/api')->getSoapOptions();
32
+ if (empty($options['observer'])) {
33
+ $options['observer'] = $this;
34
+ }
35
+ self::$_instances[$token] = new Bronto_Api($token, $options);
36
  }
 
37
  return self::$_instances[$token];
38
  }
39
 
40
+ /**
41
+ * @return bool
42
+ */
43
+ public function hasSetSession()
44
+ {
45
+ return $this->_setOnce;
46
+ }
47
 
48
  /**
49
+ * @see parent
 
 
50
  *
51
+ * @param Bronto_Api $api
 
 
52
  */
53
+ public function onBeforeLogin($api)
54
+ {
55
+ if ($this->hasSetSession()) {
56
+ $this->unsSessionId();
57
+ Mage::helper('bronto_common')->writeDebug('Session ID expired for token: ' . $this->getToken());
58
+ $this->_setOnce = false;
59
+ } else {
60
+ try {
61
+ parent::load($api->getToken());
62
+ if ($this->hasSessionId()) {
63
+ $api->setSessionId($this->getSessionId());
64
+ Mage::helper('bronto_common')->writeDebug('Hitting API sessionId cache for token: ' . $this->getToken());
65
+ $this->_setOnce = true;
66
+ }
67
+ } catch (Exception $e) {
68
+ // Swallow read exceptions, in case of FTP install
69
+ Mage::helper('bronto_common')->writeError('Failed to read from api session table: ' . $e->getMessage());
70
+ }
71
+ }
72
+ }
73
+
74
+ /**
75
+ * @see parent
76
+ *
77
+ * @param Bronto_Api $api
78
+ * @param string $sessionId
79
+ */
80
+ public function onAfterLogin($api, $sessionId)
81
  {
82
  try {
83
+ $this
84
+ ->setToken($api->getToken())
85
+ ->setSessionId($sessionId)
86
+ ->setCreatedAt(Mage::getSingleton('core/date')->gmtDate())
87
+ ->save();
88
+ Mage::helper('bronto_common')->writeDebug("Initiating API for token: {$this->getToken()}");
89
+ } catch (Exception $e) {
90
+ Mage::helper('bronto_common')->writeError("Failed to update API {$this->getToken()} Session: " . $e->getMessage());
91
+ }
92
+ }
93
+
94
+ /**
95
+ * @see parent
96
+ *
97
+ * @param Bronto_Api $api
98
+ * @param Bronto_Api_Exception $exception
99
+ */
100
+ public function onError($api, $exception)
101
+ {
102
+ if ($exception instanceOf Bronto_Api_Exception) {
103
+ if ($request = $exception->getRequest()) {
104
  Mage::helper('bronto_common')->writeDebug(var_export($request, true));
105
  }
106
+
107
+ if ($response = $exception->getResponse()) {
108
  Mage::helper('bronto_common')->writeDebug(var_export($response, true));
109
  }
 
110
  }
111
  }
 
 
112
  }
app/code/community/Bronto/Common/Model/Delivery.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Model_Delivery extends Bronto_Api_Delivery
4
+ {
5
+ /**
6
+ * @var string
7
+ */
8
+ protected $_emailClass;
9
+
10
+ /**
11
+ * @see parent
12
+ *
13
+ * @param array $config
14
+ */
15
+ public function __construct($config = array())
16
+ {
17
+ parent::__construct($config);
18
+ if (isset($config['email_class'])) {
19
+ $this->_emailClass = $config['email_class'];
20
+ }
21
+ }
22
+
23
+ /**
24
+ * @see parent
25
+ * @return string
26
+ */
27
+ public function getExceptionClass()
28
+ {
29
+ return 'Bronto_Api_Delivery_Exception';
30
+ }
31
+
32
+ /**
33
+ * Expose the email template associated with this delivery
34
+ *
35
+ * @return string
36
+ */
37
+ public function getEmailClass()
38
+ {
39
+ return $this->_emailClass;
40
+ }
41
+
42
+ /**
43
+ * @return string
44
+ */
45
+ public function getName()
46
+ {
47
+ return 'Delivery';
48
+ }
49
+
50
+ /**
51
+ * @return string
52
+ */
53
+ public function getRowClass()
54
+ {
55
+ return 'Bronto_Api_Delivery_Row';
56
+ }
57
+ }
app/code/community/Bronto/Common/Model/Email/Template.php CHANGED
@@ -205,9 +205,13 @@ class Bronto_Common_Model_Email_Template extends Mage_Core_Model_Email_Template
205
 
206
  /* @var $deliveryObject Bronto_Api_Delivery */
207
  Mage::helper($this->_helper)->writeDebug(' Getting Delivery Object...');
208
- $deliveryObject = Mage::helper($this->_helper)
209
- ->getApi(null, 'store', $variables['store']->getId())
210
- ->getDeliveryObject();
 
 
 
 
211
  $deliveryCount++;
212
  Mage::helper($this->_helper)->writeDebug(' Delivery Object Created Successfully');
213
 
@@ -407,6 +411,43 @@ class Bronto_Common_Model_Email_Template extends Mage_Core_Model_Email_Template
407
  return $this->_lastDeliveryId;
408
  }
409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  /**
411
  * @param Bronto_Api_Contact_Row $contact
412
  * @param Bronto_Api_Message_Row $message
205
 
206
  /* @var $deliveryObject Bronto_Api_Delivery */
207
  Mage::helper($this->_helper)->writeDebug(' Getting Delivery Object...');
208
+ $client = Mage::helper($this->_helper)
209
+ ->getApi(null, 'store', $variables['store']->getId());
210
+
211
+ $deliveryObject = Mage::getModel('bronto_common/delivery', array(
212
+ 'api' => $client,
213
+ 'email_class' => $this->_emailClass()
214
+ ));
215
  $deliveryCount++;
216
  Mage::helper($this->_helper)->writeDebug(' Delivery Object Created Successfully');
217
 
411
  return $this->_lastDeliveryId;
412
  }
413
 
414
+ /**
415
+ * Allows the retryer to trigger
416
+ *
417
+ * @param Bronto_Api_Delivery $deliveryObject
418
+ */
419
+ public function triggerBeforeAfterSend(Bronto_Api_Delivery_Row $delivery)
420
+ {
421
+ $contactObject = $delivery->getApi()->getContactObject();
422
+ $messageObject = $delivery->getApi()->getMessageObject();
423
+
424
+ $contact = $contactObject->createRow();
425
+ $message = $messageObject->createRow();
426
+
427
+ $message->id = $delivery->messageId;
428
+ $contact->id = $delivery->recipients[0]['id'];
429
+
430
+ try {
431
+ $message->read();
432
+ $contact->read();
433
+
434
+ $this->_beforeSend($contact, $message);
435
+ $this->_afterSend(true, null, $delivery);
436
+ } catch (Exception $e) {
437
+ Mage::helper('bronto_common')->writeError('Failed to trigger email send: ' . $e->getMessage());
438
+ }
439
+ }
440
+
441
+ /**
442
+ * The string model class associating this email template
443
+ *
444
+ * @return string
445
+ */
446
+ protected function _emailClass()
447
+ {
448
+ return 'bronto_common/email_template';
449
+ }
450
+
451
  /**
452
  * @param Bronto_Api_Contact_Row $contact
453
  * @param Bronto_Api_Message_Row $message
app/code/community/Bronto/Common/Model/Email/Template/Filter.php CHANGED
@@ -484,8 +484,14 @@ class Bronto_Common_Model_Email_Template_Filter extends Mage_Core_Model_Email_Te
484
  }
485
  }
486
 
 
 
 
 
 
 
487
  $this->setField('shipmentIncrementId', $shipment->getIncrementId());
488
- $this->setField('shipmentCreatedAt', Mage::helper('core')->formatDate($shipment->getCreatedAtStoreDate(), 'long', true)); // TODO: needed?
489
  $this->setField('shipmentItems', $this->_filterShipmentItems($shipment));
490
  $this->setField('shipmentTracking', $this->_getShipmentTrackingNumber($shipment, $shipment->getOrder()));
491
 
@@ -512,8 +518,14 @@ class Bronto_Common_Model_Email_Template_Filter extends Mage_Core_Model_Email_Te
512
  }
513
  }
514
 
 
 
 
 
 
 
515
  $this->setField('creditmemoIncrementId', $creditmemo->getIncrementId());
516
- $this->setField('creditmemoCreatedAt', Mage::helper('core')->formatDate($creditmemo->getCreatedAtStoreDate(), 'long', true)); // TODO: needed?
517
  $this->setField('creditmemoItems', $this->_filterCreditmemoItems($creditmemo));
518
 
519
  $this->_filteredObjects[] = 'creditmemo';
484
  }
485
  }
486
 
487
+ $createdAt = $shipment->getCreatedAtStoreDate();
488
+ if (empty($createdAt)) {
489
+ // unset the blank string to force current timestamp
490
+ $createdAt = null;
491
+ }
492
+
493
  $this->setField('shipmentIncrementId', $shipment->getIncrementId());
494
+ $this->setField('shipmentCreatedAt', Mage::helper('core')->formatDate($createdAt, 'long', true)); // TODO: needed?
495
  $this->setField('shipmentItems', $this->_filterShipmentItems($shipment));
496
  $this->setField('shipmentTracking', $this->_getShipmentTrackingNumber($shipment, $shipment->getOrder()));
497
 
518
  }
519
  }
520
 
521
+ $createdAt = $creditmemo->getCreatedAtStoreDate();
522
+ if (empty($createdAt)) {
523
+ // unset the blank string to force current timestamp
524
+ $createdAt = null;
525
+ }
526
+
527
  $this->setField('creditmemoIncrementId', $creditmemo->getIncrementId());
528
+ $this->setField('creditmemoCreatedAt', Mage::helper('core')->formatDate($createdAt, 'long', true)); // TODO: needed?
529
  $this->setField('creditmemoItems', $this->_filterCreditmemoItems($creditmemo));
530
 
531
  $this->_filteredObjects[] = 'creditmemo';
app/code/community/Bronto/Common/Model/Error.php ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Model_Error extends Mage_Core_Model_Abstract implements Bronto_Util_Retryer_RetryerInterface
4
+ {
5
+ protected $_api;
6
+
7
+ /**
8
+ * @see parent
9
+ */
10
+ protected function _construct()
11
+ {
12
+ parent::_construct();
13
+ $this->_init('bronto_common/error');
14
+ }
15
+
16
+ /**
17
+ * @param Bronto_Api
18
+ * @return Bronto_Common_Model_Error
19
+ */
20
+ public function setClient(Bronto_Api $api)
21
+ {
22
+ $this->_api = $api;
23
+ return $this;
24
+ }
25
+
26
+ /**
27
+ * Gets the API client matching this token
28
+ *
29
+ * @param string $token
30
+ * @return Bronto_Api
31
+ */
32
+ protected function _client($token)
33
+ {
34
+ if (empty($this->_api) || $this->_api->getToken() != $token) {
35
+ $this->setClient(Mage::helper('bronto_common')->getApi($token));
36
+ }
37
+
38
+ return $this->_api;
39
+ }
40
+
41
+ /**
42
+ * @see parent
43
+ *
44
+ * @param Bronto_Api_Object $object
45
+ * @param int $attempts
46
+ * @return int|false
47
+ */
48
+ public function store(Bronto_Api_Object $object, $attempts = 0)
49
+ {
50
+ // Only deliveries are retried
51
+ if ($object instanceOf Bronto_Api_Delivery) {
52
+ if ($this->hasId() && empty($attempts)) {
53
+ $this
54
+ ->unsId()
55
+ ->unsEmailClass();
56
+ }
57
+ // Retry for an email template
58
+ if (method_exists($object, 'getEmailClass')) {
59
+ $this->setEmailClass($object->getEmailClass());
60
+ }
61
+ try {
62
+ $this
63
+ ->setObject(serialize($object))
64
+ ->setAttempts($attempts)
65
+ ->setLastAttempt(Mage::getSingleton('core/date')->gmtDate())
66
+ ->save();
67
+ Mage::helper('bronto_common')->writeDebug('Storing failed delivery.');
68
+ return $this->getId();
69
+ } catch (Exception $e) {
70
+ Mage::helper('bronto_common')->writeError('Failed to store delivery: ' . $e->getMessage());
71
+ return false;
72
+ }
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Restores the serialized object to its former glory
78
+ *
79
+ * @return Bronto_Api_Delivery
80
+ */
81
+ public function restoreObject()
82
+ {
83
+ $delivery = unserialize($this->getObject());
84
+ // Restore the API in all of its glory
85
+ $delivery->setApi($this->_client($delivery->getApi()->getToken()));
86
+ return $delivery;
87
+ }
88
+
89
+ /**
90
+ * @see parent
91
+ *
92
+ * @param int $identifier
93
+ * @return bool
94
+ */
95
+ public function attempt($identifier)
96
+ {
97
+ $delivery = $this->restoreObject();
98
+ $method = $delivery->getLastRequestMethod();
99
+ $data = $delivery->getLastRequestData();
100
+
101
+ try {
102
+ $rowset = $delivery->doRequest($method, $data, true);
103
+ $this->delete();
104
+ if ($this->hasEmailClass()) {
105
+ // Tie in the request data with a new id
106
+ $deliveryRow = $delivery->createRow(array('id' => $rowset->current()->id) + $data[0]);
107
+ $email = Mage::getModel($this->getEmailClass());
108
+ $email->triggerBeforeAfterSend($deliveryRow);
109
+ }
110
+ } catch (Exception $e) {
111
+ $this->store($delivery, $this->getAttempts() + 1);
112
+ return false;
113
+ }
114
+
115
+ return true;
116
+ }
117
+ }
app/code/community/Bronto/Common/Model/Mysql4/Api.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Model_Mysql4_Api extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ protected $_isPkAutoIncrement = false;
6
+
7
+ /**
8
+ * @see parent
9
+ */
10
+ public function _construct()
11
+ {
12
+ $this->_init('bronto_common/api', 'token');
13
+ }
14
+ }
app/code/community/Bronto/Common/Model/Mysql4/Api/Collection.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Model_Mysql4_Api_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
4
+ {
5
+ /**
6
+ * @see parent
7
+ */
8
+ public function _construct()
9
+ {
10
+ parent::_construct();
11
+ $this->_init('bronto_common/api');
12
+ }
13
+ }
app/code/community/Bronto/Common/Model/Mysql4/Error.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Model_Mysql4_Error extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ /**
6
+ * @see parent
7
+ */
8
+ public function _construct()
9
+ {
10
+ $this->_init('bronto_common/error', 'error_id');
11
+ }
12
+ }
app/code/community/Bronto/Common/Model/Mysql4/Error/Collection.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Model_Mysql4_Error_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
4
+ {
5
+ /**
6
+ * @see parent
7
+ */
8
+ public function _construct()
9
+ {
10
+ parent::_construct();
11
+ $this->_init('bronto_common/error');
12
+ }
13
+
14
+ /**
15
+ * Orders the items by last attempt time
16
+ *
17
+ * @return Bronto_Common_Model_Mysql4_Error_Collection
18
+ */
19
+ public function orderByOldest()
20
+ {
21
+ return $this->addOrder('last_attempt', self::SORT_ORDER_ASC);
22
+ }
23
+
24
+ /**
25
+ * Gets the entries that have less than the threshold attempts
26
+ *
27
+ * @param int $threshold
28
+ * @return Bronto_Common_Model_Mysql4_Error_Collection
29
+ */
30
+ public function addAttemptThreshold($threshold)
31
+ {
32
+ $this->addFieldToFilter('attempts', array('lt' => $threshold));
33
+ return $this;
34
+ }
35
+ }
app/code/community/Bronto/Common/Model/Observer.php CHANGED
@@ -98,6 +98,60 @@ class Bronto_Common_Model_Observer
98
  Mage::helper(self::SUPPORT_IDENTIFIER)->clearArchiveDirectory();
99
  }
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  /**
102
  * Validates that certain fields are not empty
103
  *
98
  Mage::helper(self::SUPPORT_IDENTIFIER)->clearArchiveDirectory();
99
  }
100
 
101
+ /**
102
+ * Cron to clear really old log entries
103
+ */
104
+ public function clearOldLogs($cron)
105
+ {
106
+ $helper = Mage::helper(self::SUPPORT_IDENTIFIER);
107
+ if ($helper->shouldClearLogs()) {
108
+ $helper->clearOldLogs();
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Cron to process API errors
114
+ */
115
+ public function processApiErrors($cron = null)
116
+ {
117
+ $results = array(
118
+ 'total' => 0,
119
+ 'success' => 0,
120
+ 'error' => 0
121
+ );
122
+
123
+ $helper = Mage::helper('bronto_common/api');
124
+ if (!$helper->isEnabled()) {
125
+ return $results;
126
+ }
127
+ $helper->writeDebug('Retrying API errors.');
128
+ $api = $helper->getApi();
129
+ try {
130
+ $api->login();
131
+ } catch (Exception $e) {
132
+ $helper->writeDebug('Skipping process because API is not taking calls: ' . $e->getMessage());
133
+ return $results;
134
+ }
135
+
136
+ $collection = Mage::getModel('bronto_common/error')->getCollection()
137
+ ->orderByOldest()
138
+ ->addAttemptThreshold($helper->getAttemptThreshold())
139
+ ->setPageSize($helper->getErrorThreshold());
140
+
141
+ foreach ($collection->getItems() as $error) {
142
+ try {
143
+ $error->attempt($error->getId());
144
+ $results['success']++;
145
+ } catch (Exception $e) {
146
+ $helper->writeError('An entry was place back in the queue: ' . $e->getMessage());
147
+ $results['error']++;
148
+ }
149
+ $results['total']++;
150
+ }
151
+
152
+ return $results;
153
+ }
154
+
155
  /**
156
  * Validates that certain fields are not empty
157
  *
app/code/community/Bronto/Common/Model/SoapClient.php CHANGED
@@ -16,7 +16,7 @@ class Bronto_Common_Model_SoapClient extends Bronto_SoapClient
16
  unset($options['wsdl']);
17
  }
18
  $opts = array('ciphers' => 'RC4-SHA');
19
- $options['stream_context'] = stream_context_create('ssl', $opts);
20
  parent::__construct($wsdl, $options);
21
  }
22
  }
16
  unset($options['wsdl']);
17
  }
18
  $opts = array('ciphers' => 'RC4-SHA');
19
+ $options['stream_context'] = stream_context_create(array('ssl' => $opts));
20
  parent::__construct($wsdl, $options);
21
  }
22
  }
app/code/community/Bronto/Common/Model/System/Config/Backend/Cron/Error.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Common_Model_System_Config_Backend_Cron_Error extends Bronto_Common_Model_System_Config_Backend_Cron
4
+ {
5
+ protected $_cron_string_path = 'crontab/jobs/bronto_common_errors/schedule/cron_expr';
6
+ protected $_cron_model_path = 'crontab/jobs/bronto_common_errors/run/model';
7
+ }
app/code/community/Bronto/Common/etc/adminhtml.xml CHANGED
@@ -16,6 +16,10 @@
16
  <title>Bronto Popup Section</title>
17
  <sort_order>9994</sort_order>
18
  </bronto_popup>
 
 
 
 
19
  </children>
20
  </config>
21
  </children>
16
  <title>Bronto Popup Section</title>
17
  <sort_order>9994</sort_order>
18
  </bronto_popup>
19
+ <bronto_api module="bronto_common">
20
+ <title>Bronto API Section</title>
21
+ <sort_order>9995</sort_order>
22
+ </bronto_api>
23
  </children>
24
  </config>
25
  </children>
app/code/community/Bronto/Common/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Bronto_Common>
5
- <version>2.2.0</version>
6
  </Bronto_Common>
7
  </modules>
8
  <global>
@@ -19,7 +19,19 @@
19
  <models>
20
  <bronto_common>
21
  <class>Bronto_Common_Model</class>
 
22
  </bronto_common>
 
 
 
 
 
 
 
 
 
 
 
23
  </models>
24
  <resources>
25
  <bronto_common_setup>
@@ -97,24 +109,13 @@
97
  </controller_action_predispatch_adminhtml>
98
  </events>
99
  </adminhtml>
100
- <crontab>
101
- <jobs>
102
- <bronto_common_delete_archives>
103
- <!-- Run once a day -->
104
- <schedule>
105
- <cron_expr>0 0 * * *</cron_expr>
106
- </schedule>
107
- <run>
108
- <model>bronto_common/observer::clearArchives</model>
109
- </run>
110
- </bronto_common_delete_archives>
111
- </jobs>
112
- </crontab>
113
  <default>
114
  <bronto>
115
  <settings>
116
  <enabled>1</enabled>
117
  <debug>1</debug>
 
 
118
  <verbose>0</verbose>
119
  <test>0</test>
120
  <notices>0</notices>
@@ -133,7 +134,54 @@
133
  <using_solution_partner>1</using_solution_partner>
134
  </support>
135
  </bronto>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  </default>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  <phpunit>
138
  <suite>
139
  <modules>
2
  <config>
3
  <modules>
4
  <Bronto_Common>
5
+ <version>2.2.1</version>
6
  </Bronto_Common>
7
  </modules>
8
  <global>
19
  <models>
20
  <bronto_common>
21
  <class>Bronto_Common_Model</class>
22
+ <resourceModel>bronto_common_mysql4</resourceModel>
23
  </bronto_common>
24
+ <bronto_common_mysql4>
25
+ <class>Bronto_Common_Model_Mysql4</class>
26
+ <entities>
27
+ <api>
28
+ <table>bronto_common_api</table>
29
+ </api>
30
+ <error>
31
+ <table>bronto_common_api_errors</table>
32
+ </error>
33
+ </entities>
34
+ </bronto_common_mysql4>
35
  </models>
36
  <resources>
37
  <bronto_common_setup>
109
  </controller_action_predispatch_adminhtml>
110
  </events>
111
  </adminhtml>
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  <default>
113
  <bronto>
114
  <settings>
115
  <enabled>1</enabled>
116
  <debug>1</debug>
117
+ <log_threshold>30</log_threshold>
118
+ <clear_logs>1</clear_logs>
119
  <verbose>0</verbose>
120
  <test>0</test>
121
  <notices>0</notices>
134
  <using_solution_partner>1</using_solution_partner>
135
  </support>
136
  </bronto>
137
+ <bronto_api>
138
+ <settings>
139
+ <enabled>0</enabled>
140
+ <mage_cron>1</mage_cron>
141
+ <frequency>I</frequency>
142
+ <interval>5</interval>
143
+ <minutes>0</minutes>
144
+ <limit>50</limit>
145
+ <threshold>5</threshold>
146
+ </settings>
147
+ <soap_options>
148
+ <soap_client>Bronto_SoapClient</soap_client>
149
+ <observer>Bronto_Common_Model_Api</observer>
150
+ <retryer>Bronto_Common_Model_Error</retryer>
151
+ <stream_context>0</stream_context>
152
+ <retry_limit>2</retry_limit>
153
+ <trace>0</trace>
154
+ <exceptions>1</exceptions>
155
+ <connection_timeout>30</connection_timeout>
156
+ <cache_wsdl>WSDL_CACHE_BOTH</cache_wsdl>
157
+ </soap_options>
158
+ </bronto_api>
159
  </default>
160
+ <crontab>
161
+ <jobs>
162
+ <bronto_common_errors>
163
+ <run>
164
+ <model>bronto_common/observer::processApiErrors</model>
165
+ </run>
166
+ </bronto_common_errors>
167
+ <bronto_common_delete_archives>
168
+ <schedule>
169
+ <cron_expr>0 0 * * *</cron_expr>
170
+ </schedule>
171
+ <run>
172
+ <model>bronto_common/observer::clearArchives</model>
173
+ </run>
174
+ </bronto_common_delete_archives>
175
+ <bronto_common_delete_old_logs>
176
+ <schedule>
177
+ <cron_expr>0 0 * * *</cron_expr>
178
+ </schedule>
179
+ <run>
180
+ <model>bronto_common/observer::clearOldLogs</model>
181
+ </run>
182
+ </bronto_common_delete_old_logs>
183
+ </jobs>
184
+ </crontab>
185
  <phpunit>
186
  <suite>
187
  <modules>
app/code/community/Bronto/Common/etc/system.xml CHANGED
@@ -8,6 +8,295 @@
8
  </bronto>
9
  </tabs>
10
  <sections>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  <bronto_popup module="bronto_common">
12
  <label>Pop-up Manager</label>
13
  <tab>bronto</tab>
@@ -173,13 +462,41 @@
173
  <comment>
174
  <![CDATA[Show warnings/errors as site notices.<br /><strong>Note:</strong> Site notices can be customer-facing.]]></comment>
175
  </notices>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  </fields>
177
  </settings>
178
  <support>
179
  <label>Registration</label>
180
  <frontend_type>text</frontend_type>
181
  <frontend_model>bronto_common/adminhtml_system_config_support</frontend_model>
182
- <sort_order>2</sort_order>
183
  <show_in_default>1</show_in_default>
184
  <show_in_website>1</show_in_website>
185
  <show_in_store>1</show_in_store>
@@ -274,7 +591,7 @@
274
  <label>Email Formatting Options</label>
275
  <frontend_type>text</frontend_type>
276
  <frontend_model>bronto_common/adminhtml_system_config_form_fieldset</frontend_model>
277
- <sort_order>3</sort_order>
278
  <show_in_default>1</show_in_default>
279
  <show_in_website>1</show_in_website>
280
  <show_in_store>1</show_in_store>
@@ -392,7 +709,7 @@
392
  <![CDATA[Most questions can easily be answered by thoroughly reviewing the Bronto <a style="color:#ea7601" target="_blank" href="http://a.bron.to/magento" title="Magento Resource Center | Bronto Developers">Magento Resource Center</a> so please consult that first. The next best resource is the <a style="color:#ea7601" target="_blank" href="http://dev.bronto.com/questions" title="Questions | Bronto Developers">Questions</a> forum where you can post the question if it has not been asked yet.<br/><br/><strong>Disclaimer:</strong> The Bronto Extension for Magento was tested in clean Magento environments and Bronto cannot guarantee compatibility with third-party extensions or other site customizations.<br/><br/>If you believe you have encountered an actual issue with the extension itself then you may file a support case. Please note that regular Bronto Support hours are between 8am-8pm ET, Monday through Friday, excluding holidays.<br/><br/><span style="padding-left: 30px;">To contact the Bronto Support team, please perform the following steps:</span><br/><ul><li style="padding-left: 60px;"><strong>Step 1: &nbsp;</strong><a style="color: #ea7601" target="_blank" href="https://app.bronto.com/shared/support/case_add" title="Technical Support | Bronto Marketing Platform">Open a case</a> within Bronto. In your case description, please outline the issue and steps to reproduce it. Also, be sure to mention the version of Magento and the version of the Bronto extension currently running.</li><li style="padding-left: 60px;"><strong>Step 2: &nbsp;</strong>After creating a case, please add a comment and paste in all of the debug information that is generated after clicking the <em>Generate Debug Information</em> button below:<ul style="padding-left: 85px;list-style-type:lower-alpha;"><li>Click on the <a style="color:#ea7601" target="_blank" title="Technical Support | Bronto Marketing Platform" href="https://app.bronto.com/shared/support/index">Support</a> link located in the top right of the page.</li><li>Click on the case you want to comment on.</li><li>Paste in the debug information and click <em>Post Response</em>.</li></ul></li><li style="padding-left: 60px;"><strong>Step 3: &nbsp;</strong>Optionally, if more information is needed, your Support representative may request log files. Simply click the <em>Create Log Archive</em> button below and then click the link that is generated and displayed below the button to download an archive of log files to send to the location designated by your Support representative.</li></ul><br/>]]></comment>
393
  <frontend_type>text</frontend_type>
394
  <frontend_model>bronto_common/adminhtml_system_config_form_fieldset</frontend_model>
395
- <sort_order>4</sort_order>
396
  <show_in_default>1</show_in_default>
397
  <show_in_website>0</show_in_website>
398
  <show_in_store>0</show_in_store>
8
  </bronto>
9
  </tabs>
10
  <sections>
11
+ <bronto_api module="bronto_common">
12
+ <label>Advanced API</label>
13
+ <tab>bronto</tab>
14
+ <frontend_type>text</frontend_type>
15
+ <sort_order>900</sort_order>
16
+ <show_in_default>1</show_in_default>
17
+ <show_in_website>1</show_in_website>
18
+ <show_in_store>1</show_in_store>
19
+ <groups>
20
+ <about>
21
+ <frontend_type>text</frontend_type>
22
+ <frontend_model>bronto_common/adminhtml_system_config_about</frontend_model>
23
+ <sort_order>0</sort_order>
24
+ <show_in_default>1</show_in_default>
25
+ <show_in_website>1</show_in_website>
26
+ <show_in_store>1</show_in_store>
27
+ </about>
28
+ <apitoken>
29
+ <label>API Status</label>
30
+ <frontend_type>text</frontend_type>
31
+ <sort_order>1</sort_order>
32
+ <show_in_default>1</show_in_default>
33
+ <show_in_website>1</show_in_website>
34
+ <show_in_store>1</show_in_store>
35
+ <expanded>1</expanded>
36
+ <fields>
37
+ <token_status>
38
+ <label>Last API Token Status</label>
39
+ <frontend_type>text</frontend_type>
40
+ <frontend_model>bronto_verify/adminhtml_system_config_form_field_apitoken</frontend_model>
41
+ <sort_order>10</sort_order>
42
+ <show_in_default>1</show_in_default>
43
+ <show_in_website>1</show_in_website>
44
+ <show_in_store>1</show_in_store>
45
+ </token_status>
46
+ <roundtrip_status>
47
+ <label>Last API Connection Status</label>
48
+ <frontend_type>text</frontend_type>
49
+ <frontend_model>bronto_verify/adminhtml_system_config_form_field_roundtrip</frontend_model>
50
+ <sort_order>11</sort_order>
51
+ <show_in_default>1</show_in_default>
52
+ <show_in_website>0</show_in_website>
53
+ <show_in_store>0</show_in_store>
54
+ </roundtrip_status>
55
+ </fields>
56
+ </apitoken>
57
+ <settings>
58
+ <label>API Retry Settings</label>
59
+ <frontend_type>text</frontend_type>
60
+ <sort_order>2</sort_order>
61
+ <show_in_default>1</show_in_default>
62
+ <show_in_website>0</show_in_website>
63
+ <show_in_store>0</show_in_store>
64
+ <expanded>1</expanded>
65
+ <fields>
66
+ <enabled>
67
+ <label>Enable API Retry</label>
68
+ <frontend_type>select</frontend_type>
69
+ <backend_model>bronto_common/system_config_backend_enable</backend_model>
70
+ <source_model>adminhtml/system_config_source_yesno</source_model>
71
+ <sort_order>0</sort_order>
72
+ <show_in_default>1</show_in_default>
73
+ <show_in_website>0</show_in_website>
74
+ <show_in_store>0</show_in_store>
75
+ </enabled>
76
+ <mage_cron>
77
+ <label>Use Magento Cron</label>
78
+ <depends>
79
+ <enabled>1</enabled>
80
+ </depends>
81
+ <frontend_type>select</frontend_type>
82
+ <frontend_model>bronto_common/adminhtml_system_config_form_field</frontend_model>
83
+ <source_model>adminhtml/system_config_source_yesno</source_model>
84
+ <backend_model>bronto_common/system_config_backend_cron_error</backend_model>
85
+ <sort_order>2</sort_order>
86
+ <show_in_default>1</show_in_default>
87
+ <show_in_website>0</show_in_website>
88
+ <show_in_store>0</show_in_store>
89
+ <comment>
90
+ <![CDATA[Setting to <em>No</em> will prevent the Magento Cron from triggering the import process for this module.<br />For more details, check the <em>Cron Settings</em> section in the <strong>Bronto &raquo; Advanced</strong> tab.]]></comment>
91
+ </mage_cron>
92
+ <frequency>
93
+ <label>Frequency</label>
94
+ <depends>
95
+ <enabled>1</enabled>
96
+ <mage_cron>1</mage_cron>
97
+ </depends>
98
+ <frontend_type>select</frontend_type>
99
+ <source_model>bronto_common/system_config_source_cron_frequency</source_model>
100
+ <backend_model>bronto_common/system_config_backend_cron_error</backend_model>
101
+ <sort_order>3</sort_order>
102
+ <show_in_default>1</show_in_default>
103
+ <show_in_website>0</show_in_website>
104
+ <show_in_store>0</show_in_store>
105
+ </frequency>
106
+ <interval>
107
+ <label>Interval</label>
108
+ <depends>
109
+ <enabled>1</enabled>
110
+ <frequency>I</frequency>
111
+ <mage_cron>1</mage_cron>
112
+ </depends>
113
+ <frontend_type>select</frontend_type>
114
+ <source_model>bronto_common/system_config_source_cron_minutes</source_model>
115
+ <sort_order>4</sort_order>
116
+ <show_in_default>1</show_in_default>
117
+ <show_in_website>0</show_in_website>
118
+ <show_in_store>0</show_in_store>
119
+ <comment>Set this value larger than your cron.php launch period.</comment>
120
+ </interval>
121
+ <minutes>
122
+ <label>Minute of the Hour</label>
123
+ <depends>
124
+ <frequency>H</frequency>
125
+ <mage_cron>1</mage_cron>
126
+ <enabled>1</enabled>
127
+ </depends>
128
+ <frontend_type>text</frontend_type>
129
+ <sort_order>40</sort_order>
130
+ <show_in_default>1</show_in_default>
131
+ <show_in_website>0</show_in_website>
132
+ <show_in_store>0</show_in_store>
133
+ <comment>Valid range: 0-59 (default 0).</comment>
134
+ </minutes>
135
+ <time>
136
+ <label>Start Time</label>
137
+ <depends>
138
+ <enabled>1</enabled>
139
+ <mage_cron>1</mage_cron>
140
+ </depends>
141
+ <frontend_type>time</frontend_type>
142
+ <sort_order>5</sort_order>
143
+ <show_in_default>1</show_in_default>
144
+ <show_in_website>0</show_in_website>
145
+ <show_in_store>0</show_in_store>
146
+ </time>
147
+ <limit>
148
+ <label>Limit</label>
149
+ <depends>
150
+ <enabled>1</enabled>
151
+ </depends>
152
+ <frontend_type>select</frontend_type>
153
+ <source_model>bronto_common/system_config_source_limit</source_model>
154
+ <sort_order>6</sort_order>
155
+ <show_in_default>1</show_in_default>
156
+ <show_in_website>0</show_in_website>
157
+ <show_in_store>0</show_in_store>
158
+ <comment>Total API Errors to process every run.</comment>
159
+ </limit>
160
+ <threshold>
161
+ <label>Attempt Threshold</label>
162
+ <depends>
163
+ <enabled>1</enabled>
164
+ </depends>
165
+ <frontend_type>text</frontend_type>
166
+ <sort_order>7</sort_order>
167
+ <show_in_default>1</show_in_default>
168
+ <show_in_website>0</show_in_website>
169
+ <show_in_store>0</show_in_store>
170
+ <comment>Do not process entry whose attempts are
171
+ over this amount.</comment>
172
+ </threshold>
173
+ </fields>
174
+ </settings>
175
+ <cron_list>
176
+ <frontend_type>text</frontend_type>
177
+ <frontend_model>bronto_common/adminhtml_system_config_cron_error</frontend_model>
178
+ <sort_order>3</sort_order>
179
+ <show_in_default>1</show_in_default>
180
+ <show_in_website>0</show_in_website>
181
+ <show_in_store>0</show_in_store>
182
+ </cron_list>
183
+ <soap_options>
184
+ <label>SOAP Options</label>
185
+ <frontend_type>text</frontend_type>
186
+ <sort_order>5</sort_order>
187
+ <show_in_default>1</show_in_default>
188
+ <show_in_website>0</show_in_website>
189
+ <show_in_store>0</show_in_store>
190
+ <expanded>0</expanded>
191
+ <fields>
192
+ <soap_client>
193
+ <label>SOAP class</label>
194
+ <frontend_type>text</frontend_type>
195
+ <sort_order>5</sort_order>
196
+ <show_in_default>1</show_in_default>
197
+ <show_in_website>0</show_in_website>
198
+ <show_in_store>0</show_in_store>
199
+ <comment><![CDATA[Overrides the Bronto_SoapClient class.<br/>
200
+ Default: Bronto_SoapClient<br/>
201
+ <em>* Provided class name must be available via
202
+ Magento's autoloader.</em>]]></comment>
203
+ </soap_client>
204
+ <observer>
205
+ <label>Bronto Observer</label>
206
+ <frontend_type>text</frontend_type>
207
+ <sort_order>6</sort_order>
208
+ <show_in_default>1</show_in_default>
209
+ <show_in_website>0</show_in_website>
210
+ <show_in_store>0</show_in_store>
211
+ <comment><![CDATA[Overrides the Bronto_Observer
212
+ class.<br/>
213
+ Default: Bronto_Common_Model_Api<br/>
214
+ <em>* Provided class name must be available via
215
+ Magento's autoloader.</em>]]></comment>
216
+ </observer>
217
+ <retryer>
218
+ <label>Bronto Retryer</label>
219
+ <frontend_type>text</frontend_type>
220
+ <sort_order>7</sort_order>
221
+ <show_in_default>1</show_in_default>
222
+ <show_in_website>0</show_in_website>
223
+ <show_in_store>0</show_in_store>
224
+ <comment><![CDATA[Overrides the Bronto_Util_Retryer
225
+ class.<br/>
226
+ Default: Bronto_Common_Model_Error<br/>
227
+ <em>* Provided class name must be available via
228
+ Magento's autoloader.</em>]]></comment>
229
+ </retryer>
230
+ <stream_context>
231
+ <label>Use Stream Context</label>
232
+ <frontend_type>select</frontend_type>
233
+ <source_model>adminhtml/system_config_source_yesno</source_model>
234
+ <sort_order>8</sort_order>
235
+ <show_in_default>1</show_in_default>
236
+ <show_in_website>0</show_in_website>
237
+ <show_in_store>0</show_in_store>
238
+ <comment><![CDATA[Replace the SSL stream context for the
239
+ underlying SOAP client.<br/><em>* Use this option if you
240
+ are experiencing errors related to SSL or reaching
241
+ the Bronto API WSDL.</em>]]></comment>
242
+ </stream_context>
243
+ <retry_limit>
244
+ <label>Retry Limit</label>
245
+ <frontend_type>text</frontend_type>
246
+ <sort_order>10</sort_order>
247
+ <show_in_default>1</show_in_default>
248
+ <show_in_website>0</show_in_website>
249
+ <show_in_store>0</show_in_store>
250
+ <validate>validate-digits validate-digits-range digits-range-0-5</validate>
251
+ <comment><![CDATA[The number of times the SOAP client will attempt to retry API call. Must be between 0 and 5.<br />Default: 2]]>
252
+ </comment>
253
+ </retry_limit>
254
+ <connection_timeout>
255
+ <label>Connection Timeout</label>
256
+ <frontend_type>text</frontend_type>
257
+ <sort_order>20</sort_order>
258
+ <show_in_default>1</show_in_default>
259
+ <show_in_website>0</show_in_website>
260
+ <show_in_store>0</show_in_store>
261
+ <validate>validate-digits validate-digits-range digits-range-0-3600</validate>
262
+ <comment><![CDATA[The number of seconds the SOAP client will wait before attempting to retry the API call. Must be between 0 and 3600.<br />
263
+ Default: 30]]>
264
+ </comment>
265
+ </connection_timeout>
266
+ <trace>
267
+ <label>Trace</label>
268
+ <frontend_type>select</frontend_type>
269
+ <source_model>adminhtml/system_config_source_yesno</source_model>
270
+ <sort_order>30</sort_order>
271
+ <show_in_default>1</show_in_default>
272
+ <show_in_website>0</show_in_website>
273
+ <show_in_store>0</show_in_store>
274
+ <comment><![CDATA[If <em>Yes</em>, the SOAP client will trace its call.<br />Default: <em>No</em>]]></comment>
275
+ </trace>
276
+ <exceptions>
277
+ <label>Exceptions</label>
278
+ <frontend_type>select</frontend_type>
279
+ <source_model>adminhtml/system_config_source_yesno</source_model>
280
+ <sort_order>40</sort_order>
281
+ <show_in_default>1</show_in_default>
282
+ <show_in_website>0</show_in_website>
283
+ <show_in_store>0</show_in_store>
284
+ <comment><![CDATA[If <em>Yes</em>, the SOAP client will throw exceptions on failure.<br />Default: <em>Yes</em>]]></comment>
285
+ </exceptions>
286
+ <cache_wsdl>
287
+ <label>WSDL Cache</label>
288
+ <frontend_type>select</frontend_type>
289
+ <source_model>bronto_verify/system_config_source_wsdlcache</source_model>
290
+ <sort_order>50</sort_order>
291
+ <show_in_default>1</show_in_default>
292
+ <show_in_website>0</show_in_website>
293
+ <show_in_store>0</show_in_store>
294
+ <comment><![CDATA[If <em>Yes</em>, the SOAP client will cache the WSDL.<br />Default: <em>WSDL_CACHE_BOTH</em>]]></comment>
295
+ </cache_wsdl>
296
+ </fields>
297
+ </soap_options>
298
+ </groups>
299
+ </bronto_api>
300
  <bronto_popup module="bronto_common">
301
  <label>Pop-up Manager</label>
302
  <tab>bronto</tab>
462
  <comment>
463
  <![CDATA[Show warnings/errors as site notices.<br /><strong>Note:</strong> Site notices can be customer-facing.]]></comment>
464
  </notices>
465
+ <clear_logs>
466
+ <label>Clear Old Bronto Logs</label>
467
+ <depends>
468
+ <debug>1</debug>
469
+ </depends>
470
+ <frontend_type>select</frontend_type>
471
+ <frontend_model>bronto_common/adminhtml_system_config_form_field</frontend_model>
472
+ <source_model>adminhtml/system_config_source_yesno</source_model>
473
+ <sort_order>50</sort_order>
474
+ <show_in_default>1</show_in_default>
475
+ <show_in_website>0</show_in_website>
476
+ <show_in_store>0</show_in_store>
477
+ <comment>Deletes old entries every midnight.</comment>
478
+ </clear_logs>
479
+ <log_threshold>
480
+ <label>Clear Log Threshold</label>
481
+ <depends>
482
+ <debug>1</debug>
483
+ <clear_logs>1</clear_logs>
484
+ </depends>
485
+ <frontend_type>text</frontend_type>
486
+ <frontend_model>bronto_common/adminhtml_system_config_form_field</frontend_model>
487
+ <sort_order>60</sort_order>
488
+ <show_in_default>1</show_in_default>
489
+ <show_in_website>0</show_in_website>
490
+ <show_in_store>0</show_in_store>
491
+ <comment>Deletes logs older than this value, in days.</comment>
492
+ </log_threshold>
493
  </fields>
494
  </settings>
495
  <support>
496
  <label>Registration</label>
497
  <frontend_type>text</frontend_type>
498
  <frontend_model>bronto_common/adminhtml_system_config_support</frontend_model>
499
+ <sort_order>5</sort_order>
500
  <show_in_default>1</show_in_default>
501
  <show_in_website>1</show_in_website>
502
  <show_in_store>1</show_in_store>
591
  <label>Email Formatting Options</label>
592
  <frontend_type>text</frontend_type>
593
  <frontend_model>bronto_common/adminhtml_system_config_form_fieldset</frontend_model>
594
+ <sort_order>10</sort_order>
595
  <show_in_default>1</show_in_default>
596
  <show_in_website>1</show_in_website>
597
  <show_in_store>1</show_in_store>
709
  <![CDATA[Most questions can easily be answered by thoroughly reviewing the Bronto <a style="color:#ea7601" target="_blank" href="http://a.bron.to/magento" title="Magento Resource Center | Bronto Developers">Magento Resource Center</a> so please consult that first. The next best resource is the <a style="color:#ea7601" target="_blank" href="http://dev.bronto.com/questions" title="Questions | Bronto Developers">Questions</a> forum where you can post the question if it has not been asked yet.<br/><br/><strong>Disclaimer:</strong> The Bronto Extension for Magento was tested in clean Magento environments and Bronto cannot guarantee compatibility with third-party extensions or other site customizations.<br/><br/>If you believe you have encountered an actual issue with the extension itself then you may file a support case. Please note that regular Bronto Support hours are between 8am-8pm ET, Monday through Friday, excluding holidays.<br/><br/><span style="padding-left: 30px;">To contact the Bronto Support team, please perform the following steps:</span><br/><ul><li style="padding-left: 60px;"><strong>Step 1: &nbsp;</strong><a style="color: #ea7601" target="_blank" href="https://app.bronto.com/shared/support/case_add" title="Technical Support | Bronto Marketing Platform">Open a case</a> within Bronto. In your case description, please outline the issue and steps to reproduce it. Also, be sure to mention the version of Magento and the version of the Bronto extension currently running.</li><li style="padding-left: 60px;"><strong>Step 2: &nbsp;</strong>After creating a case, please add a comment and paste in all of the debug information that is generated after clicking the <em>Generate Debug Information</em> button below:<ul style="padding-left: 85px;list-style-type:lower-alpha;"><li>Click on the <a style="color:#ea7601" target="_blank" title="Technical Support | Bronto Marketing Platform" href="https://app.bronto.com/shared/support/index">Support</a> link located in the top right of the page.</li><li>Click on the case you want to comment on.</li><li>Paste in the debug information and click <em>Post Response</em>.</li></ul></li><li style="padding-left: 60px;"><strong>Step 3: &nbsp;</strong>Optionally, if more information is needed, your Support representative may request log files. Simply click the <em>Create Log Archive</em> button below and then click the link that is generated and displayed below the button to download an archive of log files to send to the location designated by your Support representative.</li></ul><br/>]]></comment>
710
  <frontend_type>text</frontend_type>
711
  <frontend_model>bronto_common/adminhtml_system_config_form_fieldset</frontend_model>
712
+ <sort_order>15</sort_order>
713
  <show_in_default>1</show_in_default>
714
  <show_in_website>0</show_in_website>
715
  <show_in_store>0</show_in_store>
app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-install-2.2.1.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Bronto_Common_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/api')}`;");
10
+
11
+ $installer->run("
12
+ CREATE TABLE `{$installer->getTable('bronto_common/api')}` (
13
+ `token` varchar(36) NOT NULL,
14
+ `session_id` varchar(36) NOT NULL,
15
+ `created_at` datetime NOT NULL,
16
+ PRIMARY KEY (`token`)
17
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Session table'
18
+ ");
19
+
20
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/error')}`;");
21
+
22
+ $installer->run("
23
+ CREATE TABLE `{$installer->getTable('bronto_common/error')}` (
24
+ `error_id` int(11) NOT NULL AUTO_INCREMENT,
25
+ `email_class` varchar(100) NULL,
26
+ `object` text NOT NULL DEFAULT '',
27
+ `attempts` smallint(1) NOT NULL,
28
+ `last_attempt` datetime NOT NULL,
29
+ PRIMARY KEY (`error_id`),
30
+ KEY `IDX_BRONTO_ERROR_ATTEMPT` (`attempts`),
31
+ KEY `IDX_BRONTO_ERROR_TIMESTAMP` (`last_attempt`)
32
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Error log'
33
+ ");
34
+ } catch (Exception $e) {
35
+ Mage::helper('bronto_common')->writeError('Failed to create API tables: ' . $e->getMessage());
36
+ }
37
+
38
+ $installer->endSetup();
app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-1.7.0-2.2.1.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Bronto_Common_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/api')}`;");
10
+
11
+ $installer->run("
12
+ CREATE TABLE `{$installer->getTable('bronto_common/api')}` (
13
+ `token` varchar(36) NOT NULL,
14
+ `session_id` varchar(36) NOT NULL,
15
+ `created_at` datetime NOT NULL,
16
+ PRIMARY KEY (`token`)
17
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Session table'
18
+ ");
19
+
20
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/error')}`;");
21
+
22
+ $installer->run("
23
+ CREATE TABLE `{$installer->getTable('bronto_common/error')}` (
24
+ `error_id` int(11) NOT NULL AUTO_INCREMENT,
25
+ `email_class` varchar(100) NULL,
26
+ `object` text NOT NULL DEFAULT '',
27
+ `attempts` smallint(1) NOT NULL,
28
+ `last_attempt` datetime NOT NULL,
29
+ PRIMARY KEY (`error_id`),
30
+ KEY `IDX_BRONTO_ERROR_ATTEMPT` (`attempts`),
31
+ KEY `IDX_BRONTO_ERROR_TIMESTAMP` (`last_attempt`)
32
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Error log'
33
+ ");
34
+ } catch (Exception $e) {
35
+ Mage::helper('bronto_common')->writeError('Failed to create API tables: ' . $e->getMessage());
36
+ }
37
+
38
+ $installer->endSetup();
app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.0.4-2.2.1.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Bronto_Common_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/api')}`;");
10
+
11
+ $installer->run("
12
+ CREATE TABLE `{$installer->getTable('bronto_common/api')}` (
13
+ `token` varchar(36) NOT NULL,
14
+ `session_id` varchar(36) NOT NULL,
15
+ `created_at` datetime NOT NULL,
16
+ PRIMARY KEY (`token`)
17
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Session table'
18
+ ");
19
+
20
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/error')}`;");
21
+
22
+ $installer->run("
23
+ CREATE TABLE `{$installer->getTable('bronto_common/error')}` (
24
+ `error_id` int(11) NOT NULL AUTO_INCREMENT,
25
+ `email_class` varchar(100) NULL,
26
+ `object` text NOT NULL DEFAULT '',
27
+ `attempts` smallint(1) NOT NULL,
28
+ `last_attempt` datetime NOT NULL,
29
+ PRIMARY KEY (`error_id`),
30
+ KEY `IDX_BRONTO_ERROR_ATTEMPT` (`attempts`),
31
+ KEY `IDX_BRONTO_ERROR_TIMESTAMP` (`last_attempt`)
32
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Error log'
33
+ ");
34
+ } catch (Exception $e) {
35
+ Mage::helper('bronto_common')->writeError('Failed to create API tables: ' . $e->getMessage());
36
+ }
37
+
38
+ $installer->endSetup();
app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.0.4.2-2.2.1.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Bronto_Common_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/api')}`;");
10
+
11
+ $installer->run("
12
+ CREATE TABLE `{$installer->getTable('bronto_common/api')}` (
13
+ `token` varchar(36) NOT NULL,
14
+ `session_id` varchar(36) NOT NULL,
15
+ `created_at` datetime NOT NULL,
16
+ PRIMARY KEY (`token`)
17
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Session table'
18
+ ");
19
+
20
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/error')}`;");
21
+
22
+ $installer->run("
23
+ CREATE TABLE `{$installer->getTable('bronto_common/error')}` (
24
+ `error_id` int(11) NOT NULL AUTO_INCREMENT,
25
+ `email_class` varchar(100) NULL,
26
+ `object` text NOT NULL DEFAULT '',
27
+ `attempts` smallint(1) NOT NULL,
28
+ `last_attempt` datetime NOT NULL,
29
+ PRIMARY KEY (`error_id`),
30
+ KEY `IDX_BRONTO_ERROR_ATTEMPT` (`attempts`),
31
+ KEY `IDX_BRONTO_ERROR_TIMESTAMP` (`last_attempt`)
32
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Error log'
33
+ ");
34
+ } catch (Exception $e) {
35
+ Mage::helper('bronto_common')->writeError('Failed to create API tables: ' . $e->getMessage());
36
+ }
37
+
38
+ $installer->endSetup();
app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.1.0-2.2.1.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Bronto_Common_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/api')}`;");
10
+
11
+ $installer->run("
12
+ CREATE TABLE `{$installer->getTable('bronto_common/api')}` (
13
+ `token` varchar(36) NOT NULL,
14
+ `session_id` varchar(36) NOT NULL,
15
+ `created_at` datetime NOT NULL,
16
+ PRIMARY KEY (`token`)
17
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Session table'
18
+ ");
19
+
20
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/error')}`;");
21
+
22
+ $installer->run("
23
+ CREATE TABLE `{$installer->getTable('bronto_common/error')}` (
24
+ `error_id` int(11) NOT NULL AUTO_INCREMENT,
25
+ `email_class` varchar(100) NULL,
26
+ `object` text NOT NULL DEFAULT '',
27
+ `attempts` smallint(1) NOT NULL,
28
+ `last_attempt` datetime NOT NULL,
29
+ PRIMARY KEY (`error_id`),
30
+ KEY `IDX_BRONTO_ERROR_ATTEMPT` (`attempts`),
31
+ KEY `IDX_BRONTO_ERROR_TIMESTAMP` (`last_attempt`)
32
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Error log'
33
+ ");
34
+ } catch (Exception $e) {
35
+ Mage::helper('bronto_common')->writeError('Failed to create API tables: ' . $e->getMessage());
36
+ }
37
+
38
+ $installer->endSetup();
app/code/community/Bronto/Common/sql/bronto_common_setup/mysql4-upgrade-2.2.0-2.2.1.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Bronto_Common_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/api')}`;");
10
+
11
+ $installer->run("
12
+ CREATE TABLE `{$installer->getTable('bronto_common/api')}` (
13
+ `token` varchar(36) NOT NULL,
14
+ `session_id` varchar(36) NOT NULL,
15
+ `created_at` datetime NOT NULL,
16
+ PRIMARY KEY (`token`)
17
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Session table'
18
+ ");
19
+
20
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_common/error')}`;");
21
+
22
+ $installer->run("
23
+ CREATE TABLE `{$installer->getTable('bronto_common/error')}` (
24
+ `error_id` int(11) NOT NULL AUTO_INCREMENT,
25
+ `email_class` varchar(100) NULL,
26
+ `object` text NOT NULL DEFAULT '',
27
+ `attempts` smallint(1) NOT NULL,
28
+ `last_attempt` datetime NOT NULL,
29
+ PRIMARY KEY (`error_id`),
30
+ KEY `IDX_BRONTO_ERROR_ATTEMPT` (`attempts`),
31
+ KEY `IDX_BRONTO_ERROR_TIMESTAMP` (`last_attempt`)
32
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto API Error log'
33
+ ");
34
+ } catch (Exception $e) {
35
+ Mage::helper('bronto_common')->writeError('Failed to create API tables: ' . $e->getMessage());
36
+ }
37
+
38
+ $installer->endSetup();
app/code/community/Bronto/Customer/Helper/Data.php CHANGED
@@ -44,11 +44,6 @@ class Bronto_Customer_Helper_Data extends Bronto_Common_Helper_Data implements B
44
  */
45
  public function isEnabled($scope = 'default', $scopeId = 0)
46
  {
47
- // Check if valid token is present
48
- if (!$this->validApiToken(null, $scope, $scopeId)) {
49
- return false;
50
- }
51
-
52
  // Get Enabled Scope
53
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
54
  }
44
  */
45
  public function isEnabled($scope = 'default', $scopeId = 0)
46
  {
 
 
 
 
 
47
  // Get Enabled Scope
48
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
49
  }
app/code/community/Bronto/Email/Block/Adminhtml/System/Email/Template.php CHANGED
@@ -27,7 +27,7 @@ class Bronto_Email_Block_Adminhtml_System_Email_Template extends Mage_Adminhtml_
27
  $this->setChild('add_button',
28
  $this->getLayout()->createBlock('adminhtml/widget_button')
29
  ->setData(array(
30
- 'label' => Mage::helper('adminhtml')->__('Add Bronto Message'),
31
  'onclick' => "window.location='" . $this->getCreateUrl() . "'",
32
  'class' => 'add'
33
  ))
27
  $this->setChild('add_button',
28
  $this->getLayout()->createBlock('adminhtml/widget_button')
29
  ->setData(array(
30
+ 'label' => Mage::helper('adminhtml')->__('Add New Template'),
31
  'onclick' => "window.location='" . $this->getCreateUrl() . "'",
32
  'class' => 'add'
33
  ))
app/code/community/Bronto/Email/Block/Adminhtml/System/Email/Template/Edit.php CHANGED
@@ -61,10 +61,10 @@ class Bronto_Email_Block_Adminhtml_System_Email_Template_Edit extends Mage_Admin
61
  }
62
 
63
  if ($this->getEditMode()) {
64
- return Mage::helper('adminhtml')->__('Edit Bronto Email Message');
65
  }
66
 
67
- return Mage::helper('adminhtml')->__('New Bronto Email Message');
68
  }
69
 
70
  /**
61
  }
62
 
63
  if ($this->getEditMode()) {
64
+ return Mage::helper('adminhtml')->__('Edit Template');
65
  }
66
 
67
+ return Mage::helper('adminhtml')->__('New Template');
68
  }
69
 
70
  /**
app/code/community/Bronto/Email/Helper/Data.php CHANGED
@@ -86,11 +86,6 @@ class Bronto_Email_Helper_Data
86
  */
87
  public function isEnabled($scope = 'default', $scopeId = 0)
88
  {
89
- // Check if valid token is present
90
- if (!$this->validApiToken(null, $scope, $scopeId)) {
91
- return false;
92
- }
93
-
94
  // Get Enabled Scope
95
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
96
  }
@@ -159,7 +154,12 @@ class Bronto_Email_Helper_Data
159
  */
160
  public function canSendBronto(Mage_Core_Model_Email_Template $template, $storeId = null)
161
  {
162
- if ($this->isEnabled('store', $storeId) && $this->canUseBronto('store', $storeId) && $template->getTemplateSendType() != 'magento') {
 
 
 
 
 
163
  return true;
164
  }
165
 
86
  */
87
  public function isEnabled($scope = 'default', $scopeId = 0)
88
  {
 
 
 
 
 
89
  // Get Enabled Scope
90
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
91
  }
154
  */
155
  public function canSendBronto(Mage_Core_Model_Email_Template $template, $storeId = null)
156
  {
157
+ if (
158
+ $this->isEnabled('store', $storeId) &&
159
+ $this->canUseBronto('store', $storeId) &&
160
+ !is_null($template->getBrontoMessageId()) &&
161
+ $template->getTemplateSendType() != 'magento'
162
+ ) {
163
  return true;
164
  }
165
 
app/code/community/Bronto/Email/Model/Mysql4/Message.php CHANGED
@@ -15,7 +15,6 @@ class Bronto_Email_Model_Mysql4_Message extends Mage_Core_Model_Mysql4_Abstract
15
 
16
  public function _construct()
17
  {
18
-
19
  $this->_init('bronto_email/message', 'core_template_id');
20
  }
21
  }
15
 
16
  public function _construct()
17
  {
 
18
  $this->_init('bronto_email/message', 'core_template_id');
19
  }
20
  }
app/code/community/Bronto/Email/Model/Mysql4/Template.php CHANGED
@@ -71,4 +71,4 @@ class Bronto_Email_Model_Mysql4_Template extends Mage_Core_Model_Mysql4_Email_Te
71
 
72
  return $select;
73
  }
74
- }
71
 
72
  return $select;
73
  }
74
+ }
app/code/community/Bronto/Email/Model/Mysql4/Template/Collection.php CHANGED
@@ -16,7 +16,7 @@ class Bronto_Email_Model_Mysql4_Template_Collection extends Mage_Core_Model_Mysq
16
  if (Mage::helper('bronto_common')->isVersionMatch(Mage::getVersionInfo(), 1, array(4, 9))) {
17
  $this->_select->joinLeft(
18
  array($this->_brontoTable),
19
- "`{this->_templateTable}`.`template_id` = `{$this->_brontoTable}`.`core_template_id`"
20
  );
21
  }
22
  }
16
  if (Mage::helper('bronto_common')->isVersionMatch(Mage::getVersionInfo(), 1, array(4, 9))) {
17
  $this->_select->joinLeft(
18
  array($this->_brontoTable),
19
+ "`{$this->_templateTable}`.`template_id` = `{$this->_brontoTable}`.`core_template_id`"
20
  );
21
  }
22
  }
app/code/community/Bronto/Email/Model/Template.php CHANGED
@@ -166,6 +166,14 @@ class Bronto_Email_Model_Template extends Bronto_Common_Model_Email_Template
166
  return $configData;
167
  }
168
 
 
 
 
 
 
 
 
 
169
  /**
170
  * Log about the functionality of sending the email before it goes out
171
  *
@@ -218,4 +226,4 @@ class Bronto_Email_Model_Template extends Bronto_Common_Model_Email_Template
218
  $this->_log = null;
219
  }
220
  }
221
- }
166
  return $configData;
167
  }
168
 
169
+ /**
170
+ * @see parent
171
+ */
172
+ protected function _emailClass()
173
+ {
174
+ return 'bronto_email/template';
175
+ }
176
+
177
  /**
178
  * Log about the functionality of sending the email before it goes out
179
  *
226
  $this->_log = null;
227
  }
228
  }
229
+ }
app/code/community/Bronto/Email/Model/Template/Import.php CHANGED
@@ -62,7 +62,7 @@ class Bronto_Email_Model_Template_Import extends Bronto_Email_Model_Template
62
  $token = Mage::helper('bronto_common')->getApiToken('store', $store->getId());
63
  if ($token) {
64
  $this->_apiObject = new Bronto_Api_Message(array(
65
- 'api' => new Bronto_Api($token)
66
  ));
67
  } else {
68
  return false;
62
  $token = Mage::helper('bronto_common')->getApiToken('store', $store->getId());
63
  if ($token) {
64
  $this->_apiObject = new Bronto_Api_Message(array(
65
+ 'api' => Mage::helper('bronto_common')->getApi($token, 'store', $store->getId())
66
  ));
67
  } else {
68
  return false;
app/code/community/Bronto/Email/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Bronto_Email>
5
- <version>1.1.8</version>
6
  </Bronto_Email>
7
  </modules>
8
  <global>
2
  <config>
3
  <modules>
4
  <Bronto_Email>
5
+ <version>1.1.9</version>
6
  </Bronto_Email>
7
  </modules>
8
  <global>
app/code/community/Bronto/Email/sql/bronto_email_setup/mysql4-install-1.1.9.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Mage_Core_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ /**
9
+ * Create new table to hold bronto templates
10
+ */
11
+ try {
12
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_email/message')}`;");
13
+
14
+ $installer->run("
15
+ CREATE TABLE `{$installer->getTable('bronto_email/message')}` (
16
+ `core_template_id` int(10) unsigned NOT NULL COMMENT 'Magento Template ID',
17
+ `template_send_type` varchar(255) NOT NULL DEFAULT 'magento' COMMENT 'Type of message to send as',
18
+ `orig_template_text` text COMMENT 'Original Template Text',
19
+ `bronto_message_id` varchar(36) DEFAULT NULL COMMENT 'Bronto Message ID',
20
+ `bronto_message_name` varchar(255) DEFAULT NULL COMMENT 'Bronto Message Name',
21
+ `bronto_message_approved` smallint(5) unsigned NOT NULL DEFAULT '1' COMMENT 'Bronto Message Transactional Approval Status',
22
+ `store_id` int(11) NOT NULL DEFAULT '1' COMMENT 'Store ID for Template',
23
+ `sales_rule` int(10) NULL COMMENT 'Sales Rule for Coupon Codes',
24
+ PRIMARY KEY (`core_template_id`),
25
+ KEY `IDX_BRONTO_STORE_ID` (`store_id`),
26
+ CONSTRAINT `FK_BRONTO_EMAIL_TEMPLATE_ID_CORE_EMAIL_TEMPLATE_ID` FOREIGN KEY (`core_template_id`)
27
+ REFERENCES `{$installer->getTable('core/email_template')}` (`template_id`) ON DELETE CASCADE ON UPDATE CASCADE
28
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto Email Template Attributes'
29
+ ");
30
+
31
+ } catch (Exception $e) {
32
+ Mage::helper('bronto_email')->writeError($e->getMessage());
33
+ }
34
+
35
+ /**
36
+ * Email Log table
37
+ */
38
+ try {
39
+
40
+ $installer->run("DROP TABLE IF EXISTS `{$installer->getTable('bronto_email/log')}`;");
41
+
42
+ $installer->run("
43
+ CREATE TABLE `{$installer->getTable('bronto_email/log')}` (
44
+ `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Log ID',
45
+ `customer_id` int(10) unsigned DEFAULT NULL COMMENT 'Customer ID',
46
+ `customer_email` varchar(255) DEFAULT NULL COMMENT 'Customer Email Address',
47
+ `contact_id` varchar(36) DEFAULT NULL COMMENT 'Bronto Contact ID',
48
+ `message_id` varchar(36) NOT NULL COMMENT 'Bronto Message ID',
49
+ `message_name` varchar(64) DEFAULT NULL COMMENT 'Bronto Message Name',
50
+ `delivery_id` varchar(36) DEFAULT NULL COMMENT 'Bronto Delivery ID',
51
+ `sent_at` datetime DEFAULT NULL COMMENT 'Date Message Sent',
52
+ `success` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Message Send Success',
53
+ `error` varchar(255) DEFAULT NULL COMMENT 'Error Message',
54
+ `fields` text COMMENT 'Fields',
55
+ PRIMARY KEY (`log_id`),
56
+ KEY `IDX_BRONTO_EMAIL_LOG_CUSTOMER_EMAIL` (`customer_email`),
57
+ KEY `IDX_BRONTO_EMAIL_LOG_SENT_AT` (`sent_at`)
58
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Bronto Email Delivery Logs'
59
+ ");
60
+
61
+ } catch (Exception $e) {
62
+ Mage::helper('bronto_email')->writeError($e->getMessage());
63
+ }
64
+
65
+ $installer->endSetup();
app/code/community/Bronto/Email/sql/bronto_email_setup/mysql4-upgrade-1.1.8-1.1.9.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Mage_Core_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ /**
9
+ * Create new table to hold bronto templates
10
+ */
11
+ try {
12
+ $installer->run("
13
+ ALTER TABLE `{$installer->getTable('bronto_email/message')}`
14
+ ADD KEY `IDX_BRONTO_STORE_ID` (`store_id`);
15
+ ");
16
+ } catch (Exception $e) {
17
+ Mage::helper('bronto_email')->writeError($e->getMessage());
18
+ }
19
+
20
+ $installer->endSetup();
app/code/community/Bronto/Emailcapture/Model/Queue.php CHANGED
@@ -131,7 +131,8 @@ class Bronto_Emailcapture_Model_Queue extends Mage_Core_Model_Abstract
131
  {
132
  $ttl = Mage::helper('bronto_emailcapture')->getCookieTtl(false);
133
 
134
- $where = array('updated_at <' => date(strtotime('-' . $ttl . 'days')));
135
- $this->_getResource()->getWriteAdapter()->delete($this->getTable('bronto_emailcapture/queue'), $where);
 
136
  }
137
  }
131
  {
132
  $ttl = Mage::helper('bronto_emailcapture')->getCookieTtl(false);
133
 
134
+ $where = array('updated_at < ?' => date(strtotime('-' . $ttl . 'days')));
135
+ $resource = Mage::getSingleton('core/resource');
136
+ $this->_getResource()->getWriteAdapter()->delete($resource->getTableName('bronto_emailcapture/queue'), $where);
137
  }
138
  }
app/code/community/Bronto/Newsletter/Helper/Contact.php CHANGED
@@ -18,23 +18,25 @@ class Bronto_Newsletter_Helper_Contact extends Bronto_Common_Helper_Contact
18
  const XML_PATH_LISTS = 'bronto_newsletter/contacts/lists';
19
 
20
  /**
 
 
21
  * @return bool
22
  */
23
- public function getUpdateStatus()
24
  {
25
- return (bool)Mage::getStoreConfig(self::XML_PATH_UPDATE_STATUS);
26
  }
27
 
28
  /**
29
  * Get Array of Bronto Subscriber List IDs
30
  *
31
- * @param null $store
32
- *
33
  * @return array|mixed
34
  */
35
- public function getListIds($store = null)
36
  {
37
- $listIds = Mage::getStoreConfig(self::XML_PATH_LISTS, $store);
38
  if (empty($listIds)) {
39
  return array();
40
  }
@@ -50,19 +52,13 @@ class Bronto_Newsletter_Helper_Contact extends Bronto_Common_Helper_Contact
50
  * Get the list object from list id
51
  *
52
  * @param int $listId
53
- * @param mixed $store (Optional)
 
54
  *
55
  * @return boolean|Bronto_Api_List_Row
56
  */
57
- public function getListData($listId, $store = null)
58
  {
59
- if (is_null($store)) {
60
- $scope = 'default';
61
- $scopeId = 0;
62
- } else {
63
- $scope = 'store';
64
- $scopeId = $store;
65
- }
66
  if ($api = $this->getApi(null, $scope, $scopeId)) {
67
  /* @var $listObject Bronto_Api_List */
68
  $listObject = $api->getListObject();
18
  const XML_PATH_LISTS = 'bronto_newsletter/contacts/lists';
19
 
20
  /**
21
+ * @param string $scope
22
+ * @param mixed $scopeId
23
  * @return bool
24
  */
25
+ public function getUpdateStatus($scope = 'default', $scopeId = 0)
26
  {
27
+ return (bool) $this->getAdminScopedConfig(self::XML_PATH_UPDATE_STATUS, $scope, $scopeId);
28
  }
29
 
30
  /**
31
  * Get Array of Bronto Subscriber List IDs
32
  *
33
+ * @param string $scope
34
+ * @param mixed $scopeId
35
  * @return array|mixed
36
  */
37
+ public function getListIds($scope = 'default', $scopeId = 0)
38
  {
39
+ $listIds = $this->getAdminScopedConfig(self::XML_PATH_LISTS, $scope, $scopeId);
40
  if (empty($listIds)) {
41
  return array();
42
  }
52
  * Get the list object from list id
53
  *
54
  * @param int $listId
55
+ * @param string $scope
56
+ * @param mixed $scopeId
57
  *
58
  * @return boolean|Bronto_Api_List_Row
59
  */
60
+ public function getListData($listId, $scope = 'default', $scopeId = 0)
61
  {
 
 
 
 
 
 
 
62
  if ($api = $this->getApi(null, $scope, $scopeId)) {
63
  /* @var $listObject Bronto_Api_List */
64
  $listObject = $api->getListObject();
app/code/community/Bronto/Newsletter/Helper/Data.php CHANGED
@@ -47,11 +47,6 @@ class Bronto_Newsletter_Helper_Data extends Bronto_Common_Helper_Data
47
  */
48
  public function isEnabled($scope = 'default', $scopeId = 0)
49
  {
50
- // Check if valid token is present
51
- if (!$this->validApiToken(null, $scope, $scopeId)) {
52
- return false;
53
- }
54
-
55
  // Get Enabled Scope
56
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
57
  }
47
  */
48
  public function isEnabled($scope = 'default', $scopeId = 0)
49
  {
 
 
 
 
 
50
  // Get Enabled Scope
51
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
52
  }
app/code/community/Bronto/Newsletter/Model/Observer.php CHANGED
@@ -284,7 +284,7 @@ class Bronto_Newsletter_Model_Observer
284
 
285
  $helper = Mage::helper('bronto_newsletter/contact');
286
 
287
- $lists = $helper->getListIds($storeId);
288
 
289
  // Get Subscriber Queue for store
290
  /* var $subscribers Bronto_Newsletter_Model_Mysql4_Queue_Collection */
@@ -311,7 +311,7 @@ class Bronto_Newsletter_Model_Observer
311
 
312
  // Get List Details
313
  foreach ($lists as $listId) {
314
- if ($list = $helper->getListData($listId, $storeId)) {
315
  $listName = $list->label;
316
  } else {
317
  Mage::throwException(
@@ -332,7 +332,7 @@ class Bronto_Newsletter_Model_Observer
332
  Mage::throwException($bounceMessage);
333
  }
334
 
335
- if ($helper->getUpdateStatus()) {
336
  switch ($subscriber->getStatus()) {
337
  case Bronto_Api_Contact::STATUS_UNCONFIRMED:
338
  case Bronto_Api_Contact::STATUS_TRANSACTIONAL:
284
 
285
  $helper = Mage::helper('bronto_newsletter/contact');
286
 
287
+ $lists = $helper->getListIds('store', $storeId);
288
 
289
  // Get Subscriber Queue for store
290
  /* var $subscribers Bronto_Newsletter_Model_Mysql4_Queue_Collection */
311
 
312
  // Get List Details
313
  foreach ($lists as $listId) {
314
+ if ($list = $helper->getListData($listId, 'store', $storeId)) {
315
  $listName = $list->label;
316
  } else {
317
  Mage::throwException(
332
  Mage::throwException($bounceMessage);
333
  }
334
 
335
+ if ($helper->getUpdateStatus('store', $storeId)) {
336
  switch ($subscriber->getStatus()) {
337
  case Bronto_Api_Contact::STATUS_UNCONFIRMED:
338
  case Bronto_Api_Contact::STATUS_TRANSACTIONAL:
app/code/community/Bronto/Newsletter/Model/Resource/Setup.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Bronto_Newsletter_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
4
+ {
5
+ /**
6
+ * Removes the ListIds in the default scope
7
+ *
8
+ * @return Bronto_Newsletter_Model_Resource_Setup
9
+ */
10
+ public function removeListsInDefaultScope()
11
+ {
12
+ $path = 'bronto_newsletter/contacts/lists';
13
+ $this->run("
14
+ DELETE FROM `{$this->getTable('core/config_data')}`
15
+ WHERE `path`='{$path}' AND `scope`='default' AND `scope_id`=1;");
16
+ }
17
+ }
app/code/community/Bronto/Newsletter/controllers/Adminhtml/NewsletterController.php CHANGED
@@ -127,6 +127,7 @@ class Bronto_Newsletter_Adminhtml_NewsletterController extends Mage_Adminhtml_Co
127
  }
128
 
129
  // Create Subscriber
 
130
  Mage::getModel('bronto_newsletter/queue')->getContactRow($subscriber['subscriber_id'], $subscriber['store_id'])
131
  ->setStatus($status)
132
  ->setSubscriberEmail($subscriber['subscriber_email'])
@@ -134,6 +135,8 @@ class Bronto_Newsletter_Adminhtml_NewsletterController extends Mage_Adminhtml_Co
134
  ->setSource('api')
135
  ->setImported(0)
136
  ->setBrontoSuppressed(null)
 
 
137
  ->save();
138
 
139
  $imported++;
127
  }
128
 
129
  // Create Subscriber
130
+ $now = Mage::getSingleton('core/date')->gmtDate();
131
  Mage::getModel('bronto_newsletter/queue')->getContactRow($subscriber['subscriber_id'], $subscriber['store_id'])
132
  ->setStatus($status)
133
  ->setSubscriberEmail($subscriber['subscriber_email'])
135
  ->setSource('api')
136
  ->setImported(0)
137
  ->setBrontoSuppressed(null)
138
+ ->setCreatedAt($now)
139
+ ->setUpdatedAt($now)
140
  ->save();
141
 
142
  $imported++;
app/code/community/Bronto/Newsletter/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Bronto_Newsletter>
5
- <version>1.4.6</version>
6
  </Bronto_Newsletter>
7
  </modules>
8
  <global>
@@ -34,6 +34,7 @@
34
  <bronto_newsletter_setup>
35
  <setup>
36
  <module>Bronto_Newsletter</module>
 
37
  </setup>
38
  <connection>
39
  <use>core_setup</use>
@@ -92,7 +93,7 @@
92
  <default>
93
  <bronto_newsletter>
94
  <settings>
95
- <enabled>1</enabled>
96
  <mage_cron>1</mage_cron>
97
  <frequency>D</frequency>
98
  <interval>15</interval>
2
  <config>
3
  <modules>
4
  <Bronto_Newsletter>
5
+ <version>1.4.7</version>
6
  </Bronto_Newsletter>
7
  </modules>
8
  <global>
34
  <bronto_newsletter_setup>
35
  <setup>
36
  <module>Bronto_Newsletter</module>
37
+ <class>Bronto_Newsletter_Model_Resource_Setup</class>
38
  </setup>
39
  <connection>
40
  <use>core_setup</use>
93
  <default>
94
  <bronto_newsletter>
95
  <settings>
96
+ <enabled>0</enabled>
97
  <mage_cron>1</mage_cron>
98
  <frequency>D</frequency>
99
  <interval>15</interval>
app/code/community/Bronto/Newsletter/sql/bronto_newsletter_setup/mysql4-install-1.4.7.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Mage_Core_Model_Resource_Setup */
5
+
6
+ $installer->startSetup();
7
+
8
+ try {
9
+ $installer->run("
10
+ DROP TABLE IF EXISTS `{$this->getTable('bronto_newsletter_queue')}`;
11
+
12
+ CREATE TABLE `{$this->getTable('bronto_newsletter_queue')}` (
13
+ `queue_id` int(11) NOT NULL AUTO_INCREMENT,
14
+ `subscriber_id` int(11) NOT NULL,
15
+ `store` tinyint(4) NOT NULL,
16
+ `status` varchar(32) CHARACTER SET utf8 NOT NULL,
17
+ `message_preference` varchar(16) CHARACTER SET utf8 NOT NULL,
18
+ `source` varchar(16) CHARACTER SET utf8 NOT NULL,
19
+ `imported` tinyint(4) NOT NULL DEFAULT '0',
20
+ `created_at` timestamp NULL DEFAULT NULL COMMENT 'Created At',
21
+ `updated_at` timestamp NULL DEFAULT NULL COMMENT 'Updated At',
22
+ `subscriber_email` varchar(255) CHARACTER SET utf8 NOT NULL,
23
+ `bronto_suppressed` varchar(255) DEFAULT NULL,
24
+ PRIMARY KEY (`subscriber_id`,`store`),
25
+ KEY `IDX_BRONTO_NEWSLETTER_QUEUE_QUEUE_ID` (`queue_id`)
26
+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
27
+ ");
28
+
29
+ } catch (Exception $e) {
30
+ throw new RuntimeException('Failed Creating Newsletter Queue Table: ' . $e->getMessage());
31
+ }
32
+
33
+ try {
34
+ // Populate New Table
35
+ $installer->run("
36
+ INSERT IGNORE INTO `{$this->getTable('bronto_newsletter_queue')}`
37
+ (
38
+ SELECT
39
+ NULL,
40
+ `newsletter`.`subscriber_id`,
41
+ `newsletter`.`store_id`,
42
+ IF(`newsletter`.`subscriber_status` = 1, 'active', IF(`newsletter`.`subscriber_status` = 2, 'transactional', 'unsub')),
43
+ 'html',
44
+ 'api',
45
+ 0,
46
+ `newsletter`.`change_status_at`,
47
+ `newsletter`.`change_status_at`,
48
+ `newsletter`.`subscriber_email`,
49
+ null
50
+ FROM `{$this->getTable('newsletter_subscriber')}` `newsletter`
51
+ WHERE NOT EXISTS(
52
+ SELECT 1 FROM `{$this->getTable('bronto_newsletter_queue')}` `queue` WHERE
53
+ `queue`.`subscriber_id`=`newsletter`.`subscriber_id` OR
54
+ `queue`.`subscriber_email`=`newsletter`.`subscriber_email`
55
+ ));
56
+ ");
57
+ } catch (Exception $e) {
58
+ throw new RuntimeException('Failed Populating Newsletter Queue Table: ' . $e->getMessage());
59
+ }
60
+
61
+ $installer->endSetup();
app/code/community/Bronto/Newsletter/sql/bronto_newsletter_setup/mysql4-upgrade-1.4.5-1.4.6.php CHANGED
@@ -27,4 +27,4 @@ try {
27
  throw new RuntimeException('Failed Modifying Table: ' . $e->getMessage());
28
  }
29
 
30
- $installer->endSetup();
27
  throw new RuntimeException('Failed Modifying Table: ' . $e->getMessage());
28
  }
29
 
30
+ $installer->endSetup();
app/code/community/Bronto/Newsletter/sql/bronto_newsletter_setup/mysql4-upgrade-1.4.6-1.4.7.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+
5
+ $installer->startSetup();
6
+
7
+ try {
8
+ $installer->removeListsInDefaultScope();
9
+ } catch (Exception $e) {
10
+ Mage::helper('bronto_email')->writeError('Failed to update core data table: ' . $e->getMessage());
11
+ }
12
+
13
+ $installer->endSetup();
app/code/community/Bronto/Order/Helper/Data.php CHANGED
@@ -46,11 +46,6 @@ class Bronto_Order_Helper_Data extends Bronto_Common_Helper_Data implements Bron
46
  */
47
  public function isEnabled($scope = 'default', $scopeId = 0)
48
  {
49
- // Check if valid token is present
50
- if (!$this->validApiToken(null, $scope, $scopeId)) {
51
- return false;
52
- }
53
-
54
  // Get Enabled Scope
55
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
56
  }
46
  */
47
  public function isEnabled($scope = 'default', $scopeId = 0)
48
  {
 
 
 
 
 
49
  // Get Enabled Scope
50
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
51
  }
app/code/community/Bronto/Order/Model/Observer.php CHANGED
@@ -142,6 +142,9 @@ class Bronto_Order_Model_Observer
142
  case Mage_Sales_Model_Order::STATE_HOLDED:
143
  case Mage_Sales_Model_Order::STATE_CLOSED:
144
  $brontoOrder->delete();
 
 
 
145
  break;
146
 
147
  default:
@@ -224,6 +227,17 @@ class Bronto_Order_Model_Observer
224
  /* @var $product Mage_Catalog_Model_Product */
225
  $product = Mage::getModel('catalog/product')->setStoreId($storeId)->load($item->getProductId());
226
 
 
 
 
 
 
 
 
 
 
 
 
227
  // If there is a parent product, use that to get category ids
228
  if ($parent) {
229
  $categoryIds = $parent->getCategoryIds();
@@ -249,7 +263,7 @@ class Bronto_Order_Model_Observer
249
  'id' => $item->getId(),
250
  'sku' => $item->getSku(),
251
  'name' => $item->getName(),
252
- 'description' => $productHelper->getProductAttribute($item->getProductId(), $descriptionAttr),
253
  'category' => implode(' ', $categories),
254
  'image' => $this->_helper->getItemImg($item, $product, $storeId),
255
  'url' => $this->_helper->getItemUrl($item, $product, $storeId),
142
  case Mage_Sales_Model_Order::STATE_HOLDED:
143
  case Mage_Sales_Model_Order::STATE_CLOSED:
144
  $brontoOrder->delete();
145
+ $orderRow
146
+ ->setBrontoImported(Mage::getSingleton('core/date')->gmtDate())
147
+ ->save();
148
  break;
149
 
150
  default:
227
  /* @var $product Mage_Catalog_Model_Product */
228
  $product = Mage::getModel('catalog/product')->setStoreId($storeId)->load($item->getProductId());
229
 
230
+ // If the product type is simple and the description
231
+ // is empty, then attempt to find a parent product
232
+ // to backfill the description.
233
+ if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_SIMPLE && !$product->getData($descriptionAttr)) {
234
+ $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
235
+ if (isset($parentIds[0])) {
236
+ $parentProduct = Mage::getModel('catalog/product')->setStoreId($storeId)->load($parentIds[0]);
237
+ $product->setData($descriptionAttr, $parentProduct->getData($descriptionAttr));
238
+ }
239
+ }
240
+
241
  // If there is a parent product, use that to get category ids
242
  if ($parent) {
243
  $categoryIds = $parent->getCategoryIds();
263
  'id' => $item->getId(),
264
  'sku' => $item->getSku(),
265
  'name' => $item->getName(),
266
+ 'description' => $product->getData($descriptionAttr),
267
  'category' => implode(' ', $categories),
268
  'image' => $this->_helper->getItemImg($item, $product, $storeId),
269
  'url' => $this->_helper->getItemUrl($item, $product, $storeId),
app/code/community/Bronto/Order/Model/Queue.php CHANGED
@@ -34,7 +34,7 @@ class Bronto_Order_Model_Queue extends Mage_Core_Model_Abstract
34
 
35
  // Add Filters
36
  if (($quoteId > 0) && ($orderId > 0)) {
37
- $collection->getSelect()->where("`quote_id` = $quoteId OR `order_id` = $orderId");
38
  } elseif (($quoteId > 0)) {
39
  $collection->addFieldToFilter('quote_id', $quoteId);
40
  } elseif (($orderId > 0)) {
@@ -148,4 +148,4 @@ class Bronto_Order_Model_Queue extends Mage_Core_Model_Abstract
148
  return $result;
149
  }
150
 
151
- }
34
 
35
  // Add Filters
36
  if (($quoteId > 0) && ($orderId > 0)) {
37
+ $collection->getSelect()->where("`quote_id` = $quoteId AND `order_id` = $orderId");
38
  } elseif (($quoteId > 0)) {
39
  $collection->addFieldToFilter('quote_id', $quoteId);
40
  } elseif (($orderId > 0)) {
148
  return $result;
149
  }
150
 
151
+ }
app/code/community/Bronto/Reminder/Helper/Data.php CHANGED
@@ -69,11 +69,6 @@ class Bronto_Reminder_Helper_Data extends Bronto_Common_Helper_Data implements B
69
  */
70
  public function isEnabled($scope = 'default', $scopeId = 0)
71
  {
72
- // Check if valid token is present
73
- if (!$this->validApiToken(null, $scope, $scopeId)) {
74
- return false;
75
- }
76
-
77
  // Get Enabled Scope
78
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
79
  }
69
  */
70
  public function isEnabled($scope = 'default', $scopeId = 0)
71
  {
 
 
 
 
 
72
  // Get Enabled Scope
73
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
74
  }
app/code/community/Bronto/Reminder/Model/Email/Message.php CHANGED
@@ -16,6 +16,14 @@ class Bronto_Reminder_Model_Email_Message extends Bronto_Common_Model_Email_Temp
16
  */
17
  protected $_apiLogFile = 'bronto_reminder_api.log';
18
 
 
 
 
 
 
 
 
 
19
  /**
20
  * Log about the functionality of sending the email before it goes out
21
  *
16
  */
17
  protected $_apiLogFile = 'bronto_reminder_api.log';
18
 
19
+ /**
20
+ * @see parent
21
+ */
22
+ protected function _emailClass()
23
+ {
24
+ return 'bronto_reminder/email_message';
25
+ }
26
+
27
  /**
28
  * Log about the functionality of sending the email before it goes out
29
  *
app/code/community/Bronto/Reviews/Helper/Data.php CHANGED
@@ -18,6 +18,16 @@ class Bronto_Reviews_Helper_Data
18
  const XML_PATH_SENDER_NAME = 'bronto_reviews/settings/sender_name';
19
  const XML_PATH_REPLY_TO = 'bronto_reviews/settings/reply_to';
20
 
 
 
 
 
 
 
 
 
 
 
21
  /**
22
  * Check if module is enabled
23
  *
@@ -28,11 +38,6 @@ class Bronto_Reviews_Helper_Data
28
  */
29
  public function isEnabled($scope = 'default', $scopeId = 0)
30
  {
31
- // Check if valid token is present
32
- if (!$this->validApiToken(null, $scope, $scopeId)) {
33
- return false;
34
- }
35
-
36
  // Get Enabled Scope
37
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
38
  }
@@ -133,9 +138,14 @@ class Bronto_Reviews_Helper_Data
133
  public function getReviewsUrl($product, $storeId = null)
134
  {
135
  $url = Mage::getModel('core/url')->setStore($storeId);
136
- return $url->getUrl('review/product/list', array(
137
- 'id' => $product->getId()
138
- ));
 
 
 
 
 
139
  }
140
 
141
  /**
18
  const XML_PATH_SENDER_NAME = 'bronto_reviews/settings/sender_name';
19
  const XML_PATH_REPLY_TO = 'bronto_reviews/settings/reply_to';
20
 
21
+ /**
22
+ * Gets the canonical name for the Bronto Review module
23
+ *
24
+ * @return string
25
+ */
26
+ public function getName()
27
+ {
28
+ return 'Bronto Reviews';
29
+ }
30
+
31
  /**
32
  * Check if module is enabled
33
  *
38
  */
39
  public function isEnabled($scope = 'default', $scopeId = 0)
40
  {
 
 
 
 
 
41
  // Get Enabled Scope
42
  return (bool)$this->getAdminScopedConfig(self::XML_PATH_ENABLED, $scope, $scopeId);
43
  }
138
  public function getReviewsUrl($product, $storeId = null)
139
  {
140
  $url = Mage::getModel('core/url')->setStore($storeId);
141
+ $params = array('id' => $product->getId());
142
+ if ($product->getCategoryId()) {
143
+ $params['category'] = $product->getCategoryId();
144
+ } else {
145
+ $categoryId = end($product->getCategoryIds());
146
+ $params['category'] = $categoryId;
147
+ }
148
+ return $url->getUrl('review/product/list', $params);
149
  }
150
 
151
  /**
app/code/community/Bronto/Reviews/Model/Observer.php CHANGED
@@ -347,7 +347,7 @@ class Bronto_Reviews_Model_Observer
347
 
348
  // Cycle through order items and create fields
349
  $productInc = 1;
350
- foreach ($order->getAllItems() as $item) {
351
  // Get Store ID from Order
352
  $storeId = $order->getStoreId();
353
 
347
 
348
  // Cycle through order items and create fields
349
  $productInc = 1;
350
+ foreach ($order->getAllVisibleItems() as $item) {
351
  // Get Store ID from Order
352
  $storeId = $order->getStoreId();
353
 
app/code/community/Bronto/Verify/Block/Adminhtml/System/Config/Form/Magecron.php CHANGED
@@ -20,6 +20,8 @@ class Bronto_Verify_Block_Adminhtml_System_Config_Form_Magecron
20
  $html = "<tr><td>&nbsp;</td>
21
  <td id=\"bronto-magecron-example\" colspan=\"3\"><strong style=\"margin:5px;\">To setup the cron script, you will need to add a command to your crontab file. Here are some examples:</strong>
22
  <div style=\"border:1px solid #ccc; padding:5px; margin:5px;\">
 
 
23
  <strong>To run the Reminder Cron every 15 minutes:</strong>
24
  <pre>*/15 * * * * root /usr/bin/php /var/www/magento/shell/bronto/cron.php -a run -t reminder</pre>
25
  <strong>To run the Order Import Cron once Daily at Midnight:</strong>
20
  $html = "<tr><td>&nbsp;</td>
21
  <td id=\"bronto-magecron-example\" colspan=\"3\"><strong style=\"margin:5px;\">To setup the cron script, you will need to add a command to your crontab file. Here are some examples:</strong>
22
  <div style=\"border:1px solid #ccc; padding:5px; margin:5px;\">
23
+ <strong>To run the API Retry Cron every 2 minutes:</strong>
24
+ <pre>*/2 * * * * rot /usr/bin/php /var/www/magento/shell/bronto/cron.php -a run -t api</pre>
25
  <strong>To run the Reminder Cron every 15 minutes:</strong>
26
  <pre>*/15 * * * * root /usr/bin/php /var/www/magento/shell/bronto/cron.php -a run -t reminder</pre>
27
  <strong>To run the Order Import Cron once Daily at Midnight:</strong>
app/code/community/Bronto/Verify/Block/Adminhtml/System/Config/Installs.php CHANGED
@@ -32,6 +32,7 @@ class Bronto_Verify_Block_Adminhtml_System_Config_Installs
32
  'bronto_newsletter',
33
  'bronto_customer',
34
  'bronto_order',
 
35
  'bronto_reminder',
36
  'bronto_email',
37
  );
32
  'bronto_newsletter',
33
  'bronto_customer',
34
  'bronto_order',
35
+ 'bronto_reviews',
36
  'bronto_reminder',
37
  'bronto_email',
38
  );
app/code/community/Bronto/Verify/Helper/Data.php CHANGED
@@ -17,16 +17,6 @@ class Bronto_Verify_Helper_Data
17
  */
18
  const XML_PATH_ROUNDTRIP_ROOT = 'bronto_verify/settings/';
19
 
20
- const XML_PATH_SOAP_CLIENT = 'bronto_verify/soap_options/soap_client';
21
- const XML_PATH_SOAP_STREAM_CONTEXT = 'bronto_verify/soap_options/stream_context';
22
- const XML_PATH_SOAP_RETRY_LIMIT = 'bronto_verify/soap_options/retry_limit';
23
- const XML_PATH_SOAP_CONNECTION_TIMEOUT = 'bronto_verify/soap_options/connection_timeout';
24
- const XML_PATH_SOAP_TRACE = 'bronto_verify/soap_options/trace';
25
- const XML_PATH_SOAP_EXCEPTIONS = 'bronto_verify/soap_options/exceptions';
26
- const XML_PATH_WSDL_CACHE = 'bronto_verify/soap_options/wsdl_cache';
27
-
28
- const DEFAULT_SOAP_CLIENT = 'Bronto_SoapClient';
29
-
30
  /**
31
  * Module Human Readable Name
32
  */
@@ -68,111 +58,6 @@ class Bronto_Verify_Helper_Data
68
  return self::XML_PATH_ROUNDTRIP_ROOT . $pathend;
69
  }
70
 
71
- /**
72
- * Get SOAP Options
73
- *
74
- * @return array
75
- */
76
- public function getSoapOptions()
77
- {
78
- // Return Default Options
79
- return array(
80
- 'soap_client' => $this->getSoapClient(),
81
- 'retry_limit' => $this->getSoapRetryLimit(),
82
- 'connection_timeout' => $this->getSoapConnectionTimeout(),
83
- 'trace' => $this->getSoapTrace(),
84
- 'exceptions' => $this->getSoapExceptions(),
85
- 'cache_wsdl' => $this->getSoapCacheWsdl(),
86
- 'debug' => $this->isDebugEnabled(),
87
- );
88
- }
89
-
90
- /**
91
- * Override the Bronto_SoapCLient class name
92
- *
93
- * @return string
94
- */
95
- public function getSoapClient()
96
- {
97
- $class = $this->getAdminScopedConfig(self::XML_PATH_SOAP_CLIENT);
98
- if (empty($class)) {
99
- $class = self::DEFAULT_SOAP_CLIENT;
100
- }
101
- if (
102
- $this->isStreamContextOverride() &&
103
- $class == self::DEFAULT_SOAP_CLIENT
104
- ) {
105
- $class = 'Bronto_Common_Model_SoapClient';
106
- }
107
- return $class;
108
- }
109
-
110
- /**
111
- * Override the default Soap client with the stream context override
112
- *
113
- * @return bool
114
- */
115
- public function isStreamContextOverride()
116
- {
117
- return (bool)$this->getAdminScopedConfig(self::XML_PATH_SOAP_STREAM_CONTEXT);
118
- }
119
-
120
- /**
121
- * Get Config Value for SOAP Retry Limit
122
- *
123
- * @return int
124
- */
125
- public function getSoapRetryLimit()
126
- {
127
- return (int)$this->getAdminScopedConfig(self::XML_PATH_SOAP_RETRY_LIMIT);
128
- }
129
-
130
- /**
131
- * Get Config Value for SOAP Connection Timeout
132
- *
133
- * @return int
134
- */
135
- public function getSoapConnectionTimeout()
136
- {
137
- return (int)$this->getAdminScopedConfig(self::XML_PATH_SOAP_CONNECTION_TIMEOUT);
138
- }
139
-
140
- /**
141
- * Get Config Value for SOAP Trace
142
- *
143
- * @return bool
144
- */
145
- public function getSoapTrace()
146
- {
147
- return (bool)$this->getAdminScopedConfig(self::XML_PATH_SOAP_TRACE) == '1';
148
- }
149
-
150
- /**
151
- * Get Config Value for SOAP Exceptions
152
- *
153
- * @return bool
154
- */
155
- public function getSoapExceptions()
156
- {
157
- return (bool)$this->getAdminScopedConfig(self::XML_PATH_SOAP_EXCEPTIONS) == '1';
158
- }
159
-
160
- public function getSoapCacheWsdl()
161
- {
162
- $cacheWsdl = $this->getAdminScopedConfig(self::XML_PATH_WSDL_CACHE);
163
- switch ($cacheWsdl) {
164
- case 'WSDL_CACHE_NONE':
165
- return WSDL_CACHE_NONE;
166
- case 'WSDL_CACHE_DISK':
167
- return WSDL_CACHE_DISK;
168
- case 'WSDL_CACHE_MEMORY':
169
- return WSDL_CACHE_MEMORY;
170
- case 'WSDL_CACHE_BOTH':
171
- default:
172
- return WSDL_CACHE_BOTH;
173
- }
174
- }
175
-
176
  /**
177
  * Set the value of a setting
178
  *
17
  */
18
  const XML_PATH_ROUNDTRIP_ROOT = 'bronto_verify/settings/';
19
 
 
 
 
 
 
 
 
 
 
 
20
  /**
21
  * Module Human Readable Name
22
  */
58
  return self::XML_PATH_ROUNDTRIP_ROOT . $pathend;
59
  }
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  /**
62
  * Set the value of a setting
63
  *
app/code/community/Bronto/Verify/Model/Contact/Builder.php CHANGED
@@ -27,7 +27,7 @@ class Bronto_Verify_Model_Contact_Builder
27
  *
28
  * @access public
29
  */
30
- public function __construct(Bronto_Common_Model_Api $api)
31
  {
32
  $this->_api = $api;
33
  }
27
  *
28
  * @access public
29
  */
30
+ public function __construct(Bronto_Api $api)
31
  {
32
  $this->_api = $api;
33
  }
app/code/community/Bronto/Verify/etc/config.xml CHANGED
@@ -68,15 +68,6 @@
68
  <files>644</files>
69
  <exclude>app/etc, mage, pear, media, var, errors, build, .git, .svn, shell, pkginfo, includes</exclude>
70
  </permissionchecker>
71
- <soap_options>
72
- <soap_client>Bronto_SoapClient</soap_client>
73
- <stream_context>0</stream_context>
74
- <retry_limit>2</retry_limit>
75
- <trace>0</trace>
76
- <exceptions>1</exceptions>
77
- <connection_timeout>30</connection_timeout>
78
- <cache_wsdl>WSDL_CACHE_BOTH</cache_wsdl>
79
- </soap_options>
80
  </bronto_verify>
81
  </default>
82
 
68
  <files>644</files>
69
  <exclude>app/etc, mage, pear, media, var, errors, build, .git, .svn, shell, pkginfo, includes</exclude>
70
  </permissionchecker>
 
 
 
 
 
 
 
 
 
71
  </bronto_verify>
72
  </default>
73
 
app/code/community/Bronto/Verify/etc/system.xml CHANGED
@@ -11,7 +11,7 @@
11
  <config>
12
  <sections>
13
  <bronto_verify translate="label" module="bronto_verify">
14
- <label><![CDATA[<div id="bronto_verify_icon_block">Advanced</div>]]></label>
15
  <tab>bronto</tab>
16
  <sort_order>900</sort_order>
17
  <show_in_default>1</show_in_default>
@@ -28,35 +28,6 @@
28
  <show_in_store>1</show_in_store>
29
  </about>
30
  <!-- API Token Verification -->
31
- <apitoken>
32
- <label>API Status</label>
33
- <frontend_type>text</frontend_type>
34
- <sort_order>20</sort_order>
35
- <show_in_default>1</show_in_default>
36
- <show_in_website>1</show_in_website>
37
- <show_in_store>1</show_in_store>
38
- <expanded>1</expanded>
39
- <fields>
40
- <token_status>
41
- <label>Last API Token Status</label>
42
- <frontend_type>text</frontend_type>
43
- <frontend_model>bronto_verify/adminhtml_system_config_form_field_apitoken</frontend_model>
44
- <sort_order>10</sort_order>
45
- <show_in_default>1</show_in_default>
46
- <show_in_website>1</show_in_website>
47
- <show_in_store>1</show_in_store>
48
- </token_status>
49
- <roundtrip_status>
50
- <label>Last API Connection Status</label>
51
- <frontend_type>text</frontend_type>
52
- <frontend_model>bronto_verify/adminhtml_system_config_form_field_roundtrip</frontend_model>
53
- <sort_order>11</sort_order>
54
- <show_in_default>1</show_in_default>
55
- <show_in_website>0</show_in_website>
56
- <show_in_store>0</show_in_store>
57
- </roundtrip_status>
58
- </fields>
59
- </apitoken>
60
  <installs>
61
  <label>Install Status</label>
62
  <frontend_type>text</frontend_type>
@@ -68,7 +39,7 @@
68
  <expanded>0</expanded>
69
  </installs>
70
  <advanced>
71
- <label>Advanced Debugging</label>
72
  <frontend_type>text</frontend_type>
73
  <!--<frontend_model>bronto_verify/adminhtml_system_config_advanced</frontend_model>-->
74
  <sort_order>30</sort_order>
@@ -219,6 +190,16 @@
219
  <![CDATA[This section is provided as an Advanced Option for handling the Cron processes for the Bronto Extension Modules. If you find that the Magento cron management system fails to trigger the cron processes for these modules, you may utilize the cron.php file provided with this extension. Simply set the 'Use Magento Cron' setting to 'No' for any modules you wish, click 'Save Config', and then follow the Cron configuration details below to set up the external cron.]]></comment>
220
  <expanded>0</expanded>
221
  <fields>
 
 
 
 
 
 
 
 
 
 
222
  <bronto_customer-settings-mage_cron>
223
  <label>Contact Import: Use Magento Cron</label>
224
  <frontend_type>select</frontend_type>
@@ -261,94 +242,6 @@
261
  </bronto_reminder-settings-mage_cron>
262
  </fields>
263
  </cron_settings>
264
- <soap_options>
265
- <label>SOAP Options</label>
266
- <frontend_type>text</frontend_type>
267
- <sort_order>55</sort_order>
268
- <show_in_default>1</show_in_default>
269
- <show_in_website>0</show_in_website>
270
- <show_in_store>0</show_in_store>
271
- <expanded>0</expanded>
272
- <fields>
273
- <soap_client>
274
- <label>SOAP class</label>
275
- <frontend_type>text</frontend_type>
276
- <sort_order>5</sort_order>
277
- <show_in_default>1</show_in_default>
278
- <show_in_website>0</show_in_website>
279
- <show_in_store>0</show_in_store>
280
- <comment><![CDATA[Overrides the Bronto_SoapClient class.<br/>
281
- <em>* Provided class name must be available via
282
- Magento's autoloader.</em>]]></comment>
283
- </soap_client>
284
- <stream_context>
285
- <label>Use Stream Context</label>
286
- <frontend_type>select</frontend_type>
287
- <source_model>adminhtml/system_config_source_yesno</source_model>
288
- <sort_order>6</sort_order>
289
- <show_in_default>1</show_in_default>
290
- <show_in_website>0</show_in_website>
291
- <show_in_store>0</show_in_store>
292
- <comment><![CDATA[Replace the SSL stream context for the
293
- underlying SOAP client.<br/><em>* Use this option if you
294
- are experiencing errors related to SSL or reaching
295
- the Bronto API WSDL.</em>]]></comment>
296
- </stream_context>
297
- <retry_limit>
298
- <label>Retry Limit</label>
299
- <frontend_type>text</frontend_type>
300
- <sort_order>10</sort_order>
301
- <show_in_default>1</show_in_default>
302
- <show_in_website>0</show_in_website>
303
- <show_in_store>0</show_in_store>
304
- <validate>validate-digits validate-digits-range digits-range-0-5</validate>
305
- <comment><![CDATA[The number of times the SOAP client will attempt to retry API call. Must be between 0 and 5.<br />Default: 2]]>
306
- </comment>
307
- </retry_limit>
308
- <connection_timeout>
309
- <label>Connection Timeout</label>
310
- <frontend_type>text</frontend_type>
311
- <sort_order>20</sort_order>
312
- <show_in_default>1</show_in_default>
313
- <show_in_website>0</show_in_website>
314
- <show_in_store>0</show_in_store>
315
- <validate>validate-digits validate-digits-range digits-range-0-3600</validate>
316
- <comment><![CDATA[The number of seconds the SOAP client will wait before attempting to retry the API call. Must be between 0 and 3600.<br />
317
- Default: 30]]>
318
- </comment>
319
- </connection_timeout>
320
- <trace>
321
- <label>Trace</label>
322
- <frontend_type>select</frontend_type>
323
- <source_model>adminhtml/system_config_source_yesno</source_model>
324
- <sort_order>30</sort_order>
325
- <show_in_default>1</show_in_default>
326
- <show_in_website>0</show_in_website>
327
- <show_in_store>0</show_in_store>
328
- <comment><![CDATA[If <em>Yes</em>, the SOAP client will trace its call.<br />Default: <em>No</em>]]></comment>
329
- </trace>
330
- <exceptions>
331
- <label>Exceptions</label>
332
- <frontend_type>select</frontend_type>
333
- <source_model>adminhtml/system_config_source_yesno</source_model>
334
- <sort_order>40</sort_order>
335
- <show_in_default>1</show_in_default>
336
- <show_in_website>0</show_in_website>
337
- <show_in_store>0</show_in_store>
338
- <comment><![CDATA[If <em>Yes</em>, the SOAP client will throw exceptions on failure.<br />Default: <em>Yes</em>]]></comment>
339
- </exceptions>
340
- <cache_wsdl>
341
- <label>WSDL Cache</label>
342
- <frontend_type>select</frontend_type>
343
- <source_model>bronto_verify/system_config_source_wsdlcache</source_model>
344
- <sort_order>50</sort_order>
345
- <show_in_default>1</show_in_default>
346
- <show_in_website>0</show_in_website>
347
- <show_in_store>0</show_in_store>
348
- <comment><![CDATA[If <em>Yes</em>, the SOAP client will cache the WSDL.<br />Default: <em>WSDL_CACHE_BOTH</em>]]></comment>
349
- </cache_wsdl>
350
- </fields>
351
- </soap_options>
352
  </groups>
353
  </bronto_verify>
354
  </sections>
11
  <config>
12
  <sections>
13
  <bronto_verify translate="label" module="bronto_verify">
14
+ <label><![CDATA[<div id="bronto_verify_icon_block">Admin Tools</div>]]></label>
15
  <tab>bronto</tab>
16
  <sort_order>900</sort_order>
17
  <show_in_default>1</show_in_default>
28
  <show_in_store>1</show_in_store>
29
  </about>
30
  <!-- API Token Verification -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  <installs>
32
  <label>Install Status</label>
33
  <frontend_type>text</frontend_type>
39
  <expanded>0</expanded>
40
  </installs>
41
  <advanced>
42
+ <label>Classpath Inspection</label>
43
  <frontend_type>text</frontend_type>
44
  <!--<frontend_model>bronto_verify/adminhtml_system_config_advanced</frontend_model>-->
45
  <sort_order>30</sort_order>
190
  <![CDATA[This section is provided as an Advanced Option for handling the Cron processes for the Bronto Extension Modules. If you find that the Magento cron management system fails to trigger the cron processes for these modules, you may utilize the cron.php file provided with this extension. Simply set the 'Use Magento Cron' setting to 'No' for any modules you wish, click 'Save Config', and then follow the Cron configuration details below to set up the external cron.]]></comment>
191
  <expanded>0</expanded>
192
  <fields>
193
+ <bronto_api-settings-mage_cron>
194
+ <label>API Retry: Use Magento Cron</label>
195
+ <frontend_type>select</frontend_type>
196
+ <source_model>adminhtml/system_config_source_yesno</source_model>
197
+ <backend_model>bronto_verify/system_config_backend_magecron</backend_model>
198
+ <sort_order>0</sort_order>
199
+ <show_in_default>1</show_in_default>
200
+ <show_in_website>0</show_in_website>
201
+ <show_in_store>0</show_in_store>
202
+ </bronto_api-settings-mage_cron>
203
  <bronto_customer-settings-mage_cron>
204
  <label>Contact Import: Use Magento Cron</label>
205
  <frontend_type>select</frontend_type>
242
  </bronto_reminder-settings-mage_cron>
243
  </fields>
244
  </cron_settings>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  </groups>
246
  </bronto_verify>
247
  </sections>
app/design/adminhtml/default/default/layout/bronto/common.xml CHANGED
@@ -13,6 +13,7 @@
13
  <action method="setTemplate">
14
  <template>bronto/common/guiders.phtml</template>
15
  </action>
 
16
  <block type="bronto_common/adminhtml_system_config_guide" name="bronto_common.adminhtml.guide" as="bronto_common_guide" template="bronto/common/guide.phtml" />
17
  <block type="bronto_common/adminhtml_system_config_guide" name="bronto_customer.adminhtml.guide" as="bronto_customer_guide" template="bronto/customer/guide.phtml" />
18
  <block type="bronto_common/adminhtml_system_config_guide" name="bronto_email.adminhtml.guide" as="bronto_email_guide" template="bronto/email/guide.phtml" />
13
  <action method="setTemplate">
14
  <template>bronto/common/guiders.phtml</template>
15
  </action>
16
+ <block type="bronto_common/adminhtml_system_config_guide" name="bronto_api.adminhtml.guide" as="bronto_api_guide" template="bronto/api/guide.phtml" />
17
  <block type="bronto_common/adminhtml_system_config_guide" name="bronto_common.adminhtml.guide" as="bronto_common_guide" template="bronto/common/guide.phtml" />
18
  <block type="bronto_common/adminhtml_system_config_guide" name="bronto_customer.adminhtml.guide" as="bronto_customer_guide" template="bronto/customer/guide.phtml" />
19
  <block type="bronto_common/adminhtml_system_config_guide" name="bronto_email.adminhtml.guide" as="bronto_email_guide" template="bronto/email/guide.phtml" />
app/design/adminhtml/default/default/template/bronto/api/guide.phtml ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php /* @var $this Bronto_Common_Block_Adminhtml_System_Config_Guide */ ?>
2
+
3
+ <?php if ($this->isBrontoSection('bronto_api')): ?>
4
+
5
+ <?php if (!Mage::helper('bronto_common/api')->isEnabled()): ?>
6
+ /**
7
+ * Introduce them to the guide and provide instructions
8
+ */
9
+ guiders.createGuider({
10
+ buttons: [
11
+ {name: "<?php echo $this->__("Let's Get Started!") ?>", onclick: guiders.next},
12
+ {name: "<?php echo $this->__('No Thanks') ?>", onclick: guiders.hideAll}
13
+ ],
14
+ buttonCustomHTML: dontShowButtonHtml,
15
+ description: "<?php echo $this->__(
16
+ 'The Advanced API is where you can customize the API error retry interval, ' .
17
+ 'check your API Token validity and connection, ' .
18
+ 'and customize you API client.' .
19
+ '%sReady to Go?%s',
20
+ '<br /><br /><div style=\"text-align:right; font-weight:bold;\">',
21
+ '</div>'
22
+ ) ?>",
23
+ id: "start",
24
+ next: "bronto_api-enable",
25
+ overlay: true,
26
+ closeOnEscape: true,
27
+ title: "Bronto Extension - <?php echo $this->__('Advanced API') ?>",
28
+ width: 600
29
+ });
30
+
31
+ /**
32
+ * Enable the Module
33
+ */
34
+ guiders.createGuider({
35
+ attachTo: '#bronto_api_settings_enabled',
36
+ buttons: [
37
+ {name: "<?php echo $this->__('Back') ?>"},
38
+ {name: "<?php echo $this->__('Next') ?>", onclick: function() {
39
+ if (jQuery('#bronto_api_settings_enabled').val() == '1') {
40
+ guiders.next();
41
+ } else {
42
+ alert("<?php echo $this->__("Do not forget to enable the module") ?>");
43
+ }
44
+ }},
45
+ {name: "<?php echo $this->__('Close') ?>"}
46
+ ],
47
+ autoFocus: true,
48
+ closeOnEscape: true,
49
+ highlight: '#bronto_customer_settings_enabled',
50
+ description: "<?php echo $this->__("Enable the API retry and expose some more options. Just set `Enable API Retry` to Yes and click `Save Config`.") ?>",
51
+ id: "bronto_api-enable",
52
+ next: "bronto_api-configure_cron",
53
+ position: 11,
54
+ overlay: true,
55
+ title: "<?php echo $this->__('Enable API Retry') ?>",
56
+ width: 200
57
+ });
58
+
59
+ /**
60
+ * Configure Cron
61
+ */
62
+ guiders.createGuider({
63
+ attachTo: '#bronto_api_settings',
64
+ buttons: [
65
+ {name: "<?php echo $this->__('Back') ?>"},
66
+ {name: "<?php echo $this->__('Next') ?>"},
67
+ {name: "<?php echo $this->__('Close') ?>"}
68
+ ],
69
+ autoFocus: true,
70
+ closeOnEscape: true,
71
+ description: "<?php echo $this->__('These options allow you to configure the cron schedule and retry process.') ?>",
72
+ id: "bronto_api-configure_cron",
73
+ next: "bronto_api-save_config_first",
74
+ position: 10,
75
+ title: "<?php echo $this->__('Configure the Cron') ?>",
76
+ width: 200
77
+ });
78
+
79
+ /**
80
+ * Save Configuration
81
+ */
82
+ guiders.createGuider({
83
+ attachTo: 'button.save',
84
+ buttons: [
85
+ {name: "<?php echo $this->__('Back') ?>"},
86
+ {name: "<?php echo $this->__('Save Config') ?>", onclick: function() {
87
+ configForm.submit()
88
+ }},
89
+ {name: "<?php echo $this->__('Close') ?>"}
90
+ ],
91
+ autoFocus: true,
92
+ closeOnEscape: true,
93
+ highlight: 'button.save',
94
+ description: "<?php echo $this->__('Now that the initial settings have been configured, you should save them. Click `Save Config` now.') ?>",
95
+ id: "bronto_api-save_config_first",
96
+ next: "final",
97
+ position: 5,
98
+ overlay: true,
99
+ title: "<?php echo $this->__('Save Config') ?>"
100
+ });
101
+
102
+ <?php else: ?>
103
+
104
+ /**
105
+ * Continue Guide now that module is enabled
106
+ */
107
+ guiders.createGuider({
108
+ buttons: [
109
+ {name: "<?php echo $this->__('Continue with Guide') ?>", onclick: guiders.next},
110
+ {name: "<?php echo $this->__('No Thanks') ?>", onclick: guiders.hideAll}
111
+ ],
112
+ buttonCustomHTML: dontShowButtonHtml,
113
+ description: "<?php echo $this->__(
114
+ 'The Advanced API is where you can customize the API error retry interval, ' .
115
+ 'check your API Token validity and connection, ' .
116
+ 'and customize you API client.' .
117
+ '%sReady to Go?%s',
118
+ '<br /><br /><div style=\"text-align:right; font-weight:bold;\">',
119
+ '</div>'
120
+ ) ?>",
121
+ id: "start",
122
+ next: "bronto_api-api_status",
123
+ overlay: true, closeOnEscape: true,
124
+ title: "Bronto Extension - <?php echo $this->__('Advanced API'); ?>",
125
+ width: 600
126
+ });
127
+
128
+ /**
129
+ * Explain API Status
130
+ */
131
+ guiders.createGuider({
132
+ attachTo: '#bronto_api_apitoken-head',
133
+ buttons: [
134
+ {name: "<?php echo $this->__('Back') ?>"},
135
+ {name: "<?php echo $this->__('Next') ?>"},
136
+ {name: "<?php echo $this->__('Close') ?>"}
137
+ ],
138
+ autoFocus: true, closeOnEscape: true,
139
+ description: "<?php echo $this->__('This is where you can verify the status of the API Token and the API Connection. Just click the `Verify Now` button to the right of each one to update the status.') ?>",
140
+ id: "bronto_api-api_status",
141
+ next: "bronto_api-mage_cron",
142
+ position: 9,
143
+ title: "<?php echo $this->__('API Status') ?>",
144
+ width: 200
145
+ });
146
+
147
+ /**
148
+ * Explain Using Magento Cron
149
+ */
150
+ <?php $advancedCronLink = $this->helper('bronto_common')->getScopeUrl('/system_config/edit/section/bronto_verify'); ?>
151
+ guiders.createGuider({
152
+ attachTo: '#row_bronto_api_settings_mage_cron',
153
+ buttons: [
154
+ {name: "<?php echo $this->__('Back') ?>"},
155
+ {name: "<?php echo $this->__('Next') ?>"},
156
+ {name: "<?php echo $this->__('Close') ?>"}
157
+ ],
158
+ autoFocus: true, closeOnEscape: true,
159
+ description: "<?php echo $this->__('The `Use Magento Cron` setting, when set to No, allows you to create your own crontab entry on your server instead of using Magento\'s cron system. You should only change this if you are experiencing issues where the cron job for this module fails to run due to too many jobs.%sYou can find more details under the %s, including examples of how to configure the cron job.', '<br /><br />', '<a href=\"' . $advancedCronLink . '\" title=\"Advanced &raquo; Cron Settings\">Advanced Tab</a>') ?>",
160
+ id: "bronto_api-mage_cron",
161
+ next: "bronto_api-attempt_threshold",
162
+ position: 10,
163
+ title: "<?php echo $this->__('Cron Options') ?>",
164
+ width: 200
165
+ });
166
+
167
+ /**
168
+ * Explain email capture
169
+ */
170
+ guiders.createGuider({
171
+ attachTo: '#row_bronto_api_settings_threshold',
172
+ buttons: [
173
+ {name: "<?php echo $this->__('Back') ?>"},
174
+ {name: "<?php echo $this->__('Next') ?>"},
175
+ {name: "<?php echo $this->__('Close') ?>"}
176
+ ],
177
+ autoFocus: true, closeOnEscape: true,
178
+ description: "<?php echo $this->__("The Attempt Threshold setting allows you to grab entries that have failed less than the specified number. These are attempts that failed upon later retrying the call.") ?>",
179
+ id: "bronto_api-attempt_threshold",
180
+ next: "bronto_api-cron_table",
181
+ position: 10,
182
+ title: "<?php echo $this->__('Attempt Threshold') ?>",
183
+ width: 200
184
+ });
185
+
186
+
187
+ /**
188
+ * Cron Table
189
+ */
190
+ guiders.createGuider({
191
+ attachTo: '.bronto-cron-table',
192
+ buttons: [
193
+ {name: "<?php echo $this->__('Back') ?>"},
194
+ {name: "<?php echo $this->__('Next') ?>"},
195
+ {name: "<?php echo $this->__('Close') ?>"}
196
+ ],
197
+ autoFocus: true,
198
+ closeOnEscape: true,
199
+ highlight: '.bronto-cron-table',
200
+ overlay: true,
201
+ description: "<?php echo $this->__('This table shows you the recent history of the Cron Jobs that are pending, running, have successfully completed, or have failed upon execution.') ?>",
202
+ id: "bronto_api-cron_table",
203
+ next: "bronto_api-soap_options",
204
+ position: 10,
205
+ title: "<?php echo $this->__('Cron Table') ?>",
206
+ width: 200
207
+ });
208
+
209
+ /**
210
+ * Explain SOAP Config Section
211
+ */
212
+ guiders.createGuider({
213
+ attachTo: '#bronto_api_soap_options-head',
214
+ shouldSkip: function() {
215
+ return <?php echo ($this->isDefaultScope()) ? 'false' : 'true'; ?>
216
+ },
217
+ buttons: [
218
+ {name: "<?php echo $this->__('Back') ?>"},
219
+ {name: "<?php echo $this->__('Next') ?>"},
220
+ {name: "<?php echo $this->__('Close') ?>"}
221
+ ],
222
+ autoFocus: true, closeOnEscape: true,
223
+ onShow: function() { sectionOpen('#bronto_api_soap_options-head'); },
224
+ onHide: function() { sectionClose('#bronto_api_soap_options-head'); },
225
+ description: "<?php echo $this->__('The SOAP Options section allows you to customize SOAP client settings that are specific to your system.') ?>",
226
+ id: "bronto_api-soap_options",
227
+ next: "final",
228
+ position: 9,
229
+ title: "<?php echo $this->__('SOAP Options') ?>",
230
+ width: 200
231
+ });
232
+
233
+ <?php endif; ?>
234
+
235
+ <?php if($this->canShowGuide()): ?>
236
+ guiders.show('start');
237
+ <?php endif; ?>
238
+
239
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bronto/common/about.phtml CHANGED
@@ -42,11 +42,11 @@
42
  <p style="line-height:16px;">
43
  <strong style="color: #666; font-size:14px">Get Support</strong>
44
  <br/>
45
- <a href="<?php echo $this->getModuleNamespace() != 'bronto_common' ? $this->getUrl("*/system_config/edit", array('section' => 'bronto')) : ''; ?>#bronto_information-head">Learn Next Steps</a>
46
  </p>
47
  </div>
48
  <div style="float:right; padding-left:5px">
49
- <a href="<?php echo $this->getModuleNamespace() != 'bronto_common' ? $this->getUrl("*/system_config/edit", array('section' => 'bronto')) : ''; ?>#bronto_information-head"><img src="<?php echo $this->getSkinUrl('bronto/images/support.png'); ?>" alt="Need Help? Get Support"/></a>
50
  </div>
51
  </div>
52
  <?php endif; ?>
42
  <p style="line-height:16px;">
43
  <strong style="color: #666; font-size:14px">Get Support</strong>
44
  <br/>
45
+ <a href="<?php echo $this->getSection() != 'bronto' ? $this->getUrl("*/system_config/edit", array('section' => 'bronto')) : ''; ?>#bronto_information-head">Learn Next Steps</a>
46
  </p>
47
  </div>
48
  <div style="float:right; padding-left:5px">
49
+ <a href="<?php echo $this->getSection() != 'bronto' ? $this->getUrl("*/system_config/edit", array('section' => 'bronto')) : ''; ?>#bronto_information-head"><img src="<?php echo $this->getSkinUrl('bronto/images/support.png'); ?>" alt="Need Help? Get Support"/></a>
50
  </div>
51
  </div>
52
  <?php endif; ?>
app/design/adminhtml/default/default/template/bronto/common/cron.phtml CHANGED
@@ -4,8 +4,8 @@
4
  <?php if ($this->hasProgressBar()): ?>
5
  <?php echo $this->getProgressBarHtml(); ?>
6
  <?php endif; ?>
7
- <?php if ($this->showCronTable()): ?>
8
  <?php echo $this->getButtonsHtml(); ?>
 
9
  <table width="100%" cellpadding="0" cellspacing="0" border="0" class="bronto-cron-table data">
10
  <thead>
11
  <tr class="">
4
  <?php if ($this->hasProgressBar()): ?>
5
  <?php echo $this->getProgressBarHtml(); ?>
6
  <?php endif; ?>
 
7
  <?php echo $this->getButtonsHtml(); ?>
8
+ <?php if ($this->showCronTable()): ?>
9
  <table width="100%" cellpadding="0" cellspacing="0" border="0" class="bronto-cron-table data">
10
  <thead>
11
  <tr class="">
app/design/adminhtml/default/default/template/bronto/verify/guide.phtml CHANGED
@@ -12,39 +12,20 @@
12
  ],
13
  buttonCustomHTML: dontShowButtonHtml,
14
  description: "<?php echo $this->__(
15
- 'The Advanced module is here as a helpful troubleshooting resource. ' .
16
- 'This page allows you, among other things, to check your API Token validity and connection, ' .
17
  'see any configuration conflicts between any other installed modules, and ensure your files all have the correct permissions to run correctly and securely.' .
18
  '%sReady to Go?%s',
19
  '<br /><br /><div style=\"text-align:right; font-weight:bold;\">',
20
  '</div>'
21
  ) ?>",
22
  id: "start",
23
- next: "bronto_verify-api_status",
24
  overlay: true, closeOnEscape: true,
25
- title: "Bronto Extension - <?php echo $this->__('Advanced Module') ?>",
26
  width: 600
27
  });
28
 
29
- /**
30
- * Explain API Status
31
- */
32
- guiders.createGuider({
33
- attachTo: '#bronto_verify_apitoken-head',
34
- buttons: [
35
- {name: "<?php echo $this->__('Back') ?>"},
36
- {name: "<?php echo $this->__('Next') ?>"},
37
- {name: "<?php echo $this->__('Close') ?>"}
38
- ],
39
- autoFocus: true, closeOnEscape: true,
40
- description: "<?php echo $this->__('This is where you can verify the status of the API Token and the API Connection. Just click the `Verify Now` button to the right of each one to update the status.') ?>",
41
- id: "bronto_verify-api_status",
42
- next: "bronto_verify-install_status",
43
- position: 9,
44
- title: "<?php echo $this->__('API Status') ?>",
45
- width: 200
46
- });
47
-
48
  /**
49
  * Explain Install Status
50
  */
@@ -82,11 +63,11 @@
82
  autoFocus: true, closeOnEscape: true,
83
  onShow: function() { sectionOpen('#bronto_verify_advanced-head'); },
84
  onHide: function() { sectionClose('#bronto_verify_advanced-head'); },
85
- description: "<?php echo $this->__('The Advanced Debugging section provides functionality for identifying observers of events and file paths for classes.') ?>",
86
  id: "bronto_verify-advanced",
87
  next: "bronto_verify-conflict_checker",
88
  position: 9,
89
- title: "<?php echo $this->__('Advanced Debugging') ?>",
90
  width: 200
91
  });
92
 
@@ -224,33 +205,9 @@
224
  '<br /><br/><em>',
225
  '</em>') ?>",
226
  id: "bronto_verify-cron_examples",
227
- next: "bronto_verify-soap_options",
228
- position: 9,
229
- title: "<?php echo $this->__('Crontab Examples') ?>",
230
- width: 200
231
- });
232
-
233
- /**
234
- * Explain SOAP Config Section
235
- */
236
- guiders.createGuider({
237
- attachTo: '#bronto_verify_soap_options-head',
238
- shouldSkip: function() {
239
- return <?php echo ($this->isDefaultScope()) ? 'false' : 'true'; ?>
240
- },
241
- buttons: [
242
- {name: "<?php echo $this->__('Back') ?>"},
243
- {name: "<?php echo $this->__('Next') ?>"},
244
- {name: "<?php echo $this->__('Close') ?>"}
245
- ],
246
- autoFocus: true, closeOnEscape: true,
247
- onShow: function() { sectionOpen('#bronto_verify_soap_options-head'); },
248
- onHide: function() { sectionClose('#bronto_verify_soap_options-head'); },
249
- description: "<?php echo $this->__('The SOAP Options section allows you to customize SOAP client settings that are specific to your system.') ?>",
250
- id: "bronto_verify-soap_options",
251
  next: "final",
252
  position: 9,
253
- title: "<?php echo $this->__('SOAP Options') ?>",
254
  width: 200
255
  });
256
 
12
  ],
13
  buttonCustomHTML: dontShowButtonHtml,
14
  description: "<?php echo $this->__(
15
+ 'The Admin Tools module is here as a helpful troubleshooting resource. ' .
16
+ 'This page allows you, among other things, ' .
17
  'see any configuration conflicts between any other installed modules, and ensure your files all have the correct permissions to run correctly and securely.' .
18
  '%sReady to Go?%s',
19
  '<br /><br /><div style=\"text-align:right; font-weight:bold;\">',
20
  '</div>'
21
  ) ?>",
22
  id: "start",
23
+ next: "bronto_verify-install_status",
24
  overlay: true, closeOnEscape: true,
25
+ title: "Bronto Extension - <?php echo $this->__('Admin Tools') ?>",
26
  width: 600
27
  });
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /**
30
  * Explain Install Status
31
  */
63
  autoFocus: true, closeOnEscape: true,
64
  onShow: function() { sectionOpen('#bronto_verify_advanced-head'); },
65
  onHide: function() { sectionClose('#bronto_verify_advanced-head'); },
66
+ description: "<?php echo $this->__('The Classpath Inspection section provides functionality for identifying observers of events and file paths for classes.') ?>",
67
  id: "bronto_verify-advanced",
68
  next: "bronto_verify-conflict_checker",
69
  position: 9,
70
+ title: "<?php echo $this->__('Classpath Inspection') ?>",
71
  width: 200
72
  });
73
 
205
  '<br /><br/><em>',
206
  '</em>') ?>",
207
  id: "bronto_verify-cron_examples",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208
  next: "final",
209
  position: 9,
210
+ title: "<?php echo $this->__('Crontab Examples') ?>",
211
  width: 200
212
  });
213
 
lib/Bronto/Api.php CHANGED
@@ -37,6 +37,7 @@ class Bronto_Api
37
  'type' => null,
38
  'path' => null,
39
  ),
 
40
  // SoapClient
41
  'soap_version' => SOAP_1_1,
42
  'compression' => true,
@@ -76,6 +77,11 @@ class Bronto_Api
76
  */
77
  protected $_uuid;
78
 
 
 
 
 
 
79
  /**
80
  * @param string $token
81
  * @param array $options
@@ -116,11 +122,20 @@ class Bronto_Api
116
  // Get a new SoapClient
117
  $this->reset();
118
  $client = $this->getSoapClient(false);
119
- $sessionId = $client->login(array('apiToken' => $token))->return;
120
- $client->__setSoapHeaders(array(
121
- new SoapHeader(self::BASE_URL, 'sessionHeader', array('sessionId' => $sessionId))
122
- ));
123
- $this->_authenticated = true;
 
 
 
 
 
 
 
 
 
124
  } catch (Exception $e) {
125
  $this->throwException($e);
126
  }
@@ -128,6 +143,22 @@ class Bronto_Api
128
  return $this;
129
  }
130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  /**
132
  * We want all Exceptions to be Bronto_Api_Exception for request/response
133
  *
@@ -162,6 +193,11 @@ class Bronto_Api
162
  $exception->setResponse($this->getLastResponse());
163
  }
164
 
 
 
 
 
 
165
  throw $exception;
166
  }
167
 
@@ -504,6 +540,13 @@ class Bronto_Api
504
  if (!($this->_retryer instanceOf Bronto_Util_Retryer_RetryerInterface)) {
505
  $options = array_merge($this->_options['retryer'], $options);
506
  switch ($options['type']) {
 
 
 
 
 
 
 
507
  case 'file':
508
  $this->_retryer = new Bronto_Util_Retryer_FileRetryer($options);
509
  break;
@@ -516,6 +559,27 @@ class Bronto_Api
516
  return $this->_retryer;
517
  }
518
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
519
  /**
520
  * @return Bronto_Util_Retryer_RetryerInterface
521
  */
37
  'type' => null,
38
  'path' => null,
39
  ),
40
+ 'observer' => false,
41
  // SoapClient
42
  'soap_version' => SOAP_1_1,
43
  'compression' => true,
77
  */
78
  protected $_uuid;
79
 
80
+ /**
81
+ * @var Bronto_Observer
82
+ */
83
+ protected $_observer;
84
+
85
  /**
86
  * @param string $token
87
  * @param array $options
122
  // Get a new SoapClient
123
  $this->reset();
124
  $client = $this->getSoapClient(false);
125
+ // Allow observer to inject a session before login
126
+ if ($this->getObserver()) {
127
+ $this->getObserver()->onBeforeLogin($this);
128
+ }
129
+ // Check for auth changes
130
+ if (!$this->isAuthenticated()) {
131
+ $sessionId = $client->login(array('apiToken' => $token))->return;
132
+ $this->setSessionId($sessionId);
133
+
134
+ // Allow observer to store session
135
+ if ($this->getObserver()) {
136
+ $this->getObserver()->onAfterLogin($this, $sessionId);
137
+ }
138
+ }
139
  } catch (Exception $e) {
140
  $this->throwException($e);
141
  }
143
  return $this;
144
  }
145
 
146
+ /**
147
+ * Resuse an existing session, if possible
148
+ *
149
+ * @param string $sessionId
150
+ * @return Bronto_Api
151
+ */
152
+ public function setSessionId($sessionId)
153
+ {
154
+ $client = $this->getSoapClient(false);
155
+ $client->__setSoapHeaders(array(
156
+ new SoapHeader(self::BASE_URL, 'sessionHeader', array('sessionId' => $sessionId))
157
+ ));
158
+ $this->_authenticated = true;
159
+ return $this;
160
+ }
161
+
162
  /**
163
  * We want all Exceptions to be Bronto_Api_Exception for request/response
164
  *
193
  $exception->setResponse($this->getLastResponse());
194
  }
195
 
196
+ // Allow observer to handle exception cases
197
+ if ($this->getObserver()) {
198
+ $this->getObserver()->onError($this, $exception);
199
+ }
200
+
201
  throw $exception;
202
  }
203
 
540
  if (!($this->_retryer instanceOf Bronto_Util_Retryer_RetryerInterface)) {
541
  $options = array_merge($this->_options['retryer'], $options);
542
  switch ($options['type']) {
543
+ case 'custom':
544
+ if ($options['object']) {
545
+ $this->_retryer = $options['object'];
546
+ } else {
547
+ $this->_retryer = new $options['path'];
548
+ }
549
+ break;
550
  case 'file':
551
  $this->_retryer = new Bronto_Util_Retryer_FileRetryer($options);
552
  break;
559
  return $this->_retryer;
560
  }
561
 
562
+ /**
563
+ * Gets the observer for the API client
564
+ *
565
+ * @return Bronto_Observer
566
+ */
567
+ public function getObserver()
568
+ {
569
+ if (!$this->_observer) {
570
+ if (isset($this->_options['observer'])) {
571
+ $observer = $this->_options['observer'];
572
+ if (is_string($observer) && class_exists($observer)) {
573
+ $observer = new $observer();
574
+ }
575
+ if ($observer instanceOf Bronto_Observer) {
576
+ $this->_observer = $observer;
577
+ }
578
+ }
579
+ }
580
+ return $this->_observer;
581
+ }
582
+
583
  /**
584
  * @return Bronto_Util_Retryer_RetryerInterface
585
  */
lib/Bronto/Api/Login.php CHANGED
@@ -28,14 +28,6 @@ class Bronto_Api_Login extends Bronto_Api_Object
28
  */
29
  public function readAll(array $filter = array(), $pageNumber = 1)
30
  {
31
- if (empty($filter)) {
32
- $filter = array(
33
- 'username' => array(
34
- 'operator' => 'StartsWith',
35
- 'value' => ''
36
- ),
37
- );
38
- }
39
 
40
  $params = array();
41
  $params['filter'] = $filter;
28
  */
29
  public function readAll(array $filter = array(), $pageNumber = 1)
30
  {
 
 
 
 
 
 
 
 
31
 
32
  $params = array();
33
  $params['filter'] = $filter;
lib/Bronto/Api/Object.php CHANGED
@@ -350,7 +350,7 @@ abstract class Bronto_Api_Object
350
  return $this->getApi()->throwException($exception);
351
  } else {
352
  // Attempt to get a new session token
353
- sleep(5);
354
  $this->getApi()->login();
355
  // If using readDirection, we have to start over
356
  if (isset($data['filter']['readDirection'])) {
350
  return $this->getApi()->throwException($exception);
351
  } else {
352
  // Attempt to get a new session token
353
+ // sleep(5);
354
  $this->getApi()->login();
355
  // If using readDirection, we have to start over
356
  if (isset($data['filter']['readDirection'])) {
lib/Bronto/Observer.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @author Philip Cali <philip.cali@bronto.com>
5
+ * @copyright 2011-2014 Bronto Software, Inc.
6
+ * @license http://opensource.org/licenses/OSL-3.0 Open Software License v. 3.0 (OSL-3.0)
7
+ */
8
+ interface Bronto_Observer
9
+ {
10
+ /**
11
+ * Observe when the Bronto_Api is about to perform the login
12
+ *
13
+ * @param Bronto_Api $api
14
+ * @return void
15
+ */
16
+ public function onBeforeLogin($api);
17
+
18
+ /**
19
+ * Observe when the Bronto_Api client makes a login call
20
+ *
21
+ * @param Bronto_Api $api
22
+ * @param string $sessionId
23
+ * @return void
24
+ */
25
+ public function onAfterLogin($api, $sessionId);
26
+
27
+ /**
28
+ * Observe when the Bronto_Api client throws an exception
29
+ *
30
+ * @param Bronto_Api $api
31
+ * @param string $sessionId
32
+ * @return void
33
+ */
34
+ public function onError($api, $exception);
35
+ }
lib/Bronto/SoapClient.php CHANGED
@@ -14,12 +14,13 @@ class Bronto_SoapClient extends SoapClient
14
  */
15
  public function __doRequest($request, $location, $action, $version, $one_way = 0) {
16
  $result = parent::__doRequest($request, $location, $action, $version);
17
-
18
  // Only replace unicode characters if PCRE version is less than 8.30
19
- if (version_compare(strstr(constant('PCRE_VERSION'), ' ', true), '8.30', '<')) {
 
 
20
  $result = preg_replace('/[\x{0}-\x{8}\x{B}-\x{C}\x{E}-\x{1F}\x{D800}-\x{DFFF}]/u', '', $result);
21
  }
22
-
23
  return $result;
24
  }
25
  }
14
  */
15
  public function __doRequest($request, $location, $action, $version, $one_way = 0) {
16
  $result = parent::__doRequest($request, $location, $action, $version);
17
+
18
  // Only replace unicode characters if PCRE version is less than 8.30
19
+ $parts = explode(' ', constant('PCRE_VERSION'));
20
+ $version = reset($parts);
21
+ if (version_compare($version, '8.30', '<')) {
22
  $result = preg_replace('/[\x{0}-\x{8}\x{B}-\x{C}\x{E}-\x{1F}\x{D800}-\x{DFFF}]/u', '', $result);
23
  }
 
24
  return $result;
25
  }
26
  }
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Bronto_Extension</name>
4
- <version>2.2.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
@@ -55,9 +55,9 @@
55
  &lt;p /&gt;Bronto Software provides a cloud-based marketing platform for retailers to drive revenue through their email, mobile and social campaigns. The platform is used by over 1000 organizations worldwide, including Party City, Armani Exchange, Timex, Samsonite and Gander Mountain. Bronto is a Gold Magento Industry Partner and the leading self-service email marketing provider to the Internet Retailer Top 1000. Bronto is headquartered in Durham, NC with an office in London, UK. For more information, visit &lt;a href="http://bronto.com"&gt;bronto.com&lt;/a&gt;.&lt;/p&gt;</description>
56
  <notes>&lt;p /&gt;For installation and configuration instructions, as well as a full list of new features and known issues, please review the &lt;a href="http://a.bron.to/magento"&gt;Implementation Guide&lt;/a&gt;.</notes>
57
  <authors><author><name>Chris Geiss</name><user>BrontoSoftware</user><email>chris.geiss@bronto.com</email></author></authors>
58
- <date>2014-01-15</date>
59
- <time>22:06:12</time>
60
- <contents><target name="magecommunity"><dir name="Bronto"><dir name="Common"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="ceee3ef00dcfde90f82ce80a5119ed56"/><file name="Cron.php" hash="ff26632f20d0474d45ae0549634b4f7c"/><dir name="Form"><dir name="Field"><file name="Apitoken.php" hash="48fe102c7d74b7646de1e256f87cfe87"/><file name="Debug.php" hash="6b3e65c774d25184e88c43e7364d68b4"/><file name="Download.php" hash="6521c641550b7c747632fe25dd5982ed"/><file name="Hidden.php" hash="c514ae120d4dced7b92ea30a13f0e4ea"/><file name="Image.php" hash="9de445fac8d262bb023f123d1e4df9e5"/><file name="List.php" hash="907853b5009661b6b63a3a2947fc9c59"/><dir name="Support"><file name="Site.php" hash="9e0b6acae1053a90a7513a3791ee258c"/></dir><file name="Support.php" hash="f680904d05213ec4d43726b714cf2b69"/></dir><file name="Field.php" hash="932af08da6e8dc20e74e97894b1a2518"/><file name="Fieldset.php" hash="a3d41e7bfc09bd81942c6f32bc1d1782"/></dir><file name="Guide.php" hash="57d6e0dba8502c73dea375ab5dde90ff"/><file name="Support.php" hash="be33bc95f1f713205dd11fb59598e166"/><file name="Suppressed.php" hash="5adada4485cc74566c512c4dbad8c8a0"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Abstract.php" hash="8c082611a7e4131c897ae9f2ed1d6dcf"/><file name="Debug.php" hash="e841017705d9b45a33e8475144ff0587"/><file name="Download.php" hash="78de702f642111af6feb725b4dd0bf08"/></dir></dir></dir><file name="Popup.php" hash="50c59a6fec4ca29059dbef3fd098ed7e"/></dir><dir name="Helper"><file name="Contact.php" hash="0b307ded3f9f80b03cc2db19a708b956"/><file name="Data.php" hash="df23f6c7098548b9cd691ab9a4906aec"/><file name="DataInterface.php" hash="d1691f590c315abd3178e769cf51fe2a"/><file name="Field.php" hash="7c208abd6c77057e1e400f6699be77df"/><file name="Message.php" hash="5484ec49ce8ab8fda12d9dc6c4c29c65"/><file name="Product.php" hash="f5a232304e59e0002dd8ee120c069165"/><file name="Salesrule.php" hash="32feae8429a684adcf8be798f42c16b8"/><file name="Support.php" hash="e047e410b5a1785ab33491504a80c2f7"/></dir><dir name="Model"><file name="Api.php" hash="2c859e611908ffb97029266ced7e0a00"/><file name="Archive.php" hash="b613e811bb673c72e6cec6770ed48fa5"/><dir name="Email"><dir name="Template"><file name="Filter.php" hash="e42e00829e0beb6c36a83d1d61c4364e"/><file name="Templatefilter.php" hash="c3acf3b4be3dcce490b1e07c0ab68e38"/></dir><file name="Template.php" hash="594cf887104378689cb8ce297a3e55fa"/></dir><file name="Keysentry.php" hash="ed1603a0954baaf716219d717e65f5b5"/><file name="Observer.php" hash="52f1b37530457d2280c2dd659a04aba9"/><dir name="Resource"><file name="Setup.php" hash="793a326c80af2420cd0511a9b65a6aa8"/></dir><file name="SoapClient.php" hash="040352adcc834e467caf0d953d1e14c5"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="1aa481a63198c64fafc90abe93166116"/><file name="Enable.php" hash="2b641958cfa59bd18992a8b92af99301"/><file name="Token.php" hash="1580a2ebd534155356515b0738a8cc77"/></dir><dir name="Source"><dir name="Contact"><file name="Status.php" hash="811a360bffa20b92d4a7bdea66a73168"/></dir><dir name="Cron"><file name="Frequency.php" hash="3ef5bda79548019f9a7cb2007c6792f5"/><file name="Minutes.php" hash="136df1bc4c4723efdbe144ed7a08806e"/></dir><file name="Field.php" hash="7a4660fbc812dca134b69b3cef76ea57"/><file name="Image.php" hash="acb902acd1f8573887ed9d5a00410467"/><file name="Limit.php" hash="8891685ce2b9c338c316d16a2ae69a8d"/><file name="List.php" hash="c9fd7581386bc33c09e0e6edfdead420"/><file name="Message.php" hash="01c7e9d489c1ed7f07f011d5c044805a"/><file name="Role.php" hash="5a55bad277b8723130035d79d6e5b98b"/><file name="Synclimit.php" hash="40a063f7d2ac5e1ad6a9bfa773b22863"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="DebugController.php" hash="2a1b69ab086340a58fd96278cea9e4c2"/><file name="GuidersController.php" hash="8eae4825b247191bd166224ac79ea655"/></dir><file name="LogController.php" hash="c7e65dec2943bb1b0575396290629fdc"/></dir><dir name="etc"><file name="adminhtml.xml" hash="e276d67ab1120f57b9e12b086dfc6939"/><file name="config.xml" hash="8c7302d9f345ee79e2143c9cbb2dedb8"/><file name="system.xml" hash="fc557d70d337b42c81377f2ac3f9dd07"/></dir><dir name="sql"><dir name="bronto_common_setup"><file name="mysql4-install-1.7.0.php" hash="c8459d26fdfea2fb9430e8829b3257e1"/></dir></dir></dir><dir name="Customer"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="bc63c93b5ff46fe2e6cb84a8c3249d12"/><file name="Cron.php" hash="159344d5cd5b0bb0a770e7fa4132a754"/><dir name="Form"><dir name="Field"><file name="Rewardpoints.php" hash="c1918f7478737dcfba6b543fa006a4bc"/><file name="Storecredit.php" hash="489625264fff9d5a37621f1b80203099"/></dir><dir name="Fieldset"><dir name="Attributes"><file name="Address.php" hash="7871298d7b7410d5202b436a1f536d7c"/><file name="Customer.php" hash="b0060f6c8c71ec321387aa8071a5c483"/></dir><file name="Attributes.php" hash="0a93bc89eea36b70908ef805a4627d93"/></dir></dir><file name="Suppressed.php" hash="a65d86c60db621d6d202cf64c02024f8"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Reset.php" hash="3dedc6caa0aab8f110a97df371c2187a"/><file name="Run.php" hash="2b6332568132b633a1ee208e8b555b5a"/><file name="Sync.php" hash="be611c057f18b5da9e31927fc1788365"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="c916f729596e33f3800db0af95eeee4d"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="5564536b725040d0652cba23e13e546e"/></dir><file name="Queue.php" hash="5aff6d99b2f3bf24cd2db7d0586f96ab"/><file name="Setup.php" hash="cb74c44bd42f407925a800fe3996d7a3"/></dir><file name="Observer.php" hash="a24b2383b13049cc73ebe8ce37eeea9b"/><file name="Queue.php" hash="7851ed2790e205473cf848c63a4f13a8"/><dir name="Resource"><file name="Customer.php" hash="86f081e728c9d9f22e28018406d9f601"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Brontofield.php" hash="8a765b6204672df4a8b15b547668a18b"/><file name="Cron.php" hash="44d12cea40d1342ad065bd4aad936193"/><file name="Newfield.php" hash="118d2622277e919e1f316f0713f5a2b7"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="CustomerController.php" hash="b6521bc4a03414027470ffef4afb736c"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="bb58fa0df1e07c2d88527fed1920ffc2"/><file name="config.xml" hash="e1a4673cdc939b1177c5ee2e8af678f6"/><file name="system.xml" hash="36c06af831397b32776ec1b96929dc0d"/></dir><dir name="sql"><dir name="bronto_customer_setup"><file name="mysql4-install-1.0.0.php" hash="871c225318588b2804a05751bce45e1f"/><file name="mysql4-install-1.0.3.php" hash="79785fb104491dcc4713e55495f24ba0"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="1c00e987c9a1b1da70ad035ccdef194b"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="144999a033695bd72601f1f0e10de5e3"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="6e3c57a1c9272aa4b2d7d051a24ed87f"/></dir></dir></dir><dir name="Email"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="ab71e0649d5af1fe64f665ada8895be9"/><file name="Settings.php" hash="59f952e7baeff59ef013a9f39572370e"/><dir name="Templates"><file name="Field.php" hash="0b4d17701e352b6c28cd5262d3cd8e0e"/><file name="Fieldset.php" hash="01fa6905eec117df32519c7e461e05f8"/><file name="Label.php" hash="fed0e19a1dde5592ba2efcc3aa6a2bba"/><file name="Sendtype.php" hash="d93029708ba002781e365cb0215022ce"/></dir><file name="Templates.php" hash="5811fe4b83f7dd5d6f0c7c78314cd31c"/></dir><dir name="Email"><dir name="Import"><file name="Edit.php" hash="32d4219613247ff59a59b5031284159c"/><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="e5f3203f05d2fbc577a3e7f3dd5d6341"/></dir></dir><file name="Grid.php" hash="40551a1c6c11247925d2557c8c3fafde"/></dir><file name="Import.php" hash="a2f378383faebc5c0fabcd46feb4d7e3"/><dir name="Log"><dir name="Grid"><dir name="Renderer"><file name="Customer.php" hash="ee83b754d1a91920a79918991aa76ca6"/><file name="Fields.php" hash="dc0d7cbd5065382ccf51ff3f84054563"/></dir></dir><file name="Grid.php" hash="591f4aefd4fa2f7b5f53653f0d7780a7"/></dir><file name="Log.php" hash="755439eace3c8e1f5ee3c657562c476d"/><dir name="Template"><dir name="Edit"><file name="Form.php" hash="47b8b4a1e40b262f7b1811549a177261"/></dir><file name="Edit.php" hash="434341b83714467f3ff904af3dad9462"/><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="543cf476631d073e4de5ec59f1faf5b5"/><file name="Storename.php" hash="c5111a20ed0b3aed0078cecb1ae3d739"/></dir></dir><file name="Grid.php" hash="da86503c8e244821b08d60a50dc8973a"/></dir><file name="Template.php" hash="438842fd68abaf060eb0d1da58f1a4d4"/></dir></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="60d8707e923f59ad7af130aa09557be0"/><file name="Data.php" hash="8abc5658f73a0f950fa5ea29a3d3bd00"/><file name="Field.php" hash="fc67415cbe73614fe0bbc29df7f93148"/><file name="Message.php" hash="7f5a80ce2a9a75324f8e5df9b3a318f4"/></dir><dir name="Model"><file name="Log.php" hash="1c9b060a801312c0b929806708a9ac1a"/><file name="Message.php" hash="02bf1f9bef1f4ce1909cc3d5c6331969"/><dir name="Mysql4"><dir name="Log"><file name="Collection.php" hash="0cc3245eea5df5ca8607fc4ca8aabf99"/></dir><file name="Log.php" hash="aef3718e6ea1de42152099aeb444782f"/><dir name="Message"><file name="Collection.php" hash="4ad21710a8a2c403e83dcf40ad6eda22"/></dir><file name="Message.php" hash="a9b3c7a226d91cc295c883dc3194129a"/><dir name="Template"><file name="Collection.php" hash="5883b37005fb3b13b35c8b4444af22e1"/></dir><file name="Template.php" hash="a5578e9f3b04d6876dde068a95caa2ef"/></dir><file name="Observer.php" hash="f906c3827a17d77d6d54d6d32557b507"/><dir name="Resource"><file name="Setup.php" hash="13613a00761323dcb331325cc991e0a5"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Templates"><file name="Field.php" hash="e6f28eb62a469792eb61ca1044aae764"/><file name="Sendtype.php" hash="18dadd39cdf47f6cdc95e168fe2012bc"/></dir><file name="Usebronto.php" hash="d9c1e9b77810c922b058d5f03f03b02e"/></dir><dir name="Source"><dir name="Email"><file name="Template.php" hash="82c55d7a5833b1de31e0ca92fcac9b11"/></dir><file name="Sendtype.php" hash="4cc496295bd5b4c2bf71eae9fd87f803"/></dir></dir></dir><dir name="Template"><file name="Import.php" hash="470f7276fefa8845abed6a98b74ce9e5"/><file name="Mailer.php" hash="b814a8f77ccfed075849c89cfb8be963"/></dir><file name="Template.php" hash="f13088f4294e01c9371c082f955b9608"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="System"><dir name="Email"><file name="LogController.php" hash="471e58f342857be6f023527c0a1d2981"/><file name="TemplateController.php" hash="8f0c04684a6f789b3af69ef22cc1bfb9"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="2343ec1b1ac91db90d522cd64e797aa6"/><file name="config.xml" hash="bf693e07df5a249c359157ad55ba0e11"/><file name="system.xml" hash="eed70edcf9317bbefa54606a35d73ca2"/></dir><dir name="sql"><dir name="bronto_email_setup"><file name="mysql4-install-1.0.0.php" hash="516265312ede986c1a35a19b9e5bbfea"/><file name="mysql4-install-1.0.2.php" hash="327ac219e947d608fbf9d3209dd03bab"/><file name="mysql4-install-1.0.5.php" hash="327ac219e947d608fbf9d3209dd03bab"/><file name="mysql4-install-1.0.8.php" hash="b572625c1380dfffe3b089275ac1dc7e"/><file name="mysql4-install-1.1.2.php" hash="2824a3ef8b9308e577c792398598e08c"/><file name="mysql4-install-1.1.7.php" hash="f49bc2913b1c2375499f21f2ac9727cd"/><file name="mysql4-install-1.1.8.php" hash="afa3c83fbfe45fc193a7eda4af6afacb"/><file name="mysql4-upgrade-1.0.0-1.0.2.php" hash="1f797c3f909d72219ef5d00017b10554"/><file name="mysql4-upgrade-1.0.2-1.0.5.php" hash="f2c83b65500d9df0fd10c2e6721f2bfe"/><file name="mysql4-upgrade-1.0.5-1.0.8.php" hash="cdbda7aa084e51b9b222c56e548462a6"/><file name="mysql4-upgrade-1.0.8-1.1.1.php" hash="f2c83b65500d9df0fd10c2e6721f2bfe"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="53cf783db35699cdc1fee692752fe8de"/><file name="mysql4-upgrade-1.1.2-1.1.7.php" hash="105868a6253471d3eeeea46c7af18aa9"/><file name="mysql4-upgrade-1.1.7-1.1.8.php" hash="0a4abaf8c787bf656e3163489eb5d29e"/></dir></dir></dir><dir name="Emailcapture"><dir name="Block"><file name="Emailcapture.php" hash="1c45388793ad609bd867c3a331bfb0c1"/></dir><dir name="Helper"><file name="Data.php" hash="4968f32e599a6fefe7b6876c486264ba"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="104fe48ab81aa32769c95aae1b4e4988"/></dir><file name="Queue.php" hash="97ad38464595ed8a25aee9148d703e51"/></dir><file name="Observer.php" hash="041d29358d884b6a4444200d3a6e6b00"/><file name="Queue.php" hash="943bb05d8b22578118b0cbad5ab11d27"/></dir><dir name="controllers"><file name="IndexController.php" hash="2162c4ce867cba627a66ba4c1b549e55"/></dir><dir name="etc"><file name="config.xml" hash="953a38982ad1ad62107558218b78d121"/><file name="system.xml" hash="7f748cfe607ca50519e51f8a9739feef"/></dir><dir name="sql"><dir name="bronto_emailcapture_setup"><file name="mysql4-install-1.0.0.php" hash="ff0cda179382b958d6a566963faae637"/></dir></dir></dir><dir name="News"><dir name="Block"><dir name="Adminhtml"><file name="ItemRender.php" hash="147c1b256abc1a3f0ffc9018d8af713d"/><file name="Redirect.php" hash="0b6928d1529e41c4e2ccc3a415e53bb8"/><dir name="System"><dir name="Config"><file name="About.php" hash="757f06422ff513218a9dfad2ff91cd0d"/><file name="Form.php" hash="853d55a3d7d5e73e87ae09f87f4764b9"/><file name="General.php" hash="8a19eee62442466ff28f23aa782e68c5"/><file name="News.php" hash="4fdda30cd100f4d1b57a74cb38a9b371"/><file name="Releases.php" hash="30f7b23081c69219473326620e6ccd06"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="79dd892352cda62c69ede789dcade61a"/></dir><dir name="Model"><file name="Item.php" hash="e3ce20de8f0422dcf00f389f5491e788"/><dir name="Mysql4"><dir name="Item"><file name="Collection.php" hash="6a79699559ffe750643c3f6da90d0280"/></dir><file name="Item.php" hash="bf9fae7b7e2241259dbdbe83623c3e6e"/></dir><file name="Observer.php" hash="236e8cec018d29f50c4aeff1f23f4880"/><dir name="Resource"><file name="Setup.php" hash="cb9d37d047d535b4928b279623283f30"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="AnnouncementController.php" hash="ca98e801e5503b04f4f60286e19edb2e"/></dir><file name="RouteController.php" hash="4819b7cab294e952238e2edb43a73c52"/></dir><dir name="etc"><file name="adminhtml.xml" hash="079a3f745967cc14906151cfcdc2c816"/><file name="config.xml" hash="590d56fb32cdb7460cbff22ab1bffa69"/><file name="system.xml" hash="ecd3a0edd0de407c85bb537a78c2380a"/></dir><dir name="sql"><dir name="bronto_news_setup"><file name="mysql4-install-1.0.0.php" hash="f574c4b2432334d0202d75ef71cb0006"/></dir></dir></dir><dir name="Newsletter"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b5d17d62df37034cd48ea3022e546724"/><file name="Cron.php" hash="bd4c2cee5118bd9209606cfd749c770e"/><file name="Suppressed.php" hash="1d2e716ce0b0a76ea67a56d6c62f65df"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Reset.php" hash="82ed841f4918675ed0419361f2b07b05"/><file name="Run.php" hash="21e4d1c9eb2c882b967c5de6def6a97b"/><file name="Sync.php" hash="89112c7b858e9031050bcba50527b4d7"/></dir></dir></dir><dir name="Checkout"><dir name="Onepage"><file name="Newsletter.php" hash="9f0a75670696375dbfdbbc8914e8d6ab"/></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="5d7b734ea79669d4d42e8d66fd986018"/><file name="Data.php" hash="38ef6f49f4e57cf65146df76ebddd5ac"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="b9c6858b2045ad66b7c331afba125d19"/></dir><file name="Queue.php" hash="4cf426f02c1e2889b77be9b6a105c91b"/></dir><file name="Observer.php" hash="1fd1fcc8d61d9ac7089f8ce8594fc66c"/><file name="Queue.php" hash="a9ef5813d95abcd1ee89a0372a0cfeb8"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="282c40a155af7ea22f646e931fdb6732"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="NewsletterController.php" hash="8aa691c84ce01ec6c30643221dd7713b"/></dir><file name="IndexController.php" hash="ca4d3ed37230b73dc9cb81b1cbb39928"/></dir><dir name="etc"><file name="adminhtml.xml" hash="b685d64860bf37a09330bd9f89f5bc3d"/><file name="config.xml" hash="ff2bb522a2124872e3cdea777afb9b96"/><file name="system.xml" hash="cf624f602a0f3eaac66c3e404a093573"/></dir><dir name="sql"><dir name="bronto_newsletter_setup"><file name="mysql4-install-1.0.0.php" hash="0f21d5315bbc4c27d0d38f9cf8c99bf3"/><file name="mysql4-install-1.4.0.php" hash="4a779a923947af258688d01143a16362"/><file name="mysql4-install-1.4.4.php" hash="089b40f9419c2fd21af62df207327a20"/><file name="mysql4-install-1.4.5.php" hash="8e97902e5e83992e678ba6144ed130b5"/><file name="mysql4-install-1.4.6.php" hash="74d29bc9655aeafa381ba5dc5f53df69"/><file name="mysql4-upgrade-1.4.0-1.4.1.php" hash="7eeba27e7b5480c8b502c3805554e2de"/><file name="mysql4-upgrade-1.4.1-1.4.2.php" hash="32f724b99d88e037ade72c8a9f1e0da7"/><file name="mysql4-upgrade-1.4.2-1.4.3.php" hash="63c728bb0cd7fa83bb5536d4500548f4"/><file name="mysql4-upgrade-1.4.3-1.4.4.php" hash="4f08a427c7706ea0988bcdcca6072218"/><file name="mysql4-upgrade-1.4.4-1.4.5.php" hash="c49018730275134d72f0802e1bc4da47"/><file name="mysql4-upgrade-1.4.5-1.4.6.php" hash="7b7a87099cc90f86e9b7e179345afaaa"/></dir></dir></dir><dir name="Order"><dir name="Block"><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><dir name="View"><dir name="Tab"><file name="Info.php" hash="4caacae5f31c84f898be5798cc85b7b7"/></dir></dir></dir></dir><dir name="System"><dir name="Config"><file name="About.php" hash="332c01d15a8b75f9add5988f35519135"/><file name="Cron.php" hash="ac79366d0bc9ad7ff74721d5b140e4ba"/><file name="Suppressed.php" hash="86af8a0b74f4f98e2a9b4d7ea08aa063"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Reset.php" hash="006ed5b9bc5adbf127fb542b0938fdda"/><file name="Run.php" hash="700e3f9645a9e25e56ae1deb6764bf44"/><file name="Sync.php" hash="2ff1bf077cc56b3620fe87a494d7f770"/></dir></dir></dir><file name="Bta.php" hash="2ec920ce5a6ea57aff16c8d9cf89f7e9"/></dir><dir name="Helper"><file name="Data.php" hash="8f0310074a406ea0a71aff430bf54cad"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="d041d29b798d10821e041c5b89fb5889"/></dir><file name="Queue.php" hash="2b0ba0993a43cc6856647684ac30add9"/><file name="Setup.php" hash="05b0a2d4806e712410479a3e7c709fd8"/></dir><file name="Observer.php" hash="a548f0af2674fa05a6d3a9b2a67482cb"/><dir name="Order"><file name="Observer.php" hash="5a05f37813b04968a2274098fdf8b1f7"/></dir><file name="Queue.php" hash="cfbafabe587cbd512a55c0c1b74dd461"/><dir name="Quote"><file name="Observer.php" hash="f7dba30d14388a0770c26750f382fa75"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="9bc2a90d644af8334aa22b952132b08f"/></dir><dir name="Source"><file name="Description.php" hash="7f497c17388c360f239e2aa90d943b9c"/><file name="Price.php" hash="283cc883ded57664870d89b22b547b19"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="OrderController.php" hash="9029b7316cf28467e03525000af880ad"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="784d322d920c63e63bed37c50e1c04d1"/><file name="config.xml" hash="57a8d0e86c320403b17676cf9de2eaca"/><file name="system.xml" hash="5333f04e2f8371c8ab7710ff42bea238"/></dir><dir name="sql"><dir name="bronto_order_setup"><file name="mysql4-install-1.0.0.php" hash="4988c452cc0d367f34e9c33df0d4256d"/><file name="mysql4-install-1.1.8.php" hash="afd415c7bb5a81b18c6705293f3978e6"/><file name="mysql4-upgrade-1.0.0-1.1.6.php" hash="0c42c6e3539b0f07c76b4f2c582d110f"/><file name="mysql4-upgrade-1.1.6-1.1.7.php" hash="7c4d2c1feed28b964ea82373e625a11f"/><file name="mysql4-upgrade-1.1.7-1.1.8.php" hash="ae58d4271deb9c60e61214020d46e755"/></dir></dir></dir><dir name="Reminder"><dir name="Block"><dir name="Adminhtml"><dir name="Delivery"><dir name="Grid"><dir name="Renderer"><file name="Customer.php" hash="be1537b58943a2cc27982deb03ec9e39"/><file name="Fields.php" hash="04f0dc7c4a24769cfc68f1508e0d338b"/></dir></dir><file name="Grid.php" hash="472fa8302dae712fbf9a6b6f5ea80dd0"/></dir><file name="Delivery.php" hash="b0bd1dcede57f8dad8ba4416b26d3986"/><dir name="Promo"><file name="Notice.php" hash="437ce674b25c14e33e17e09a0d471176"/></dir><dir name="Reminder"><dir name="Edit"><file name="Form.php" hash="2db520c0f438affbf477801ddde7f9cf"/><dir name="Tab"><file name="Bronto.php" hash="3b49a4f78038b8ac6de5390c2a73151d"/><file name="Conditions.php" hash="71d7c0a13352ec3d5b19b6bc059238bb"/><file name="Customers.php" hash="955c3e21ccc4a6e165abd38410383422"/><file name="General.php" hash="10012f0027d5ecf28a24ea84c2410be0"/></dir><file name="Tabs.php" hash="106e44febc4b6a7a3928c5dec68d6123"/></dir><file name="Edit.php" hash="783ca6f21744c56da930fd44ddc6e3a5"/><file name="Grid.php" hash="c87a852ef998ea17af709c0221abd15d"/></dir><file name="Reminder.php" hash="a55e63b29f9cafd9053696f60ffe993f"/><dir name="System"><dir name="Config"><file name="About.php" hash="8380b5e750fe0f2b5b95407c99d2e195"/><file name="Cron.php" hash="84100d0bffc2e16d84bc24577ba9c6bf"/><file name="Settings.php" hash="5d0042b1b2ad5df43856c0a68d63b3b4"/></dir></dir><dir name="Widget"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Email.php" hash="bcc3abd5bbbb5e8f6e19454850d2e8dd"/><file name="Id.php" hash="c35c0feeac92dce912bb8e3ad2cc7e6e"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="4b3e67cf3a0ce095ca454fe4513c6e89"/><file name="Data.php" hash="c14a1e11ca48b5e3946ed8a23bb68a8a"/><file name="Message.php" hash="b65f0a4095ab4671c57a26451b3cc524"/></dir><dir name="Model"><dir name="Condition"><file name="Abstract.php" hash="3e164c6f67c1ca26c0be533cd9fc1b0c"/><dir name="Combine"><file name="Abstract.php" hash="2a43ca00f8bc4ab36bc87654ad9c6191"/></dir></dir><file name="Delivery.php" hash="41c3912dc5b5cb28d828358c1e0f7bc4"/><dir name="Email"><file name="Message.php" hash="769eda570b37e8ca34610d9eff0c8992"/></dir><dir name="Mysql4"><dir name="Customer"><file name="Collection.php" hash="577bd12e2df9940fe551fe41c96133cf"/></dir><dir name="Delivery"><file name="Collection.php" hash="1247c3f58061d41f66ee6b9483c200ca"/></dir><file name="Delivery.php" hash="3639d2739b29734ba8aa8950e67e9621"/><dir name="Rule"><file name="Collection.php" hash="a99264c81d15780f305b02cde1564461"/></dir><file name="Rule.php" hash="9ab935ade0f74d53baad214ccfbeb670"/></dir><file name="Observer.php" hash="299bca8979d361a027fe4ac1598df2f4"/><dir name="Rule"><dir name="Condition"><dir name="Cart"><file name="Amount.php" hash="b1bd2bd9aabb863184461b0594dad9b0"/><file name="Attributes.php" hash="74cfde1032d8d75241f7522ddc12e11d"/><file name="Combine.php" hash="660f6842b8c1a5acff2c3b4f12fc73a9"/><file name="Couponcode.php" hash="84ef3ecb8bcd57412af80a0d137335bb"/><file name="Itemsquantity.php" hash="50eae47f28bf3660ee0684c9037f5bf8"/><file name="Sku.php" hash="12a7af32e16e21d2a2e4e157c469d1e5"/><file name="Storeview.php" hash="c2310efcb3060e91bf2aab73b0ac8ca9"/><file name="Subcombine.php" hash="c8ad5b2c46116793e2f2df17fe0862c0"/><file name="Subselection.php" hash="0142065f76b4e24ec75b6685eea82642"/><file name="Totalquantity.php" hash="8e492fb70a94549b8d6adbc50b2a4e50"/><file name="Virtual.php" hash="cd12a3218daf4a447b4fd49141101305"/></dir><file name="Cart.php" hash="8c259fbcb6e302e7b62bd9819d869b16"/><dir name="Combine"><file name="Root.php" hash="eb4b22b6554b507b61f3e6be30048b07"/></dir><file name="Combine.php" hash="2f15f1241aa71fd76bb511415c6882a3"/><dir name="Wishlist"><file name="Attributes.php" hash="0ecf162a2fc4225ce37de714da9e6210"/><file name="Combine.php" hash="279af17bec3eeb6a97243a93eb4e3f85"/><file name="Quantity.php" hash="8de8793029340cb8c813e0cf034f372d"/><file name="Sharing.php" hash="ad302122deb2065aa28b68748cfae492"/><file name="Storeview.php" hash="83716681ba30c6d4c48dada3a0973971"/><file name="Subcombine.php" hash="4804ad602e3cc622dbfcab4030dff1c2"/><file name="Subselection.php" hash="68d96f6943becdc728f2aa436a8ac4c7"/></dir><file name="Wishlist.php" hash="f5c474dd7b126d69a3e0f7000abd3a95"/></dir></dir><file name="Rule.php" hash="8912deab112d5789cd975b7907c0d4ea"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Allowsend.php" hash="61965e981ddd79976f0ee21b01e6a0ae"/><file name="Cron.php" hash="6e527885884985fca33236f40a7f3689"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="DeliveryController.php" hash="d4630eff20209e0d46b08a29b543979a"/><file name="RemindersController.php" hash="6cd60b0a9c33075640c5926d94a78405"/></dir><file name="LoadController.php" hash="16f4bf9c99a8e0bb0b369e75141f49b2"/></dir><dir name="etc"><file name="adminhtml.xml" hash="baaae901f8ff9d2ab12b0158ed5a4ca7"/><file name="config.xml" hash="47791bb04d1362ba39cd6ccff9eed0f7"/><file name="system.xml" hash="3304170025272a4d9cc96016230bc5af"/></dir><dir name="sql"><dir name="bronto_reminder_setup"><file name="mysql4-install-1.4.12.php" hash="eae3eb4a69de44df200c52001783a4f0"/><file name="mysql4-install-1.4.13.php" hash="12419b6117a9e0e10f565453feed8740"/><file name="mysql4-install-1.4.14.php" hash="be67c1c55e1781c652d0036984fd0866"/><file name="mysql4-install-1.4.15.php" hash="f2bc98906fc36bf0640b292851ab99e1"/><file name="mysql4-install-1.4.16.php" hash="e34c42b202a7435abe2fa46f01bde257"/><file name="mysql4-install-1.4.2.php" hash="07b5a7b8ef247def75617e92738f0950"/><file name="mysql4-upgrade-1.4.0-1.4.2.php" hash="fefa638ca0ed7c5bc80a1b67e27c8703"/><file name="mysql4-upgrade-1.4.10-1.4.11.php" hash="130a688eb03e4f476308d0d11c32141a"/><file name="mysql4-upgrade-1.4.11-1.4.12.php" hash="766c901369f06aaadc8ffde3befb4aaa"/><file name="mysql4-upgrade-1.4.12-1.4.13.php" hash="172b48942497efd2305eff260bc28d9c"/><file name="mysql4-upgrade-1.4.13-1.4.14.php" hash="3218dae864cac00ff74655160ad31663"/><file name="mysql4-upgrade-1.4.14-1.4.15.php" hash="2e842e4c18259590cdafd2139dd4eb7e"/><file name="mysql4-upgrade-1.4.15-1.4.16.php" hash="671f39e2f90faf1165d50b517be8e04f"/><file name="mysql4-upgrade-1.4.2-1.4.9.php" hash="4692060e7c938aea129c53619f0b3c19"/><file name="mysql4-upgrade-1.4.9-1.4.10.php" hash="9698883135211d54a3c711fead02c187"/></dir><dir name="reference"><file name="saveMatchedCustomers.sql" hash="c4f32ee8be31f7a652369c148271a6c7"/></dir></dir></dir><dir name="Reviews"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b62835e11224c3e8cb7256715d145814"/></dir></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="a85da1e1cc10dd48ac88b84d91cb9a1d"/><file name="Data.php" hash="5a4232967f09bc3c4360ff110281c0e8"/><file name="Message.php" hash="df3015f886b4dd283d280cf26ee69cc7"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="c36aecae4ebb1de05835be6c02cd6875"/></dir><file name="Queue.php" hash="52ecc7632d642c9ee3fec1141aba9c30"/></dir><file name="Observer.php" hash="c624fb24d09a693d37cb8184255707f0"/><file name="Queue.php" hash="45aea4c54a465d5ea9110cdd853de23b"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Message.php" hash="9a5e15326017cbebd7b59b5c80693685"/><file name="Orderstatus.php" hash="8b1d5d0ede3627d212595be7fa93494e"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="35bed0690cd9f58063c0c5e03e057469"/><file name="config.xml" hash="77fe8f2486ae74b11ac75f8101a8a554"/><file name="system.xml" hash="19a1e6fabfab61be5ddf74523624b94a"/></dir><dir name="sql"><dir name="bronto_reviews_setup"><file name="mysql4-install-0.0.1.php" hash="7c405d3819f5c79ec405dc372ee38dc5"/></dir></dir></dir><dir name="Verify"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b50a08cd24985483cad82c76305da5ce"/><dir name="Advanced"><file name="Observersearch.php" hash="0351378eb6fbfa8e9b1cde55a9b589e5"/></dir><file name="Conflictchecker.php" hash="cf1736b689d1ef2b3f0b7d7d84b703ba"/><dir name="Form"><dir name="Field"><file name="Apitoken.php" hash="cb84fee5b4e18ca0092f385d6ede6711"/><file name="Button.php" hash="7041c0e923d9929796597160679bc94c"/><file name="Classpath.php" hash="c9c60b09c180960dd107d74f79b63edc"/><file name="Conflict.php" hash="3797f7f88329ecf4d5c9e3e48c9c89e5"/><file name="Events.php" hash="c88df55f9105d0aa5a1574bc37c5a8f8"/><file name="Index.php" hash="612cf825df2f10c0d4d00ac54f413aba"/><file name="Roundtrip.php" hash="4b84fb21a59f5939ab7361dcc816ce1d"/></dir><file name="Magecron.php" hash="1de2ba16fe022444b778648cd4583569"/><file name="Permission.php" hash="e5185de6bc1976ee7497956cc9162a17"/></dir><file name="Installs.php" hash="4b021d23f10faaeb7801b424a7325180"/><file name="Permissionchecker.php" hash="6f0be4f5594afe1f6924b839db582180"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Classpath.php" hash="1687def566fccc786c263d94b4c9c9b5"/><file name="Conflict.php" hash="473cda5cc65b9302efb3618c3b5af973"/><file name="Events.php" hash="3da5bc0026613dfd921a25a942fb3d7c"/><file name="Permissions.php" hash="b89e87e9b6848cde87a4f6343b3feb1a"/><file name="Runroundtrip.php" hash="5a98f930b382a7a0c01f3b346def4955"/><file name="Runtoken.php" hash="63a721c0a25bdbd58be941ba7c5d21c8"/></dir></dir></dir><file name="Conflictprinter.php" hash="05a32eca413a0eda87bcdb7bd0661642"/><file name="Permissionprinter.php" hash="8925da12d1e8dc5f180327dd94d18310"/></dir><dir name="Helper"><file name="Apitoken.php" hash="bc1f30a551a958011fbba91310cab77d"/><file name="Conflictchecker.php" hash="55e0aacf4cd6e9d2b4d52ebe21fe7850"/><file name="Data.php" hash="f09ca54528532b599f19be7a4c3e611a"/><file name="Permissionchecker.php" hash="da5fc3a69e6477299084d210aaaad6b7"/><file name="Roundtrip.php" hash="b5566d978e4e24cf06bee83ab92772fc"/></dir><dir name="Model"><dir name="Config"><file name="Blocks.php" hash="0000df779f3e1fb60350b14b8a6185e3"/><file name="Checker.php" hash="a38555d682b302967410b73ebab04b4f"/><file name="ConfigAbstract.php" hash="79024697562751ff46c939d9d680fc86"/><file name="ConfigInterface.php" hash="45cecfde48e4ef0657a6418019f02e4a"/><file name="Datastore.php" hash="fb5ea494075ce81380d1447c07fa052c"/><file name="Helpers.php" hash="1dc143d542d3fd85ccff785f913556f1"/><file name="Models.php" hash="3062f1f3c4950d965054afe6b75b4b0f"/><file name="Printer.php" hash="dfd6bfdcc94a1afb83ae6c3599abb21c"/><file name="Resources.php" hash="24bbf7de88b25250a81a2d7380d5baa2"/></dir><dir name="Contact"><file name="Builder.php" hash="df3bc1eb448a6f6dabce9506b6341580"/></dir><dir name="Core"><dir name="Config"><file name="Base.php" hash="c11b6cbaf1802d3c6ab58853b468f5d7"/><file name="Element.php" hash="8a7c9221a95c1317a8ae166e692a4ee0"/></dir><file name="Config.php" hash="4afa2c4a35fd81b282aad0d873c5700e"/></dir><dir name="Lib"><dir name="Varien"><dir name="Simplexml"><file name="Config.php" hash="076958ed612323869d2437872744ed2a"/><file name="Element.php" hash="a8c28fd3b6b00ad689d4850e79441dec"/></dir></dir></dir><dir name="Mysql4"><dir name="Core"><file name="Config.php" hash="3b8fb36a66a675c4d12926bceadb4ea5"/></dir></dir><dir name="Path"><dir name="Locator"><file name="Array.php" hash="42fd6c7004b0f02f954956563edde9a0"/><file name="Factory.php" hash="46007808ba897fa6816fb7771a2b18dd"/><file name="IteratorAbstract.php" hash="a0b728053dc63e73edc8231fd169cebc"/><file name="LocatorInterface.php" hash="b775ce0d189ef276c9bbeade7da67b4f"/><file name="Stack.php" hash="328481c9d963f653a95f333fb440bea5"/></dir></dir><dir name="Resource"><dir name="Core"><file name="Config.php" hash="aa2fb8c4fb153e742c690ab8bc8b5a75"/></dir><dir name="Db"><file name="Abstract.php" hash="d668c24c90f80bc197c83eb0a3e10aa6"/></dir></dir><file name="Roundtrip.php" hash="437aa07b0f001bb29b20e9dda2ae81f8"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Magecron.php" hash="2745874b81ae4235aa885f78c2076561"/></dir><dir name="Source"><file name="Classtypes.php" hash="772cab11a7470a2dd68ece3688c68d6a"/><file name="Wsdlcache.php" hash="b7d9c1c4d271c03a7486fc86eec3b6d9"/></dir></dir></dir><dir name="Validator"><file name="Checker.php" hash="35799249fcc93b31ff12da539cfb0d84"/><file name="Directory.php" hash="aa05ae40ad0b7aaffffaa6063bd8561e"/><file name="File.php" hash="c29c1cd2140186dc67c5e62064b79c0f"/><dir name="Filter"><file name="PatternIterator.php" hash="c129a6ee0fb4a45ff52644da2c0abfa1"/></dir><file name="Group.php" hash="59ad6dd4232ee113e1fe8161a82148ba"/><file name="Owner.php" hash="69e1c54dca88532208ce1f35f4491d99"/><file name="Printer.php" hash="23a00ec415b8665e5457ac09939e2ab2"/><file name="ValidatorAbstract.php" hash="d043c743309f5d64640698953269ece6"/><file name="ValidatorInterface.php" hash="02f543af08eda65263f4b005f3b3bdaf"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="AdvancedController.php" hash="0942ed5d83442e97af40d4572c3e21f8"/><file name="ApitokenController.php" hash="f804594b22260cb597cc0e5cfe633093"/><file name="ConflictcheckerController.php" hash="1d23621c640eecf2a813121cfc23850b"/><file name="PermissioncheckerController.php" hash="2e254bd755cd9d05d7eb6865a2ffb0e7"/><file name="RoundtripController.php" hash="efb601f3ceca89885d031f06218b2a4d"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="d7aa2c1c8fa26ad3ab910940abd9199e"/><file name="config.xml" hash="ca6c623ab513da25d67629ddb513a0ad"/><file name="system.xml" hash="ac4c532e9081ad30b807857c7fcd874c"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Bronto_All.xml" hash="5a9c06b6313882589765b9bcf0402bbb"/><file name="Bronto_Customer.xml" hash="a11c20f008ee2eae14baa3b549d5adee"/><file name="Bronto_Email.xml" hash="b7cdca4b15753edcefe8b9e0abb780bd"/><file name="Bronto_Newsletter.xml" hash="2115c5225e02ab5d4e56749cc5eff6ad"/><file name="Bronto_Order.xml" hash="63f1537add6088417945657bec98ffe9"/><file name="Bronto_Reminder.xml" hash="08503ab78994178b822ef9b0add243f9"/><file name="Bronto_Verify.xml" hash="ad72ea2ebfd99dbe2773b2735d0ec973"/><file name="Bronto_News.xml" hash="3496cd7578991889909fbd8daa170d2d"/><file name="Bronto_Reviews.xml" hash="23a398c055d062c4a5e19e72a0c2df95"/><file name="Bronto_Emailcapture.xml" hash="98b59bbf388d6c715f345b8906bd2fa1"/></dir></target><target name="magelib"><dir name="Bronto"><dir name="Api"><dir name="Account"><file name="Exception.php" hash="1a851457b2a032fb6d149fe9ef111c57"/><file name="Row.php" hash="3ab1e97019ef87bcd464eeaabf652886"/></dir><file name="Account.php" hash="33b9ba8867fe69135391c26f98b5852a"/><dir name="Activity"><file name="Exception.php" hash="3ac1f2caea6465931cbf927f1033ec06"/><file name="Row.php" hash="de166130c57670bf486a783a4501e2d4"/></dir><file name="Activity.php" hash="f5f48488e40507bc108b35c599e4e5a2"/><dir name="ApiToken"><file name="Exception.php" hash="e06d0a4c9469da7333e6a596e9c37c5d"/><file name="Row.php" hash="f3742811cec1cbf0be583296b617dfbd"/></dir><file name="ApiToken.php" hash="65bbd18974bbbf620dc2df23bdeb4469"/><dir name="Contact"><file name="Exception.php" hash="809bdce6db3bb9c72a3173bb08c1b19e"/><file name="Row.php" hash="2e360d131c2abe19e154b5f3795a58f0"/></dir><file name="Contact.php" hash="55bab8398154e96db6b0ca3ed88718e0"/><dir name="ContentTag"><file name="Exception.php" hash="5a8bc58af480a574e8061c62ad5590b4"/><file name="Row.php" hash="e470d8bcd686d42a886e59d5184b5eed"/></dir><file name="ContentTag.php" hash="14f1cbefe1027338d28db301a1c2df3d"/><dir name="Conversion"><file name="Exception.php" hash="73dd991a663b99050428f54fc13fb433"/><file name="Row.php" hash="115d01ea0e0e6ade42fcab76dff71c35"/></dir><file name="Conversion.php" hash="60ec52dcfeda92294d1ab10bb29a486a"/><dir name="Delivery"><file name="Exception.php" hash="003dbb49ea3be65fe35dfa9b7ec743c5"/><file name="Recipient.php" hash="562bdc8d86b92ec293a338fdd7bf928a"/><file name="Row.php" hash="9c6149e74a305f62b9806df5a20e6a00"/></dir><file name="Delivery.php" hash="668dc6493cefe960c7dc8fe1fe87bf08"/><dir name="DeliveryGroup"><file name="Exception.php" hash="9291b2adb576a6781a0d624cc3288453"/><file name="Row.php" hash="29adb1f866cf1d24ef0abac19f95fbd0"/></dir><file name="DeliveryGroup.php" hash="7dd295b65f22e65dff3bf45c4336e985"/><file name="Exception.php" hash="bacb7c782ef7f612edaf3d39c20118ef"/><dir name="Field"><file name="Exception.php" hash="db651b9fa4b5161e3a32af49cc12cc64"/><file name="Predefined.php" hash="15fadb32175098d9ded60550d1748a4a"/><file name="Row.php" hash="6871d05f399a8a9dfa0742952eaa6481"/><file name="TypeGuesser.php" hash="1027ea97675a16cc964aa0d8ba63e642"/></dir><file name="Field.php" hash="32d5876335ec815acb50d3b4e7bf3ccd"/><dir name="List"><file name="Exception.php" hash="0f964fac998c89a0d4d515979bd81b98"/><file name="Row.php" hash="6516df43a1a94beee7b57fae71c27134"/></dir><file name="List.php" hash="ef240fe5e1422479a83291ad30b468ac"/><dir name="Login"><file name="ContactInformation.php" hash="bc1ce7f57c67fa21cd0881d0384a1cac"/><file name="Exception.php" hash="fff7546235b416b7008a9e4bd646fc19"/><file name="Row.php" hash="578553fcbf1941d0eb5890614c57ae91"/></dir><file name="Login.php" hash="a663864b51795799ff1a61528f380c80"/><dir name="Message"><file name="Exception.php" hash="755f7f14cdb234931708968ac0bad4a4"/><file name="Row.php" hash="5732b5550c8c6444790f2f20e626ff08"/></dir><file name="Message.php" hash="cc3c9939757371ad7fd2d297df394621"/><dir name="MessageRule"><file name="Exception.php" hash="b0398ee96ed70c483f38b50f305e82a8"/><file name="Row.php" hash="8e7532184ee265a927a195ac36e5a518"/></dir><file name="MessageRule.php" hash="ae1b3f16683656066a83bcf9f2863710"/><file name="Object.php" hash="19e3a4bcfd9031fa2c576f9c7f2cd27e"/><dir name="Order"><file name="Exception.php" hash="8312e1a1ab46bcf88b72983bb11a6493"/><file name="Product.php" hash="3785f2f460fec6c18c6164176de52449"/><file name="Row.php" hash="1400de022188806bb94e98544c054ef6"/></dir><file name="Order.php" hash="ad690b37bc577879020d10e5ac70ef3d"/><dir name="Row"><file name="Exception.php" hash="4c1a45512e0912644f94a88d4298d3a9"/></dir><file name="Row.php" hash="259418b11987939378747a9c46fae1ae"/><dir name="Rowset"><file name="Exception.php" hash="b5202ed6f61bfe06b90f73c03ca28ffa"/><file name="Iterator.php" hash="9ea7a244b83e7b9318bfe8ed371a149f"/></dir><file name="Rowset.php" hash="3f40382933e2f392b6320fd79db720cd"/><dir name="Segment"><file name="Exception.php" hash="bd5c2302ef222ff55981cc38477a9310"/><file name="Row.php" hash="b840493b8b2c3cb6686de0e5bedfa2ba"/></dir><file name="Segment.php" hash="0cf99babff6169afa427f302c76023dd"/></dir><file name="Api.php" hash="b3e620a235da149281430a92eb2a1a3c"/><file name="SoapClient.php" hash="c9e56dc7f88d71cfbb98b3476bad5ead"/><dir name="Util"><file name="Colors.php" hash="14313213b3a70c79a56c574523b9b90b"/><file name="CountryCodes.php" hash="4efb9c354d29a901368c46aab40f79d4"/><dir name="Retryer"><file name="FileRetryer.php" hash="bdc72ace54ace32081115442d28cb972"/><file name="RetryerException.php" hash="54b70d7abbc32b55649a193e8e70dcb5"/><file name="RetryerInterface.php" hash="cc57d5a02a55811a13a31ed9beff126f"/></dir><file name="Uuid.php" hash="ba62bdec6488ccb621e0bfd726c6107a"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="bronto"><file name="bronto.css" hash="ebc2f1ade554e3cad4bf0b091ff674d1"/><file name="cron.css" hash="90af6378226e13e17b7329132d41e0e7"/><dir name="images"><file name="BrontoGuide.png" hash="be2bb3605cc5f1899ad996fcd2ceae84"/><file name="InstallStatusDisabled.png" hash="5cf8d7dd8ed623f8b38e6ea3ed89861a"/><file name="InstallStatusEnabled.png" hash="11ea6d1f0ba319b62ed1728e9b747108"/><file name="InstallStatusError.png" hash="91fdd0af3ffd20d0b8a77645bb9cfcdc"/><file name="ajax-loader-tr.gif" hash="1ae32bc8232ff2527c627e5b38eb319a"/><file name="bg_notifications.gif" hash="df73b8aa7e48bb56e0a644245aa3683f"/><file name="bronto-mini-off.png" hash="af2c6a5434604db0bb3a2cc4a51b5c77"/><file name="bronto-mini.png" hash="7989c68c0e83b7b04af308780aa82259"/><file name="bronto_contact-mini.png" hash="e221b304ad42cba129a9dcf17ce5180e"/><file name="bronto_contact_import-mini.png" hash="a9e0904f7219be45fd1ed88c5b9a1650"/><file name="bronto_general-mini.png" hash="aca50d84fe324abbb36ff2853d9cad01"/><file name="bronto_help.png" hash="d0ed63d7c68e8b52583ce428b3846afc"/><file name="bronto_news-mini.png" hash="bb8b3beb16c10d8b38ddb11f3f4347e8"/><file name="bronto_newsletter-mini.png" hash="9c45a6dd689ad758cf927cb381621b35"/><file name="bronto_order_import-mini.png" hash="a2b13488fccfdd5b2194843800abadda"/><file name="bronto_reminders-mini.png" hash="c85bafdc82718769c8b801fd64e7bd72"/><file name="guide.png" hash="10c880d9e40f1283f99e02ce2d025a4f"/><file name="logo.png" hash="3b7c4cb9faf220091a5fbae3c7f87afa"/><file name="message_approved.gif" hash="465a056a3ba3d94367f51c3c0b751391"/><file name="message_not_approved.gif" hash="e4f28607f075a105e53fa3113d84bd26"/><file name="section_logo.png" hash="98f2570d14580cee2c6cf66cca540b39"/><file name="site_name.png" hash="fb2cc4e1e00cdc95a94c04fccfa5e1b3"/><file name="support.png" hash="0910e2eb718379d037ead6e0af9c4855"/></dir><dir name="js"><dir name="guider"><file name="README.html" hash="be17cdbc961dc921944cef4e7daa33c3"/><file name="README.md" hash="1c11ec7951035fe0611edded566901a0"/><file name="changelog.txt" hash="4c107fe228a620f6f3118b128e62c0b5"/><file name="clock.gif" hash="12aa3f72e722ac8e5eeb68823024278f"/><file name="component.json" hash="05fe7fcf63c00abd58efa072baa8248f"/><file name="guiders.css" hash="a6df4a6e2d4f3075e29841a6844ee30b"/><file name="guiders.jquery.json" hash="261d2b3a2d3a21e49a0153f0c8f2c3e9"/><file name="guiders.js" hash="42b1675f9d1a93b89d62e97f2db895bb"/><file name="guiders_arrows.png" hash="757812709656e9592d9d724a63624d0d"/><file name="guiders_x_button.jpg" hash="2af6c2b68534a8b2c48d0ddc14a5b801"/><file name="jquery.min.js" hash="0652da382b6fceb033dfe2b6c06d4d11"/><file name="promo_gmail.png" hash="4837435633204a9001b88c2d8ef451ed"/></dir><file name="jquery-1.10.2.js" hash="91515770ce8c55de23b306444d8ea998"/><file name="jquery-1.10.2.min.js" hash="628072e7212db1e8cdacb22b21752cda"/><file name="jquery-1.10.2.min.map" hash="6c3ccfc221d36777d383b6e04d0b8af9"/><file name="jquery-noconflict.js" hash="3179f2255b046d5f2e9a71e365287bef"/></dir><file name="news.css" hash="84d2866b08b706164c6e545767ff331a"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="bronto"><dir name="common"><file name="popup.phtml" hash="d81fa7237b4fb63fcc970e73d71a6cc6"/></dir><dir name="emailcapture"><file name="js.phtml" hash="d7920693b4aefb498610d65dbebca42a"/></dir><dir name="newsletter"><file name="checkbox.phtml" hash="a19c0ff807258ffe398704fde325cfab"/><file name="js.phtml" hash="dc11829ac113c50e93bdc08580998af0"/></dir><dir name="order"><file name="js.phtml" hash="e398cfbfe9df41feeadb251216422cd9"/></dir></dir></dir><dir name="layout"><dir name="bronto"><file name="common.xml" hash="f1e7ee067163e84f2e3bfc5474b3647d"/><file name="emailcapture.xml" hash="b5d3b0efc5daffb5fa66561f690013d0"/><file name="newsletter.xml" hash="b7d4c9b1fb4fabb4255c6df64e98d332"/><file name="order.xml" hash="fba740927a514649988b16e8f936072b"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="bronto"><dir name="common"><file name="about.phtml" hash="92b23a99706cca95566729e85a560f5d"/><file name="cron.phtml" hash="d786fe7dada0937965a5b8993f83bb6b"/><file name="guide.phtml" hash="07bcf3ad2e6a9136888bbf4a8bf0b51d"/><file name="guiders.phtml" hash="790ac5e5f8df13753db5ac3e68d08d76"/><file name="suppressed.phtml" hash="07fd355b58dd1c9ee074c7fb132545e2"/></dir><dir name="customer"><file name="guide.phtml" hash="14e9b74f62bde430a6df96cf04ee94dc"/></dir><dir name="email"><file name="guide.phtml" hash="c8fe9f3cadf5e50d6f0e69979462c407"/><dir name="template"><file name="edit.phtml" hash="802ef394d1943f18d33d39d0b85dcc3d"/><file name="list.phtml" hash="e9eb7ffc48f9d17a21917d86ff18b0fc"/></dir></dir><dir name="news"><file name="guide.phtml" hash="19026e62d49476371edc4f9e7f68d2c1"/><file name="item.phtml" hash="7146fcc10eeb0bdc33a78ea8fe060f74"/></dir><dir name="newsletter"><file name="guide.phtml" hash="58cb7d63937a756afd939c0c69edeccb"/></dir><dir name="order"><file name="guide.phtml" hash="831ff327cf49d198bec62ad968587593"/></dir><dir name="popup"><file name="guide.phtml" hash="6bd6240f1402a03dd0d5022b8c39b3ab"/></dir><dir name="reminder"><dir name="grid"><file name="container.phtml" hash="28518ad2522f1b213102eb52071ef247"/></dir><file name="guide.phtml" hash="db033c357b5e335b6d65a44fa78c7c7e"/></dir><dir name="reviews"><file name="guide.phtml" hash="caad8c25594859c554a1fa1e505c92f0"/></dir><dir name="verify"><dir name="advanced"><file name="observer.phtml" hash="775deb643169f76f72793873a258eac1"/></dir><file name="advanced.phtml" hash="8479f4762de8943de234407bbc80b679"/><dir name="conflictchecker"><file name="errors.phtml" hash="91adf7e31ce9ec1ae06c18adb489bf54"/></dir><file name="guide.phtml" hash="92c6c4766017cd2e48b1c5e33d85ef17"/><file name="installs.phtml" hash="34b6bd602043376f8c17ef7744a27537"/><dir name="permissionchecker"><file name="button.phtml" hash="0a98a58dcb6d28d768e83556e6e690bc"/><file name="errors.phtml" hash="6da7357831323392e3badcb1cc8268aa"/><file name="index.phtml" hash="628a80e9245642cb92cc75a6dd07d1d7"/></dir></dir></dir></dir><dir name="layout"><dir name="bronto"><file name="common.xml" hash="14d4b6687fbf5fdc1cb2a5ca20ea9f2c"/><file name="email.xml" hash="be77c906770a0d818898a910b03cbe4f"/><file name="news.xml" hash="96d679b735d551a3e83fb71bfe2a7fca"/><file name="reminder.xml" hash="07186394676c6db016d00bdee53e8394"/><file name="verify.xml" hash="e5676df09f0a79bdedc314e2bfdb4b59"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="shell"><dir name="bronto"><file name="cron.php" hash="7f43b68e22803f8becfa58abbefaaa82"/><file name="fix.php" hash="b0f8760b2f562263240a3b9aec35d5d8"/></dir></dir></target></contents>
61
  <compatible/>
62
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php><extension><name>soap</name><min></min><max></max></extension><extension><name>openssl</name><min></min><max></max></extension></required></dependencies>
63
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Bronto_Extension</name>
4
+ <version>2.2.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
55
  &lt;p /&gt;Bronto Software provides a cloud-based marketing platform for retailers to drive revenue through their email, mobile and social campaigns. The platform is used by over 1000 organizations worldwide, including Party City, Armani Exchange, Timex, Samsonite and Gander Mountain. Bronto is a Gold Magento Industry Partner and the leading self-service email marketing provider to the Internet Retailer Top 1000. Bronto is headquartered in Durham, NC with an office in London, UK. For more information, visit &lt;a href="http://bronto.com"&gt;bronto.com&lt;/a&gt;.&lt;/p&gt;</description>
56
  <notes>&lt;p /&gt;For installation and configuration instructions, as well as a full list of new features and known issues, please review the &lt;a href="http://a.bron.to/magento"&gt;Implementation Guide&lt;/a&gt;.</notes>
57
  <authors><author><name>Chris Geiss</name><user>BrontoSoftware</user><email>chris.geiss@bronto.com</email></author></authors>
58
+ <date>2014-02-11</date>
59
+ <time>20:49:54</time>
60
+ <contents><target name="magecommunity"><dir name="Bronto"><dir name="Common"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="ceee3ef00dcfde90f82ce80a5119ed56"/><dir name="Cron"><file name="Error.php" hash="ccaf02afd320c2a60b271bcf728c723a"/></dir><file name="Cron.php" hash="ff26632f20d0474d45ae0549634b4f7c"/><dir name="Form"><dir name="Field"><file name="Apitoken.php" hash="48fe102c7d74b7646de1e256f87cfe87"/><file name="Debug.php" hash="6b3e65c774d25184e88c43e7364d68b4"/><file name="Download.php" hash="6521c641550b7c747632fe25dd5982ed"/><file name="Hidden.php" hash="c514ae120d4dced7b92ea30a13f0e4ea"/><file name="Image.php" hash="9de445fac8d262bb023f123d1e4df9e5"/><file name="List.php" hash="907853b5009661b6b63a3a2947fc9c59"/><dir name="Support"><file name="Site.php" hash="9e0b6acae1053a90a7513a3791ee258c"/></dir><file name="Support.php" hash="f680904d05213ec4d43726b714cf2b69"/></dir><file name="Field.php" hash="932af08da6e8dc20e74e97894b1a2518"/><file name="Fieldset.php" hash="a3d41e7bfc09bd81942c6f32bc1d1782"/></dir><file name="Guide.php" hash="3ad72b377da538047e5efedae5dd31ef"/><file name="Support.php" hash="be33bc95f1f713205dd11fb59598e166"/><file name="Suppressed.php" hash="5adada4485cc74566c512c4dbad8c8a0"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Abstract.php" hash="8c082611a7e4131c897ae9f2ed1d6dcf"/><file name="Debug.php" hash="e841017705d9b45a33e8475144ff0587"/><file name="Download.php" hash="78de702f642111af6feb725b4dd0bf08"/></dir></dir></dir><file name="Popup.php" hash="50c59a6fec4ca29059dbef3fd098ed7e"/></dir><dir name="Helper"><file name="Api.php" hash="325c6738308ad46fda1674c2e2f2f76c"/><file name="Contact.php" hash="0b307ded3f9f80b03cc2db19a708b956"/><file name="Data.php" hash="8afa1fe93d845747250c576baa402ec5"/><file name="DataInterface.php" hash="d1691f590c315abd3178e769cf51fe2a"/><file name="Field.php" hash="7c208abd6c77057e1e400f6699be77df"/><file name="Message.php" hash="5484ec49ce8ab8fda12d9dc6c4c29c65"/><file name="Product.php" hash="11775a052258f97fc8456d4fef981c76"/><file name="Salesrule.php" hash="32feae8429a684adcf8be798f42c16b8"/><file name="Support.php" hash="c20c3e73c23a70cdaebb61815e2ce33e"/></dir><dir name="Model"><file name="Api.php" hash="72817e825da18d2c88800385cd3c6eca"/><file name="Archive.php" hash="b613e811bb673c72e6cec6770ed48fa5"/><file name="Delivery.php" hash="1c43e226d7c174f655533299bbf15359"/><dir name="Email"><dir name="Template"><file name="Filter.php" hash="c4d5d75ec6f6c7409320b6b36759e580"/><file name="Templatefilter.php" hash="c3acf3b4be3dcce490b1e07c0ab68e38"/></dir><file name="Template.php" hash="879c03ec7594c1763244d2035f39a7ff"/></dir><file name="Error.php" hash="8270252828229cad2c3b35f22e898b4d"/><file name="Keysentry.php" hash="ed1603a0954baaf716219d717e65f5b5"/><dir name="Mysql4"><dir name="Api"><file name="Collection.php" hash="9b589f17c2efee2866369d6fd0c73279"/></dir><file name="Api.php" hash="79e25f0be61ef7ce5066c676545ab19d"/><dir name="Error"><file name="Collection.php" hash="cdd8617db0383a5dd23787850c26bfe3"/></dir><file name="Error.php" hash="2959715e0def582a6a0ecdf6f6442701"/></dir><file name="Observer.php" hash="d7f2d5c5296b68e7e3984099595417d2"/><dir name="Resource"><file name="Setup.php" hash="793a326c80af2420cd0511a9b65a6aa8"/></dir><file name="SoapClient.php" hash="38ea95b32c1271d3ac329979c4f5d7a0"/><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Cron"><file name="Error.php" hash="38bbbcde58aa89e3f7be043a773feb26"/></dir><file name="Cron.php" hash="1aa481a63198c64fafc90abe93166116"/><file name="Enable.php" hash="2b641958cfa59bd18992a8b92af99301"/><file name="Token.php" hash="1580a2ebd534155356515b0738a8cc77"/></dir><dir name="Source"><dir name="Contact"><file name="Status.php" hash="811a360bffa20b92d4a7bdea66a73168"/></dir><dir name="Cron"><file name="Frequency.php" hash="3ef5bda79548019f9a7cb2007c6792f5"/><file name="Minutes.php" hash="136df1bc4c4723efdbe144ed7a08806e"/></dir><file name="Field.php" hash="7a4660fbc812dca134b69b3cef76ea57"/><file name="Image.php" hash="acb902acd1f8573887ed9d5a00410467"/><file name="Limit.php" hash="8891685ce2b9c338c316d16a2ae69a8d"/><file name="List.php" hash="c9fd7581386bc33c09e0e6edfdead420"/><file name="Message.php" hash="01c7e9d489c1ed7f07f011d5c044805a"/><file name="Role.php" hash="5a55bad277b8723130035d79d6e5b98b"/><file name="Synclimit.php" hash="40a063f7d2ac5e1ad6a9bfa773b22863"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="DebugController.php" hash="2a1b69ab086340a58fd96278cea9e4c2"/><file name="GuidersController.php" hash="8eae4825b247191bd166224ac79ea655"/></dir><file name="LogController.php" hash="c7e65dec2943bb1b0575396290629fdc"/></dir><dir name="etc"><file name="adminhtml.xml" hash="0bbd379c87b3a9ab5a6a2d48f864b1ec"/><file name="config.xml" hash="018ad180dbd85cad301f377cfed89d50"/><file name="system.xml" hash="01e74d6d56b570363f6bdb50828315b9"/></dir><dir name="sql"><dir name="bronto_common_setup"><file name="mysql4-install-1.7.0.php" hash="c8459d26fdfea2fb9430e8829b3257e1"/><file name="mysql4-install-2.2.1.php" hash="f2a33e687c2a2ee784c63ca9ba58ad5f"/><file name="mysql4-upgrade-1.7.0-2.2.1.php" hash="f2a33e687c2a2ee784c63ca9ba58ad5f"/><file name="mysql4-upgrade-2.0.4-2.2.1.php" hash="f2a33e687c2a2ee784c63ca9ba58ad5f"/><file name="mysql4-upgrade-2.0.4.2-2.2.1.php" hash="f2a33e687c2a2ee784c63ca9ba58ad5f"/><file name="mysql4-upgrade-2.1.0-2.2.1.php" hash="f2a33e687c2a2ee784c63ca9ba58ad5f"/><file name="mysql4-upgrade-2.2.0-2.2.1.php" hash="f2a33e687c2a2ee784c63ca9ba58ad5f"/></dir></dir></dir><dir name="Customer"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="bc63c93b5ff46fe2e6cb84a8c3249d12"/><file name="Cron.php" hash="159344d5cd5b0bb0a770e7fa4132a754"/><dir name="Form"><dir name="Field"><file name="Rewardpoints.php" hash="c1918f7478737dcfba6b543fa006a4bc"/><file name="Storecredit.php" hash="489625264fff9d5a37621f1b80203099"/></dir><dir name="Fieldset"><dir name="Attributes"><file name="Address.php" hash="7871298d7b7410d5202b436a1f536d7c"/><file name="Customer.php" hash="b0060f6c8c71ec321387aa8071a5c483"/></dir><file name="Attributes.php" hash="0a93bc89eea36b70908ef805a4627d93"/></dir></dir><file name="Suppressed.php" hash="a65d86c60db621d6d202cf64c02024f8"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Reset.php" hash="3dedc6caa0aab8f110a97df371c2187a"/><file name="Run.php" hash="2b6332568132b633a1ee208e8b555b5a"/><file name="Sync.php" hash="be611c057f18b5da9e31927fc1788365"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="a7b29c98840eb6f469ad651fcc38d873"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="5564536b725040d0652cba23e13e546e"/></dir><file name="Queue.php" hash="5aff6d99b2f3bf24cd2db7d0586f96ab"/><file name="Setup.php" hash="cb74c44bd42f407925a800fe3996d7a3"/></dir><file name="Observer.php" hash="a24b2383b13049cc73ebe8ce37eeea9b"/><file name="Queue.php" hash="7851ed2790e205473cf848c63a4f13a8"/><dir name="Resource"><file name="Customer.php" hash="86f081e728c9d9f22e28018406d9f601"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Brontofield.php" hash="8a765b6204672df4a8b15b547668a18b"/><file name="Cron.php" hash="44d12cea40d1342ad065bd4aad936193"/><file name="Newfield.php" hash="118d2622277e919e1f316f0713f5a2b7"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="CustomerController.php" hash="b6521bc4a03414027470ffef4afb736c"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="bb58fa0df1e07c2d88527fed1920ffc2"/><file name="config.xml" hash="e1a4673cdc939b1177c5ee2e8af678f6"/><file name="system.xml" hash="36c06af831397b32776ec1b96929dc0d"/></dir><dir name="sql"><dir name="bronto_customer_setup"><file name="mysql4-install-1.0.0.php" hash="871c225318588b2804a05751bce45e1f"/><file name="mysql4-install-1.0.3.php" hash="79785fb104491dcc4713e55495f24ba0"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="1c00e987c9a1b1da70ad035ccdef194b"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="144999a033695bd72601f1f0e10de5e3"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="6e3c57a1c9272aa4b2d7d051a24ed87f"/></dir></dir></dir><dir name="Email"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="ab71e0649d5af1fe64f665ada8895be9"/><file name="Settings.php" hash="59f952e7baeff59ef013a9f39572370e"/><dir name="Templates"><file name="Field.php" hash="0b4d17701e352b6c28cd5262d3cd8e0e"/><file name="Fieldset.php" hash="01fa6905eec117df32519c7e461e05f8"/><file name="Label.php" hash="fed0e19a1dde5592ba2efcc3aa6a2bba"/><file name="Sendtype.php" hash="d93029708ba002781e365cb0215022ce"/></dir><file name="Templates.php" hash="5811fe4b83f7dd5d6f0c7c78314cd31c"/></dir><dir name="Email"><dir name="Import"><file name="Edit.php" hash="32d4219613247ff59a59b5031284159c"/><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="e5f3203f05d2fbc577a3e7f3dd5d6341"/></dir></dir><file name="Grid.php" hash="40551a1c6c11247925d2557c8c3fafde"/></dir><file name="Import.php" hash="a2f378383faebc5c0fabcd46feb4d7e3"/><dir name="Log"><dir name="Grid"><dir name="Renderer"><file name="Customer.php" hash="ee83b754d1a91920a79918991aa76ca6"/><file name="Fields.php" hash="dc0d7cbd5065382ccf51ff3f84054563"/></dir></dir><file name="Grid.php" hash="591f4aefd4fa2f7b5f53653f0d7780a7"/></dir><file name="Log.php" hash="755439eace3c8e1f5ee3c657562c476d"/><dir name="Template"><dir name="Edit"><file name="Form.php" hash="47b8b4a1e40b262f7b1811549a177261"/></dir><file name="Edit.php" hash="e76c3c82fc3c180041eeeb6251fecbaa"/><dir name="Grid"><dir name="Renderer"><file name="Action.php" hash="543cf476631d073e4de5ec59f1faf5b5"/><file name="Storename.php" hash="c5111a20ed0b3aed0078cecb1ae3d739"/></dir></dir><file name="Grid.php" hash="da86503c8e244821b08d60a50dc8973a"/></dir><file name="Template.php" hash="ea39c46962381b34377efa05ecbfa075"/></dir></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="60d8707e923f59ad7af130aa09557be0"/><file name="Data.php" hash="ca89f9dbc6ac7e380dde556d5455cf49"/><file name="Field.php" hash="fc67415cbe73614fe0bbc29df7f93148"/><file name="Message.php" hash="7f5a80ce2a9a75324f8e5df9b3a318f4"/></dir><dir name="Model"><file name="Log.php" hash="1c9b060a801312c0b929806708a9ac1a"/><file name="Message.php" hash="02bf1f9bef1f4ce1909cc3d5c6331969"/><dir name="Mysql4"><dir name="Log"><file name="Collection.php" hash="0cc3245eea5df5ca8607fc4ca8aabf99"/></dir><file name="Log.php" hash="aef3718e6ea1de42152099aeb444782f"/><dir name="Message"><file name="Collection.php" hash="4ad21710a8a2c403e83dcf40ad6eda22"/></dir><file name="Message.php" hash="f225d9ac332aa3b0fea5ff094a336926"/><dir name="Template"><file name="Collection.php" hash="27a2f2fcbf6210acbad20359eb673304"/></dir><file name="Template.php" hash="496380271268f9f949afb2a2ce1bdbf9"/></dir><file name="Observer.php" hash="f906c3827a17d77d6d54d6d32557b507"/><dir name="Resource"><file name="Setup.php" hash="13613a00761323dcb331325cc991e0a5"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Templates"><file name="Field.php" hash="e6f28eb62a469792eb61ca1044aae764"/><file name="Sendtype.php" hash="18dadd39cdf47f6cdc95e168fe2012bc"/></dir><file name="Usebronto.php" hash="d9c1e9b77810c922b058d5f03f03b02e"/></dir><dir name="Source"><dir name="Email"><file name="Template.php" hash="82c55d7a5833b1de31e0ca92fcac9b11"/></dir><file name="Sendtype.php" hash="4cc496295bd5b4c2bf71eae9fd87f803"/></dir></dir></dir><dir name="Template"><file name="Import.php" hash="1cdee619cc7c0890d374764e12347f8c"/><file name="Mailer.php" hash="b814a8f77ccfed075849c89cfb8be963"/></dir><file name="Template.php" hash="f74e29c0fcc7528488e19f6aa89c57d7"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="System"><dir name="Email"><file name="LogController.php" hash="471e58f342857be6f023527c0a1d2981"/><file name="TemplateController.php" hash="8f0c04684a6f789b3af69ef22cc1bfb9"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="2343ec1b1ac91db90d522cd64e797aa6"/><file name="config.xml" hash="eb4fd8d33950a989dc40332d94818977"/><file name="system.xml" hash="eed70edcf9317bbefa54606a35d73ca2"/></dir><dir name="sql"><dir name="bronto_email_setup"><file name="mysql4-install-1.0.0.php" hash="516265312ede986c1a35a19b9e5bbfea"/><file name="mysql4-install-1.0.2.php" hash="327ac219e947d608fbf9d3209dd03bab"/><file name="mysql4-install-1.0.5.php" hash="327ac219e947d608fbf9d3209dd03bab"/><file name="mysql4-install-1.0.8.php" hash="b572625c1380dfffe3b089275ac1dc7e"/><file name="mysql4-install-1.1.2.php" hash="2824a3ef8b9308e577c792398598e08c"/><file name="mysql4-install-1.1.7.php" hash="f49bc2913b1c2375499f21f2ac9727cd"/><file name="mysql4-install-1.1.8.php" hash="afa3c83fbfe45fc193a7eda4af6afacb"/><file name="mysql4-install-1.1.9.php" hash="4509540dda05675ee192e0330effddd3"/><file name="mysql4-upgrade-1.0.0-1.0.2.php" hash="1f797c3f909d72219ef5d00017b10554"/><file name="mysql4-upgrade-1.0.2-1.0.5.php" hash="f2c83b65500d9df0fd10c2e6721f2bfe"/><file name="mysql4-upgrade-1.0.5-1.0.8.php" hash="cdbda7aa084e51b9b222c56e548462a6"/><file name="mysql4-upgrade-1.0.8-1.1.1.php" hash="f2c83b65500d9df0fd10c2e6721f2bfe"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="53cf783db35699cdc1fee692752fe8de"/><file name="mysql4-upgrade-1.1.2-1.1.7.php" hash="105868a6253471d3eeeea46c7af18aa9"/><file name="mysql4-upgrade-1.1.7-1.1.8.php" hash="0a4abaf8c787bf656e3163489eb5d29e"/><file name="mysql4-upgrade-1.1.8-1.1.9.php" hash="65b7c540763c1817fef6e4eb1ca6cb9b"/></dir></dir></dir><dir name="Emailcapture"><dir name="Block"><file name="Emailcapture.php" hash="1c45388793ad609bd867c3a331bfb0c1"/></dir><dir name="Helper"><file name="Data.php" hash="4968f32e599a6fefe7b6876c486264ba"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="104fe48ab81aa32769c95aae1b4e4988"/></dir><file name="Queue.php" hash="97ad38464595ed8a25aee9148d703e51"/></dir><file name="Observer.php" hash="041d29358d884b6a4444200d3a6e6b00"/><file name="Queue.php" hash="f95570e6972a31e17c9b4eb1d99aad07"/></dir><dir name="controllers"><file name="IndexController.php" hash="2162c4ce867cba627a66ba4c1b549e55"/></dir><dir name="etc"><file name="config.xml" hash="953a38982ad1ad62107558218b78d121"/><file name="system.xml" hash="7f748cfe607ca50519e51f8a9739feef"/></dir><dir name="sql"><dir name="bronto_emailcapture_setup"><file name="mysql4-install-1.0.0.php" hash="ff0cda179382b958d6a566963faae637"/></dir></dir></dir><dir name="News"><dir name="Block"><dir name="Adminhtml"><file name="ItemRender.php" hash="147c1b256abc1a3f0ffc9018d8af713d"/><file name="Redirect.php" hash="0b6928d1529e41c4e2ccc3a415e53bb8"/><dir name="System"><dir name="Config"><file name="About.php" hash="757f06422ff513218a9dfad2ff91cd0d"/><file name="Form.php" hash="853d55a3d7d5e73e87ae09f87f4764b9"/><file name="General.php" hash="8a19eee62442466ff28f23aa782e68c5"/><file name="News.php" hash="4fdda30cd100f4d1b57a74cb38a9b371"/><file name="Releases.php" hash="30f7b23081c69219473326620e6ccd06"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="79dd892352cda62c69ede789dcade61a"/></dir><dir name="Model"><file name="Item.php" hash="e3ce20de8f0422dcf00f389f5491e788"/><dir name="Mysql4"><dir name="Item"><file name="Collection.php" hash="6a79699559ffe750643c3f6da90d0280"/></dir><file name="Item.php" hash="bf9fae7b7e2241259dbdbe83623c3e6e"/></dir><file name="Observer.php" hash="236e8cec018d29f50c4aeff1f23f4880"/><dir name="Resource"><file name="Setup.php" hash="cb9d37d047d535b4928b279623283f30"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="AnnouncementController.php" hash="ca98e801e5503b04f4f60286e19edb2e"/></dir><file name="RouteController.php" hash="4819b7cab294e952238e2edb43a73c52"/></dir><dir name="etc"><file name="adminhtml.xml" hash="079a3f745967cc14906151cfcdc2c816"/><file name="config.xml" hash="590d56fb32cdb7460cbff22ab1bffa69"/><file name="system.xml" hash="ecd3a0edd0de407c85bb537a78c2380a"/></dir><dir name="sql"><dir name="bronto_news_setup"><file name="mysql4-install-1.0.0.php" hash="f574c4b2432334d0202d75ef71cb0006"/></dir></dir></dir><dir name="Newsletter"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b5d17d62df37034cd48ea3022e546724"/><file name="Cron.php" hash="bd4c2cee5118bd9209606cfd749c770e"/><file name="Suppressed.php" hash="1d2e716ce0b0a76ea67a56d6c62f65df"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Reset.php" hash="82ed841f4918675ed0419361f2b07b05"/><file name="Run.php" hash="21e4d1c9eb2c882b967c5de6def6a97b"/><file name="Sync.php" hash="89112c7b858e9031050bcba50527b4d7"/></dir></dir></dir><dir name="Checkout"><dir name="Onepage"><file name="Newsletter.php" hash="9f0a75670696375dbfdbbc8914e8d6ab"/></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="57c5071aae5a3fb2deeba82fd23ec12b"/><file name="Data.php" hash="0a22d44cc8bc33deef2c983ff29179eb"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="b9c6858b2045ad66b7c331afba125d19"/></dir><file name="Queue.php" hash="4cf426f02c1e2889b77be9b6a105c91b"/></dir><file name="Observer.php" hash="e70b012dafd4552a6486154abd24ed51"/><file name="Queue.php" hash="a9ef5813d95abcd1ee89a0372a0cfeb8"/><dir name="Resource"><file name="Setup.php" hash="1f72a1f56aca455ea0d0289450e9edf5"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="282c40a155af7ea22f646e931fdb6732"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="NewsletterController.php" hash="0d6bd72d5a5518219548483f876a427b"/></dir><file name="IndexController.php" hash="ca4d3ed37230b73dc9cb81b1cbb39928"/></dir><dir name="etc"><file name="adminhtml.xml" hash="b685d64860bf37a09330bd9f89f5bc3d"/><file name="config.xml" hash="b55e7451abdeeb4b9ed24fbeeef3df29"/><file name="system.xml" hash="cf624f602a0f3eaac66c3e404a093573"/></dir><dir name="sql"><dir name="bronto_newsletter_setup"><file name="mysql4-install-1.0.0.php" hash="0f21d5315bbc4c27d0d38f9cf8c99bf3"/><file name="mysql4-install-1.4.0.php" hash="4a779a923947af258688d01143a16362"/><file name="mysql4-install-1.4.4.php" hash="089b40f9419c2fd21af62df207327a20"/><file name="mysql4-install-1.4.5.php" hash="8e97902e5e83992e678ba6144ed130b5"/><file name="mysql4-install-1.4.6.php" hash="74d29bc9655aeafa381ba5dc5f53df69"/><file name="mysql4-install-1.4.7.php" hash="74d29bc9655aeafa381ba5dc5f53df69"/><file name="mysql4-upgrade-1.4.0-1.4.1.php" hash="7eeba27e7b5480c8b502c3805554e2de"/><file name="mysql4-upgrade-1.4.1-1.4.2.php" hash="32f724b99d88e037ade72c8a9f1e0da7"/><file name="mysql4-upgrade-1.4.2-1.4.3.php" hash="63c728bb0cd7fa83bb5536d4500548f4"/><file name="mysql4-upgrade-1.4.3-1.4.4.php" hash="4f08a427c7706ea0988bcdcca6072218"/><file name="mysql4-upgrade-1.4.4-1.4.5.php" hash="c49018730275134d72f0802e1bc4da47"/><file name="mysql4-upgrade-1.4.5-1.4.6.php" hash="7de96310cf9bfe375e3026ed5c934ce2"/><file name="mysql4-upgrade-1.4.6-1.4.7.php" hash="6e40d94220fc0f2305546f7a8d5e754a"/></dir></dir></dir><dir name="Order"><dir name="Block"><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><dir name="View"><dir name="Tab"><file name="Info.php" hash="4caacae5f31c84f898be5798cc85b7b7"/></dir></dir></dir></dir><dir name="System"><dir name="Config"><file name="About.php" hash="332c01d15a8b75f9add5988f35519135"/><file name="Cron.php" hash="ac79366d0bc9ad7ff74721d5b140e4ba"/><file name="Suppressed.php" hash="86af8a0b74f4f98e2a9b4d7ea08aa063"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Reset.php" hash="006ed5b9bc5adbf127fb542b0938fdda"/><file name="Run.php" hash="700e3f9645a9e25e56ae1deb6764bf44"/><file name="Sync.php" hash="2ff1bf077cc56b3620fe87a494d7f770"/></dir></dir></dir><file name="Bta.php" hash="2ec920ce5a6ea57aff16c8d9cf89f7e9"/></dir><dir name="Helper"><file name="Data.php" hash="293672cfd547d65ff94b80b3bf932d39"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="d041d29b798d10821e041c5b89fb5889"/></dir><file name="Queue.php" hash="2b0ba0993a43cc6856647684ac30add9"/><file name="Setup.php" hash="05b0a2d4806e712410479a3e7c709fd8"/></dir><file name="Observer.php" hash="b2f1bbc074be667a0cd60c2c886c372c"/><dir name="Order"><file name="Observer.php" hash="5a05f37813b04968a2274098fdf8b1f7"/></dir><file name="Queue.php" hash="91c27f641cc570d6a7b9d7992af3be48"/><dir name="Quote"><file name="Observer.php" hash="f7dba30d14388a0770c26750f382fa75"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="9bc2a90d644af8334aa22b952132b08f"/></dir><dir name="Source"><file name="Description.php" hash="7f497c17388c360f239e2aa90d943b9c"/><file name="Price.php" hash="283cc883ded57664870d89b22b547b19"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="OrderController.php" hash="9029b7316cf28467e03525000af880ad"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="784d322d920c63e63bed37c50e1c04d1"/><file name="config.xml" hash="57a8d0e86c320403b17676cf9de2eaca"/><file name="system.xml" hash="5333f04e2f8371c8ab7710ff42bea238"/></dir><dir name="sql"><dir name="bronto_order_setup"><file name="mysql4-install-1.0.0.php" hash="4988c452cc0d367f34e9c33df0d4256d"/><file name="mysql4-install-1.1.8.php" hash="afd415c7bb5a81b18c6705293f3978e6"/><file name="mysql4-upgrade-1.0.0-1.1.6.php" hash="0c42c6e3539b0f07c76b4f2c582d110f"/><file name="mysql4-upgrade-1.1.6-1.1.7.php" hash="7c4d2c1feed28b964ea82373e625a11f"/><file name="mysql4-upgrade-1.1.7-1.1.8.php" hash="ae58d4271deb9c60e61214020d46e755"/></dir></dir></dir><dir name="Reminder"><dir name="Block"><dir name="Adminhtml"><dir name="Delivery"><dir name="Grid"><dir name="Renderer"><file name="Customer.php" hash="be1537b58943a2cc27982deb03ec9e39"/><file name="Fields.php" hash="04f0dc7c4a24769cfc68f1508e0d338b"/></dir></dir><file name="Grid.php" hash="472fa8302dae712fbf9a6b6f5ea80dd0"/></dir><file name="Delivery.php" hash="b0bd1dcede57f8dad8ba4416b26d3986"/><dir name="Promo"><file name="Notice.php" hash="437ce674b25c14e33e17e09a0d471176"/></dir><dir name="Reminder"><dir name="Edit"><file name="Form.php" hash="2db520c0f438affbf477801ddde7f9cf"/><dir name="Tab"><file name="Bronto.php" hash="3b49a4f78038b8ac6de5390c2a73151d"/><file name="Conditions.php" hash="71d7c0a13352ec3d5b19b6bc059238bb"/><file name="Customers.php" hash="955c3e21ccc4a6e165abd38410383422"/><file name="General.php" hash="10012f0027d5ecf28a24ea84c2410be0"/></dir><file name="Tabs.php" hash="106e44febc4b6a7a3928c5dec68d6123"/></dir><file name="Edit.php" hash="783ca6f21744c56da930fd44ddc6e3a5"/><file name="Grid.php" hash="c87a852ef998ea17af709c0221abd15d"/></dir><file name="Reminder.php" hash="a55e63b29f9cafd9053696f60ffe993f"/><dir name="System"><dir name="Config"><file name="About.php" hash="8380b5e750fe0f2b5b95407c99d2e195"/><file name="Cron.php" hash="84100d0bffc2e16d84bc24577ba9c6bf"/><file name="Settings.php" hash="5d0042b1b2ad5df43856c0a68d63b3b4"/></dir></dir><dir name="Widget"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Email.php" hash="bcc3abd5bbbb5e8f6e19454850d2e8dd"/><file name="Id.php" hash="c35c0feeac92dce912bb8e3ad2cc7e6e"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="4b3e67cf3a0ce095ca454fe4513c6e89"/><file name="Data.php" hash="32eedd1f4657a65cd48182975b3e8eb9"/><file name="Message.php" hash="b65f0a4095ab4671c57a26451b3cc524"/></dir><dir name="Model"><dir name="Condition"><file name="Abstract.php" hash="3e164c6f67c1ca26c0be533cd9fc1b0c"/><dir name="Combine"><file name="Abstract.php" hash="2a43ca00f8bc4ab36bc87654ad9c6191"/></dir></dir><file name="Delivery.php" hash="41c3912dc5b5cb28d828358c1e0f7bc4"/><dir name="Email"><file name="Message.php" hash="c3b99ab7af9a776b98ffbcca3fecdcc6"/></dir><dir name="Mysql4"><dir name="Customer"><file name="Collection.php" hash="577bd12e2df9940fe551fe41c96133cf"/></dir><dir name="Delivery"><file name="Collection.php" hash="1247c3f58061d41f66ee6b9483c200ca"/></dir><file name="Delivery.php" hash="3639d2739b29734ba8aa8950e67e9621"/><dir name="Rule"><file name="Collection.php" hash="a99264c81d15780f305b02cde1564461"/></dir><file name="Rule.php" hash="9ab935ade0f74d53baad214ccfbeb670"/></dir><file name="Observer.php" hash="299bca8979d361a027fe4ac1598df2f4"/><dir name="Rule"><dir name="Condition"><dir name="Cart"><file name="Amount.php" hash="b1bd2bd9aabb863184461b0594dad9b0"/><file name="Attributes.php" hash="74cfde1032d8d75241f7522ddc12e11d"/><file name="Combine.php" hash="660f6842b8c1a5acff2c3b4f12fc73a9"/><file name="Couponcode.php" hash="84ef3ecb8bcd57412af80a0d137335bb"/><file name="Itemsquantity.php" hash="50eae47f28bf3660ee0684c9037f5bf8"/><file name="Sku.php" hash="12a7af32e16e21d2a2e4e157c469d1e5"/><file name="Storeview.php" hash="c2310efcb3060e91bf2aab73b0ac8ca9"/><file name="Subcombine.php" hash="c8ad5b2c46116793e2f2df17fe0862c0"/><file name="Subselection.php" hash="0142065f76b4e24ec75b6685eea82642"/><file name="Totalquantity.php" hash="8e492fb70a94549b8d6adbc50b2a4e50"/><file name="Virtual.php" hash="cd12a3218daf4a447b4fd49141101305"/></dir><file name="Cart.php" hash="8c259fbcb6e302e7b62bd9819d869b16"/><dir name="Combine"><file name="Root.php" hash="eb4b22b6554b507b61f3e6be30048b07"/></dir><file name="Combine.php" hash="2f15f1241aa71fd76bb511415c6882a3"/><dir name="Wishlist"><file name="Attributes.php" hash="0ecf162a2fc4225ce37de714da9e6210"/><file name="Combine.php" hash="279af17bec3eeb6a97243a93eb4e3f85"/><file name="Quantity.php" hash="8de8793029340cb8c813e0cf034f372d"/><file name="Sharing.php" hash="ad302122deb2065aa28b68748cfae492"/><file name="Storeview.php" hash="83716681ba30c6d4c48dada3a0973971"/><file name="Subcombine.php" hash="4804ad602e3cc622dbfcab4030dff1c2"/><file name="Subselection.php" hash="68d96f6943becdc728f2aa436a8ac4c7"/></dir><file name="Wishlist.php" hash="f5c474dd7b126d69a3e0f7000abd3a95"/></dir></dir><file name="Rule.php" hash="8912deab112d5789cd975b7907c0d4ea"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Allowsend.php" hash="61965e981ddd79976f0ee21b01e6a0ae"/><file name="Cron.php" hash="6e527885884985fca33236f40a7f3689"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="DeliveryController.php" hash="d4630eff20209e0d46b08a29b543979a"/><file name="RemindersController.php" hash="6cd60b0a9c33075640c5926d94a78405"/></dir><file name="LoadController.php" hash="16f4bf9c99a8e0bb0b369e75141f49b2"/></dir><dir name="etc"><file name="adminhtml.xml" hash="baaae901f8ff9d2ab12b0158ed5a4ca7"/><file name="config.xml" hash="47791bb04d1362ba39cd6ccff9eed0f7"/><file name="system.xml" hash="3304170025272a4d9cc96016230bc5af"/></dir><dir name="sql"><dir name="bronto_reminder_setup"><file name="mysql4-install-1.4.12.php" hash="eae3eb4a69de44df200c52001783a4f0"/><file name="mysql4-install-1.4.13.php" hash="12419b6117a9e0e10f565453feed8740"/><file name="mysql4-install-1.4.14.php" hash="be67c1c55e1781c652d0036984fd0866"/><file name="mysql4-install-1.4.15.php" hash="f2bc98906fc36bf0640b292851ab99e1"/><file name="mysql4-install-1.4.16.php" hash="e34c42b202a7435abe2fa46f01bde257"/><file name="mysql4-install-1.4.2.php" hash="07b5a7b8ef247def75617e92738f0950"/><file name="mysql4-upgrade-1.4.0-1.4.2.php" hash="fefa638ca0ed7c5bc80a1b67e27c8703"/><file name="mysql4-upgrade-1.4.10-1.4.11.php" hash="130a688eb03e4f476308d0d11c32141a"/><file name="mysql4-upgrade-1.4.11-1.4.12.php" hash="766c901369f06aaadc8ffde3befb4aaa"/><file name="mysql4-upgrade-1.4.12-1.4.13.php" hash="172b48942497efd2305eff260bc28d9c"/><file name="mysql4-upgrade-1.4.13-1.4.14.php" hash="3218dae864cac00ff74655160ad31663"/><file name="mysql4-upgrade-1.4.14-1.4.15.php" hash="2e842e4c18259590cdafd2139dd4eb7e"/><file name="mysql4-upgrade-1.4.15-1.4.16.php" hash="671f39e2f90faf1165d50b517be8e04f"/><file name="mysql4-upgrade-1.4.2-1.4.9.php" hash="4692060e7c938aea129c53619f0b3c19"/><file name="mysql4-upgrade-1.4.9-1.4.10.php" hash="9698883135211d54a3c711fead02c187"/></dir><dir name="reference"><file name="saveMatchedCustomers.sql" hash="c4f32ee8be31f7a652369c148271a6c7"/></dir></dir></dir><dir name="Reviews"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b62835e11224c3e8cb7256715d145814"/></dir></dir></dir></dir><dir name="Helper"><file name="Contact.php" hash="a85da1e1cc10dd48ac88b84d91cb9a1d"/><file name="Data.php" hash="2a58d1a94b558027fc456ece292a6df5"/><file name="Message.php" hash="df3015f886b4dd283d280cf26ee69cc7"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="c36aecae4ebb1de05835be6c02cd6875"/></dir><file name="Queue.php" hash="52ecc7632d642c9ee3fec1141aba9c30"/></dir><file name="Observer.php" hash="f7d5f5f04e348a30fe69b0c80f203909"/><file name="Queue.php" hash="45aea4c54a465d5ea9110cdd853de23b"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Message.php" hash="9a5e15326017cbebd7b59b5c80693685"/><file name="Orderstatus.php" hash="8b1d5d0ede3627d212595be7fa93494e"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="35bed0690cd9f58063c0c5e03e057469"/><file name="config.xml" hash="77fe8f2486ae74b11ac75f8101a8a554"/><file name="system.xml" hash="19a1e6fabfab61be5ddf74523624b94a"/></dir><dir name="sql"><dir name="bronto_reviews_setup"><file name="mysql4-install-0.0.1.php" hash="7c405d3819f5c79ec405dc372ee38dc5"/></dir></dir></dir><dir name="Verify"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="About.php" hash="b50a08cd24985483cad82c76305da5ce"/><dir name="Advanced"><file name="Observersearch.php" hash="0351378eb6fbfa8e9b1cde55a9b589e5"/></dir><file name="Conflictchecker.php" hash="cf1736b689d1ef2b3f0b7d7d84b703ba"/><dir name="Form"><dir name="Field"><file name="Apitoken.php" hash="cb84fee5b4e18ca0092f385d6ede6711"/><file name="Button.php" hash="7041c0e923d9929796597160679bc94c"/><file name="Classpath.php" hash="c9c60b09c180960dd107d74f79b63edc"/><file name="Conflict.php" hash="3797f7f88329ecf4d5c9e3e48c9c89e5"/><file name="Events.php" hash="c88df55f9105d0aa5a1574bc37c5a8f8"/><file name="Index.php" hash="612cf825df2f10c0d4d00ac54f413aba"/><file name="Roundtrip.php" hash="4b84fb21a59f5939ab7361dcc816ce1d"/></dir><file name="Magecron.php" hash="2e3817a852f8a57444e8a0c54f87fda7"/><file name="Permission.php" hash="e5185de6bc1976ee7497956cc9162a17"/></dir><file name="Installs.php" hash="697740e9decb18a27abc907d024115e8"/><file name="Permissionchecker.php" hash="6f0be4f5594afe1f6924b839db582180"/></dir></dir><dir name="Widget"><dir name="Button"><file name="Classpath.php" hash="1687def566fccc786c263d94b4c9c9b5"/><file name="Conflict.php" hash="473cda5cc65b9302efb3618c3b5af973"/><file name="Events.php" hash="3da5bc0026613dfd921a25a942fb3d7c"/><file name="Permissions.php" hash="b89e87e9b6848cde87a4f6343b3feb1a"/><file name="Runroundtrip.php" hash="5a98f930b382a7a0c01f3b346def4955"/><file name="Runtoken.php" hash="63a721c0a25bdbd58be941ba7c5d21c8"/></dir></dir></dir><file name="Conflictprinter.php" hash="05a32eca413a0eda87bcdb7bd0661642"/><file name="Permissionprinter.php" hash="8925da12d1e8dc5f180327dd94d18310"/></dir><dir name="Helper"><file name="Apitoken.php" hash="bc1f30a551a958011fbba91310cab77d"/><file name="Conflictchecker.php" hash="55e0aacf4cd6e9d2b4d52ebe21fe7850"/><file name="Data.php" hash="6622f73bf7af3e1e68ad27551fb7d920"/><file name="Permissionchecker.php" hash="da5fc3a69e6477299084d210aaaad6b7"/><file name="Roundtrip.php" hash="b5566d978e4e24cf06bee83ab92772fc"/></dir><dir name="Model"><dir name="Config"><file name="Blocks.php" hash="0000df779f3e1fb60350b14b8a6185e3"/><file name="Checker.php" hash="a38555d682b302967410b73ebab04b4f"/><file name="ConfigAbstract.php" hash="79024697562751ff46c939d9d680fc86"/><file name="ConfigInterface.php" hash="45cecfde48e4ef0657a6418019f02e4a"/><file name="Datastore.php" hash="fb5ea494075ce81380d1447c07fa052c"/><file name="Helpers.php" hash="1dc143d542d3fd85ccff785f913556f1"/><file name="Models.php" hash="3062f1f3c4950d965054afe6b75b4b0f"/><file name="Printer.php" hash="dfd6bfdcc94a1afb83ae6c3599abb21c"/><file name="Resources.php" hash="24bbf7de88b25250a81a2d7380d5baa2"/></dir><dir name="Contact"><file name="Builder.php" hash="9d578480a7e4c8fde2a33e698a9efced"/></dir><dir name="Core"><dir name="Config"><file name="Base.php" hash="c11b6cbaf1802d3c6ab58853b468f5d7"/><file name="Element.php" hash="8a7c9221a95c1317a8ae166e692a4ee0"/></dir><file name="Config.php" hash="4afa2c4a35fd81b282aad0d873c5700e"/></dir><dir name="Lib"><dir name="Varien"><dir name="Simplexml"><file name="Config.php" hash="076958ed612323869d2437872744ed2a"/><file name="Element.php" hash="a8c28fd3b6b00ad689d4850e79441dec"/></dir></dir></dir><dir name="Mysql4"><dir name="Core"><file name="Config.php" hash="3b8fb36a66a675c4d12926bceadb4ea5"/></dir></dir><dir name="Path"><dir name="Locator"><file name="Array.php" hash="42fd6c7004b0f02f954956563edde9a0"/><file name="Factory.php" hash="46007808ba897fa6816fb7771a2b18dd"/><file name="IteratorAbstract.php" hash="a0b728053dc63e73edc8231fd169cebc"/><file name="LocatorInterface.php" hash="b775ce0d189ef276c9bbeade7da67b4f"/><file name="Stack.php" hash="328481c9d963f653a95f333fb440bea5"/></dir></dir><dir name="Resource"><dir name="Core"><file name="Config.php" hash="aa2fb8c4fb153e742c690ab8bc8b5a75"/></dir><dir name="Db"><file name="Abstract.php" hash="d668c24c90f80bc197c83eb0a3e10aa6"/></dir></dir><file name="Roundtrip.php" hash="437aa07b0f001bb29b20e9dda2ae81f8"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Magecron.php" hash="2745874b81ae4235aa885f78c2076561"/></dir><dir name="Source"><file name="Classtypes.php" hash="772cab11a7470a2dd68ece3688c68d6a"/><file name="Wsdlcache.php" hash="b7d9c1c4d271c03a7486fc86eec3b6d9"/></dir></dir></dir><dir name="Validator"><file name="Checker.php" hash="35799249fcc93b31ff12da539cfb0d84"/><file name="Directory.php" hash="aa05ae40ad0b7aaffffaa6063bd8561e"/><file name="File.php" hash="c29c1cd2140186dc67c5e62064b79c0f"/><dir name="Filter"><file name="PatternIterator.php" hash="c129a6ee0fb4a45ff52644da2c0abfa1"/></dir><file name="Group.php" hash="59ad6dd4232ee113e1fe8161a82148ba"/><file name="Owner.php" hash="69e1c54dca88532208ce1f35f4491d99"/><file name="Printer.php" hash="23a00ec415b8665e5457ac09939e2ab2"/><file name="ValidatorAbstract.php" hash="d043c743309f5d64640698953269ece6"/><file name="ValidatorInterface.php" hash="02f543af08eda65263f4b005f3b3bdaf"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="AdvancedController.php" hash="0942ed5d83442e97af40d4572c3e21f8"/><file name="ApitokenController.php" hash="f804594b22260cb597cc0e5cfe633093"/><file name="ConflictcheckerController.php" hash="1d23621c640eecf2a813121cfc23850b"/><file name="PermissioncheckerController.php" hash="2e254bd755cd9d05d7eb6865a2ffb0e7"/><file name="RoundtripController.php" hash="efb601f3ceca89885d031f06218b2a4d"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="d7aa2c1c8fa26ad3ab910940abd9199e"/><file name="config.xml" hash="7e4888e5556ea0e1b30cb8fde1c1120a"/><file name="system.xml" hash="a3cf28dcbfc85e82d362d38704f6da56"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Bronto_All.xml" hash="5a9c06b6313882589765b9bcf0402bbb"/><file name="Bronto_Customer.xml" hash="a11c20f008ee2eae14baa3b549d5adee"/><file name="Bronto_Email.xml" hash="b7cdca4b15753edcefe8b9e0abb780bd"/><file name="Bronto_Newsletter.xml" hash="2115c5225e02ab5d4e56749cc5eff6ad"/><file name="Bronto_Order.xml" hash="63f1537add6088417945657bec98ffe9"/><file name="Bronto_Reminder.xml" hash="08503ab78994178b822ef9b0add243f9"/><file name="Bronto_Verify.xml" hash="ad72ea2ebfd99dbe2773b2735d0ec973"/><file name="Bronto_News.xml" hash="3496cd7578991889909fbd8daa170d2d"/><file name="Bronto_Reviews.xml" hash="23a398c055d062c4a5e19e72a0c2df95"/><file name="Bronto_Emailcapture.xml" hash="98b59bbf388d6c715f345b8906bd2fa1"/></dir></target><target name="magelib"><dir name="Bronto"><dir name="Api"><dir name="Account"><file name="Exception.php" hash="1a851457b2a032fb6d149fe9ef111c57"/><file name="Row.php" hash="3ab1e97019ef87bcd464eeaabf652886"/></dir><file name="Account.php" hash="33b9ba8867fe69135391c26f98b5852a"/><dir name="Activity"><file name="Exception.php" hash="3ac1f2caea6465931cbf927f1033ec06"/><file name="Row.php" hash="de166130c57670bf486a783a4501e2d4"/></dir><file name="Activity.php" hash="f5f48488e40507bc108b35c599e4e5a2"/><dir name="ApiToken"><file name="Exception.php" hash="e06d0a4c9469da7333e6a596e9c37c5d"/><file name="Row.php" hash="f3742811cec1cbf0be583296b617dfbd"/></dir><file name="ApiToken.php" hash="65bbd18974bbbf620dc2df23bdeb4469"/><dir name="Contact"><file name="Exception.php" hash="809bdce6db3bb9c72a3173bb08c1b19e"/><file name="Row.php" hash="2e360d131c2abe19e154b5f3795a58f0"/></dir><file name="Contact.php" hash="55bab8398154e96db6b0ca3ed88718e0"/><dir name="ContentTag"><file name="Exception.php" hash="5a8bc58af480a574e8061c62ad5590b4"/><file name="Row.php" hash="e470d8bcd686d42a886e59d5184b5eed"/></dir><file name="ContentTag.php" hash="14f1cbefe1027338d28db301a1c2df3d"/><dir name="Conversion"><file name="Exception.php" hash="73dd991a663b99050428f54fc13fb433"/><file name="Row.php" hash="115d01ea0e0e6ade42fcab76dff71c35"/></dir><file name="Conversion.php" hash="60ec52dcfeda92294d1ab10bb29a486a"/><dir name="Delivery"><file name="Exception.php" hash="003dbb49ea3be65fe35dfa9b7ec743c5"/><file name="Recipient.php" hash="562bdc8d86b92ec293a338fdd7bf928a"/><file name="Row.php" hash="9c6149e74a305f62b9806df5a20e6a00"/></dir><file name="Delivery.php" hash="668dc6493cefe960c7dc8fe1fe87bf08"/><dir name="DeliveryGroup"><file name="Exception.php" hash="9291b2adb576a6781a0d624cc3288453"/><file name="Row.php" hash="29adb1f866cf1d24ef0abac19f95fbd0"/></dir><file name="DeliveryGroup.php" hash="7dd295b65f22e65dff3bf45c4336e985"/><file name="Exception.php" hash="bacb7c782ef7f612edaf3d39c20118ef"/><dir name="Field"><file name="Exception.php" hash="db651b9fa4b5161e3a32af49cc12cc64"/><file name="Predefined.php" hash="15fadb32175098d9ded60550d1748a4a"/><file name="Row.php" hash="6871d05f399a8a9dfa0742952eaa6481"/><file name="TypeGuesser.php" hash="1027ea97675a16cc964aa0d8ba63e642"/></dir><file name="Field.php" hash="32d5876335ec815acb50d3b4e7bf3ccd"/><dir name="List"><file name="Exception.php" hash="0f964fac998c89a0d4d515979bd81b98"/><file name="Row.php" hash="6516df43a1a94beee7b57fae71c27134"/></dir><file name="List.php" hash="ef240fe5e1422479a83291ad30b468ac"/><dir name="Login"><file name="ContactInformation.php" hash="bc1ce7f57c67fa21cd0881d0384a1cac"/><file name="Exception.php" hash="fff7546235b416b7008a9e4bd646fc19"/><file name="Row.php" hash="578553fcbf1941d0eb5890614c57ae91"/></dir><file name="Login.php" hash="a61cf5ac4c3ea76b03a71750e085df88"/><dir name="Message"><file name="Exception.php" hash="755f7f14cdb234931708968ac0bad4a4"/><file name="Row.php" hash="5732b5550c8c6444790f2f20e626ff08"/></dir><file name="Message.php" hash="cc3c9939757371ad7fd2d297df394621"/><dir name="MessageRule"><file name="Exception.php" hash="b0398ee96ed70c483f38b50f305e82a8"/><file name="Row.php" hash="8e7532184ee265a927a195ac36e5a518"/></dir><file name="MessageRule.php" hash="ae1b3f16683656066a83bcf9f2863710"/><file name="Object.php" hash="4ea2880431ac5761cbf7478d809577f6"/><dir name="Order"><file name="Exception.php" hash="8312e1a1ab46bcf88b72983bb11a6493"/><file name="Product.php" hash="3785f2f460fec6c18c6164176de52449"/><file name="Row.php" hash="1400de022188806bb94e98544c054ef6"/></dir><file name="Order.php" hash="ad690b37bc577879020d10e5ac70ef3d"/><dir name="Row"><file name="Exception.php" hash="4c1a45512e0912644f94a88d4298d3a9"/></dir><file name="Row.php" hash="259418b11987939378747a9c46fae1ae"/><dir name="Rowset"><file name="Exception.php" hash="b5202ed6f61bfe06b90f73c03ca28ffa"/><file name="Iterator.php" hash="9ea7a244b83e7b9318bfe8ed371a149f"/></dir><file name="Rowset.php" hash="3f40382933e2f392b6320fd79db720cd"/><dir name="Segment"><file name="Exception.php" hash="bd5c2302ef222ff55981cc38477a9310"/><file name="Row.php" hash="b840493b8b2c3cb6686de0e5bedfa2ba"/></dir><file name="Segment.php" hash="0cf99babff6169afa427f302c76023dd"/></dir><file name="Api.php" hash="17aace21dbebcab84a80091230ca03e9"/><file name="Observer.php" hash="21bc70d405fcd47b0473ac89fd3d4ae2"/><file name="SoapClient.php" hash="81dd0a8a8c15ac96280d2f1b6bb3311e"/><dir name="Util"><file name="Colors.php" hash="14313213b3a70c79a56c574523b9b90b"/><file name="CountryCodes.php" hash="4efb9c354d29a901368c46aab40f79d4"/><dir name="Retryer"><file name="FileRetryer.php" hash="bdc72ace54ace32081115442d28cb972"/><file name="RetryerException.php" hash="54b70d7abbc32b55649a193e8e70dcb5"/><file name="RetryerInterface.php" hash="cc57d5a02a55811a13a31ed9beff126f"/></dir><file name="Uuid.php" hash="ba62bdec6488ccb621e0bfd726c6107a"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="bronto"><file name="bronto.css" hash="ebc2f1ade554e3cad4bf0b091ff674d1"/><file name="cron.css" hash="90af6378226e13e17b7329132d41e0e7"/><dir name="images"><file name="BrontoGuide.png" hash="be2bb3605cc5f1899ad996fcd2ceae84"/><file name="InstallStatusDisabled.png" hash="5cf8d7dd8ed623f8b38e6ea3ed89861a"/><file name="InstallStatusEnabled.png" hash="11ea6d1f0ba319b62ed1728e9b747108"/><file name="InstallStatusError.png" hash="91fdd0af3ffd20d0b8a77645bb9cfcdc"/><file name="ajax-loader-tr.gif" hash="1ae32bc8232ff2527c627e5b38eb319a"/><file name="bg_notifications.gif" hash="df73b8aa7e48bb56e0a644245aa3683f"/><file name="bronto-mini-off.png" hash="af2c6a5434604db0bb3a2cc4a51b5c77"/><file name="bronto-mini.png" hash="7989c68c0e83b7b04af308780aa82259"/><file name="bronto_contact-mini.png" hash="e221b304ad42cba129a9dcf17ce5180e"/><file name="bronto_contact_import-mini.png" hash="a9e0904f7219be45fd1ed88c5b9a1650"/><file name="bronto_general-mini.png" hash="aca50d84fe324abbb36ff2853d9cad01"/><file name="bronto_help.png" hash="d0ed63d7c68e8b52583ce428b3846afc"/><file name="bronto_news-mini.png" hash="bb8b3beb16c10d8b38ddb11f3f4347e8"/><file name="bronto_newsletter-mini.png" hash="9c45a6dd689ad758cf927cb381621b35"/><file name="bronto_order_import-mini.png" hash="a2b13488fccfdd5b2194843800abadda"/><file name="bronto_reminders-mini.png" hash="c85bafdc82718769c8b801fd64e7bd72"/><file name="guide.png" hash="10c880d9e40f1283f99e02ce2d025a4f"/><file name="logo.png" hash="3b7c4cb9faf220091a5fbae3c7f87afa"/><file name="message_approved.gif" hash="465a056a3ba3d94367f51c3c0b751391"/><file name="message_not_approved.gif" hash="e4f28607f075a105e53fa3113d84bd26"/><file name="section_logo.png" hash="98f2570d14580cee2c6cf66cca540b39"/><file name="site_name.png" hash="fb2cc4e1e00cdc95a94c04fccfa5e1b3"/><file name="support.png" hash="0910e2eb718379d037ead6e0af9c4855"/></dir><dir name="js"><dir name="guider"><file name="README.html" hash="be17cdbc961dc921944cef4e7daa33c3"/><file name="README.md" hash="1c11ec7951035fe0611edded566901a0"/><file name="changelog.txt" hash="4c107fe228a620f6f3118b128e62c0b5"/><file name="clock.gif" hash="12aa3f72e722ac8e5eeb68823024278f"/><file name="component.json" hash="05fe7fcf63c00abd58efa072baa8248f"/><file name="guiders.css" hash="a6df4a6e2d4f3075e29841a6844ee30b"/><file name="guiders.jquery.json" hash="261d2b3a2d3a21e49a0153f0c8f2c3e9"/><file name="guiders.js" hash="42b1675f9d1a93b89d62e97f2db895bb"/><file name="guiders_arrows.png" hash="757812709656e9592d9d724a63624d0d"/><file name="guiders_x_button.jpg" hash="2af6c2b68534a8b2c48d0ddc14a5b801"/><file name="jquery.min.js" hash="0652da382b6fceb033dfe2b6c06d4d11"/><file name="promo_gmail.png" hash="4837435633204a9001b88c2d8ef451ed"/></dir><file name="jquery-1.10.2.js" hash="91515770ce8c55de23b306444d8ea998"/><file name="jquery-1.10.2.min.js" hash="628072e7212db1e8cdacb22b21752cda"/><file name="jquery-1.10.2.min.map" hash="6c3ccfc221d36777d383b6e04d0b8af9"/><file name="jquery-noconflict.js" hash="3179f2255b046d5f2e9a71e365287bef"/></dir><file name="news.css" hash="84d2866b08b706164c6e545767ff331a"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="bronto"><dir name="common"><file name="popup.phtml" hash="d81fa7237b4fb63fcc970e73d71a6cc6"/></dir><dir name="emailcapture"><file name="js.phtml" hash="d7920693b4aefb498610d65dbebca42a"/></dir><dir name="newsletter"><file name="checkbox.phtml" hash="a19c0ff807258ffe398704fde325cfab"/><file name="js.phtml" hash="dc11829ac113c50e93bdc08580998af0"/></dir><dir name="order"><file name="js.phtml" hash="e398cfbfe9df41feeadb251216422cd9"/></dir></dir></dir><dir name="layout"><dir name="bronto"><file name="common.xml" hash="f1e7ee067163e84f2e3bfc5474b3647d"/><file name="emailcapture.xml" hash="b5d3b0efc5daffb5fa66561f690013d0"/><file name="newsletter.xml" hash="b7d4c9b1fb4fabb4255c6df64e98d332"/><file name="order.xml" hash="fba740927a514649988b16e8f936072b"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="bronto"><dir name="api"><file name="guide.phtml" hash="e0be3aa741add86dc5f297fcc09c714a"/></dir><dir name="common"><file name="about.phtml" hash="fa5886d9dba15226eec520916b7c4aa2"/><file name="cron.phtml" hash="80af8ca4a8e2c74449904748aeaf718b"/><file name="guide.phtml" hash="07bcf3ad2e6a9136888bbf4a8bf0b51d"/><file name="guiders.phtml" hash="790ac5e5f8df13753db5ac3e68d08d76"/><file name="suppressed.phtml" hash="07fd355b58dd1c9ee074c7fb132545e2"/></dir><dir name="customer"><file name="guide.phtml" hash="14e9b74f62bde430a6df96cf04ee94dc"/></dir><dir name="email"><file name="guide.phtml" hash="c8fe9f3cadf5e50d6f0e69979462c407"/><dir name="template"><file name="edit.phtml" hash="802ef394d1943f18d33d39d0b85dcc3d"/><file name="list.phtml" hash="e9eb7ffc48f9d17a21917d86ff18b0fc"/></dir></dir><dir name="news"><file name="guide.phtml" hash="19026e62d49476371edc4f9e7f68d2c1"/><file name="item.phtml" hash="7146fcc10eeb0bdc33a78ea8fe060f74"/></dir><dir name="newsletter"><file name="guide.phtml" hash="58cb7d63937a756afd939c0c69edeccb"/></dir><dir name="order"><file name="guide.phtml" hash="831ff327cf49d198bec62ad968587593"/></dir><dir name="popup"><file name="guide.phtml" hash="6bd6240f1402a03dd0d5022b8c39b3ab"/></dir><dir name="reminder"><dir name="grid"><file name="container.phtml" hash="28518ad2522f1b213102eb52071ef247"/></dir><file name="guide.phtml" hash="db033c357b5e335b6d65a44fa78c7c7e"/></dir><dir name="reviews"><file name="guide.phtml" hash="caad8c25594859c554a1fa1e505c92f0"/></dir><dir name="verify"><dir name="advanced"><file name="observer.phtml" hash="775deb643169f76f72793873a258eac1"/></dir><file name="advanced.phtml" hash="8479f4762de8943de234407bbc80b679"/><dir name="conflictchecker"><file name="errors.phtml" hash="91adf7e31ce9ec1ae06c18adb489bf54"/></dir><file name="guide.phtml" hash="664368c479f04ef022e9f0f96b2b9eca"/><file name="installs.phtml" hash="34b6bd602043376f8c17ef7744a27537"/><dir name="permissionchecker"><file name="button.phtml" hash="0a98a58dcb6d28d768e83556e6e690bc"/><file name="errors.phtml" hash="6da7357831323392e3badcb1cc8268aa"/><file name="index.phtml" hash="628a80e9245642cb92cc75a6dd07d1d7"/></dir></dir></dir></dir><dir name="layout"><dir name="bronto"><file name="common.xml" hash="17249c1370a12a8c0a68959d217f88f0"/><file name="email.xml" hash="be77c906770a0d818898a910b03cbe4f"/><file name="news.xml" hash="96d679b735d551a3e83fb71bfe2a7fca"/><file name="reminder.xml" hash="07186394676c6db016d00bdee53e8394"/><file name="verify.xml" hash="e5676df09f0a79bdedc314e2bfdb4b59"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="shell"><dir name="bronto"><file name="cron.php" hash="7f6eaae8f93fd3a63df8b498d485c108"/><file name="fix.php" hash="98e9ea41e1faae9a3f211b1a82afe217"/></dir></dir></target></contents>
61
  <compatible/>
62
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php><extension><name>soap</name><min></min><max></max></extension><extension><name>openssl</name><min></min><max></max></extension></required></dependencies>
63
  </package>
shell/bronto/cron.php CHANGED
@@ -17,12 +17,13 @@ class Bronto_Cron_Os_Script extends Mage_Shell_Abstract {
17
  * @var array
18
  */
19
  protected $_validCronTasks = array(
 
20
  'customer',
21
  'newsletter',
22
  'order',
23
  'reminder',
24
  );
25
-
26
  /**
27
  * Retrieve Usage Help Message
28
  *
@@ -39,7 +40,7 @@ Usage: php -f bronto/cron.php -- -a <action> <options>
39
  Defined actions:
40
 
41
  list Shows a list of all available tasks
42
-
43
  run Runs the Cron processes
44
  -t --task <task> Specifies an individual task to run
45
 
@@ -54,6 +55,9 @@ USAGE;
54
  */
55
  protected function _getTaskName($task)
56
  {
 
 
 
57
  return Mage::helper('bronto_' . $task)->getName();
58
  }
59
 
@@ -62,13 +66,14 @@ USAGE;
62
  */
63
  public function run() {
64
  $action = $this->getArg('action') ?: $this->getArg('a');
65
-
66
  switch ($action) {
67
  case 'list':
68
  echo <<<LIST
69
 
70
  Tasks:
71
 
 
72
  customer {$this->_getTaskName('customer')}
73
  newsletter {$this->_getTaskName('newsletter')}
74
  order {$this->_getTaskName('order')}
@@ -85,14 +90,14 @@ LIST;
85
  break;
86
  }
87
  }
88
-
89
  /**
90
  * Handle run action and get specified tasks
91
  */
92
  protected function _processCrons()
93
  {
94
  $task = $this->getArg('task') ?: $this->getArg('t');
95
-
96
  if (!$task) {
97
  $this->_runCron($this->_validCronTasks);
98
  } else if (in_array($task, $this->_validCronTasks)) {
@@ -100,10 +105,10 @@ LIST;
100
  } else {
101
  $this->_showHelp();
102
  }
103
-
104
  echo "Complete\r\n\r\n";
105
  }
106
-
107
  /**
108
  * Run Each Specified Cron
109
  * @param array $tasks
@@ -115,6 +120,9 @@ LIST;
115
 
116
  try {
117
  switch ($task) {
 
 
 
118
  case 'customer':
119
  $result = Mage::getModel('bronto_customer/observer')->processCustomers(true);
120
  break;
@@ -136,11 +144,11 @@ LIST;
136
  } catch (Exception $e) {
137
  echo $e->getMessage();
138
  }
139
-
140
  echo "\r\n{$this->_getTaskName($task)}: Finished \r\n\r\n";
141
  }
142
  }
143
-
144
  /**
145
  * Translate the result array into a readable string
146
  * @param array $results
@@ -152,7 +160,7 @@ LIST;
152
  foreach ($results as $title => $count) {
153
  $display .= ' ' . $title . ' = ' . $count . ';';
154
  }
155
-
156
  return $display;
157
  }
158
  }
17
  * @var array
18
  */
19
  protected $_validCronTasks = array(
20
+ 'api',
21
  'customer',
22
  'newsletter',
23
  'order',
24
  'reminder',
25
  );
26
+
27
  /**
28
  * Retrieve Usage Help Message
29
  *
40
  Defined actions:
41
 
42
  list Shows a list of all available tasks
43
+
44
  run Runs the Cron processes
45
  -t --task <task> Specifies an individual task to run
46
 
55
  */
56
  protected function _getTaskName($task)
57
  {
58
+ if ($task == 'api') {
59
+ $task = 'common/' . $task;
60
+ }
61
  return Mage::helper('bronto_' . $task)->getName();
62
  }
63
 
66
  */
67
  public function run() {
68
  $action = $this->getArg('action') ?: $this->getArg('a');
69
+
70
  switch ($action) {
71
  case 'list':
72
  echo <<<LIST
73
 
74
  Tasks:
75
 
76
+ api {$this->_getTaskName('api')}
77
  customer {$this->_getTaskName('customer')}
78
  newsletter {$this->_getTaskName('newsletter')}
79
  order {$this->_getTaskName('order')}
90
  break;
91
  }
92
  }
93
+
94
  /**
95
  * Handle run action and get specified tasks
96
  */
97
  protected function _processCrons()
98
  {
99
  $task = $this->getArg('task') ?: $this->getArg('t');
100
+
101
  if (!$task) {
102
  $this->_runCron($this->_validCronTasks);
103
  } else if (in_array($task, $this->_validCronTasks)) {
105
  } else {
106
  $this->_showHelp();
107
  }
108
+
109
  echo "Complete\r\n\r\n";
110
  }
111
+
112
  /**
113
  * Run Each Specified Cron
114
  * @param array $tasks
120
 
121
  try {
122
  switch ($task) {
123
+ case 'api':
124
+ $result = Mage::getModel('bronto_common/observer')->processApiErrors();
125
+ break;
126
  case 'customer':
127
  $result = Mage::getModel('bronto_customer/observer')->processCustomers(true);
128
  break;
144
  } catch (Exception $e) {
145
  echo $e->getMessage();
146
  }
147
+
148
  echo "\r\n{$this->_getTaskName($task)}: Finished \r\n\r\n";
149
  }
150
  }
151
+
152
  /**
153
  * Translate the result array into a readable string
154
  * @param array $results
160
  foreach ($results as $title => $count) {
161
  $display .= ' ' . $title . ' = ' . $count . ';';
162
  }
163
+
164
  return $display;
165
  }
166
  }
shell/bronto/fix.php CHANGED
@@ -24,6 +24,7 @@ class Bronto_Fix_Os_Script extends Mage_Shell_Abstract {
24
  'newsletter',
25
  'order',
26
  'reminder',
 
27
  );
28
 
29
  /**
@@ -84,6 +85,7 @@ Tasks:
84
  newsletter {$this->_getTaskName('newsletter')}
85
  order {$this->_getTaskName('order')}
86
  reminder {$this->_getTaskName('reminder')}
 
87
 
88
 
89
  LIST;
24
  'newsletter',
25
  'order',
26
  'reminder',
27
+ 'reviews',
28
  );
29
 
30
  /**
85
  newsletter {$this->_getTaskName('newsletter')}
86
  order {$this->_getTaskName('order')}
87
  reminder {$this->_getTaskName('reminder')}
88
+ reviews {$this->_getTaskName('reviews')}
89
 
90
 
91
  LIST;