Springbot - Version 1.4.1.0

Version Notes

Secure endpoint tasks
Prattle mode
1.3 compatibility fixes
Compilation check on remote update
Ultra paranoid getSource checking

Download this release

Release Info

Developer Springbot Integrations Team
Extension Springbot
Version 1.4.1.0
Comparing to
See all releases


Code changes from version 1.4.0.9 to 1.4.1.0

Files changed (41) hide show
  1. app/code/community/Springbot/Boss.php +21 -2
  2. app/code/community/Springbot/Cli.php +1 -1
  3. app/code/community/Springbot/Combine/Helper/Parser.php +6 -5
  4. app/code/community/Springbot/Combine/Model/Harvest/AttributeSets.php +2 -0
  5. app/code/community/Springbot/Combine/Model/Harvest/CustomerAttributeSets.php +18 -0
  6. app/code/community/Springbot/Combine/Model/Parser.php +9 -0
  7. app/code/community/Springbot/Combine/Model/Resource/Debug.php +1 -1
  8. app/code/community/Springbot/Combine/Model/System/Config/Source/Harvestertype.php +13 -0
  9. app/code/community/Springbot/Combine/etc/config.xml +5 -3
  10. app/code/community/Springbot/Combine/etc/system.xml +18 -28
  11. app/code/community/Springbot/Combine/sql/combine_setup/mysql4-upgrade-1.3.9.9-1.4.0.0.php +8 -2
  12. app/code/community/Springbot/Services.php +0 -5
  13. app/code/community/Springbot/Services/Cmd/Healthcheck.php +3 -17
  14. app/code/community/Springbot/Services/Tasks.php +30 -0
  15. app/code/community/Springbot/Services/Tasks/ClearCache.php +25 -0
  16. app/code/community/Springbot/Services/Tasks/ClearJobs.php +15 -0
  17. app/code/community/Springbot/Services/Tasks/ClearStores.php +23 -0
  18. app/code/community/Springbot/Services/Tasks/Debug.php +24 -0
  19. app/code/community/Springbot/Services/Tasks/DeleteJob.php +16 -0
  20. app/code/community/Springbot/Services/Tasks/DeliverEventLog.php +4 -2
  21. app/code/community/Springbot/Services/Tasks/Forecast.php +1 -0
  22. app/code/community/Springbot/Services/Tasks/GetLog.php +1 -0
  23. app/code/community/Springbot/Services/Tasks/Harvest.php +15 -0
  24. app/code/community/Springbot/Services/Tasks/Healthcheck.php +16 -0
  25. app/code/community/Springbot/Services/Tasks/Jobs.php +18 -0
  26. app/code/community/Springbot/Services/Tasks/KillHarvest.php +1 -0
  27. app/code/community/Springbot/Services/Tasks/LaunchFullHarvest.php +1 -0
  28. app/code/community/Springbot/Services/Tasks/LaunchPartialHarvest.php +1 -0
  29. app/code/community/Springbot/Services/Tasks/PostItem.php +2 -0
  30. app/code/community/Springbot/Services/Tasks/RegisterStores.php +19 -0
  31. app/code/community/Springbot/Services/Tasks/ResetRetries.php +11 -0
  32. app/code/community/Springbot/Services/Tasks/ResumeHarvest.php +1 -0
  33. app/code/community/Springbot/Services/Tasks/Run.php +17 -0
  34. app/code/community/Springbot/Services/Tasks/SetVar.php +1 -0
  35. app/code/community/Springbot/Services/Tasks/SkipStoreHarvest.php +0 -9
  36. app/code/community/Springbot/Services/Tasks/UnlockJobs.php +15 -0
  37. app/code/community/Springbot/Services/Tasks/ViewConfig.php +13 -0
  38. app/code/community/Springbot/Shadow/Helper/Prattler.php +5 -6
  39. app/code/community/Springbot/Shadow/controllers/IndexController.php +31 -260
  40. package.xml +7 -5
  41. skin/adminhtml/default/default/bmbleb/bmbleb.css +4 -0
app/code/community/Springbot/Boss.php CHANGED
@@ -100,7 +100,7 @@ class Springbot_Boss
100
 
101
  public static function startWorkManager()
102
  {
103
- if(self::active() && !self::isCron()) {
104
  $status = Mage::getModel('combine/cron_manager_status');
105
  if(
106
  !$status->isBlocked() &&
@@ -124,7 +124,26 @@ class Springbot_Boss
124
 
125
  public static function isCron()
126
  {
127
- return Mage::getStoreConfig('springbot/cron/enabled');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  }
129
 
130
  public static function storeIdsExist()
100
 
101
  public static function startWorkManager()
102
  {
103
+ if(self::active() && !self::isCron() && !self::isPrattler()) {
104
  $status = Mage::getModel('combine/cron_manager_status');
105
  if(
106
  !$status->isBlocked() &&
124
 
125
  public static function isCron()
126
  {
127
+ if (Mage::getStoreConfig('springbot/advanced/harvester_type') == "cron") {
128
+ return true;
129
+ } else {
130
+ return false;
131
+ }
132
+ }
133
+
134
+
135
+ public static function isPrattler()
136
+ {
137
+ if (Mage::getStoreConfig('springbot/advanced/harvester_type') == "prattler") {
138
+ return true;
139
+ } else {
140
+ return false;
141
+ }
142
+ }
143
+
144
+ public static function harvesterType()
145
+ {
146
+ return Mage::getStoreConfig('springbot/advanced/harvester_type');
147
  }
148
 
149
  public static function storeIdsExist()
app/code/community/Springbot/Cli.php CHANGED
@@ -22,7 +22,7 @@ class Springbot_Cli
22
  */
23
  public static function async($method, $args = array())
24
  {
25
- if(Springbot_Boss::isCron()) {
26
  Springbot_Boss::scheduleJob($method, $args, 1);
27
  } else {
28
  self::internalCallback($method, $args, true);
22
  */
23
  public static function async($method, $args = array())
24
  {
25
+ if (Springbot_Boss::isCron() || Springbot_Boss::isPrattler()) {
26
  Springbot_Boss::scheduleJob($method, $args, 1);
27
  } else {
28
  self::internalCallback($method, $args, true);
app/code/community/Springbot/Combine/Helper/Parser.php CHANGED
@@ -156,11 +156,12 @@ class Springbot_Combine_Helper_Parser extends Mage_Core_Helper_Abstract
156
  $resource = $product->getResource();
157
  if (is_object($resource)) {
158
  $attribute = $resource->getAttribute($attributeCode);
159
- $sourceModel = Mage::getModel($attribute->getSourceModel());
160
- if (is_object($attribute) && $sourceModel) {
161
- $source = $attribute->getSource();
162
- if (is_object($source)) {
163
- return $source->getOptionText($product->getAttributeText($attributeCode));
 
164
  }
165
  }
166
  }
156
  $resource = $product->getResource();
157
  if (is_object($resource)) {
158
  $attribute = $resource->getAttribute($attributeCode);
159
+ if (is_object($attribute)) {
160
+ if(Mage::getModel($attribute->getSourceModel())) {
161
+ $source = $attribute->getSource();
162
+ if (is_object($source)) {
163
+ return $source->getOptionText($product->getAttributeText($attributeCode));
164
+ }
165
  }
166
  }
167
  }
app/code/community/Springbot/Combine/Model/Harvest/AttributeSets.php CHANGED
@@ -41,6 +41,8 @@ class Springbot_Combine_Model_Harvest_AttributeSets extends Springbot_Combine_Mo
41
  $parser = Mage::getModel($this->getParserModel(), $model);
42
  $parser->setMageStoreId($this->getStoreId());
43
  $parser->setStoreId($this->getStoreId());
 
 
44
  if ($this->getDelete()) {
45
  $parser->setIsDeleted(true);
46
  }
41
  $parser = Mage::getModel($this->getParserModel(), $model);
42
  $parser->setMageStoreId($this->getStoreId());
43
  $parser->setStoreId($this->getStoreId());
44
+ $parser->parse();
45
+
46
  if ($this->getDelete()) {
47
  $parser->setIsDeleted(true);
48
  }
app/code/community/Springbot/Combine/Model/Harvest/CustomerAttributeSets.php CHANGED
@@ -29,6 +29,24 @@ class Springbot_Combine_Model_Harvest_CustomerAttributeSets extends Springbot_Co
29
  return 'attribute_set_id';
30
  }
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  public function loadMageModel($id)
34
  {
29
  return 'attribute_set_id';
30
  }
31
 
32
+ /**
33
+ * Parse caller for dependent parser method
34
+ *
35
+ * @param Mage_Core_Model_Abstract $model
36
+ * @return Zend_Json_Expr
37
+ */
38
+ public function parse($model)
39
+ {
40
+ $parser = Mage::getModel($this->getParserModel(), $model);
41
+ $parser->setMageStoreId($this->getStoreId());
42
+ $parser->setStoreId($this->getStoreId());
43
+ $parser->parse();
44
+
45
+ if ($this->getDelete()) {
46
+ $parser->setIsDeleted(true);
47
+ }
48
+ return $parser->getData();
49
+ }
50
 
51
  public function loadMageModel($id)
52
  {
app/code/community/Springbot/Combine/Model/Parser.php CHANGED
@@ -5,6 +5,15 @@ abstract class Springbot_Combine_Model_Parser extends Varien_Object
5
  protected $_parsed = false;
6
  protected $_attrProtected = array();
7
 
 
 
 
 
 
 
 
 
 
8
  /**
9
  * Redeclaration of Varien_Object::toJson
10
  *
5
  protected $_parsed = false;
6
  protected $_attrProtected = array();
7
 
8
+ /*
9
+ * Public accessor for parse method
10
+ */
11
+ public function parse()
12
+ {
13
+ $this->_parse();
14
+ return $this;
15
+ }
16
+
17
  /**
18
  * Redeclaration of Varien_Object::toJson
19
  *
app/code/community/Springbot/Combine/Model/Resource/Debug.php CHANGED
@@ -59,7 +59,7 @@ class Springbot_Combine_Model_Resource_Debug extends Springbot_Combine_Model_Res
59
  {
60
  $readConnection = Mage::getSingleton('core/resource')->getConnection('core_read');
61
  $quotesTableName = Mage::getSingleton('core/resource')->getTableName('sales_flat_order');
62
- $query = "SELECT COUNT(*) AS `count`, `store_id` FROM (SELECT DISTINCT (customer_email), `store_id` FROM `sales_flat_order` GROUP BY store_id, customer_email) `customers` GROUP BY `store_id`";
63
  return $readConnection->fetchAll($query);
64
  }
65
 
59
  {
60
  $readConnection = Mage::getSingleton('core/resource')->getConnection('core_read');
61
  $quotesTableName = Mage::getSingleton('core/resource')->getTableName('sales_flat_order');
62
+ $query = "SELECT COUNT(*) AS `count`, `store_id` FROM (SELECT DISTINCT (customer_email), `store_id` FROM `{$quotesTableName}` GROUP BY store_id, customer_email) `customers` GROUP BY `store_id`";
63
  return $readConnection->fetchAll($query);
64
  }
65
 
app/code/community/Springbot/Combine/Model/System/Config/Source/Harvestertype.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Combine_Model_System_Config_Source_Harvestertype
4
+ {
5
+ public function toOptionArray()
6
+ {
7
+ return array(
8
+ array('value' => 'cron', 'label'=>Mage::helper('combine')->__('Cron')),
9
+ array('value' => 'worker', 'label'=>Mage::helper('combine')->__('Worker')),
10
+ array('value' => 'prattler', 'label'=>Mage::helper('combine')->__('Prattler')),
11
+ );
12
+ }
13
+ }
app/code/community/Springbot/Combine/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Springbot_Combine>
5
- <version>1.4.0.9</version>
6
  </Springbot_Combine>
7
  </modules>
8
  <global>
@@ -86,6 +86,8 @@
86
  <filesize_limit>10000000</filesize_limit>
87
  </debug>
88
  <advanced>
 
 
89
  <nice>0</nice>
90
  <nohup>0</nohup>
91
  <worker_count>2</worker_count>
@@ -101,7 +103,7 @@
101
  </cart_restore>
102
  <cron>
103
  <enabled>0</enabled>
104
- <max_jobs>1</max_jobs>
105
  </cron>
106
  </springbot>
107
  </default>
@@ -134,4 +136,4 @@
134
  </resources>
135
  </acl>
136
  </adminhtml>
137
- </config>
2
  <config>
3
  <modules>
4
  <Springbot_Combine>
5
+ <version>1.4.1.0</version>
6
  </Springbot_Combine>
7
  </modules>
8
  <global>
86
  <filesize_limit>10000000</filesize_limit>
87
  </debug>
88
  <advanced>
89
+ <harvester_type>cron</harvester_type>
90
+ <max_jobs>10</max_jobs>
91
  <nice>0</nice>
92
  <nohup>0</nohup>
93
  <worker_count>2</worker_count>
103
  </cart_restore>
104
  <cron>
105
  <enabled>0</enabled>
106
+ <max_jobs>10</max_jobs>
107
  </cron>
108
  </springbot>
109
  </default>
136
  </resources>
137
  </acl>
138
  </adminhtml>
139
+ </config>
app/code/community/Springbot/Combine/etc/system.xml CHANGED
@@ -228,41 +228,32 @@
228
  </filesize_limit>
229
  </fields>
230
  </debug>
231
- <cron translate="label">
232
- <label>Cron</label>
233
  <frontend_type>text</frontend_type>
234
- <sort_order>450</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
  <fields>
239
- <enabled translate="label">
240
- <label>Run in Cron Mode</label>
241
  <frontend_type>select</frontend_type>
242
- <source_model>adminhtml/system_config_source_yesno</source_model>
243
- <sort_order>10</sort_order>
244
  <show_in_default>1</show_in_default>
245
  <show_in_website>0</show_in_website>
246
  <show_in_store>0</show_in_store>
247
- </enabled>
 
248
  <max_jobs translate="label">
249
- <label>Max jobs to run per instance</label>
250
  <frontend_type>text</frontend_type>
251
  <sort_order>20</sort_order>
252
  <show_in_default>1</show_in_default>
253
  <show_in_website>0</show_in_website>
254
  <comment>This is the maximum number of jobs the cron worker will attempt to run each time it is called. Leave blank for unlimited.</comment>
255
  </max_jobs>
256
- </fields>
257
- </cron>
258
- <advanced translate="label">
259
- <label>Advanced Config</label>
260
- <frontend_type>text</frontend_type>
261
- <sort_order>550</sort_order>
262
- <show_in_default>1</show_in_default>
263
- <show_in_website>0</show_in_website>
264
- <show_in_store>0</show_in_store>
265
- <fields>
266
  <nohup translate="label">
267
  <label>Nohup</label>
268
  <frontend_type>select</frontend_type>
@@ -281,14 +272,14 @@
281
  <show_in_website>0</show_in_website>
282
  <show_in_store>0</show_in_store>
283
  </nice>
284
- <worker_count translate="label">
285
- <label>Worker Count</label>
286
- <frontend_type>text</frontend_type>
287
- <sort_order>90</sort_order>
288
- <show_in_default>1</show_in_default>
289
- <show_in_website>0</show_in_website>
290
- <show_in_store>0</show_in_store>
291
- </worker_count>
292
  <sleep_interval translate="label">
293
  <label>Sleep Interval</label>
294
  <frontend_type>text</frontend_type>
@@ -349,4 +340,3 @@
349
  </springbot>
350
  </sections>
351
  </config>
352
-
228
  </filesize_limit>
229
  </fields>
230
  </debug>
231
+ <advanced translate="label">
232
+ <label>Advanced Config</label>
233
  <frontend_type>text</frontend_type>
234
+ <sort_order>550</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
  <fields>
239
+ <harvester_type translate="label">
240
+ <label>Harvester Type</label>
241
  <frontend_type>select</frontend_type>
242
+ <source_model>combine/system_config_source_harvestertype</source_model>
243
+ <sort_order>19</sort_order>
244
  <show_in_default>1</show_in_default>
245
  <show_in_website>0</show_in_website>
246
  <show_in_store>0</show_in_store>
247
+ <size>2</size>
248
+ </harvester_type>
249
  <max_jobs translate="label">
250
+ <label>Max cron jobs to run per instance</label>
251
  <frontend_type>text</frontend_type>
252
  <sort_order>20</sort_order>
253
  <show_in_default>1</show_in_default>
254
  <show_in_website>0</show_in_website>
255
  <comment>This is the maximum number of jobs the cron worker will attempt to run each time it is called. Leave blank for unlimited.</comment>
256
  </max_jobs>
 
 
 
 
 
 
 
 
 
 
257
  <nohup translate="label">
258
  <label>Nohup</label>
259
  <frontend_type>select</frontend_type>
272
  <show_in_website>0</show_in_website>
273
  <show_in_store>0</show_in_store>
274
  </nice>
275
+ <worker_count translate="label">
276
+ <label>Worker Count</label>
277
+ <frontend_type>text</frontend_type>
278
+ <sort_order>90</sort_order>
279
+ <show_in_default>1</show_in_default>
280
+ <show_in_website>0</show_in_website>
281
+ <show_in_store>0</show_in_store>
282
+ </worker_count>
283
  <sleep_interval translate="label">
284
  <label>Sleep Interval</label>
285
  <frontend_type>text</frontend_type>
340
  </springbot>
341
  </sections>
342
  </config>
 
app/code/community/Springbot/Combine/sql/combine_setup/mysql4-upgrade-1.3.9.9-1.4.0.0.php CHANGED
@@ -31,14 +31,20 @@ try {
31
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
32
  ");
33
 
34
- $installer->run("ALTER TABLE `{$installer->getTable('combine/cron_queue')}` ADD COLUMN `next_run_at` DATETIME NULL AFTER `error`;");
35
  } catch (Exception $e) {
36
  Springbot_Log::error('Springbot 1.2.1.0-1.4.0.0 update failed!');
37
- Springbot_Log::error(new Exception('Install failed clear and retry'));
38
  if (!$session->getSbReinstall()) {
39
  $session->setSbReinstall(true);
40
  $installer->reinstallSetupScript('1.2.1.0', '1.4.0.0');
41
  }
42
  }
43
 
 
 
 
 
 
 
44
  $installer->endSetup();
31
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
32
  ");
33
 
34
+
35
  } catch (Exception $e) {
36
  Springbot_Log::error('Springbot 1.2.1.0-1.4.0.0 update failed!');
37
+ Springbot_Log::error(new Exception('Install failed clear and retry. ' . $e->getMessage()));
38
  if (!$session->getSbReinstall()) {
39
  $session->setSbReinstall(true);
40
  $installer->reinstallSetupScript('1.2.1.0', '1.4.0.0');
41
  }
42
  }
43
 
44
+ try {
45
+ $installer->run("ALTER TABLE `{$installer->getTable('combine/cron_queue')}` ADD COLUMN `next_run_at` DATETIME NULL AFTER `error`;");
46
+ } catch (Exception $e) {
47
+ // Don't do anything
48
+ }
49
+
50
  $installer->endSetup();
app/code/community/Springbot/Services.php CHANGED
@@ -111,11 +111,6 @@ abstract class Springbot_Services extends Varien_Object
111
  return $harvester->getSegmentMax();
112
  }
113
 
114
- public function getType()
115
- {
116
- return ucwords($this->_type);
117
- }
118
-
119
  public function getRuntime()
120
  {
121
  return number_format(microtime(true) - $this->_startTime, 3, '.', '');
111
  return $harvester->getSegmentMax();
112
  }
113
 
 
 
 
 
 
114
  public function getRuntime()
115
  {
116
  return number_format(microtime(true) - $this->_startTime, 3, '.', '');
app/code/community/Springbot/Services/Cmd/Healthcheck.php CHANGED
@@ -73,15 +73,8 @@ class Springbot_Services_Cmd_Healthcheck extends Springbot_Services
73
 
74
  private function _makeTaskInstance($cmd)
75
  {
76
- $taskname = $this->_snakeToCamel($cmd['command']);
77
- $classname = "Springbot_Services_Tasks_{$taskname}";
78
-
79
- Springbot_Log::debug("Init $classname");
80
-
81
- $task = new $classname();
82
- $task->setData($this->_getParams($cmd));
83
-
84
- return $task;
85
  }
86
 
87
  private function _getParams($cmd)
@@ -93,12 +86,5 @@ class Springbot_Services_Cmd_Healthcheck extends Springbot_Services
93
  }
94
  }
95
 
96
- private function _snakeToCamel($string)
97
- {
98
- $toReturn = '';
99
- foreach(explode('_', $string) as $word) {
100
- $toReturn .= ucfirst($word);
101
- }
102
- return $toReturn;
103
- }
104
  }
73
 
74
  private function _makeTaskInstance($cmd)
75
  {
76
+ $taskname = $cmd['command'];
77
+ return Springbot_Services_Tasks::makeTask($taskname, $this->_getParams($cmd));
 
 
 
 
 
 
 
78
  }
79
 
80
  private function _getParams($cmd)
86
  }
87
  }
88
 
89
+
 
 
 
 
 
 
 
90
  }
app/code/community/Springbot/Services/Tasks.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks
4
+ {
5
+
6
+ public static function makeTask($taskname, $params)
7
+ {
8
+ $className = self::_snakeToCamel($taskname);
9
+ $fullClassName = "Springbot_Services_Tasks_{$className}";
10
+ Springbot_Log::debug("Init {$fullClassName}");
11
+ if (class_exists($fullClassName)) {
12
+ $task = new $fullClassName();
13
+ $task->setData($params);
14
+ return $task;
15
+ }
16
+ else {
17
+ return null;
18
+ }
19
+ }
20
+
21
+ private static function _snakeToCamel($string)
22
+ {
23
+ $toReturn = '';
24
+ foreach(explode('_', $string) as $word) {
25
+ $toReturn .= ucfirst($word);
26
+ }
27
+ return $toReturn;
28
+ }
29
+
30
+ }
app/code/community/Springbot/Services/Tasks/ClearCache.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_ClearCache extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ try {
8
+ $allTypes = Mage::app()->useCache();
9
+ foreach($allTypes as $type => $blah) {
10
+ Mage::app()->getCacheInstance()->cleanType($type);
11
+ }
12
+ return true;
13
+ }
14
+ catch (Exception $e) {
15
+ return array(
16
+ 'success' => false,
17
+ 'message' => $e->getMessage()
18
+ );
19
+ }
20
+ }
21
+ }
22
+
23
+
24
+
25
+
app/code/community/Springbot/Services/Tasks/ClearJobs.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_ClearJobs extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ $resource = Mage::getResourceModel('combine/cron_queue');
8
+ $resource->removeHarvestRows(null, false);
9
+ return true;
10
+ }
11
+ }
12
+
13
+
14
+
15
+
app/code/community/Springbot/Services/Tasks/ClearStores.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_ClearStores extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ foreach (Mage::getStoreConfig('springbot/config') as $configKey => $configValue) {
8
+ if (
9
+ (substr($configKey, 0, strlen('store_id_')) == 'store_id_') ||
10
+ (substr($configKey, 0, strlen('store_guid_')) == 'store_guid_') ||
11
+ (substr($configKey, 0, strlen('security_token_')) == 'security_token_')
12
+ ) {
13
+ Mage::getModel('core/config')->saveConfig('springbot/config/' . $configKey, null, 'default', 0);
14
+ }
15
+ }
16
+ Mage::getConfig()->cleanCache();
17
+ return true;
18
+ }
19
+ }
20
+
21
+
22
+
23
+
app/code/community/Springbot/Services/Tasks/Debug.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_Debug extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ Mage::getConfig()->cleanCache();
8
+ $resource = Mage::getResourceModel('combine/debug');
9
+
10
+ return array(
11
+ 'customers' => $resource->getCustomersRaw(),
12
+ 'guests' => $resource->getGuestsRaw(),
13
+ 'subscribers' => $resource->getSubscribersRaw(),
14
+ 'products' => $resource->getProductsRaw(),
15
+ 'categories' => $resource->getCategoriesRaw(),
16
+ 'purchases' => $resource->getPurchasesRaw(),
17
+ 'carts' => $resource->getCartsRaw(),
18
+ );
19
+ }
20
+ }
21
+
22
+
23
+
24
+
app/code/community/Springbot/Services/Tasks/DeleteJob.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_DeleteJob extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ if (is_numeric($this->getJobId())) {
8
+ $resource = Mage::getModel('combine/cron_queue')->getResource();
9
+ $resource->removeHarvestRow($this->getJobId());
10
+ return true;
11
+ }
12
+ else {
13
+ return false;
14
+ }
15
+ }
16
+ }
app/code/community/Springbot/Services/Tasks/DeliverEventLog.php CHANGED
@@ -15,16 +15,18 @@ class Springbot_Services_Tasks_DeliverEventLog extends Springbot_Services
15
  $eventItems[] = $event->toAction();
16
  }
17
  if ($eventItems) {
18
- $result = Mage::getModel('combine/api')
19
- ->call($method, json_encode($eventItems));
20
  }
21
  $this->_removeEvents();
 
22
  } catch (Exception $e) {
23
  // We can capture this here and keep if from bubbling up.
24
  // This api call will fail and get recreated on the next check in
25
  Springbot_Log::error($e);
 
26
  }
27
  $this->_releaseLocks();
 
28
  }
29
 
30
  private function _removeEvents()
15
  $eventItems[] = $event->toAction();
16
  }
17
  if ($eventItems) {
18
+ $result = Mage::getModel('combine/api')->call($method, json_encode($eventItems));
 
19
  }
20
  $this->_removeEvents();
21
+ $successful = true;
22
  } catch (Exception $e) {
23
  // We can capture this here and keep if from bubbling up.
24
  // This api call will fail and get recreated on the next check in
25
  Springbot_Log::error($e);
26
+ $successful = false;
27
  }
28
  $this->_releaseLocks();
29
+ return $successful;
30
  }
31
 
32
  private function _removeEvents()
app/code/community/Springbot/Services/Tasks/Forecast.php CHANGED
@@ -6,5 +6,6 @@ class Springbot_Services_Tasks_Forecast extends Springbot_Services
6
  {
7
  $instance = new Springbot_Services_Cmd_Forecast();
8
  $instance->forecastAllStores();
 
9
  }
10
  }
6
  {
7
  $instance = new Springbot_Services_Cmd_Forecast();
8
  $instance->forecastAllStores();
9
+ return true;
10
  }
11
  }
app/code/community/Springbot/Services/Tasks/GetLog.php CHANGED
@@ -25,5 +25,6 @@ class Springbot_Services_Tasks_GetLog extends Springbot_Services
25
  Springbot_Log::harvest('['.__METHOD__.'] delivery failed ->'.$result['status']);
26
  }
27
  }
 
28
  }
29
  }
25
  Springbot_Log::harvest('['.__METHOD__.'] delivery failed ->'.$result['status']);
26
  }
27
  }
28
+ return true;
29
  }
30
  }
app/code/community/Springbot/Services/Tasks/Harvest.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_Harvest extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ $harvest = new Springbot_Services_Cmd_Harvest();
8
+ $harvest->run();
9
+ return true;
10
+ }
11
+ }
12
+
13
+
14
+
15
+
app/code/community/Springbot/Services/Tasks/Healthcheck.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_Healthcheck extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ $healthcheck = new Springbot_Services_Cmd_Healthcheck();
8
+ $healthcheck->setStoreId($this->getStoreId());
9
+ $healthcheck->run();
10
+ return true;
11
+ }
12
+ }
13
+
14
+
15
+
16
+
app/code/community/Springbot/Services/Tasks/Jobs.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_Jobs extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ if (!$page = $this->getData('page')) {
8
+ $page = 1;
9
+ }
10
+ $collection = Mage::getModel('combine/cron_queue')->getCollection();
11
+ $collection->setPageSize(20)->setCurPage($page);
12
+ return $collection->toArray();
13
+ }
14
+ }
15
+
16
+
17
+
18
+
app/code/community/Springbot/Services/Tasks/KillHarvest.php CHANGED
@@ -5,5 +5,6 @@ class Springbot_Services_Tasks_KillHarvest extends Springbot_Services
5
  public function run()
6
  {
7
  Springbot_Boss::halt();
 
8
  }
9
  }
5
  public function run()
6
  {
7
  Springbot_Boss::halt();
8
+ return true;
9
  }
10
  }
app/code/community/Springbot/Services/Tasks/LaunchFullHarvest.php CHANGED
@@ -5,5 +5,6 @@ class Springbot_Services_Tasks_LaunchFullHarvest extends Springbot_Services
5
  public function run()
6
  {
7
  Springbot_Cli::launchHarvest();
 
8
  }
9
  }
5
  public function run()
6
  {
7
  Springbot_Cli::launchHarvest();
8
+ return true;
9
  }
10
  }
app/code/community/Springbot/Services/Tasks/LaunchPartialHarvest.php CHANGED
@@ -15,5 +15,6 @@ class Springbot_Services_Tasks_LaunchPartialHarvest extends Springbot_Services
15
  'default',
16
  $this->getStoreId()
17
  );
 
18
  }
19
  }
15
  'default',
16
  $this->getStoreId()
17
  );
18
+ return true;
19
  }
20
  }
app/code/community/Springbot/Services/Tasks/PostItem.php CHANGED
@@ -9,8 +9,10 @@ class Springbot_Services_Tasks_PostItem extends Springbot_Services
9
  $instance = new $classname();
10
  $instance->setEntityId($this->getEntityId());
11
  $instance->run();
 
12
  } else {
13
  throw new Exception("Type not supplied for " . __CLASS__);
 
14
  }
15
  }
16
  }
9
  $instance = new $classname();
10
  $instance->setEntityId($this->getEntityId());
11
  $instance->run();
12
+ return true;
13
  } else {
14
  throw new Exception("Type not supplied for " . __CLASS__);
15
+ return false;
16
  }
17
  }
18
  }
app/code/community/Springbot/Services/Tasks/RegisterStores.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_RegisterStores extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ $service = new Springbot_Services_Store_Register;
8
+ $helper = Mage::helper('combine/harvest');
9
+ foreach ($helper->getStoresToHarvest() as $store) {
10
+ $service->setStoreId($store->getStoreId())->run();
11
+ }
12
+ Mage::getConfig()->cleanCache();
13
+ return true;
14
+ }
15
+ }
16
+
17
+
18
+
19
+
app/code/community/Springbot/Services/Tasks/ResetRetries.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_ResetRetries extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ $resource = Mage::getResourceModel('combine/cron_queue');
8
+ $resource->resetRetries();
9
+ return true;
10
+ }
11
+ }
app/code/community/Springbot/Services/Tasks/ResumeHarvest.php CHANGED
@@ -7,5 +7,6 @@ class Springbot_Services_Tasks_ResumeHarvest extends Springbot_Services
7
  Mage::getConfig()->cleanCache();
8
  Mage::getConfig()->reinit();
9
  Springbot_Cli::resumeHarvest();
 
10
  }
11
  }
7
  Mage::getConfig()->cleanCache();
8
  Mage::getConfig()->reinit();
9
  Springbot_Cli::resumeHarvest();
10
+ return true;
11
  }
12
  }
app/code/community/Springbot/Services/Tasks/Run.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_Run extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ $cronWorker = Mage::getModel('combine/cron_worker');
8
+ $cronWorker->run();
9
+
10
+ $helper = Mage::helper('shadow/prattler');
11
+ return $helper->getPrattlerResponse();
12
+ }
13
+ }
14
+
15
+
16
+
17
+
app/code/community/Springbot/Services/Tasks/SetVar.php CHANGED
@@ -16,5 +16,6 @@ class Springbot_Services_Tasks_SetVar extends Springbot_Services
16
  }
17
 
18
  Mage::getConfig()->cleanCache();
 
19
  }
20
  }
16
  }
17
 
18
  Mage::getConfig()->cleanCache();
19
+ return true;
20
  }
21
  }
app/code/community/Springbot/Services/Tasks/SkipStoreHarvest.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
-
3
- class Springbot_Services_Tasks_SkipStoreHarvest extends Springbot_Services
4
- {
5
- public function run()
6
- {
7
- Springbot_Boss::haltStore($this->getStoreId());
8
- }
9
- }
 
 
 
 
 
 
 
 
 
app/code/community/Springbot/Services/Tasks/UnlockJobs.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_UnlockJobs extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ $resource = Mage::getResourceModel('combine/cron_queue');
8
+ $resource->unlockOrphanedRows();
9
+ return true;
10
+ }
11
+ }
12
+
13
+
14
+
15
+
app/code/community/Springbot/Services/Tasks/ViewConfig.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Springbot_Services_Tasks_ViewConfig extends Springbot_Services
4
+ {
5
+ public function run()
6
+ {
7
+ return Mage::getStoreConfig('springbot');
8
+ }
9
+ }
10
+
11
+
12
+
13
+
app/code/community/Springbot/Shadow/Helper/Prattler.php CHANGED
@@ -9,23 +9,22 @@ class Springbot_Shadow_Helper_Prattler extends Mage_Core_Helper_Abstract
9
  return sha1($token);
10
  }
11
 
12
- public function getPrattlerJsonResponse()
13
  {
14
  $jobs = Mage::getModel('combine/cron_queue')->getCollection();
15
  $events = Mage::getModel('combine/action')->getCollection();
16
- $response = array(
17
  'success' => true,
18
  'jobs' => $jobs->getActiveCount(),
19
  'events' => $events->getSize()
20
  );
21
- return json_encode($response);
22
  }
23
 
24
- public function getExceptionJsonResponse($e)
25
  {
26
- return json_encode(array(
27
  'success' => false,
28
  'message' => $e->getMessage(),
29
- ));
30
  }
31
  }
9
  return sha1($token);
10
  }
11
 
12
+ public function getPrattlerResponse()
13
  {
14
  $jobs = Mage::getModel('combine/cron_queue')->getCollection();
15
  $events = Mage::getModel('combine/action')->getCollection();
16
+ return array(
17
  'success' => true,
18
  'jobs' => $jobs->getActiveCount(),
19
  'events' => $events->getSize()
20
  );
 
21
  }
22
 
23
+ public function getExceptionResponse($e)
24
  {
25
+ return array(
26
  'success' => false,
27
  'message' => $e->getMessage(),
28
+ );
29
  }
30
  }
app/code/community/Springbot/Shadow/controllers/IndexController.php CHANGED
@@ -13,78 +13,52 @@ class Springbot_Shadow_IndexController extends Springbot_Shadow_Controller_Actio
13
  {
14
  try {
15
  $params = $this->getRequest()->getParams();
16
- if (isset($params['run'])) {
17
- $this->runCaller();
 
 
 
 
 
 
18
  }
19
- else if (isset($params['email'])) {
 
20
  $this->emailCaller();
21
  }
22
  else if (isset($params['trackable']) && isset($params['type'])) {
23
  $this->trackableCaller();
24
  }
25
- else if (isset($params['healthcheck'])) {
26
- $this->healthcheckCaller();
27
- }
28
- else if (isset($params['harvest'])) {
29
- $this->harvestCaller();
30
- }
31
- else if (isset($params['jobs'])) {
32
- $this->jobsCaller();
33
- }
34
- else if (isset($params['delete_job'])) {
35
- $this->deleteJobCaller();
36
- }
37
- else if (isset($params['deliver_event_log'])) {
38
- $this->deliverEventLogCaller();
39
- }
40
- else if (isset($params['view_config'])) {
41
- $this->viewConfigCaller();
42
- }
43
- else if (isset($params['set_config'])) {
44
- $this->setConfigCaller();
45
  }
46
  else if (isset($params['view_log'])) {
47
- $this->viewLogCaller();
48
- }
49
- else if (isset($params['clear_cache'])) {
50
- $this->clearCacheCaller();
51
- }
52
- else if (isset($params['clear_stores'])) {
53
- $this->clearStoresCaller();
54
- }
55
- else if (isset($params['register_stores'])) {
56
- $this->registerStoresCaller();
57
- }
58
- else if (isset($params['debug'])) {
59
- $this->debugCaller();
60
- }
61
- else if (isset($params['clear_jobs'])) {
62
- $this->clearJobsCaller();
63
- }
64
- else if (isset($params['unlock_jobs'])) {
65
- $this->unlockJobsCaller();
66
- }
67
- else if (isset($params['reset_retries'])) {
68
- $this->resetRetries();
69
  }
 
70
  } catch (Exception $e) {
71
  $helper = Mage::helper('shadow/prattler');
72
  $this->getResponse()->setHeader('Content-type', 'application/json');
73
- $this->getResponse()->setBody($helper->getExceptionJsonResponse($e));
74
  }
75
  }
76
 
77
- private function runCaller()
78
- {
79
- if ($this->hasSbAuthToken()) {
80
- $helper = Mage::helper('shadow/prattler');
81
- $cronWorker = Mage::getModel('combine/cron_worker');
82
- $cronWorker->run();
83
-
84
- $this->getResponse()->setHeader('Content-type', 'application/json');
85
- $this->getResponse()->setBody($helper->getPrattlerJsonResponse());
86
- }
87
- }
88
 
89
  private function emailCaller()
90
  {
@@ -131,96 +105,6 @@ class Springbot_Shadow_IndexController extends Springbot_Shadow_Controller_Actio
131
  );
132
  }
133
 
134
- private function healthcheckCaller()
135
- {
136
- if ($this->hasSbAuthToken()) {
137
- $healthcheck = new Springbot_Services_Cmd_Healthcheck();
138
-
139
- if($this->getRequest()->getParam('store_id')) {
140
- $healthcheck->setStoreId($this->getRequest()->getParam('store_id'));
141
- }
142
-
143
- $healthcheck->run();
144
- $this->getResponse()->setHeader('Content-type', 'application/json');
145
- $this->getResponse()->setBody('{"success":true}');
146
- }
147
- }
148
-
149
-
150
- private function harvestCaller()
151
- {
152
- if ($this->hasSbAuthToken()) {
153
- $harvest = new Springbot_Services_Cmd_Harvest();
154
- $harvest->run();
155
- $this->getResponse()->setHeader('Content-type', 'application/json');
156
- $this->getResponse()->setBody('{"success":true}');
157
- }
158
- }
159
-
160
- private function jobsCaller()
161
- {
162
- if ($this->hasSbAuthToken()) {
163
- if (is_numeric($this->getRequest()->getParam('jobs'))) {
164
- $page = $this->getRequest()->getParam('jobs');
165
- }
166
- else {
167
- $page = 1;
168
- }
169
- $this->getResponse()->setHeader('Content-type', 'application/json');
170
- $collection = Mage::getModel('combine/cron_queue')->getCollection();
171
- $collection->setPageSize(20)->setCurPage($page);
172
- $this->getResponse()->setBody(json_encode($collection->toArray()));
173
- }
174
- }
175
-
176
- private function deleteJobCaller()
177
- {
178
- if ($this->hasSbAuthToken()) {
179
- if (is_numeric($this->getRequest()->getParam('delete_job'))) {
180
- $helper = Mage::helper('shadow/prattler');
181
- $resource = Mage::getModel('combine/cron_queue')->getResource();
182
- $resource->removeHarvestRow($this->getRequest()->getParam('delete_job'));
183
- $this->getResponse()->setHeader('Content-type', 'application/json');
184
- $this->getResponse()->setBody($helper->getPrattlerJsonResponse());
185
- }
186
- }
187
- }
188
-
189
- private function deliverEventLogCaller()
190
- {
191
- if ($this->hasSbAuthToken()) {
192
- $helper = Mage::helper('shadow/prattler');
193
- $deliverEventLog = new Springbot_Services_Tasks_DeliverEventLog();
194
- $deliverEventLog->run();
195
- $this->getResponse()->setHeader('Content-type', 'application/json');
196
- $this->getResponse()->setBody($helper->getPrattlerJsonResponse());
197
- }
198
- }
199
-
200
- private function viewConfigCaller()
201
- {
202
- if ($this->hasSbAuthToken()) {
203
- $this->getResponse()->setHeader('Content-type', 'application/json');
204
- $this->getResponse()->setBody(json_encode(Mage::getStoreConfig('springbot')));
205
- }
206
- }
207
-
208
- private function setConfigCaller()
209
- {
210
- if ($this->hasSbAuthToken()) {
211
- $this->getResponse()->setHeader('Content-type', 'application/json');
212
- $configKey = $this->getRequest()->getParam('set_config');
213
- $value = $this->getRequest()->getParam('value');
214
- if (isset($value)) {
215
- Mage::getModel('core/config')->saveConfig('springbot/' . $configKey, $value, 'default', 0);
216
- $this->getResponse()->setBody(json_encode(array('success' => true)));
217
- }
218
- else {
219
- $this->getResponse()->setBody(json_encode(array('success' => false)));
220
- }
221
-
222
- }
223
- }
224
 
225
  private function viewLogCaller()
226
  {
@@ -248,122 +132,9 @@ class Springbot_Shadow_IndexController extends Springbot_Shadow_Controller_Actio
248
  }
249
  }
250
 
251
- private function clearCacheCaller()
252
- {
253
- if ($this->hasSbAuthToken()) {
254
- $this->getResponse()->setHeader('Content-type', 'application/json');
255
- try {
256
- $allTypes = Mage::app()->useCache();
257
- foreach($allTypes as $type => $blah) {
258
- Mage::app()->getCacheInstance()->cleanType($type);
259
- }
260
- $this->getResponse()->setBody(json_encode(array('success' => true)));
261
- }
262
- catch (Exception $e) {
263
- $this->getResponse()->setHeader('Content-type', 'application/json');
264
- $this->getResponse()->setBody(json_encode(
265
- array(
266
- 'success' => false,
267
- 'message' => $e->getMessage()
268
- )
269
- ));
270
- }
271
- }
272
- }
273
 
274
- private function clearStoresCaller()
275
- {
276
- if ($this->hasSbAuthToken()) {
277
- $config = new Mage_Core_Model_Config();
278
- foreach (Mage::getStoreConfig('springbot/config') as $configKey => $configValue) {
279
- if (
280
- (substr($configKey, 0, strlen('store_id_')) == 'store_id_') ||
281
- (substr($configKey, 0, strlen('store_guid_')) == 'store_guid_') ||
282
- (substr($configKey, 0, strlen('security_token_')) == 'security_token_')
283
- ) {
284
- Mage::getModel('core/config')->saveConfig('springbot/config/' . $configKey, null, 'default', 0);
285
- }
286
- }
287
- Mage::getConfig()->cleanCache();
288
- $this->getResponse()->setHeader('Content-type', 'application/json');
289
- $this->getResponse()->setBody(json_encode(array('success' => true)));
290
- }
291
- }
292
 
293
- private function registerStoresCaller()
294
- {
295
- if ($this->hasSbAuthToken()) {
296
- $service = new Springbot_Services_Store_Register;
297
- $helper = Mage::helper('combine/harvest');
298
- foreach ($helper->getStoresToHarvest() as $store) {
299
- $service->setStoreId($store->getStoreId())->run();
300
- }
301
- Mage::getConfig()->cleanCache();
302
- $this->getResponse()->setHeader('Content-type', 'application/json');
303
- $this->getResponse()->setBody(json_encode(array('success' => true)));
304
- }
305
- }
306
 
307
- private function debugCaller()
308
- {
309
- if ($this->hasSbAuthToken()) {
310
- Mage::getConfig()->cleanCache();
311
- $this->getResponse()->setHeader('Content-type', 'application/json');
312
- $resource = Mage::getResourceModel('combine/debug');
313
-
314
- $this->getResponse()->setBody(json_encode(
315
- array(
316
- 'customers' => $resource->getCustomersRaw(),
317
- 'guests' => $resource->getGuestsRaw(),
318
- 'subscribers' => $resource->getSubscribersRaw(),
319
- 'products' => $resource->getProductsRaw(),
320
- 'categories' => $resource->getCategoriesRaw(),
321
- 'purchases' => $resource->getPurchasesRaw(),
322
- 'carts' => $resource->getCartsRaw(),
323
- )
324
- ));
325
- }
326
- }
327
-
328
- private function clearJobsCaller()
329
- {
330
- if ($this->hasSbAuthToken()) {
331
- $this->getResponse()->setHeader('Content-type', 'application/json');
332
- $resource = Mage::getResourceModel('combine/cron_queue');
333
- $resource->removeHarvestRows(null, false);
334
- $this->getResponse()->setBody(json_encode(array('success' => true)));
335
- }
336
- }
337
-
338
- private function unlockJobsCaller()
339
- {
340
- if ($this->hasSbAuthToken()) {
341
- $this->getResponse()->setHeader('Content-type', 'application/json');
342
- $resource = Mage::getResourceModel('combine/cron_queue');
343
- $resource->unlockOrphanedRows();
344
- $this->getResponse()->setBody(json_encode(array('success' => true)));
345
- }
346
- }
347
-
348
- private function resetRetries()
349
- {
350
- if ($this->hasSbAuthToken()) {
351
- $this->getResponse()->setHeader('Content-type', 'application/json');
352
- $resource = Mage::getResourceModel('combine/cron_queue');
353
- $resource->resetRetries();
354
- $this->getResponse()->setBody(json_encode(array('success' => true)));
355
- }
356
- }
357
-
358
- private function unlockActionsCaller()
359
- {
360
- if ($this->hasSbAuthToken()) {
361
- $this->getResponse()->setHeader('Content-type', 'application/json');
362
- $resource = Mage::getResourceModel('combine/action');
363
- $resource->unlockActionRows();
364
- $this->getResponse()->setBody(json_encode(array('success' => true)));
365
- }
366
- }
367
 
368
 
369
  }
13
  {
14
  try {
15
  $params = $this->getRequest()->getParams();
16
+
17
+ // Maintain backward compatibility
18
+ $aliases = array('run', 'healthcheck');
19
+ foreach ($aliases as $alias) {
20
+ if (isset($params[$alias])) {
21
+ $params['task'] = $alias;
22
+ unset($params[$alias]);
23
+ }
24
  }
25
+
26
+ if (isset($params['email'])) {
27
  $this->emailCaller();
28
  }
29
  else if (isset($params['trackable']) && isset($params['type'])) {
30
  $this->trackableCaller();
31
  }
32
+ else if (isset($params['task'])) {
33
+ if ($this->hasSbAuthToken()) {
34
+ $task = $params['task'];
35
+ unset($params['task']);
36
+ if ($task = Springbot_Services_Tasks::makeTask($task, $params)) {
37
+ $responseBody = json_encode($task->run());
38
+ $this->getResponse()->setHeader('Content-type', 'application/json');
39
+ $this->getResponse()->setBody($responseBody);
40
+ }
41
+ }
42
+ else {
43
+ $this->getResponse()->setHttpResponseCode(401);
44
+ }
 
 
 
 
 
 
 
45
  }
46
  else if (isset($params['view_log'])) {
47
+ if ($this->hasSbAuthToken()) {
48
+ $this->viewLogCaller();
49
+ }
50
+ else {
51
+ $this->getResponse()->setHttpResponseCode(401);
52
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  }
54
+
55
  } catch (Exception $e) {
56
  $helper = Mage::helper('shadow/prattler');
57
  $this->getResponse()->setHeader('Content-type', 'application/json');
58
+ $this->getResponse()->setBody(json_encode($helper->getExceptionResponse($e)));
59
  }
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
  private function emailCaller()
64
  {
105
  );
106
  }
107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
 
109
  private function viewLogCaller()
110
  {
132
  }
133
  }
134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
 
140
  }
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Springbot</name>
4
- <version>1.4.0.9</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License v3.0 (OSL-3.0)</license>
7
  <channel>community</channel>
@@ -47,13 +47,15 @@
47
  Proclivity to Buy Alerts example: Sally Avalon bought a house recently &#xD;
48
  &#xD;
49
  For support information, features and pricing and more details visit springbot.com </description>
50
- <notes>1.3 compatibility fixes&#xD;
 
 
51
  Compilation check on remote update&#xD;
52
  Ultra paranoid getSource checking</notes>
53
  <authors><author><name>Springbot Integrations Team</name><user>Springbot</user><email>magento@springbot.com</email></author></authors>
54
- <date>2015-02-03</date>
55
- <time>23:06:32</time>
56
- <contents><target name="magecommunity"><dir name="Springbot"><dir name="Shadow"><dir name="Block"><dir name="Action"><file name="View.php" hash="f2fc0d66474305766335aa37a7bbcd72"/></dir><file name="Async.php" hash="0d203fe1a722f7045029613a0e97bfc2"/></dir><dir name="Controller"><file name="Action.php" hash="5dc41d4ddf12a468fb23fc757ef49a95"/></dir><dir name="Helper"><file name="Data.php" hash="82089d4cfecee69628ae9d627ad2de0c"/><file name="Prattler.php" hash="1df7b8aaeb78579d5a8c2d34169c20e9"/></dir><dir name="Model"><dir name="Listeners"><file name="Observer.php" hash="e5b827a61c3b04fdb73e38a424d167eb"/></dir></dir><dir name="controllers"><file name="ActionController.php" hash="2532947b3368c5a4d64bf77cc7aa9316"/><file name="IndexController.php" hash="755a1661390f7aeeb1899ac101e17801"/></dir><dir name="etc"><file name="config.xml" hash="b1717e37375197b449c0736adff99d87"/></dir></dir><dir name="Services"><dir name="Cmd"><file name="Forecast.php" hash="efaeb6ca5b2667b30929b223cddfb044"/><file name="Halt.php" hash="85c85ae257e9b86d0fb10fb46060fea3"/><file name="Harvest.php" hash="1f214f0fd7b41a6b5fc7c27218fb099a"/><file name="Healthcheck.php" hash="79eec1fd01ddf9c61418da86ecaaf8cb"/><file name="Update.php" hash="d8d1950c85930083009096a3849054a7"/></dir><dir name="Harvest"><file name="AttributeSets.php" hash="95610f6fd6323e0473589c01051781f2"/><file name="Carts.php" hash="ecaf8583962fc63e49cf069d73eb22bf"/><file name="Categories.php" hash="acfe9c8dc9a02992a058015e8aaf9311"/><file name="Coupons.php" hash="5190a1669b0b4ef10222843451e9dc36"/><file name="CustomerAttributeSets.php" hash="7c3a0bed9f841900f692f5a17e7c6e8f"/><file name="Customers.php" hash="3d57c8238976554081176e249f2e7f4b"/><file name="Guests.php" hash="e0f6d955ba9bc3f020cc95f3083913ad"/><file name="Products.php" hash="087d01eddc45b4a30c4aa7dba5cc5dce"/><file name="Purchases.php" hash="a3d76ae1a2ea514fcce5ca2607ddf5a4"/><file name="Rules.php" hash="355ecad7266987a391ceca9d2eb0244f"/><file name="Subscribers.php" hash="a8b0d7197580bd9f3de7b10f9c6dc7ca"/></dir><file name="Harvest.php" hash="af3b9604c7b9d7da76cffe846dc34d70"/><dir name="Log"><file name="Installer.php" hash="342706712eb2731ea27aeec993fd2d7f"/></dir><dir name="Post"><file name="Attribute.php" hash="e0a283984de84bc16d5f89a893a8dc83"/><file name="AttributeSet.php" hash="c8f66b5a189125a63e834196402b709a"/><file name="Cart.php" hash="26d33fb887417e46d3ba3e46badc04a3"/><file name="Category.php" hash="0645d5eb9bb790f25e29666bc3a703e0"/><file name="Coupon.php" hash="6b8b49327874ce431f6100b6917ba21f"/><file name="Customer.php" hash="d2f018919afdb7d49617e6b9ac7d2760"/><file name="Guest.php" hash="3b7ee9f0e274340713d8c4302d01b361"/><file name="Json.php" hash="86a5f26aa5367d8c4c66d278e4c02546"/><file name="Jsonstring.php" hash="9dfb5761d1a7835bf35040a073fa8fc4"/><file name="Product.php" hash="5ec9cbf29df156da09d17e1b6526f53d"/><file name="Purchase.php" hash="0b924c8e5d8f7018eb335ba9fb6d63dd"/><file name="Rule.php" hash="fa038fa414a176d960ed6470c7b7b4cd"/><file name="Subscriber.php" hash="88c5dbcaae805866595217eedbbf5f34"/></dir><file name="Post.php" hash="df9bf80bee670259f3a54e3308d0dbd3"/><file name="Registry.php" hash="d54afde887b72e79ae36ab11766ec5c9"/><dir name="Store"><file name="Finalize.php" hash="e3636b532bc8f55ba0e618a973e2faa0"/><file name="Register.php" hash="72ae8d75c11dc1c0635c799e284ecb2d"/></dir><dir name="Tasks"><file name="DeliverEventLog.php" hash="d4448212c228d74a320b541385162b10"/><file name="Forecast.php" hash="9cb195b603f843cf2eac74530aa6c84b"/><file name="GetLog.php" hash="8e663a1dbd2dd87a7bfb65b8e8bc2b4a"/><file name="KillHarvest.php" hash="55c540031b57c0a38d83b99e72865bca"/><file name="LaunchFullHarvest.php" hash="b2a9d9c75a46b8c9c4889ddf02094921"/><file name="LaunchPartialHarvest.php" hash="c2a3bc35d62c3eed93107651de7026c8"/><file name="PackageUpdate.php" hash="cb88473eea4e15760a4fa7c0aba83ddb"/><file name="PostItem.php" hash="2cc5c3fd1f1fd7ed9f0c06f44715cce8"/><file name="ResumeHarvest.php" hash="4cd58b8cb691267b4c1366ea3da47673"/><file name="SetVar.php" hash="5b4bea2e94b4bea05bbf326ee3e74fab"/><file name="SkipStoreHarvest.php" hash="1919b0dba7e20c6ff0e3fc302cc2f172"/></dir><dir name="Update"><file name="Abstract.php" hash="7b9a1d36b4486e250587820731b7fb7c"/><file name="Connect.php" hash="3e4366a42e563ec3406a0fcb9a5f77bf"/><file name="Downloader.php" hash="934ef5788acb45ce94e0a32c1d705df1"/><file name="Installer.php" hash="a09ec2e9f7bbf12c117c8950e46072b0"/><file name="Package.php" hash="60ec01b28a2ded244bf6d4a971918bd5"/></dir><dir name="Work"><file name="Cleanup.php" hash="100fef130220e91dc255b5e0f30c37f1"/><file name="Manager.php" hash="9dbdfb717865b7724f4ffd38b3ec866e"/><file name="Report.php" hash="a6482e618e657688ab85221576d1898f"/><file name="Restart.php" hash="d55e811fbba86348890b4047fa5a579f"/><file name="Runner.php" hash="c0ced9ce83e5e51b4ba5f10bb46760af"/><file name="Stop.php" hash="db97407b43396f0adf44a2354a23a0a5"/></dir></dir><dir name="Util"><file name="Cache.php" hash="2c6eb2ee4ee723758fc92989e9220f6e"/><file name="Caller.php" hash="4fcc265eb1a58fed5c3b404ec864514b"/><file name="Categories.php" hash="1292843306c38d9593902616e04320a6"/><dir name="Log"><file name="Rollover.php" hash="6ad4bd93adb7e906c1de5a05a2871ea8"/></dir><file name="Logger.php" hash="59abca8cb07ef933ca8ef2ac824591b5"/><file name="Partition.php" hash="b9296b086003ba58ba12f8b8b0373c50"/><file name="Timer.php" hash="68323a4faeb388627556137f0d7679d9"/></dir><file name="Services.php" hash="a7a4050083155da6f77e7b4f6688a93f"/><dir name="Bmbleb"><dir name="Block"><dir name="Adminhtml"><file name="Auth.php" hash="7dc661bbe9ec85f700a22b319981114d"/><dir name="Bmbleb"><dir name="Login"><file name="Form.php" hash="6d54c1272c7e0a37f3dfe7a23b97a451"/></dir><file name="Login.php" hash="7232e8225f5b21de5675c0d84cb452bd"/></dir><file name="Connected.php" hash="833cef8e351f5efa7a4d104b1c51ca7f"/><file name="Help.php" hash="b280b3292ed778140b751b6426ef56fb"/><dir name="Index"><file name="Messages.php" hash="1e247e31194447de32e54f49dafc3ccc"/><file name="Terms.php" hash="739e5a9ebe204f1f9ac433557c994ae6"/></dir><file name="Index.php" hash="eb7bbef5fa26a53748596e145c3677c4"/><dir name="Jobs"><file name="Grid.php" hash="67255d982ac3d50b38d7a2a525c2b922"/><file name="Status.php" hash="f1b197bf6fdc392bed93ff0734a54ad6"/></dir><file name="Jobs.php" hash="84801c6008802496e168e763a7e6d71f"/><file name="Login.php" hash="2e4d8baead482d404ed40f7d5f3d902c"/><file name="Logout.php" hash="b75af51891b751b9d070e1e784dd6914"/><file name="Logs.php" hash="686e958b553c1e3fcf74841eab30fffb"/><file name="Notifications.php" hash="b9e103d6c255078274c2f3047d944d0e"/><file name="Problems.php" hash="c2fd654e2c4c3a6dd9fbb083d0995e5e"/><file name="Status.php" hash="9b67a20f0ee00608029d24850cefda4d"/><file name="Tabs.php" hash="6f93d5c6bd5208a99637c06118c6c630"/></dir></dir><dir name="Helper"><file name="Account.php" hash="c41f40e6f58abd3b8486e0e92cc079d8"/><file name="Data.php" hash="dca14b137de1e2734a377ca645eeddbe"/><file name="PluginStatus.php" hash="10fccc3c622adf7e865ebdcc11d65932"/></dir><dir name="Model"><file name="Bmbleb.php" hash="700d11c3006f2dcd2e80cd8bbbab15f9"/><file name="Status.php" hash="9409d26c7884be6b8075ba97dbf71f78"/><file name="Sync.php" hash="a800b6064a88f37957392cd967f2b3cb"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="HelpController.php" hash="087e7868dafe9dd2df89a642d405424a"/><file name="IndexController.php" hash="61a95eed027fcb7a7179485288f1b05f"/><file name="JobsController.php" hash="4e912a8fafd2f58235cb2299a83a128b"/><file name="LogsController.php" hash="20a0ce2f584f08480399b7a5ecbd9207"/><file name="ProblemsController.php" hash="9753f4b2d3e7d4873e4bd92b5b2b6aaf"/><file name="SettingsController.php" hash="f75a7a8ef28a296cbd46b04ae9dd5539"/></dir><file name="HelpController.php" hash="2df4608a957f151bf1d01dbde2113680"/><file name="IndexController.php" hash="ea5fa5e2b305f46b222cb2fc2a44f6a5"/><file name="LoginController.php" hash="41a0c13dce233a613f89b614cffa0eb1"/><file name="LogoutController.php" hash="140c9d32f5557aa1169fd1b85cd5cc9f"/></dir><dir name="etc"><file name="config.xml" hash="45f7218274a3eed0086761942a95f27b"/></dir></dir><file name="Boss.php" hash="57f394336cd27df31268a566a025ac8f"/><file name="Cli.php" hash="d0a7abfb0616ffbc46f8a6a79903ace3"/><file name="Log.php" hash="5ab61d7cf21805adb8f826f83b9bf7b1"/><dir name="Combine"><dir name="Helper"><file name="Attributes.php" hash="5fb06e7cc89bb710039a79fb16e2a998"/><file name="Cart.php" hash="07ce5f461ecded3b9b00ed5c30faa266"/><file name="Data.php" hash="bba3915380a71aaacacc306f10396ef1"/><file name="Harvest.php" hash="08fd1b330802731bf82358fd05789173"/><file name="Parser.php" hash="56f05079b5d952d599c7b2f405ffae57"/><file name="Redirect.php" hash="92053fb1b356fdd6b3131be0b6a8017c"/><file name="Store.php" hash="8db94d157d7e497e7612844da43a6c11"/><file name="Trackable.php" hash="a042cb0d176730ec87353b1c5c6d21f7"/></dir><dir name="Model"><file name="Action.php" hash="6375461263bdf7fe26e71235d2449c21"/><file name="Api.php" hash="978590ad36b4d6ad6b3a14742f8bb31c"/><dir name="Cron"><file name="Count.php" hash="57552740b6ffdd9a4e879191a51043b0"/><dir name="Manager"><file name="Status.php" hash="aeb4445bc2d4b1b7e0e19c09172f0483"/></dir><dir name="Queue"><dir name="Batch"><file name="Row.php" hash="25f4ed809a9190f5d41c6c210cd8a537"/></dir><file name="Batch.php" hash="fa905d2781aab5881e881e3b12d25e0c"/></dir><file name="Queue.php" hash="7057aea4c3c103e164ed380b351c5bd1"/><file name="Worker.php" hash="8b5040f1c5c5b3221542e739dc951de7"/></dir><file name="Cron.php" hash="40f2bc9634610f4ed5464de48630ce16"/><dir name="File"><file name="Io.php" hash="6d1f79eaf45897bf0525b0f3f3ac69d2"/><file name="Path.php" hash="24900b670c07fcdc4e54bae585f20002"/></dir><dir name="Harvest"><file name="AttributeSets.php" hash="f96517c3c4aa0d01083253d58214152e"/><file name="Carts.php" hash="0b303b2b7d4458a9a0cbf0653b9d660f"/><file name="Categories.php" hash="fd5f13ad449a320616569f64c82327ff"/><file name="Coupons.php" hash="14112f9063bbf20cea7ff3649f238524"/><file name="CustomerAttributeSets.php" hash="bd763562f3fcdf199c2e93876d238fa9"/><file name="Customers.php" hash="c7850418a39abf09c10fbfafcb96f8e1"/><file name="Guests.php" hash="3685b3220b724e518dc83daad015577f"/><file name="Products.php" hash="da471abcc04837391b5270464164aefd"/><file name="Purchases.php" hash="427d38d1f6579f63730aa6bdf6b7bba4"/><file name="Rules.php" hash="fd1789174225c4ed6ad1e1137fe2aee5"/><file name="Subscribers.php" hash="e499e299612a6e2ce07ee19228cf43c5"/></dir><file name="Harvest.php" hash="8104fb4584411f90706f2fd9c8d8ce9b"/><dir name="Mysql4"><dir name="Action"><file name="Collection.php" hash="830a7db2ea307d594fe945701654d883"/></dir><file name="Action.php" hash="5b18cc8842c83d981575b7b2de496f66"/><dir name="Cron"><file name="Count.php" hash="acbbb7ec28afbbe98101f5d114cb30b3"/><dir name="Queue"><file name="Collection.php" hash="b26806c9e7cefd052bb784f5a6ce814c"/></dir><file name="Queue.php" hash="4add10644bfc94b88ef5042b23c82ae7"/></dir><dir name="Redirect"><file name="Collection.php" hash="3bbe4f8729c603f8d8131154a0a117c1"/><dir name="Order"><file name="Collection.php" hash="88c0cfcce31b0eed8c035dee4e7e86df"/></dir><file name="Order.php" hash="852bea330edac3372ec5c168111301a8"/></dir><file name="Redirect.php" hash="842e4ba35c6b049c8eaa64704588ca76"/><file name="Setup.php" hash="3fdec335980846a4c3adbc6f4e3478eb"/><dir name="Trackable"><file name="Collection.php" hash="8799c5bf630d267b551cf9dba986cbb0"/></dir><file name="Trackable.php" hash="b38749697b641874b42dceae38ab4a30"/></dir><dir name="Parser"><file name="AttributeSet.php" hash="9ae4013d42da5de0e9c8492fb29cd8d6"/><file name="Category.php" hash="0c3c71ff784307b9120d7cf781005069"/><file name="Coupon.php" hash="a66b3d4c8397610863cd74e35cbd5b62"/><file name="Customer.php" hash="99233c3da1eb28f1ec15e20e837d764a"/><file name="CustomerAttributeSet.php" hash="1b51f9300a9ee102872ff9d7f9bbccbc"/><file name="Guest.php" hash="002c900d3722f761e3e3ac63be84014f"/><file name="Product.php" hash="7e0fa4a55ca45fc876e588442cce72eb"/><dir name="Purchase"><file name="Item.php" hash="ca7facc8c81504ea990fdb1feeba64dd"/></dir><file name="Purchase.php" hash="ec3929b9e1a0df0e5816c1558391dcdc"/><dir name="Quote"><file name="Item.php" hash="37cbc74a49a16e67e02f421978e1741f"/></dir><file name="Quote.php" hash="df651461575cb44bd08f7eb8466782eb"/><file name="Rule.php" hash="0a0f70172aeff0e5157f2f1652c3ae09"/><file name="Subscriber.php" hash="57ab5db177d4a37f30865cb127912631"/></dir><file name="Parser.php" hash="2c2dca731dcc0c1aa06e1f83d4a0a5b2"/><dir name="Redirect"><file name="Order.php" hash="5ca85ca596ef6e45468c8a12cee72614"/></dir><file name="Redirect.php" hash="05dddaa1e9c17c4c79d70d63b56ed454"/><dir name="Resource"><file name="Abstract.php" hash="5e58e98d53c3d49e454d6b0bd2f308c2"/><dir name="Action"><file name="Collection.php" hash="22e278b8cbc5d18d4faa48c4f224d145"/></dir><file name="Action.php" hash="83b00531db5ec3a51ea7c0fc65a1d083"/><dir name="Cron"><dir name="Count"><file name="Collection.php" hash="c5cb4ab406c1d008c1bc22bb95b3ba28"/></dir><file name="Count.php" hash="6a356b5d92b509945c4567f479b9bfdd"/><dir name="Queue"><file name="Collection.php" hash="2e7ba35d1a14da641a098078e4db7432"/></dir><file name="Queue.php" hash="5b5273a55a562f93f273b92cb9ffcd5e"/></dir><file name="Debug.php" hash="9f71d628ced3709e514189850665d04c"/><dir name="Redirect"><file name="Collection.php" hash="0f9db83ade4c50c2f7bbe40deae1c065"/><dir name="Order"><file name="Collection.php" hash="162359ed9499b6f976f5c341fd0585c3"/></dir><file name="Order.php" hash="7ea4477380a5215dc0efe561ede359d9"/></dir><file name="Redirect.php" hash="d239af442388bb9fa80db81a7fc43711"/><file name="Setup.php" hash="0405c44c124f19619ccc9f429d781d44"/><dir name="Trackable"><file name="Collection.php" hash="6f060c3537b49710302e38e881885a69"/></dir><file name="Trackable.php" hash="764b0d21c492dd69b9f85ae3c647666e"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="LogFormat.php" hash="828680dafe5a7042221900cb6d9dfa17"/><file name="LogLevel.php" hash="b86c793ca04205f045efd9ea42d02a10"/><file name="Stability.php" hash="830e5bc4e8ce9657221224dbaf99cee6"/><file name="UrlType.php" hash="28f9a5bc024afe5526685d429a751ad8"/></dir></dir></dir><file name="Trackable.php" hash="0af2cd1e6e1eb948157918df2570bf10"/></dir><dir name="etc"><file name="adminhtml.xml" hash="794fc8a1d67ac3e6b5d71c707a0c7cad"/><file name="config.xml" hash="a0de8ceac1b350cf3a9c3aa1623285a2"/><file name="system.xml" hash="887d99c8efe22f532aa7f8d1bc93fe17"/></dir><dir name="sql"><dir name="combine_setup"><file name="mysql4-install-1.0.0.70.php" hash="425be4a54012cd64753ee1a216255d67"/><file name="mysql4-upgrade-1.0.0.70-1.0.0.84.php" hash="e51deaff9e65f43483ab00573605329d"/><file name="mysql4-upgrade-1.0.0.84-1.0.0.88.php" hash="89bd8a585c0d351aae6838ace48f608d"/><file name="mysql4-upgrade-1.0.0.88-1.2.0.0.php" hash="4779a5072d23ebdb27177de0dfd19f5d"/><file name="mysql4-upgrade-1.2.0.0-1.2.0.1.php" hash="01a7ef2466b9f676884db4d7a7c562a9"/><file name="mysql4-upgrade-1.2.0.1-1.2.1.0.php" hash="dbba441ac757db26289f21443a948f6b"/><file name="mysql4-upgrade-1.3.9.9-1.4.0.0.php" hash="de0b3996e28572fc3dbc7c12cb12ee1a"/></dir></dir></dir><dir name="BoneCollector"><dir name="Model"><file name="HarvestAbstract.php" hash="fecaefad7d4fc279e3a54b4c8cac54ae"/><dir name="HarvestAttribute"><file name="Observer.php" hash="26d016ab4fae05872aa46b6abdc3e562"/></dir><dir name="HarvestCart"><file name="Observer.php" hash="7364d7b70e2b3fb65c7effac8cc2ade6"/></dir><dir name="HarvestCategory"><file name="Observer.php" hash="7ddb0b58b301863c1e46dd2db3628db8"/></dir><dir name="HarvestCustomer"><file name="Observer.php" hash="a20e21f1033dc35025ab9b402d6574bc"/></dir><dir name="HarvestProduct"><file name="Observer.php" hash="60af24cee3ad4105822ff4bfb73a5b62"/></dir><dir name="HarvestPurchase"><file name="Observer.php" hash="45b457d55548283c29c0d6105db52df7"/></dir><dir name="HarvestRule"><file name="Observer.php" hash="49f369f960101ec66458f8dbe7972e40"/></dir><dir name="HarvestSubscriber"><file name="Observer.php" hash="5b64106296e9d0045610c69ed0c9be4b"/></dir></dir><dir name="etc"><file name="config.xml" hash="908a3b69f97bf5578f661de5b8341a80"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Springbot.xml" hash="69a4e2c056502cd8539b4f66a2c8b1bc"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="bmbleb.xml" hash="aa390e236576f79375b407262961043e"/></dir><dir name="template"><dir name="bmbleb"><file name="auth.phtml" hash="bf509b53c49cd69ec3ea60e3effe69c3"/><file name="dashboard_loggedout.phtml" hash="19281143b19a544d4e3072dc754ada2d"/><dir name="help"><file name="index.phtml" hash="e9d3f11c623c735c3e699e406ff9e0e7"/></dir><dir name="index"><file name="messages.phtml" hash="fcbbb47d2cc30c493ed2316a8b888f5d"/><file name="terms.phtml" hash="dfff1182d2fe7d8eee69b9b302c4cbc7"/></dir><file name="index.phtml" hash="a5132e593910b8b59a3467b555d4ed87"/><dir name="jobs"><file name="status.phtml" hash="77f0b0ae7c3c6c42031675cfc959e270"/></dir><file name="jobs.phtml" hash="961ac83f56bf8703dbc433894da4933e"/><file name="login.phtml" hash="0a1a20dfaffe8646bb56323ab811d46a"/><file name="logout.phtml" hash="09b92790c5e124a01086d6929ed7e8de"/><dir name="logs"><file name="index.phtml" hash="17e773a761a24e292b09fe7da1bd7662"/></dir><file name="notifications.phtml" hash="45f8767a090a4f7a7e177151bbc43f4f"/><dir name="problems"><file name="index.phtml" hash="2027d07eed8848a4ed8e801d67072796"/></dir><file name="status.phtml" hash="1acc630a6549b234bc1fa5923e04b8ce"/><file name="tabs.phtml" hash="778b686fb073a8aeb973db3bfb0302aa"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="shadow.xml" hash="3f29bebbcf7e42c57dcac9150c6b7d68"/></dir><dir name="template"><dir name="shadow"><file name="async.phtml" hash="af147801ed74d45bb0580b0bb69ce0fd"/><file name="conversion.phtml" hash="3d46a8930d9658a24a77ff34d52e40eb"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="bmbleb"><file name="bmbleb.css" hash="8aea7d5d46e2a0d0ece11abca6ef5d3f"/><dir name="images"><file name="arrows_up-down-large.png" hash="72c27995e1ab1d182891dad0a4d1dae2"/><file name="bmb-ctl.png" hash="de59a694a82b8699560df5146b2e315f"/><file name="check.png" hash="126f33ed483549e79a16186b7499c190"/><file name="grn-bg.png" hash="f681a524e2b4561dbe94152a2d24d60b"/><file name="h3-bg.png" hash="b93df0b0bdba8e8f6e0a07cc31fcc180"/><file name="icon-alert.png" hash="ac2e70efdcebc3813222d0d3ee62a6d9"/><file name="icon-bmbleb.png" hash="fb5574b5e63ee33b84eee26b3d8ef8e3"/><file name="icon-insights.png" hash="725fd29fe1b705e358c9080408693d3d"/><file name="icon-status.png" hash="bd13429f23166a6d431739010ea1b2cd"/><file name="left-ico1.png" hash="7d188f5e6021569750756f58067f0a3b"/><file name="left-ico2.png" hash="d2f6379a73290a8ffa4cb3e19a809d25"/><file name="left-ico3.png" hash="73bc75f7a746e54a75f14eda7a28a6b9"/><file name="left-ico4.png" hash="1da2c26187fed26b6c61599682b2dc4b"/><file name="left-ico5.png" hash="ada61cb32805f2cb8e8dace46361613e"/><file name="left-ico6.png" hash="1e62822267f72589ffa0771352a002da"/><file name="left-ico7.png" hash="16118412d581f0c83ce45c44f62f25a1"/><file name="left-ico8.png" hash="c7de2fe523c892b432b575648cc05631"/><file name="left-ico_demographics.png" hash="3fe23a2dea68f6c65114f248a8bdaa5e"/><file name="login-icn-b.png" hash="64e72070f595e215ece79736ac77ee2f"/><file name="login-icn.png" hash="6142cc2fc8ee2d1c40bf3c8f9ac1fa85"/><file name="logo.png" hash="8fb783f7d68fca3914123f56b8c066a4"/><file name="orng-bg.png" hash="074a6912ca2a139df537e3d15b6bc9b2"/><file name="plugin_dashboard_syncing.jpg" hash="8511648541f6f1b96ff1c53dda3a439b"/><file name="register.png" hash="f73fe51cf7df27ab11089385fa50714e"/><file name="registration-bg-25.png" hash="9d2cf77619cc8fce3ae4d44b0aae30c1"/><file name="registration-bg-50.png" hash="99942fdc8c3f88b0d4b09f87c9e39045"/><file name="registration-bg.png" hash="96365b39495e56ffe491dd9930fe221d"/><file name="spinner.gif" hash="add667817f25bce331a213ab3cc9621f"/><file name="springbot-ctl.png" hash="de59a694a82b8699560df5146b2e315f"/><file name="submit-btn-bg.png" hash="d98aa287b7b73dad9f780b22cb53fbdb"/><file name="sync_icon.png" hash="cb12f2e8943c8e324e3456375f953c86"/><file name="white-check.png" hash="126f33ed483549e79a16186b7499c190"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="shell"><file name="springbot.php" hash="40a39e4b3400ba8724621898c3d562a2"/></dir></target></contents>
57
  <compatible/>
58
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
59
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Springbot</name>
4
+ <version>1.4.1.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License v3.0 (OSL-3.0)</license>
7
  <channel>community</channel>
47
  Proclivity to Buy Alerts example: Sally Avalon bought a house recently &#xD;
48
  &#xD;
49
  For support information, features and pricing and more details visit springbot.com </description>
50
+ <notes>Secure endpoint tasks&#xD;
51
+ Prattle mode&#xD;
52
+ 1.3 compatibility fixes&#xD;
53
  Compilation check on remote update&#xD;
54
  Ultra paranoid getSource checking</notes>
55
  <authors><author><name>Springbot Integrations Team</name><user>Springbot</user><email>magento@springbot.com</email></author></authors>
56
+ <date>2015-03-04</date>
57
+ <time>20:52:30</time>
58
+ <contents><target name="magecommunity"><dir name="Springbot"><dir name="Shadow"><dir name="Block"><dir name="Action"><file name="View.php" hash="f2fc0d66474305766335aa37a7bbcd72"/></dir><file name="Async.php" hash="0d203fe1a722f7045029613a0e97bfc2"/></dir><dir name="Controller"><file name="Action.php" hash="5dc41d4ddf12a468fb23fc757ef49a95"/></dir><dir name="Helper"><file name="Data.php" hash="82089d4cfecee69628ae9d627ad2de0c"/><file name="Prattler.php" hash="e2658c19a182bd5cc9948eccc024ad21"/></dir><dir name="Model"><dir name="Listeners"><file name="Observer.php" hash="e5b827a61c3b04fdb73e38a424d167eb"/></dir></dir><dir name="controllers"><file name="ActionController.php" hash="2532947b3368c5a4d64bf77cc7aa9316"/><file name="IndexController.php" hash="2a540da33a64c7307af981abca0d4558"/></dir><dir name="etc"><file name="config.xml" hash="b1717e37375197b449c0736adff99d87"/></dir></dir><dir name="Services"><dir name="Cmd"><file name="Forecast.php" hash="efaeb6ca5b2667b30929b223cddfb044"/><file name="Halt.php" hash="85c85ae257e9b86d0fb10fb46060fea3"/><file name="Harvest.php" hash="1f214f0fd7b41a6b5fc7c27218fb099a"/><file name="Healthcheck.php" hash="814af5d0d1865c7b610290b4cff2099d"/><file name="Update.php" hash="d8d1950c85930083009096a3849054a7"/></dir><dir name="Harvest"><file name="AttributeSets.php" hash="95610f6fd6323e0473589c01051781f2"/><file name="Carts.php" hash="ecaf8583962fc63e49cf069d73eb22bf"/><file name="Categories.php" hash="acfe9c8dc9a02992a058015e8aaf9311"/><file name="Coupons.php" hash="5190a1669b0b4ef10222843451e9dc36"/><file name="CustomerAttributeSets.php" hash="7c3a0bed9f841900f692f5a17e7c6e8f"/><file name="Customers.php" hash="3d57c8238976554081176e249f2e7f4b"/><file name="Guests.php" hash="e0f6d955ba9bc3f020cc95f3083913ad"/><file name="Products.php" hash="087d01eddc45b4a30c4aa7dba5cc5dce"/><file name="Purchases.php" hash="a3d76ae1a2ea514fcce5ca2607ddf5a4"/><file name="Rules.php" hash="355ecad7266987a391ceca9d2eb0244f"/><file name="Subscribers.php" hash="a8b0d7197580bd9f3de7b10f9c6dc7ca"/></dir><file name="Harvest.php" hash="af3b9604c7b9d7da76cffe846dc34d70"/><dir name="Log"><file name="Installer.php" hash="342706712eb2731ea27aeec993fd2d7f"/></dir><dir name="Post"><file name="Attribute.php" hash="e0a283984de84bc16d5f89a893a8dc83"/><file name="AttributeSet.php" hash="c8f66b5a189125a63e834196402b709a"/><file name="Cart.php" hash="26d33fb887417e46d3ba3e46badc04a3"/><file name="Category.php" hash="0645d5eb9bb790f25e29666bc3a703e0"/><file name="Coupon.php" hash="6b8b49327874ce431f6100b6917ba21f"/><file name="Customer.php" hash="d2f018919afdb7d49617e6b9ac7d2760"/><file name="Guest.php" hash="3b7ee9f0e274340713d8c4302d01b361"/><file name="Json.php" hash="86a5f26aa5367d8c4c66d278e4c02546"/><file name="Jsonstring.php" hash="9dfb5761d1a7835bf35040a073fa8fc4"/><file name="Product.php" hash="5ec9cbf29df156da09d17e1b6526f53d"/><file name="Purchase.php" hash="0b924c8e5d8f7018eb335ba9fb6d63dd"/><file name="Rule.php" hash="fa038fa414a176d960ed6470c7b7b4cd"/><file name="Subscriber.php" hash="88c5dbcaae805866595217eedbbf5f34"/></dir><file name="Post.php" hash="df9bf80bee670259f3a54e3308d0dbd3"/><file name="Registry.php" hash="d54afde887b72e79ae36ab11766ec5c9"/><dir name="Store"><file name="Finalize.php" hash="e3636b532bc8f55ba0e618a973e2faa0"/><file name="Register.php" hash="72ae8d75c11dc1c0635c799e284ecb2d"/></dir><dir name="Tasks"><file name="ClearCache.php" hash="17ee105f79d9a71c13ecdd6de2787cdc"/><file name="ClearJobs.php" hash="380740a54aa4d79a89d2c67f06724a31"/><file name="ClearStores.php" hash="33e216186c56bde7e558cd828e90dda0"/><file name="Debug.php" hash="41a522394c2b9375393d81bb3ab206cc"/><file name="DeleteJob.php" hash="be2a2be88290cc3e9bc54c59e22254b5"/><file name="DeliverEventLog.php" hash="18ffe64d10e90819b5e141fc471c0951"/><file name="Forecast.php" hash="caaf18be7fe387a4eba5a77eb0db2c12"/><file name="GetLog.php" hash="d850bba9f90b134f884d8d7a36730a26"/><file name="Harvest.php" hash="f71f97f078a081425c8848ba435d3b16"/><file name="Healthcheck.php" hash="50c68e798295602d733dc2a0f7cdec0a"/><file name="Jobs.php" hash="9df9611445f9ab4a7a6d4b4e79f6b681"/><file name="KillHarvest.php" hash="a757f35956e4565b597522168109071c"/><file name="LaunchFullHarvest.php" hash="e5271dbfa422a90f4c4dda7362cb68f3"/><file name="LaunchPartialHarvest.php" hash="9c5aa7792fe9a3b98f9de9f4b59e3866"/><file name="PackageUpdate.php" hash="cb88473eea4e15760a4fa7c0aba83ddb"/><file name="PostItem.php" hash="54b4bac0b26b8b0e06df1d6da1ea7a91"/><file name="RegisterStores.php" hash="c054ef31b9c28efc5a18ee2ddf31c512"/><file name="ResetRetries.php" hash="bf00fe101b69a78955dc9a6d054e7ba7"/><file name="ResumeHarvest.php" hash="c9ba7b36e2b16dd1d1d947fc83a0ce5e"/><file name="Run.php" hash="c6892d3f812d5085b284d3501211bd5d"/><file name="SetVar.php" hash="93a0afb5e5c32536f430fc3b58b72995"/><file name="UnlockJobs.php" hash="9bf4b725445897ab2842bcb97e344e0c"/><file name="ViewConfig.php" hash="cc60cbc3d2212576301b13b0b286c618"/></dir><file name="Tasks.php" hash="173bdc5c586a0f5d41528cdbd2fff70b"/><dir name="Update"><file name="Abstract.php" hash="7b9a1d36b4486e250587820731b7fb7c"/><file name="Connect.php" hash="3e4366a42e563ec3406a0fcb9a5f77bf"/><file name="Downloader.php" hash="934ef5788acb45ce94e0a32c1d705df1"/><file name="Installer.php" hash="a09ec2e9f7bbf12c117c8950e46072b0"/><file name="Package.php" hash="60ec01b28a2ded244bf6d4a971918bd5"/></dir><dir name="Work"><file name="Cleanup.php" hash="100fef130220e91dc255b5e0f30c37f1"/><file name="Manager.php" hash="9dbdfb717865b7724f4ffd38b3ec866e"/><file name="Report.php" hash="a6482e618e657688ab85221576d1898f"/><file name="Restart.php" hash="d55e811fbba86348890b4047fa5a579f"/><file name="Runner.php" hash="c0ced9ce83e5e51b4ba5f10bb46760af"/><file name="Stop.php" hash="db97407b43396f0adf44a2354a23a0a5"/></dir></dir><dir name="Util"><file name="Cache.php" hash="2c6eb2ee4ee723758fc92989e9220f6e"/><file name="Caller.php" hash="4fcc265eb1a58fed5c3b404ec864514b"/><file name="Categories.php" hash="1292843306c38d9593902616e04320a6"/><dir name="Log"><file name="Rollover.php" hash="6ad4bd93adb7e906c1de5a05a2871ea8"/></dir><file name="Logger.php" hash="59abca8cb07ef933ca8ef2ac824591b5"/><file name="Partition.php" hash="b9296b086003ba58ba12f8b8b0373c50"/><file name="Timer.php" hash="68323a4faeb388627556137f0d7679d9"/></dir><file name="Services.php" hash="fc7893e2bcda2ab6765c760189effb8a"/><dir name="Bmbleb"><dir name="Block"><dir name="Adminhtml"><file name="Auth.php" hash="7dc661bbe9ec85f700a22b319981114d"/><dir name="Bmbleb"><dir name="Login"><file name="Form.php" hash="6d54c1272c7e0a37f3dfe7a23b97a451"/></dir><file name="Login.php" hash="7232e8225f5b21de5675c0d84cb452bd"/></dir><file name="Connected.php" hash="833cef8e351f5efa7a4d104b1c51ca7f"/><file name="Help.php" hash="b280b3292ed778140b751b6426ef56fb"/><dir name="Index"><file name="Messages.php" hash="1e247e31194447de32e54f49dafc3ccc"/><file name="Terms.php" hash="739e5a9ebe204f1f9ac433557c994ae6"/></dir><file name="Index.php" hash="eb7bbef5fa26a53748596e145c3677c4"/><dir name="Jobs"><file name="Grid.php" hash="67255d982ac3d50b38d7a2a525c2b922"/><file name="Status.php" hash="f1b197bf6fdc392bed93ff0734a54ad6"/></dir><file name="Jobs.php" hash="84801c6008802496e168e763a7e6d71f"/><file name="Login.php" hash="2e4d8baead482d404ed40f7d5f3d902c"/><file name="Logout.php" hash="b75af51891b751b9d070e1e784dd6914"/><file name="Logs.php" hash="686e958b553c1e3fcf74841eab30fffb"/><file name="Notifications.php" hash="b9e103d6c255078274c2f3047d944d0e"/><file name="Problems.php" hash="c2fd654e2c4c3a6dd9fbb083d0995e5e"/><file name="Status.php" hash="9b67a20f0ee00608029d24850cefda4d"/><file name="Tabs.php" hash="6f93d5c6bd5208a99637c06118c6c630"/></dir></dir><dir name="Helper"><file name="Account.php" hash="c41f40e6f58abd3b8486e0e92cc079d8"/><file name="Data.php" hash="dca14b137de1e2734a377ca645eeddbe"/><file name="PluginStatus.php" hash="10fccc3c622adf7e865ebdcc11d65932"/></dir><dir name="Model"><file name="Bmbleb.php" hash="700d11c3006f2dcd2e80cd8bbbab15f9"/><file name="Status.php" hash="9409d26c7884be6b8075ba97dbf71f78"/><file name="Sync.php" hash="a800b6064a88f37957392cd967f2b3cb"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="HelpController.php" hash="087e7868dafe9dd2df89a642d405424a"/><file name="IndexController.php" hash="61a95eed027fcb7a7179485288f1b05f"/><file name="JobsController.php" hash="4e912a8fafd2f58235cb2299a83a128b"/><file name="LogsController.php" hash="20a0ce2f584f08480399b7a5ecbd9207"/><file name="ProblemsController.php" hash="9753f4b2d3e7d4873e4bd92b5b2b6aaf"/><file name="SettingsController.php" hash="f75a7a8ef28a296cbd46b04ae9dd5539"/></dir><file name="HelpController.php" hash="2df4608a957f151bf1d01dbde2113680"/><file name="IndexController.php" hash="ea5fa5e2b305f46b222cb2fc2a44f6a5"/><file name="LoginController.php" hash="41a0c13dce233a613f89b614cffa0eb1"/><file name="LogoutController.php" hash="140c9d32f5557aa1169fd1b85cd5cc9f"/></dir><dir name="etc"><file name="config.xml" hash="45f7218274a3eed0086761942a95f27b"/></dir></dir><file name="Boss.php" hash="17ca50432a774d40a024a804997dfa25"/><file name="Cli.php" hash="29fe818908a9d2e0786c6fb75fb91773"/><file name="Log.php" hash="5ab61d7cf21805adb8f826f83b9bf7b1"/><dir name="Combine"><dir name="Helper"><file name="Attributes.php" hash="5fb06e7cc89bb710039a79fb16e2a998"/><file name="Cart.php" hash="07ce5f461ecded3b9b00ed5c30faa266"/><file name="Data.php" hash="bba3915380a71aaacacc306f10396ef1"/><file name="Harvest.php" hash="08fd1b330802731bf82358fd05789173"/><file name="Parser.php" hash="59b987ae48baffd9d656bb78c9a17379"/><file name="Redirect.php" hash="92053fb1b356fdd6b3131be0b6a8017c"/><file name="Store.php" hash="8db94d157d7e497e7612844da43a6c11"/><file name="Trackable.php" hash="a042cb0d176730ec87353b1c5c6d21f7"/></dir><dir name="Model"><file name="Action.php" hash="6375461263bdf7fe26e71235d2449c21"/><file name="Api.php" hash="978590ad36b4d6ad6b3a14742f8bb31c"/><dir name="Cron"><file name="Count.php" hash="57552740b6ffdd9a4e879191a51043b0"/><dir name="Manager"><file name="Status.php" hash="aeb4445bc2d4b1b7e0e19c09172f0483"/></dir><dir name="Queue"><dir name="Batch"><file name="Row.php" hash="25f4ed809a9190f5d41c6c210cd8a537"/></dir><file name="Batch.php" hash="fa905d2781aab5881e881e3b12d25e0c"/></dir><file name="Queue.php" hash="7057aea4c3c103e164ed380b351c5bd1"/><file name="Worker.php" hash="8b5040f1c5c5b3221542e739dc951de7"/></dir><file name="Cron.php" hash="40f2bc9634610f4ed5464de48630ce16"/><dir name="File"><file name="Io.php" hash="6d1f79eaf45897bf0525b0f3f3ac69d2"/><file name="Path.php" hash="24900b670c07fcdc4e54bae585f20002"/></dir><dir name="Harvest"><file name="AttributeSets.php" hash="479dfb30912b74183b396fa4e62323b2"/><file name="Carts.php" hash="0b303b2b7d4458a9a0cbf0653b9d660f"/><file name="Categories.php" hash="fd5f13ad449a320616569f64c82327ff"/><file name="Coupons.php" hash="14112f9063bbf20cea7ff3649f238524"/><file name="CustomerAttributeSets.php" hash="044f426226165ee86b0f822c00ec7712"/><file name="Customers.php" hash="c7850418a39abf09c10fbfafcb96f8e1"/><file name="Guests.php" hash="3685b3220b724e518dc83daad015577f"/><file name="Products.php" hash="da471abcc04837391b5270464164aefd"/><file name="Purchases.php" hash="427d38d1f6579f63730aa6bdf6b7bba4"/><file name="Rules.php" hash="fd1789174225c4ed6ad1e1137fe2aee5"/><file name="Subscribers.php" hash="e499e299612a6e2ce07ee19228cf43c5"/></dir><file name="Harvest.php" hash="8104fb4584411f90706f2fd9c8d8ce9b"/><dir name="Mysql4"><dir name="Action"><file name="Collection.php" hash="830a7db2ea307d594fe945701654d883"/></dir><file name="Action.php" hash="5b18cc8842c83d981575b7b2de496f66"/><dir name="Cron"><file name="Count.php" hash="acbbb7ec28afbbe98101f5d114cb30b3"/><dir name="Queue"><file name="Collection.php" hash="b26806c9e7cefd052bb784f5a6ce814c"/></dir><file name="Queue.php" hash="4add10644bfc94b88ef5042b23c82ae7"/></dir><dir name="Redirect"><file name="Collection.php" hash="3bbe4f8729c603f8d8131154a0a117c1"/><dir name="Order"><file name="Collection.php" hash="88c0cfcce31b0eed8c035dee4e7e86df"/></dir><file name="Order.php" hash="852bea330edac3372ec5c168111301a8"/></dir><file name="Redirect.php" hash="842e4ba35c6b049c8eaa64704588ca76"/><file name="Setup.php" hash="3fdec335980846a4c3adbc6f4e3478eb"/><dir name="Trackable"><file name="Collection.php" hash="8799c5bf630d267b551cf9dba986cbb0"/></dir><file name="Trackable.php" hash="b38749697b641874b42dceae38ab4a30"/></dir><dir name="Parser"><file name="AttributeSet.php" hash="9ae4013d42da5de0e9c8492fb29cd8d6"/><file name="Category.php" hash="0c3c71ff784307b9120d7cf781005069"/><file name="Coupon.php" hash="a66b3d4c8397610863cd74e35cbd5b62"/><file name="Customer.php" hash="99233c3da1eb28f1ec15e20e837d764a"/><file name="CustomerAttributeSet.php" hash="1b51f9300a9ee102872ff9d7f9bbccbc"/><file name="Guest.php" hash="002c900d3722f761e3e3ac63be84014f"/><file name="Product.php" hash="7e0fa4a55ca45fc876e588442cce72eb"/><dir name="Purchase"><file name="Item.php" hash="ca7facc8c81504ea990fdb1feeba64dd"/></dir><file name="Purchase.php" hash="ec3929b9e1a0df0e5816c1558391dcdc"/><dir name="Quote"><file name="Item.php" hash="37cbc74a49a16e67e02f421978e1741f"/></dir><file name="Quote.php" hash="df651461575cb44bd08f7eb8466782eb"/><file name="Rule.php" hash="0a0f70172aeff0e5157f2f1652c3ae09"/><file name="Subscriber.php" hash="57ab5db177d4a37f30865cb127912631"/></dir><file name="Parser.php" hash="3bd033d5d892f0f1673aa81ce51a70e2"/><dir name="Redirect"><file name="Order.php" hash="5ca85ca596ef6e45468c8a12cee72614"/></dir><file name="Redirect.php" hash="05dddaa1e9c17c4c79d70d63b56ed454"/><dir name="Resource"><file name="Abstract.php" hash="5e58e98d53c3d49e454d6b0bd2f308c2"/><dir name="Action"><file name="Collection.php" hash="22e278b8cbc5d18d4faa48c4f224d145"/></dir><file name="Action.php" hash="83b00531db5ec3a51ea7c0fc65a1d083"/><dir name="Cron"><dir name="Count"><file name="Collection.php" hash="c5cb4ab406c1d008c1bc22bb95b3ba28"/></dir><file name="Count.php" hash="6a356b5d92b509945c4567f479b9bfdd"/><dir name="Queue"><file name="Collection.php" hash="2e7ba35d1a14da641a098078e4db7432"/></dir><file name="Queue.php" hash="5b5273a55a562f93f273b92cb9ffcd5e"/></dir><file name="Debug.php" hash="976156dc1ff783a26174bdac79decde2"/><dir name="Redirect"><file name="Collection.php" hash="0f9db83ade4c50c2f7bbe40deae1c065"/><dir name="Order"><file name="Collection.php" hash="162359ed9499b6f976f5c341fd0585c3"/></dir><file name="Order.php" hash="7ea4477380a5215dc0efe561ede359d9"/></dir><file name="Redirect.php" hash="d239af442388bb9fa80db81a7fc43711"/><file name="Setup.php" hash="0405c44c124f19619ccc9f429d781d44"/><dir name="Trackable"><file name="Collection.php" hash="6f060c3537b49710302e38e881885a69"/></dir><file name="Trackable.php" hash="764b0d21c492dd69b9f85ae3c647666e"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Harvestertype.php" hash="4d9f7ffa7f49ecaa2e99df86f62e646c"/><file name="LogFormat.php" hash="828680dafe5a7042221900cb6d9dfa17"/><file name="LogLevel.php" hash="b86c793ca04205f045efd9ea42d02a10"/><file name="Stability.php" hash="830e5bc4e8ce9657221224dbaf99cee6"/><file name="UrlType.php" hash="28f9a5bc024afe5526685d429a751ad8"/></dir></dir></dir><file name="Trackable.php" hash="0af2cd1e6e1eb948157918df2570bf10"/></dir><dir name="etc"><file name="adminhtml.xml" hash="794fc8a1d67ac3e6b5d71c707a0c7cad"/><file name="config.xml" hash="0702ad1c9aa1c4248294a484a86a226a"/><file name="system.xml" hash="25135db9871a1975d67c9a16848656ee"/></dir><dir name="sql"><dir name="combine_setup"><file name="mysql4-install-1.0.0.70.php" hash="425be4a54012cd64753ee1a216255d67"/><file name="mysql4-upgrade-1.0.0.70-1.0.0.84.php" hash="e51deaff9e65f43483ab00573605329d"/><file name="mysql4-upgrade-1.0.0.84-1.0.0.88.php" hash="89bd8a585c0d351aae6838ace48f608d"/><file name="mysql4-upgrade-1.0.0.88-1.2.0.0.php" hash="4779a5072d23ebdb27177de0dfd19f5d"/><file name="mysql4-upgrade-1.2.0.0-1.2.0.1.php" hash="01a7ef2466b9f676884db4d7a7c562a9"/><file name="mysql4-upgrade-1.2.0.1-1.2.1.0.php" hash="dbba441ac757db26289f21443a948f6b"/><file name="mysql4-upgrade-1.3.9.9-1.4.0.0.php" hash="5b5e0602bdcd48263bdf4e25b17d95b5"/></dir></dir></dir><dir name="BoneCollector"><dir name="Model"><file name="HarvestAbstract.php" hash="fecaefad7d4fc279e3a54b4c8cac54ae"/><dir name="HarvestAttribute"><file name="Observer.php" hash="26d016ab4fae05872aa46b6abdc3e562"/></dir><dir name="HarvestCart"><file name="Observer.php" hash="7364d7b70e2b3fb65c7effac8cc2ade6"/></dir><dir name="HarvestCategory"><file name="Observer.php" hash="7ddb0b58b301863c1e46dd2db3628db8"/></dir><dir name="HarvestCustomer"><file name="Observer.php" hash="a20e21f1033dc35025ab9b402d6574bc"/></dir><dir name="HarvestProduct"><file name="Observer.php" hash="60af24cee3ad4105822ff4bfb73a5b62"/></dir><dir name="HarvestPurchase"><file name="Observer.php" hash="45b457d55548283c29c0d6105db52df7"/></dir><dir name="HarvestRule"><file name="Observer.php" hash="49f369f960101ec66458f8dbe7972e40"/></dir><dir name="HarvestSubscriber"><file name="Observer.php" hash="5b64106296e9d0045610c69ed0c9be4b"/></dir></dir><dir name="etc"><file name="config.xml" hash="908a3b69f97bf5578f661de5b8341a80"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Springbot.xml" hash="69a4e2c056502cd8539b4f66a2c8b1bc"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="bmbleb.xml" hash="aa390e236576f79375b407262961043e"/></dir><dir name="template"><dir name="bmbleb"><file name="auth.phtml" hash="bf509b53c49cd69ec3ea60e3effe69c3"/><file name="dashboard_loggedout.phtml" hash="19281143b19a544d4e3072dc754ada2d"/><dir name="help"><file name="index.phtml" hash="e9d3f11c623c735c3e699e406ff9e0e7"/></dir><dir name="index"><file name="messages.phtml" hash="fcbbb47d2cc30c493ed2316a8b888f5d"/><file name="terms.phtml" hash="dfff1182d2fe7d8eee69b9b302c4cbc7"/></dir><file name="index.phtml" hash="a5132e593910b8b59a3467b555d4ed87"/><dir name="jobs"><file name="status.phtml" hash="77f0b0ae7c3c6c42031675cfc959e270"/></dir><file name="jobs.phtml" hash="961ac83f56bf8703dbc433894da4933e"/><file name="login.phtml" hash="0a1a20dfaffe8646bb56323ab811d46a"/><file name="logout.phtml" hash="09b92790c5e124a01086d6929ed7e8de"/><dir name="logs"><file name="index.phtml" hash="17e773a761a24e292b09fe7da1bd7662"/></dir><file name="notifications.phtml" hash="45f8767a090a4f7a7e177151bbc43f4f"/><dir name="problems"><file name="index.phtml" hash="2027d07eed8848a4ed8e801d67072796"/></dir><file name="status.phtml" hash="1acc630a6549b234bc1fa5923e04b8ce"/><file name="tabs.phtml" hash="778b686fb073a8aeb973db3bfb0302aa"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="shadow.xml" hash="3f29bebbcf7e42c57dcac9150c6b7d68"/></dir><dir name="template"><dir name="shadow"><file name="async.phtml" hash="af147801ed74d45bb0580b0bb69ce0fd"/><file name="conversion.phtml" hash="3d46a8930d9658a24a77ff34d52e40eb"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="bmbleb"><file name="bmbleb.css" hash="d929b5f42085c25b86101379f286f55f"/><dir name="images"><file name="arrows_up-down-large.png" hash="72c27995e1ab1d182891dad0a4d1dae2"/><file name="bmb-ctl.png" hash="de59a694a82b8699560df5146b2e315f"/><file name="check.png" hash="126f33ed483549e79a16186b7499c190"/><file name="grn-bg.png" hash="f681a524e2b4561dbe94152a2d24d60b"/><file name="h3-bg.png" hash="b93df0b0bdba8e8f6e0a07cc31fcc180"/><file name="icon-alert.png" hash="ac2e70efdcebc3813222d0d3ee62a6d9"/><file name="icon-bmbleb.png" hash="fb5574b5e63ee33b84eee26b3d8ef8e3"/><file name="icon-insights.png" hash="725fd29fe1b705e358c9080408693d3d"/><file name="icon-status.png" hash="bd13429f23166a6d431739010ea1b2cd"/><file name="left-ico1.png" hash="7d188f5e6021569750756f58067f0a3b"/><file name="left-ico2.png" hash="d2f6379a73290a8ffa4cb3e19a809d25"/><file name="left-ico3.png" hash="73bc75f7a746e54a75f14eda7a28a6b9"/><file name="left-ico4.png" hash="1da2c26187fed26b6c61599682b2dc4b"/><file name="left-ico5.png" hash="ada61cb32805f2cb8e8dace46361613e"/><file name="left-ico6.png" hash="1e62822267f72589ffa0771352a002da"/><file name="left-ico7.png" hash="16118412d581f0c83ce45c44f62f25a1"/><file name="left-ico8.png" hash="c7de2fe523c892b432b575648cc05631"/><file name="left-ico_demographics.png" hash="3fe23a2dea68f6c65114f248a8bdaa5e"/><file name="login-icn-b.png" hash="64e72070f595e215ece79736ac77ee2f"/><file name="login-icn.png" hash="6142cc2fc8ee2d1c40bf3c8f9ac1fa85"/><file name="logo.png" hash="8fb783f7d68fca3914123f56b8c066a4"/><file name="orng-bg.png" hash="074a6912ca2a139df537e3d15b6bc9b2"/><file name="plugin_dashboard_syncing.jpg" hash="8511648541f6f1b96ff1c53dda3a439b"/><file name="register.png" hash="f73fe51cf7df27ab11089385fa50714e"/><file name="registration-bg-25.png" hash="9d2cf77619cc8fce3ae4d44b0aae30c1"/><file name="registration-bg-50.png" hash="99942fdc8c3f88b0d4b09f87c9e39045"/><file name="registration-bg.png" hash="96365b39495e56ffe491dd9930fe221d"/><file name="spinner.gif" hash="add667817f25bce331a213ab3cc9621f"/><file name="springbot-ctl.png" hash="de59a694a82b8699560df5146b2e315f"/><file name="submit-btn-bg.png" hash="d98aa287b7b73dad9f780b22cb53fbdb"/><file name="sync_icon.png" hash="cb12f2e8943c8e324e3456375f953c86"/><file name="white-check.png" hash="126f33ed483549e79a16186b7499c190"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="shell"><file name="springbot.php" hash="40a39e4b3400ba8724621898c3d562a2"/></dir></target></contents>
59
  <compatible/>
60
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
61
  </package>
skin/adminhtml/default/default/bmbleb/bmbleb.css CHANGED
@@ -3,6 +3,10 @@
3
  clear: both;
4
  }
5
 
 
 
 
 
6
  #bmbleb-sync-now {
7
  height:170px;
8
  width:170px;
3
  clear: both;
4
  }
5
 
6
+ .bmbleb-adminhtml-jobs-index #id {
7
+ float:left;
8
+ }
9
+
10
  #bmbleb-sync-now {
11
  height:170px;
12
  width:170px;