Doofinder_Feed - Version 1.8.9

Version Notes

Better error handling. Better feed status.

Download this release

Release Info

Developer Carlos Escribano Rey
Extension Doofinder_Feed
Version 1.8.9
Comparing to
See all releases


Code changes from version 1.8.8 to 1.8.9

Files changed (52) hide show
  1. app/code/community/Doofinder/Feed/Block/Adminhtml/Log/View.php +1 -1
  2. app/code/community/Doofinder/Feed/Block/Adminhtml/Map/Additional.php +1 -1
  3. app/code/community/Doofinder/Feed/Block/Integration.php +1 -1
  4. app/code/community/Doofinder/Feed/Block/Settings/Buttons/Generate.php +1 -1
  5. app/code/community/Doofinder/Feed/Block/Settings/Buttons/ViewLog.php +1 -1
  6. app/code/community/Doofinder/Feed/Block/Settings/Locks.php +1 -1
  7. app/code/community/Doofinder/Feed/Block/Settings/Panel/AtomicUpdates.php +50 -0
  8. app/code/community/Doofinder/Feed/Block/Settings/Panel/Cron.php +0 -52
  9. app/code/community/Doofinder/Feed/Block/Settings/Panel/Crondescription.php +1 -1
  10. app/code/community/Doofinder/Feed/Block/Settings/Panel/Datetime.php +1 -1
  11. app/code/community/Doofinder/Feed/Block/Settings/Panel/Description.php +1 -1
  12. app/code/community/Doofinder/Feed/Block/Settings/Panel/DynamicFeedUrl.php +44 -0
  13. app/code/community/Doofinder/Feed/Block/Settings/Panel/File.php +71 -18
  14. app/code/community/Doofinder/Feed/Block/Settings/Panel/Layerdescription.php +1 -1
  15. app/code/community/Doofinder/Feed/Block/Settings/Panel/Message.php +1 -1
  16. app/code/community/Doofinder/Feed/Helper/Data.php +2 -2
  17. app/code/community/Doofinder/Feed/Helper/Log.php +2 -2
  18. app/code/community/Doofinder/Feed/Helper/Search.php +16 -6
  19. app/code/community/Doofinder/Feed/Helper/Tax.php +1 -1
  20. app/code/community/Doofinder/Feed/Model/Adminhtml/System/Config/Backend/Cron.php +1 -1
  21. app/code/community/Doofinder/Feed/Model/Config.php +2 -2
  22. app/code/community/Doofinder/Feed/Model/Cron.php +1 -1
  23. app/code/community/Doofinder/Feed/Model/Generator.php +2 -2
  24. app/code/community/Doofinder/Feed/Model/Log.php +1 -1
  25. app/code/community/Doofinder/Feed/Model/Map/Product/Abstract.php +2 -2
  26. app/code/community/Doofinder/Feed/Model/Map/Product/Associated.php +2 -2
  27. app/code/community/Doofinder/Feed/Model/Map/Product/Bundle.php +2 -2
  28. app/code/community/Doofinder/Feed/Model/Map/Product/Configurable.php +2 -2
  29. app/code/community/Doofinder/Feed/Model/Map/Product/Downloadable.php +2 -2
  30. app/code/community/Doofinder/Feed/Model/Map/Product/Grouped.php +2 -2
  31. app/code/community/Doofinder/Feed/Model/Map/Product/Simple.php +2 -2
  32. app/code/community/Doofinder/Feed/Model/Map/Product/Virtual.php +2 -2
  33. app/code/community/Doofinder/Feed/Model/Mysql4/Cron.php +1 -1
  34. app/code/community/Doofinder/Feed/Model/Mysql4/Cron/Collection.php +1 -1
  35. app/code/community/Doofinder/Feed/Model/Mysql4/Log.php +1 -1
  36. app/code/community/Doofinder/Feed/Model/Mysql4/Log/Collection.php +1 -1
  37. app/code/community/Doofinder/Feed/Model/Observers/Feed.php +85 -69
  38. app/code/community/Doofinder/Feed/Model/Observers/Logs.php +1 -1
  39. app/code/community/Doofinder/Feed/Model/Observers/Schedule.php +1 -1
  40. app/code/community/Doofinder/Feed/Model/Resource/Mysql4/Setup.php +1 -1
  41. app/code/community/Doofinder/Feed/Model/System/Config/Backend/Map/Additional.php +1 -1
  42. app/code/community/Doofinder/Feed/Model/System/Config/Reset.php +1 -1
  43. app/code/community/Doofinder/Feed/Model/System/Config/Source/Feed/Pricetaxmode.php +1 -1
  44. app/code/community/Doofinder/Feed/Model/System/Config/Source/Product/Attributes.php +1 -1
  45. app/code/community/Doofinder/Feed/Model/Tools.php +2 -2
  46. app/code/community/Doofinder/Feed/controllers/DoofinderFeedFeedController.php +1 -1
  47. app/code/community/Doofinder/Feed/controllers/DoofinderFeedLogController.php +1 -1
  48. app/code/community/Doofinder/Feed/controllers/FeedController.php +2 -2
  49. app/code/community/Doofinder/Feed/controllers/IndexController.php +2 -2
  50. app/code/community/Doofinder/Feed/etc/config.xml +1 -1
  51. app/code/community/Doofinder/Feed/etc/system.xml +15 -7
  52. package.xml +5 -5
app/code/community/Doofinder/Feed/Block/Adminhtml/Log/View.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Adminhtml_Log_View extends Mage_Adminhtml_Block_Widget_Grid
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Adminhtml_Log_View extends Mage_Adminhtml_Block_Widget_Grid
app/code/community/Doofinder/Feed/Block/Adminhtml/Map/Additional.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Adminhtml_Map_Additional extends Mage_Adminhtml_Block_System_Config_Form_Field
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Adminhtml_Map_Additional extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/Doofinder/Feed/Block/Integration.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Integration extends Mage_Core_Block_Abstract
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Integration extends Mage_Core_Block_Abstract
app/code/community/Doofinder/Feed/Block/Settings/Buttons/Generate.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Buttons_Generate extends Mage_Adminhtml_Block_System_Config_Form_Field
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Buttons_Generate extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/Doofinder/Feed/Block/Settings/Buttons/ViewLog.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Buttons_ViewLog extends Mage_Adminhtml_Block_System_Config_Form_Field
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Buttons_ViewLog extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/Doofinder/Feed/Block/Settings/Locks.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Locks extends Mage_Adminhtml_Block_System_Config_Form_Field
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Locks extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/Doofinder/Feed/Block/Settings/Panel/AtomicUpdates.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of Doofinder_Feed.
4
+ */
5
+
6
+ /**
7
+ * @category blocks
8
+ * @package Doofinder_Feed
9
+ * @version 1.8.9
10
+ */
11
+
12
+ class Doofinder_Feed_Block_Settings_Panel_AtomicUpdates extends Mage_Adminhtml_Block_System_Config_Form_Field
13
+ {
14
+ protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
15
+ {
16
+ $helper = Mage::helper('doofinder_feed');
17
+
18
+ $this->setElement($element);
19
+ $name = $element->getName();
20
+ $element->setScopeLabel('');
21
+
22
+ $messages = array();
23
+ foreach (Mage::app()->getStores() as $store) {
24
+ if ($store->getIsActive()) {
25
+ $engineEnabled = Mage::getStoreConfig('doofinder_search/internal_settings/enable', $store->getCode());
26
+ $atomicUpdatesEnabled = Mage::getStoreConfig('doofinder_cron/feed_settings/atomic_updates_enabled', $store->getCode());
27
+
28
+ if (!$engineEnabled || !$atomicUpdatesEnabled) {
29
+ $message = $helper->__('Atomic updates are <strong>disabled</strong>.');
30
+ } else {
31
+ $message = $helper->__('Atomic updates are <strong>enabled</strong>. Your products will be automatically indexed when they are created, updated or deleted.');
32
+ }
33
+
34
+ $messages[$store->getName()] = $message;
35
+ }
36
+ }
37
+
38
+ if (count(array_unique($messages)) == 1) {
39
+ return reset($messages);
40
+ }
41
+
42
+ $html = '<ul>';
43
+ foreach ($messages as $name => $message) {
44
+ $html .= '<li><strong>' . $name . ':</strong><p>' . $message . '</p></li>';
45
+ }
46
+ $html .= '</ul>';
47
+
48
+ return $html;
49
+ }
50
+ }
app/code/community/Doofinder/Feed/Block/Settings/Panel/Cron.php DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
- class Doofinder_Feed_Block_Settings_Panel_Cron extends Mage_Adminhtml_Block_System_Config_Form_Field
3
- {
4
- // 12 Hours in seconds
5
- const ALLOWED_TIME = 43200;
6
-
7
- protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
8
- {
9
- $lastSchedule = Mage::getModel('cron/schedule')->getCollection()
10
- ->setOrder('finished_at', 'desc')
11
- ->getFirstItem();
12
-
13
- $message = '';
14
- if ($lastSchedule && count($lastSchedule->getData()) > 0) {
15
- $scheduleTime = strtotime($lastSchedule->getFinishedAt());
16
- $currentTime = time();
17
-
18
- // Difference in seconds
19
- $dif = ($currentTime - $scheduleTime);
20
-
21
- // If difference is bigger than allowed, display message
22
- if ($dif > self::ALLOWED_TIME) {
23
-
24
- $message = sprintf('Cron was run for the last time at %s. Taking into account the settings of the step delay option, there might be problems with the cron\'s configuration.', $lastSchedule->getFinishedAt());
25
- Mage::helper('doofinder_feed')->__($message);
26
- }
27
- } else {
28
- $message = Mage::helper('doofinder_feed')->__('There are no registered cron tasks. Please, check your system\'s crontab configuration.');
29
- }
30
-
31
- return '<p class="error">' . $message . '</p>';
32
- }
33
-
34
- public function render(Varien_Data_Form_Element_Abstract $element)
35
- {
36
- $html = '<td class="label"></td>' .
37
- '<td class="value" colspan="3">' . $this->_getElementHtml($element) . '</td>';
38
- return $this->_decorateRowHtml($element, $html);
39
- }
40
-
41
- /**
42
- * Decorate field row html
43
- *
44
- * @param Varien_Data_Form_Element_Abstract $element
45
- * @param string $html
46
- * @return string
47
- */
48
- protected function _decorateRowHtml($element, $html)
49
- {
50
- return '<tr id="row_' . $element->getHtmlId() . '">' . $html . '</tr>';
51
- }
52
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Doofinder/Feed/Block/Settings/Panel/Crondescription.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_CronDescription extends Doofinder_Feed_Block_Settings_Panel_Description
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_CronDescription extends Doofinder_Feed_Block_Settings_Panel_Description
app/code/community/Doofinder/Feed/Block/Settings/Panel/Datetime.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_Datetime extends Mage_Adminhtml_Block_System_Config_Form_Field
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_Datetime extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/Doofinder/Feed/Block/Settings/Panel/Description.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_Description extends Mage_Adminhtml_Block_System_Config_Form_Field
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_Description extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/Doofinder/Feed/Block/Settings/Panel/DynamicFeedUrl.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of Doofinder_Feed.
4
+ */
5
+
6
+ /**
7
+ * @category blocks
8
+ * @package Doofinder_Feed
9
+ * @version 1.8.9
10
+ */
11
+
12
+ class Doofinder_Feed_Block_Settings_Panel_DynamicFeedUrl extends Mage_Adminhtml_Block_System_Config_Form_Field
13
+ {
14
+ protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
15
+ {
16
+ $helper = Mage::helper('doofinder_feed');
17
+
18
+ $this->setElement($element);
19
+ $name = $element->getName();
20
+ $element->setScopeLabel('');
21
+
22
+ $html = '<ul>';
23
+ foreach (Mage::app()->getStores() as $store) {
24
+ if ($store->getIsActive()) {
25
+ $password = $store->getConfig('doofinder_cron/feed_settings/password');
26
+ $params = array('language' => $store->getCode());
27
+
28
+ if ($password) {
29
+ $params['password'] = $password;
30
+ }
31
+
32
+ $url = Mage::getUrl('doofinder/feed', array('_store' => $store->getCode(), '_nosid' => true) + $params);
33
+ $anchor = '<a href="' . $url . '">' . $url . '</a>';
34
+ $html .= '<li><strong>' . $store->getName() . ':</strong><p>' . $anchor . '</p></li>';
35
+ }
36
+ }
37
+ $html .= '</ul>';
38
+ $html .= '<p>';
39
+ $html .= $helper->__('If cron feed doesn\'t work for you, use these URLs to dynamically index your content from Doofinder. Contact support if you need help.');
40
+ $html .= '</p>';
41
+
42
+ return $html;
43
+ }
44
+ }
app/code/community/Doofinder/Feed/Block/Settings/Panel/File.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_File extends Mage_Adminhtml_Block_System_Config_Form_Field
@@ -17,8 +17,40 @@ class Doofinder_Feed_Block_Settings_Panel_File extends Mage_Adminhtml_Block_Syst
17
  */
18
  const ERROR_PREFIX = "#error#";
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
21
  {
 
 
22
  $this->setElement($element);
23
  $name = $element->getName();
24
  $element->setScopeLabel('');
@@ -36,32 +68,53 @@ class Doofinder_Feed_Block_Settings_Panel_File extends Mage_Adminhtml_Block_Syst
36
  }
37
  }
38
 
39
- $files = array();
 
40
 
41
  foreach ($stores as $store) {
42
- $process = Mage::getModel('doofinder_feed/cron')->load($store->getCode(), 'store_code');
43
- $lastGeneratedName = $process->getLastFeedName();
44
-
45
- $fileUrl = Mage::getBaseUrl('media').'doofinder'.DS.$lastGeneratedName;
46
- $fileDir = Mage::getBaseDir('media').DS.'doofinder'.DS.$lastGeneratedName;
47
- if ($lastGeneratedName && file_exists($fileDir)) {
48
- $files[$store->getCode()] = "<a href='{$fileUrl}' target='_blank'>" . (count($stores) > 1 ? $fileUrl : "Get {$lastGeneratedName}") . "</a>";
49
  } else {
50
- $files[$store->getCode()] = "Currently there is no file to preview.";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
 
 
52
  }
53
 
54
  $html = '';
55
 
56
- if (count($files) > 1) {
57
- $html .= '<ul>';
58
- foreach ($files as $code => $file) {
59
- $html .= '<li><b>' . $stores[$code]->getName() . ':</b><div>' . $file . '</div></li>';
60
- }
61
- $html .= '</ul>';
62
- } else {
63
- $html .= reset($files);
 
 
 
64
  }
 
65
 
66
  return $html;
67
  }
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_File extends Mage_Adminhtml_Block_System_Config_Form_Field
17
  */
18
  const ERROR_PREFIX = "#error#";
19
 
20
+ // 12 Hours in seconds
21
+ const ALLOWED_TIME = 43200;
22
+
23
+ protected function getCronMessage()
24
+ {
25
+ $lastSchedule = Mage::getModel('cron/schedule')->getCollection()
26
+ ->setOrder('finished_at', 'desc')
27
+ ->getFirstItem();
28
+
29
+ $message = '';
30
+ if ($lastSchedule && count($lastSchedule->getData()) > 0) {
31
+ $scheduleTime = strtotime($lastSchedule->getFinishedAt());
32
+ $currentTime = time();
33
+
34
+ // Difference in seconds
35
+ $dif = ($currentTime - $scheduleTime);
36
+
37
+ // If difference is bigger than allowed, display message
38
+ if ($dif > self::ALLOWED_TIME) {
39
+
40
+ $message = sprintf('Cron was run for the last time at %s. Taking into account the settings of the step delay option, there might be problems with the cron\'s configuration.', $lastSchedule->getFinishedAt());
41
+ Mage::helper('doofinder_feed')->__($message);
42
+ }
43
+ } else {
44
+ $message = Mage::helper('doofinder_feed')->__('There are no registered cron tasks. Please, check your system\'s crontab configuration.');
45
+ }
46
+
47
+ return '<p class="error">' . $message . '</p>';
48
+ }
49
+
50
  protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
51
  {
52
+ $helper = Mage::helper('doofinder_feed');
53
+
54
  $this->setElement($element);
55
  $name = $element->getName();
56
  $element->setScopeLabel('');
68
  }
69
  }
70
 
71
+ $enabled = false;
72
+ $messages = array();
73
 
74
  foreach ($stores as $store) {
75
+ if (!$store->getConfig('doofinder_cron/schedule_settings/enabled')) {
76
+ $message = $helper->__('Cron-based feed generation is <strong>disabled</strong>.');
 
 
 
 
 
77
  } else {
78
+ $enabled = true;
79
+ $process = Mage::getModel('doofinder_feed/cron')->load($store->getCode(), 'store_code');
80
+ $lastGeneratedName = $process->getLastFeedName();
81
+
82
+ $fileUrl = Mage::getBaseUrl('media').'doofinder'.DS.$lastGeneratedName;
83
+ $fileDir = Mage::getBaseDir('media').DS.'doofinder'.DS.$lastGeneratedName;
84
+
85
+ if ($lastGeneratedName && file_exists($fileDir)) {
86
+ $message = '<p><a href=' . $fileUrl . ' target="_blank">';
87
+ $message .= count($stores) > 1 ? $fileUrl : $helper->__('Get %s', $lastGeneratedName);
88
+ $message .= '</a></p>';
89
+ } else {
90
+ $message = '<p>' . $helper->__('Currently there is no file to preview.') . '</p>';
91
+ }
92
+
93
+ $time = explode(',', Mage::getStoreConfig('doofinder_cron/schedule_settings/time', $store->getCode()));
94
+ $frequency = Mage::getStoreConfig('doofinder_cron/schedule_settings/frequency', $store->getCode());
95
+ $message .= '<p>';
96
+ $message .= $helper->__('Cron-based feed generation is <strong>enabled</strong>. Feed generation is being scheduled at %s:%s.', $time[0], $time[1]);
97
+ $message .= '</p>';
98
  }
99
+
100
+ $messages[$store->getName()] = $message;
101
  }
102
 
103
  $html = '';
104
 
105
+ if ($enabled) {
106
+ $html .= $this->getCronMessage();
107
+ }
108
+
109
+ if (count(array_unique($messages)) == 1) {
110
+ return $html . reset($messages);
111
+ }
112
+
113
+ $html .= '<ul>';
114
+ foreach ($messages as $name => $message) {
115
+ $html .= '<li><strong>' . $name . ':</strong><p>' . $message . '</p></li>';
116
  }
117
+ $html .= '</ul>';
118
 
119
  return $html;
120
  }
app/code/community/Doofinder/Feed/Block/Settings/Panel/Layerdescription.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_LayerDescription extends Doofinder_Feed_Block_Settings_Panel_Description
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_LayerDescription extends Doofinder_Feed_Block_Settings_Panel_Description
app/code/community/Doofinder/Feed/Block/Settings/Panel/Message.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_Message extends Mage_Adminhtml_Block_System_Config_Form_Field
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_Message extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/Doofinder/Feed/Helper/Data.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Helpers
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Data helper for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Helper_Data extends Mage_Core_Helper_Abstract
6
  /**
7
  * @category Helpers
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Data helper for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Helper_Data extends Mage_Core_Helper_Abstract
app/code/community/Doofinder/Feed/Helper/Log.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Helpers
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Log helper for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Helper_Log extends Mage_Core_Helper_Abstract
6
  /**
7
  * @category Helpers
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Log helper for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Helper_Log extends Mage_Core_Helper_Abstract
app/code/community/Doofinder/Feed/Helper/Search.php CHANGED
@@ -62,13 +62,19 @@ class Doofinder_Feed_Helper_Search extends Mage_Core_Helper_Abstract
62
 
63
  $this->loadDoofinderLibrary();
64
  $client = new \Doofinder\Api\Search\Client($hashId, $apiKey);
65
- $results = $client->query($queryText, null, ['rpp' => $limit, 'transformer' => 'onlyid', 'filter' => []]);
66
 
67
- // Store objects
68
- $this->_lastSearch = $client;
69
- $this->_lastResults = $results;
 
 
 
 
 
 
 
70
 
71
- return $this->retrieveIds($results);
72
  }
73
 
74
  /**
@@ -94,6 +100,10 @@ class Doofinder_Feed_Helper_Search extends Mage_Core_Helper_Abstract
94
  */
95
  public function getAllResults()
96
  {
 
 
 
 
97
  $limit = Mage::getStoreConfig('doofinder_search/internal_settings/total_limit', Mage::app()->getStore());
98
  $ids = $this->retrieveIds($this->_lastResults);
99
 
@@ -111,7 +121,7 @@ class Doofinder_Feed_Helper_Search extends Mage_Core_Helper_Abstract
111
  */
112
  public function getResultsCount()
113
  {
114
- return $this->_lastResults->getProperty('total');
115
  }
116
 
117
  /**
62
 
63
  $this->loadDoofinderLibrary();
64
  $client = new \Doofinder\Api\Search\Client($hashId, $apiKey);
 
65
 
66
+ try {
67
+ $results = $client->query($queryText, null, ['rpp' => $limit, 'transformer' => 'onlyid', 'filter' => []]);
68
+ } catch (\Doofinder\Api\Search\Error $e) {
69
+ $results = null;
70
+ Mage::logException($e);
71
+ } finally {
72
+ // Store objects
73
+ $this->_lastSearch = $client;
74
+ $this->_lastResults = $results;
75
+ }
76
 
77
+ return $results ? $this->retrieveIds($results) : array();
78
  }
79
 
80
  /**
100
  */
101
  public function getAllResults()
102
  {
103
+ if (!$this->_lastResults) {
104
+ return array();
105
+ }
106
+
107
  $limit = Mage::getStoreConfig('doofinder_search/internal_settings/total_limit', Mage::app()->getStore());
108
  $ids = $this->retrieveIds($this->_lastResults);
109
 
121
  */
122
  public function getResultsCount()
123
  {
124
+ return $this->_lastResults ? $this->_lastResults->getProperty('total') : 0;
125
  }
126
 
127
  /**
app/code/community/Doofinder/Feed/Helper/Tax.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Helpers
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Helper_Tax extends Mage_Tax_Helper_Data
6
  /**
7
  * @category Helpers
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Helper_Tax extends Mage_Tax_Helper_Data
app/code/community/Doofinder/Feed/Model/Adminhtml/System/Config/Backend/Cron.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Adminhtml_System_Config_Backend_Cron extends Mage_Core_Model_Config_Data {
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Adminhtml_System_Config_Backend_Cron extends Mage_Core_Model_Config_Data {
app/code/community/Doofinder/Feed/Model/Config.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Config model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Config extends Mage_Core_Model_Config_Data
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Config model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Config extends Mage_Core_Model_Config_Data
app/code/community/Doofinder/Feed/Model/Cron.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Cron extends Mage_Core_Model_Abstract {
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Cron extends Mage_Core_Model_Abstract {
app/code/community/Doofinder/Feed/Model/Generator.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Generator model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  if (!defined('DS'))
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Generator model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  if (!defined('DS'))
app/code/community/Doofinder/Feed/Model/Log.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Log extends Mage_Core_Model_Abstract {
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Log extends Mage_Core_Model_Abstract {
app/code/community/Doofinder/Feed/Model/Map/Product/Abstract.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Abstract Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Abstract extends Varien_Object
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Abstract Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Abstract extends Varien_Object
app/code/community/Doofinder/Feed/Model/Map/Product/Associated.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Associated Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Associated
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Associated Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Associated
app/code/community/Doofinder/Feed/Model/Map/Product/Bundle.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Bundle Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Bundle
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Bundle Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Bundle
app/code/community/Doofinder/Feed/Model/Map/Product/Configurable.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Configurable Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Configurable
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Configurable Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Configurable
app/code/community/Doofinder/Feed/Model/Map/Product/Downloadable.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Downloadable Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Downloadable
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Downloadable Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Downloadable
app/code/community/Doofinder/Feed/Model/Map/Product/Grouped.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Grouped Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Grouped
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Grouped Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Grouped
app/code/community/Doofinder/Feed/Model/Map/Product/Simple.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Simple Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Simple
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Simple Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Simple
app/code/community/Doofinder/Feed/Model/Map/Product/Virtual.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Virtual Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Virtual
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Virtual Product Map Model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Virtual
app/code/community/Doofinder/Feed/Model/Mysql4/Cron.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Cron extends Mage_Core_Model_Mysql4_Abstract {
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Cron extends Mage_Core_Model_Mysql4_Abstract {
app/code/community/Doofinder/Feed/Model/Mysql4/Cron/Collection.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Cron_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Cron_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
app/code/community/Doofinder/Feed/Model/Mysql4/Log.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Log extends Mage_Core_Model_Mysql4_Abstract {
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Log extends Mage_Core_Model_Mysql4_Abstract {
app/code/community/Doofinder/Feed/Model/Mysql4/Log/Collection.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Log_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Mysql4_Log_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
app/code/community/Doofinder/Feed/Model/Observers/Feed.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Feed
@@ -31,12 +31,89 @@ class Doofinder_Feed_Model_Observers_Feed
31
  $this->_log = Mage::helper('doofinder_feed/log');
32
  }
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  public function updateSearchEngineIndexes($observer) {
35
 
36
  $helper = Mage::helper('doofinder_feed');
37
 
38
  $product = $observer->getProduct();
39
- $products[] = $product->getId();
40
 
41
  $storeCodes = array();
42
  $store = Mage::getModel('core/store')->load($product->getStoreId());
@@ -67,74 +144,13 @@ class Doofinder_Feed_Model_Observers_Feed
67
 
68
  // Loop over all stores and update relevant search engines
69
  foreach ($storeCodes as $storeCode) {
70
- // Set store code
71
- $this->storeCode = $storeCode;
72
-
73
- // Get store config
74
- $this->config = $helper->getStoreConfig($this->storeCode);
75
-
76
-
77
-
78
- // Set options
79
- $options = array(
80
- 'close_empty' => true, // close xml even if there are no items
81
- 'products' => $products, // list of products in feed
82
- 'store_code' => $this->config['storeCode'],
83
- 'grouped' => $this->_getBoolean($this->config['grouped']),
84
- 'display_price' => $this->_getBoolean($this->config['display_price']),
85
- 'minimal_price' => $this->_getBoolean('minimal_price', false),
86
- 'image_size' => $this->config['image_size'],
87
- 'customer_group_id' => 0,
88
- );
89
-
90
- $generator = Mage::getModel('doofinder_feed/generator', $options);
91
-
92
- $this->_log->_debugEnabled && $this->_log->debug(sprintf('Starting atomic update for product %d in store %s', $product->getId(), $storeCode));
93
-
94
- $xmlData = $generator->run();
95
-
96
- if ($xmlData) {
97
- $rss = simplexml_load_string($xmlData);
98
-
99
- $hashId = Mage::getStoreConfig('doofinder_search/internal_settings/hash_id', $this->storeCode);
100
- if ($hashId === '') {
101
-
102
- $warning = sprintf('HashID is not set for the \'%s\' store view, therefore, search indexes haven\'t been
103
- updated for
104
- this store view. To fix this problem set HashID for a given stor view or disable Internal Search in Doofinder
105
- Search Configuration.', $this->storeCode);
106
- $this->_log->debug($warning);
107
- Mage::getSingleton('adminhtml/session')->addWarning($warning);
108
- continue;
109
- }
110
-
111
- $searchEngine = Mage::helper('doofinder_feed/search')->getDoofinderSearchEngine($this->storeCode);
112
-
113
- // Check if search engine exists and skip foreach iteration if not.
114
- if (!$searchEngine) {
115
- $error = sprintf('Search engine with HashID %s doesn\'t exists. Please, check your configuration.', $hashId);
116
- $this->_log->debug($error);
117
- Mage::getSingleton('adminhtml/session')->addError($error);
118
- continue;
119
- }
120
-
121
- // Declare array of products to update
122
- $products = array();
123
- foreach ($rss->channel->item as $item) {
124
- $_product = array();
125
- foreach ($item as $key => $value) {
126
- $_product[$key] = (string)$value;
127
- }
128
- $products[] = $_product;
129
- }
130
- if (count($products)) {
131
- $searchEngine->updateItems('product', $products);
132
- $this->_log->_debugEnabled && $this->_log->debug(sprintf('Atomic update for product %d in store %s done with: %s', $product->getId(), $storeCode, json_encode($products)));
133
- return;
134
- }
135
  }
136
-
137
- $this->_log->_debugEnabled && $this->_log->debug(sprintf('Atomic update for product %d in store %s failed with no data', $product->getId(), $storeCode));
138
  }
139
  }
140
 
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Feed
31
  $this->_log = Mage::helper('doofinder_feed/log');
32
  }
33
 
34
+ /**
35
+ * Update product index in given store context
36
+ *
37
+ * @param Mage_Catalog_Model_Product $product
38
+ * @param string $storeCode
39
+ */
40
+ protected function updateProductIndex($product, $storeCode)
41
+ {
42
+ $helper = Mage::helper('doofinder_feed');
43
+
44
+ // Set store code
45
+ $this->storeCode = $storeCode;
46
+
47
+ // Get store config
48
+ $this->config = $helper->getStoreConfig($this->storeCode);
49
+
50
+ // Set options
51
+ $options = array(
52
+ 'close_empty' => true, // close xml even if there are no items
53
+ 'products' => array($product->getId()), // list of products in feed
54
+ 'store_code' => $this->config['storeCode'],
55
+ 'grouped' => $this->_getBoolean($this->config['grouped']),
56
+ 'display_price' => $this->_getBoolean($this->config['display_price']),
57
+ 'minimal_price' => $this->_getBoolean('minimal_price', false),
58
+ 'image_size' => $this->config['image_size'],
59
+ 'customer_group_id' => 0,
60
+ );
61
+
62
+ $generator = Mage::getModel('doofinder_feed/generator', $options);
63
+
64
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Starting atomic update for product %d in store %s', $product->getId(), $storeCode));
65
+
66
+ $xmlData = $generator->run();
67
+
68
+ if ($xmlData) {
69
+ $rss = simplexml_load_string($xmlData);
70
+
71
+ $hashId = Mage::getStoreConfig('doofinder_search/internal_settings/hash_id', $this->storeCode);
72
+ if ($hashId === '') {
73
+
74
+ $warning = sprintf('HashID is not set for the \'%s\' store view, therefore, search indexes haven\'t been
75
+ updated for
76
+ this store view. To fix this problem set HashID for a given stor view or disable Internal Search in Doofinder
77
+ Search Configuration.', $this->storeCode);
78
+ $this->_log->debug($warning);
79
+ Mage::getSingleton('adminhtml/session')->addWarning($warning);
80
+ return;
81
+ }
82
+
83
+ $searchEngine = Mage::helper('doofinder_feed/search')->getDoofinderSearchEngine($this->storeCode);
84
+
85
+ // Check if search engine exists and skip foreach iteration if not.
86
+ if (!$searchEngine) {
87
+ $warning = sprintf('Search engine with HashID %s doesn\'t exists. Please, check your configuration.', $hashId);
88
+ $this->_log->debug($warning);
89
+ Mage::getSingleton('adminhtml/session')->addWarning($warning);
90
+ return;
91
+ }
92
+
93
+ // Declare array of products to update
94
+ $products = array();
95
+ foreach ($rss->channel->item as $item) {
96
+ $_product = array();
97
+ foreach ($item as $key => $value) {
98
+ $_product[$key] = (string)$value;
99
+ }
100
+ $products[] = $_product;
101
+ }
102
+ if (count($products)) {
103
+ $searchEngine->updateItems('product', $products);
104
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Atomic update for product %d in store %s done with: %s', $product->getId(), $storeCode, json_encode($products)));
105
+ return;
106
+ }
107
+
108
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Atomic update for product %d in store %s failed with no data', $product->getId(), $storeCode));
109
+ }
110
+ }
111
+
112
  public function updateSearchEngineIndexes($observer) {
113
 
114
  $helper = Mage::helper('doofinder_feed');
115
 
116
  $product = $observer->getProduct();
 
117
 
118
  $storeCodes = array();
119
  $store = Mage::getModel('core/store')->load($product->getStoreId());
144
 
145
  // Loop over all stores and update relevant search engines
146
  foreach ($storeCodes as $storeCode) {
147
+ try {
148
+ $this->updateProductIndex($product, $storeCode);
149
+ } catch (Exception $e) {
150
+ $warning = $helper->__('There was an error during product %d indexing: %s', $product->getId(), $e->getMessage());
151
+ $this->_log->debug($warning);
152
+ Mage::getSingleton('adminhtml/session')->addWarning($warning);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  }
 
 
154
  }
155
  }
156
 
app/code/community/Doofinder/Feed/Model/Observers/Logs.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Logs
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Logs
app/code/community/Doofinder/Feed/Model/Observers/Schedule.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Schedule
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Schedule
app/code/community/Doofinder/Feed/Model/Resource/Mysql4/Setup.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Resource_Mysql4_Setup extends Mage_Core_Model_Resource_Setup {
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_Resource_Mysql4_Setup extends Mage_Core_Model_Resource_Setup {
app/code/community/Doofinder/Feed/Model/System/Config/Backend/Map/Additional.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Backend_Map_Additional extends Mage_Adminhtml_Model_System_Config_Backend_Serialized
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Backend_Map_Additional extends Mage_Adminhtml_Model_System_Config_Backend_Serialized
app/code/community/Doofinder/Feed/Model/System/Config/Reset.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Reset extends Mage_Core_Model_Config_Data
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Reset extends Mage_Core_Model_Config_Data
app/code/community/Doofinder/Feed/Model/System/Config/Source/Feed/Pricetaxmode.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Source_Feed_Pricetaxmode
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Source_Feed_Pricetaxmode
app/code/community/Doofinder/Feed/Model/System/Config/Source/Product/Attributes.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Source_Product_Attributes
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Source_Product_Attributes
app/code/community/Doofinder/Feed/Model/Tools.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Tools model for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Tools extends Varien_Object
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Tools model for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Tools extends Varien_Object
app/code/community/Doofinder/Feed/controllers/DoofinderFeedFeedController.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_DoofinderFeedFeedController extends Mage_Adminhtml_Controller_Action
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_DoofinderFeedFeedController extends Mage_Adminhtml_Controller_Action
app/code/community/Doofinder/Feed/controllers/DoofinderFeedLogController.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_DoofinderFeedLogController extends Mage_Adminhtml_Controller_Action
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  class Doofinder_Feed_DoofinderFeedLogController extends Mage_Adminhtml_Controller_Action
app/code/community/Doofinder/Feed/controllers/FeedController.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Feed controller for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_FeedController extends Mage_Core_Controller_Front_Action
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Feed controller for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_FeedController extends Mage_Core_Controller_Front_Action
app/code/community/Doofinder/Feed/controllers/IndexController.php CHANGED
@@ -6,13 +6,13 @@
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
- * @version 1.8.8
10
  */
11
 
12
  /**
13
  * Index controller for Doofinder Feed
14
  *
15
- * @version 1.8.8
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_IndexController extends Mage_Core_Controller_Front_Action
6
  /**
7
  * @category controllers
8
  * @package Doofinder_Feed
9
+ * @version 1.8.9
10
  */
11
 
12
  /**
13
  * Index controller for Doofinder Feed
14
  *
15
+ * @version 1.8.9
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_IndexController extends Mage_Core_Controller_Front_Action
app/code/community/Doofinder/Feed/etc/config.xml CHANGED
@@ -3,7 +3,7 @@
3
 
4
  <modules>
5
  <Doofinder_Feed>
6
- <version>1.8.8</version>
7
  </Doofinder_Feed>
8
  </modules>
9
  <global>
3
 
4
  <modules>
5
  <Doofinder_Feed>
6
+ <version>1.8.9</version>
7
  </Doofinder_Feed>
8
  </modules>
9
  <global>
app/code/community/Doofinder/Feed/etc/system.xml CHANGED
@@ -351,14 +351,14 @@
351
  <show_in_website>0</show_in_website>
352
  <show_in_store>1</show_in_store>
353
  <fields>
354
- <cron_issue>
355
- <label>Cron Issues</label>
356
- <frontend_model>doofinder_feed/settings_panel_cron</frontend_model>
357
- <sort_order>5</sort_order>
358
  <show_in_default>1</show_in_default>
359
- <show_in_website>1</show_in_website>
360
- <show_in_store>1</show_in_store>
361
- </cron_issue>
362
  <status>
363
  <label>Status</label>
364
  <frontend_model>doofinder_feed/settings_panel_message</frontend_model>
@@ -431,6 +431,14 @@
431
  <show_in_website>0</show_in_website>
432
  <show_in_store>1</show_in_store>
433
  </view_log>
 
 
 
 
 
 
 
 
434
  </fields>
435
  </panel>
436
  <advanced translate="label">
351
  <show_in_website>0</show_in_website>
352
  <show_in_store>1</show_in_store>
353
  <fields>
354
+ <dynamic_feed_url>
355
+ <label>Dynamic feed URL</label>
356
+ <frontend_model>doofinder_feed/settings_panel_dynamicFeedUrl</frontend_model>
357
+ <sort_order>0</sort_order>
358
  <show_in_default>1</show_in_default>
359
+ <show_in_website>0</show_in_website>
360
+ <show_in_store>0</show_in_store>
361
+ </dynamic_feed_url>
362
  <status>
363
  <label>Status</label>
364
  <frontend_model>doofinder_feed/settings_panel_message</frontend_model>
431
  <show_in_website>0</show_in_website>
432
  <show_in_store>1</show_in_store>
433
  </view_log>
434
+ <atomic_updates>
435
+ <label>Atomic Updates</label>
436
+ <frontend_model>doofinder_feed/settings_panel_atomicUpdates</frontend_model>
437
+ <sort_order>0</sort_order>
438
+ <show_in_default>1</show_in_default>
439
+ <show_in_website>0</show_in_website>
440
+ <show_in_store>0</show_in_store>
441
+ </atomic_updates>
442
  </fields>
443
  </panel>
444
  <advanced translate="label">
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Doofinder_Feed</name>
4
- <version>1.8.8</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
@@ -48,11 +48,11 @@ Doofinder is fast and innovative. With no doubt, it is the best search engine fo
48
  You can get more info and create your account visiting the Doofinder site:&#xD;
49
  &#xD;
50
  http://www.doofinder.com</description>
51
- <notes>Bugfixes.</notes>
52
  <authors><author><name>Carlos Escribano Rey</name><user>doofinder</user><email>carlos@doofinder.com</email></author></authors>
53
- <date>2017-06-19</date>
54
- <time>10:25:17</time>
55
- <contents><target name="magecommunity"><dir name="Doofinder"><dir name="Feed"><dir name="Block"><dir name="Adminhtml"><dir name="Log"><file name="View.php" hash="af8bac5674529679ccd7bbb380d7b825"/></dir><dir name="Map"><file name="Additional.php" hash="3be6b21503289a010366064ff023cea0"/></dir></dir><file name="Integration.php" hash="13957f1e132d94751adc0cac48cbac15"/><dir name="Settings"><dir name="Buttons"><file name="Generate.php" hash="72ab7275f4210328fe80ebfe674f2a15"/><file name="ViewLog.php" hash="97f1e8081407f007b12aced40205398f"/></dir><file name="Locks.php" hash="c4d4c5c031da8c3550ceba6f07e655b4"/><dir name="Panel"><file name="Cron.php" hash="e93e0471544eef8d6cc1ea5c2a8037dd"/><file name="Crondescription.php" hash="403b146bba3eacb9303b02ee5ce2846c"/><file name="Datetime.php" hash="2f238e8fa69774a0d60d0d748c928b52"/><file name="Description.php" hash="a3de7841479ae86218be28270044b899"/><file name="File.php" hash="a9932b28f21afc3f8009e5522c1da7bf"/><file name="Hashdescription.php" hash="707aa2f0eff7a1e170e6355787e09e84"/><file name="Layerdescription.php" hash="10c5e59c01b2bf2a9a5d9070b0d04a92"/><file name="Message.php" hash="21da62d2234178acc51d57a926ccb44d"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="2c0c613677138564a87992fb5bf368f2"/><file name="Log.php" hash="81f778b9bc506f7de05ba0e0055523fb"/><file name="Search.php" hash="adedec93e07dadb8edfcac8dd74fa07c"/><file name="Tax.php" hash="edcae4b2da6b0a8d30bc49c3604c698c"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="759b6b4b171e043a2d0a1d7b79b6bb8a"/></dir><dir name="Validation"><file name="Hashid.php" hash="5c84ddebe10442c48bc8bca05a9253d1"/></dir></dir></dir></dir><dir name="CatalogSearch"><dir name="Resource"><file name="Fulltext.php" hash="a3ece9fe463669dc6c16a232f7160aba"/></dir></dir><file name="Config.php" hash="d6693e794f8347cc60a94ed0c9b12cbc"/><file name="Cron.php" hash="a427491052e2f6b2871a8ed6423b0b2d"/><file name="Generator.php" hash="dc92b0490f0d6a3233f10adf2b0863d0"/><file name="Log.php" hash="46f4f1ec6ad5d16c50558ef63b7d9855"/><dir name="Map"><dir name="Product"><file name="Abstract.php" hash="de2e71e21b0fece105771439c372252d"/><file name="Associated.php" hash="6aa315a0aa5eb75ed87bd0c67be86412"/><file name="Bundle.php" hash="704c3367e24e8d2ca8dad763921627f5"/><file name="Configurable.php" hash="110b2b1d6e4f4983b62e1f3797a752ff"/><file name="Downloadable.php" hash="917f2e66e6b99726894353051015cffc"/><file name="Grouped.php" hash="3081ad017ac7f15344a4e9d23f75b0a4"/><file name="Simple.php" hash="7833d3d21ada092d2c02978755e32872"/><file name="Virtual.php" hash="f6118a7170331745c93038e198c0ddb5"/></dir></dir><dir name="Mysql4"><dir name="Cron"><file name="Collection.php" hash="460ce1393598ac86e0f14687f712a85d"/></dir><file name="Cron.php" hash="2a8b00a00953a025d1829585581db660"/><dir name="Log"><file name="Collection.php" hash="d080ba904cbb07a1ed9e5e6eebbb5f8e"/></dir><file name="Log.php" hash="77b6651e6e782eeedc378b3dcc752b9a"/></dir><dir name="Observers"><file name="Feed.php" hash="bd0977c86201e2fdc2ab747ce19efe5f"/><file name="Logs.php" hash="eb4c0f708d13365d2e58ed6404e59a0d"/><file name="Schedule.php" hash="60fbf6961dcecfca030da956d742cd78"/></dir><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="6c3b0299c1bc90b92cd848179baa6d32"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Map"><file name="Additional.php" hash="824824b1a4389529d3031f85ca76cc6e"/></dir><file name="Password.php" hash="b52b0e16c0ae02fd528bf5c567a7a8b5"/><dir name="Total"><file name="Limit.php" hash="a23092ea72cbe81e2779b086ad055bf6"/></dir></dir><file name="Reset.php" hash="54426d1bc21ad7568a8be212080372b9"/><dir name="Source"><dir name="Feed"><file name="Pricetaxmode.php" hash="11f7c21265be054de73ae6d5c381c2e8"/></dir><dir name="Product"><file name="Attributes.php" hash="49b2e06125f389028d03763c85546d49"/></dir></dir></dir></dir><file name="Tools.php" hash="bc051c6a16ae700cb0be13146ca38827"/></dir><dir name="Test"><dir name="Controller"><dir name="Index"><dir name="fixtures"><file name="testConfig.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/><file name="testFeed.yaml" hash="694cf25a35a9a301a8ae678866937909"/><file name="testIndex.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/></dir><dir name="providers"><file name="testConfig.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/><file name="testFeed.yaml" hash="1ea2f638be8fdcea22ef47767ed8d7db"/><file name="testIndex.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/></dir></dir><file name="Index.php" hash="2771de706303653d039818bd0f6590ea"/></dir><dir name="Model"><dir name="Product"><dir name="expectations"><file name="testGenerator.yaml" hash="232dda1f4fd88b8ef081393f08044731"/></dir><dir name="fixtures"><file name="testGenerator.yaml" hash="df25e3ca67fd98ab1b933c4951c599ef"/></dir><dir name="providers"><file name="testGenerator.yaml" hash="84779d5dcd8d92abdecf0cd5ee65cfb0"/></dir></dir><file name="Product.php" hash="6c45ae2b36c6cc721ef634855ed6d596"/></dir></dir><dir name="controllers"><file name="DoofinderFeedFeedController.php" hash="9f37c14f7e865b03447e4220abb0a3f1"/><file name="DoofinderFeedLogController.php" hash="bb793db53ee2c4fb46ad1b89a9c8541a"/><file name="FeedController.php" hash="6798f3d9f2fec0291fa348c56958f27b"/><file name="IndexController.php" hash="6cec62715e623e70f84535188dbc00c3"/></dir><dir name="etc"><file name="config.xml" hash="84bb7fcc913d88609a0e4de3f73ef7d1"/><file name="system.xml" hash="ca6813b70bef81957ee6fa646bb1bac8"/></dir><dir name="sql"><dir name="doofinder_feed_setup"><file name="mysql4-install-1.5.4.php" hash="9dc5ed4e10febbe75ab1911259a1c9fe"/><file name="mysql4-install-1.5.7.php" hash="85baa03d9c4d76f6b744ba107c21f8da"/><file name="mysql4-upgrade-1.5.4-1.5.5.php" hash="df7158f6d6cdded9bdfc5cb72c1dc8e3"/><file name="mysql4-upgrade-1.5.5-1.5.6.php" hash="0f3ca5263356a0bc83d9352b463944dc"/><file name="mysql4-upgrade-1.5.6-1.5.7.php" hash="b0180770655f36d6723483aa3bd1541f"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Doofinder_Feed.xml" hash="9d3b6fbbbec12708461c33260715451c"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="doofinder.xml" hash="a7b9105a4e613086340b042845793d9f"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="doofinder.xml" hash="48a8636096950914917461260416c355"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="doofinder"><file name="admin.js" hash="ca050b0527ae101c75532fbca1c4a274"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="doofinder"><file name="styles.css" hash="d6ec303c3199db3ab4dffa8d2491105e"/></dir></dir></dir></dir></target><target name="magelib"><dir name="php-doofinder"><file name="CHANGELOG.txt" hash="b4fc19b1cb37810d8faa6a1e784ab32b"/><file name="README.md" hash="f9eda30362e3356947f86a9248122c2f"/><file name="autoload.php" hash="1ab27f8a639e30c5a25a6100f1a3035d"/><file name="composer.json" hash="76f54c3a763a3ae683fa677106b41027"/><file name="phpunit.xml" hash="97d89bb72790578c7ca60aebe7e3b1dd"/><dir name="src"><dir name="Management"><file name="AggregatesIterator.php" hash="431618213beb8294f6cab35376c935c8"/><file name="Client.php" hash="3d4dc1dbabcb42c7b1e4835ff5056d21"/><dir name="Errors"><file name="BadRequest.php" hash="45113fccee9500f4ee2a20e845ef8ee2"/><file name="NotAllowed.php" hash="98169302570fcf34a49277c5afbbed20"/><file name="NotFound.php" hash="9b08d95a549cfaea5562ecfa74a28746"/><file name="NotProcessedResponse.php" hash="63984cfbe90b6912e8d53faa293e65d6"/><file name="QuotaExhausted.php" hash="75f95704e509d7b5a4c61ebdb76208f5"/><file name="ThrottledResponse.php" hash="d3cd9c6df62246b5c3e80de3e1ecfc9c"/><file name="Utils.php" hash="be1220fc529292e8cc723dc9f68ef81d"/><file name="WrongResponse.php" hash="3c0fd79d6c04ac2c8f93984912369333"/></dir><file name="ItemsResultSet.php" hash="67532bd88b478fb4e0ce9f05d2ffd94a"/><file name="ScrollIterator.php" hash="0d916403f85a791af8e4e2240ad9e1be"/><file name="SearchEngine.php" hash="417e44ce9f11be52d3a6679161014eb8"/><file name="TopTermsIterator.php" hash="9ef2a784ce1d2cae81e577ce8c13ed08"/></dir><dir name="Search"><file name="Client.php" hash="857ed6a6594776f3060d87c2c9b86aca"/><file name="Error.php" hash="38a4283a860ed443f43a8452cc931c99"/><file name="Results.php" hash="87417657ec8a4908d6fd35868b782d7e"/></dir><dir name="Test"><dir name="Management"><file name="AggregatesIteratorTest.php" hash="eb9abdc3de26ac6396efc007373906ca"/><file name="ClientTest.php" hash="9958013403856eab97a44a14b8c32569"/><file name="ScrollIteratorTest.php" hash="34ef0111f1bb3633e6950151efd5e3ec"/><file name="SearchEngineTest.php" hash="a354a2e690851ab8d2b9a41495fcd979"/><file name="TopTermsIteratorTest.php" hash="9804ca4b89dce16d1e89b6614c11c2c0"/></dir><dir name="Search"><file name="ClientTest.php" hash="6aeac0a72fc4a4798233dfde15014543"/><file name="ResultsTests.php" hash="64503776af865c5d23e261b71d36a6bc"/></dir></dir></dir></dir></target></contents>
56
  <compatible/>
57
  <dependencies><required><php><min>5.4.0</min><max>6.0.0</max></php></required></dependencies>
58
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Doofinder_Feed</name>
4
+ <version>1.8.9</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
48
  You can get more info and create your account visiting the Doofinder site:&#xD;
49
  &#xD;
50
  http://www.doofinder.com</description>
51
+ <notes>Better error handling. Better feed status.</notes>
52
  <authors><author><name>Carlos Escribano Rey</name><user>doofinder</user><email>carlos@doofinder.com</email></author></authors>
53
+ <date>2017-06-23</date>
54
+ <time>13:25:41</time>
55
+ <contents><target name="magecommunity"><dir name="Doofinder"><dir name="Feed"><dir name="Block"><dir name="Adminhtml"><dir name="Log"><file name="View.php" hash="33cf84443f5e22fde5578b9e1d3b58e5"/></dir><dir name="Map"><file name="Additional.php" hash="ee5111fc38ee1ee70a1d801f85324767"/></dir></dir><file name="Integration.php" hash="2ce65aa3eb2ae770334ed900bdb4d8d3"/><dir name="Settings"><dir name="Buttons"><file name="Generate.php" hash="8bad88455d5c8b96182a41042be363ba"/><file name="ViewLog.php" hash="7e727ed612280cb9aba3cf2d0632eadc"/></dir><file name="Locks.php" hash="57f71f749f47b06064a8a4692a7c57ac"/><dir name="Panel"><file name="AtomicUpdates.php" hash="a5eaa468474adf2335344e38f967b17e"/><file name="Crondescription.php" hash="ced273b7fffea1054b3d78795ad5d54a"/><file name="Datetime.php" hash="5e6dd5e7d0a7b204dfab2704a8f0ccda"/><file name="Description.php" hash="61afd0652da246e96887bdf50d73da1a"/><file name="DynamicFeedUrl.php" hash="baf391a0e70815df5dbe062dbd25be5c"/><file name="File.php" hash="0bad47ea042b9918e8a58c3542921a92"/><file name="Hashdescription.php" hash="707aa2f0eff7a1e170e6355787e09e84"/><file name="Layerdescription.php" hash="c3fad2ad6cfb509d8a5fec75fe001574"/><file name="Message.php" hash="f308381254a261bf8449641eeb2fe146"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="ecb1c7a5b21f87bae59afd5677475ec8"/><file name="Log.php" hash="411c47f93944944c2bfef9267c87a5aa"/><file name="Search.php" hash="db314d97fabaae7a2d99a411fb5d4d5e"/><file name="Tax.php" hash="0131884ee36f3208517cc9b52fa20391"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="ed025abd779e50261133da4019610fdc"/></dir><dir name="Validation"><file name="Hashid.php" hash="5c84ddebe10442c48bc8bca05a9253d1"/></dir></dir></dir></dir><dir name="CatalogSearch"><dir name="Resource"><file name="Fulltext.php" hash="a3ece9fe463669dc6c16a232f7160aba"/></dir></dir><file name="Config.php" hash="c5752f6ed48496d30b5ffe6f97dde5db"/><file name="Cron.php" hash="56dce1b1e7fe35ea3fdf85421cf814e0"/><file name="Generator.php" hash="314165d23e2578c72e2b7cfb0189bf3c"/><file name="Log.php" hash="da02408077807f8b139ff6b54777febd"/><dir name="Map"><dir name="Product"><file name="Abstract.php" hash="fcb6bdd15868364456f4b68a57bbb41b"/><file name="Associated.php" hash="0ad8d8e7d87326512a571eea64b6fa95"/><file name="Bundle.php" hash="5b681e5f75eb348fed8132288ec27559"/><file name="Configurable.php" hash="6f80969ecd29a78b2280d164ae4b159b"/><file name="Downloadable.php" hash="4ff1ea49167bef5592e5bb95d25f7cef"/><file name="Grouped.php" hash="939620a20f9542631d63c8e64ea34db8"/><file name="Simple.php" hash="2054984a160049674b1c470606ee3ff8"/><file name="Virtual.php" hash="20f74746f2c1ff6dfbc22c95b21ad288"/></dir></dir><dir name="Mysql4"><dir name="Cron"><file name="Collection.php" hash="df3c985053687c3ae66ea47c7933159b"/></dir><file name="Cron.php" hash="40e5c42e6aaaa72bc5c395f65cb086e7"/><dir name="Log"><file name="Collection.php" hash="743051c2135b9b4cd7b7730eac0f28ba"/></dir><file name="Log.php" hash="1def959e95b434bddd4b674e4c7d0499"/></dir><dir name="Observers"><file name="Feed.php" hash="2b682e754ee4d6157add0889caa68d62"/><file name="Logs.php" hash="41d0aafe38298f41f6bc7e9ab7263c99"/><file name="Schedule.php" hash="9637d1230271440cacbfcfae7299ed4e"/></dir><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="c5fff6122ebd62c74f032467a1479df9"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Map"><file name="Additional.php" hash="256240ad36e8f17830a300fca21043c4"/></dir><file name="Password.php" hash="b52b0e16c0ae02fd528bf5c567a7a8b5"/><dir name="Total"><file name="Limit.php" hash="a23092ea72cbe81e2779b086ad055bf6"/></dir></dir><file name="Reset.php" hash="fa8df74ed6a7e62cb2320d114df573e5"/><dir name="Source"><dir name="Feed"><file name="Pricetaxmode.php" hash="dd6f8e135d633a67958ff22488f1a95b"/></dir><dir name="Product"><file name="Attributes.php" hash="b5e17d7d24ed7f6a019d6b1fac82c0e8"/></dir></dir></dir></dir><file name="Tools.php" hash="c21fed1ab73df408b9a5a401d295e705"/></dir><dir name="Test"><dir name="Controller"><dir name="Index"><dir name="fixtures"><file name="testConfig.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/><file name="testFeed.yaml" hash="694cf25a35a9a301a8ae678866937909"/><file name="testIndex.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/></dir><dir name="providers"><file name="testConfig.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/><file name="testFeed.yaml" hash="1ea2f638be8fdcea22ef47767ed8d7db"/><file name="testIndex.yaml" hash="0a1f21a3417389e0c0a13392c79a7a89"/></dir></dir><file name="Index.php" hash="2771de706303653d039818bd0f6590ea"/></dir><dir name="Model"><dir name="Product"><dir name="expectations"><file name="testGenerator.yaml" hash="232dda1f4fd88b8ef081393f08044731"/></dir><dir name="fixtures"><file name="testGenerator.yaml" hash="df25e3ca67fd98ab1b933c4951c599ef"/></dir><dir name="providers"><file name="testGenerator.yaml" hash="84779d5dcd8d92abdecf0cd5ee65cfb0"/></dir></dir><file name="Product.php" hash="6c45ae2b36c6cc721ef634855ed6d596"/></dir></dir><dir name="controllers"><file name="DoofinderFeedFeedController.php" hash="d53f6a0d35ebf8a3db8007d348ae443d"/><file name="DoofinderFeedLogController.php" hash="42bc1a5a7cda8d66ae493f80edffe18d"/><file name="FeedController.php" hash="b00aadc047470fa822ec2479f9c6fb5e"/><file name="IndexController.php" hash="3500b73730665b1fd3f1ac9b757cbe61"/></dir><dir name="etc"><file name="config.xml" hash="4e29907b77850f1bdee4866d08148822"/><file name="system.xml" hash="4fba4adc1eaf2f1700757f981272d866"/></dir><dir name="sql"><dir name="doofinder_feed_setup"><file name="mysql4-install-1.5.4.php" hash="9dc5ed4e10febbe75ab1911259a1c9fe"/><file name="mysql4-install-1.5.7.php" hash="85baa03d9c4d76f6b744ba107c21f8da"/><file name="mysql4-upgrade-1.5.4-1.5.5.php" hash="df7158f6d6cdded9bdfc5cb72c1dc8e3"/><file name="mysql4-upgrade-1.5.5-1.5.6.php" hash="0f3ca5263356a0bc83d9352b463944dc"/><file name="mysql4-upgrade-1.5.6-1.5.7.php" hash="b0180770655f36d6723483aa3bd1541f"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Doofinder_Feed.xml" hash="9d3b6fbbbec12708461c33260715451c"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="doofinder.xml" hash="a7b9105a4e613086340b042845793d9f"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="doofinder.xml" hash="48a8636096950914917461260416c355"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="doofinder"><file name="admin.js" hash="ca050b0527ae101c75532fbca1c4a274"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="doofinder"><file name="styles.css" hash="d6ec303c3199db3ab4dffa8d2491105e"/></dir></dir></dir></dir></target><target name="magelib"><dir name="php-doofinder"><file name="CHANGELOG.txt" hash="b4fc19b1cb37810d8faa6a1e784ab32b"/><file name="README.md" hash="f9eda30362e3356947f86a9248122c2f"/><file name="autoload.php" hash="1ab27f8a639e30c5a25a6100f1a3035d"/><file name="composer.json" hash="76f54c3a763a3ae683fa677106b41027"/><file name="phpunit.xml" hash="97d89bb72790578c7ca60aebe7e3b1dd"/><dir name="src"><dir name="Management"><file name="AggregatesIterator.php" hash="431618213beb8294f6cab35376c935c8"/><file name="Client.php" hash="3d4dc1dbabcb42c7b1e4835ff5056d21"/><dir name="Errors"><file name="BadRequest.php" hash="45113fccee9500f4ee2a20e845ef8ee2"/><file name="NotAllowed.php" hash="98169302570fcf34a49277c5afbbed20"/><file name="NotFound.php" hash="9b08d95a549cfaea5562ecfa74a28746"/><file name="NotProcessedResponse.php" hash="63984cfbe90b6912e8d53faa293e65d6"/><file name="QuotaExhausted.php" hash="75f95704e509d7b5a4c61ebdb76208f5"/><file name="ThrottledResponse.php" hash="d3cd9c6df62246b5c3e80de3e1ecfc9c"/><file name="Utils.php" hash="be1220fc529292e8cc723dc9f68ef81d"/><file name="WrongResponse.php" hash="3c0fd79d6c04ac2c8f93984912369333"/></dir><file name="ItemsResultSet.php" hash="67532bd88b478fb4e0ce9f05d2ffd94a"/><file name="ScrollIterator.php" hash="0d916403f85a791af8e4e2240ad9e1be"/><file name="SearchEngine.php" hash="417e44ce9f11be52d3a6679161014eb8"/><file name="TopTermsIterator.php" hash="9ef2a784ce1d2cae81e577ce8c13ed08"/></dir><dir name="Search"><file name="Client.php" hash="857ed6a6594776f3060d87c2c9b86aca"/><file name="Error.php" hash="38a4283a860ed443f43a8452cc931c99"/><file name="Results.php" hash="87417657ec8a4908d6fd35868b782d7e"/></dir><dir name="Test"><dir name="Management"><file name="AggregatesIteratorTest.php" hash="eb9abdc3de26ac6396efc007373906ca"/><file name="ClientTest.php" hash="9958013403856eab97a44a14b8c32569"/><file name="ScrollIteratorTest.php" hash="34ef0111f1bb3633e6950151efd5e3ec"/><file name="SearchEngineTest.php" hash="a354a2e690851ab8d2b9a41495fcd979"/><file name="TopTermsIteratorTest.php" hash="9804ca4b89dce16d1e89b6614c11c2c0"/></dir><dir name="Search"><file name="ClientTest.php" hash="6aeac0a72fc4a4798233dfde15014543"/><file name="ResultsTests.php" hash="64503776af865c5d23e261b71d36a6bc"/></dir></dir></dir></dir></target></contents>
56
  <compatible/>
57
  <dependencies><required><php><min>5.4.0</min><max>6.0.0</max></php></required></dependencies>
58
  </package>