Doofinder_Feed - Version 1.8.8

Version Notes

Bugfixes.

Download this release

Release Info

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


Code changes from version 1.8.7 to 1.8.8

Files changed (48) 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 +89 -0
  7. app/code/community/Doofinder/Feed/Block/Settings/Panel/Crondescription.php +1 -1
  8. app/code/community/Doofinder/Feed/Block/Settings/Panel/Datetime.php +1 -1
  9. app/code/community/Doofinder/Feed/Block/Settings/Panel/Description.php +1 -1
  10. app/code/community/Doofinder/Feed/Block/Settings/Panel/File.php +1 -1
  11. app/code/community/Doofinder/Feed/Block/Settings/Panel/Layerdescription.php +1 -1
  12. app/code/community/Doofinder/Feed/Block/Settings/Panel/Message.php +1 -1
  13. app/code/community/Doofinder/Feed/Helper/Data.php +4 -3
  14. app/code/community/Doofinder/Feed/Helper/Log.php +33 -3
  15. app/code/community/Doofinder/Feed/Helper/Tax.php +1 -1
  16. app/code/community/Doofinder/Feed/Model/Adminhtml/System/Config/Backend/Cron.php +1 -1
  17. app/code/community/Doofinder/Feed/Model/Config.php +2 -2
  18. app/code/community/Doofinder/Feed/Model/Cron.php +1 -1
  19. app/code/community/Doofinder/Feed/Model/Generator.php +37 -18
  20. app/code/community/Doofinder/Feed/Model/Log.php +1 -1
  21. app/code/community/Doofinder/Feed/Model/Map/Product/Abstract.php +23 -7
  22. app/code/community/Doofinder/Feed/Model/Map/Product/Associated.php +2 -2
  23. app/code/community/Doofinder/Feed/Model/Map/Product/Bundle.php +2 -2
  24. app/code/community/Doofinder/Feed/Model/Map/Product/Configurable.php +2 -2
  25. app/code/community/Doofinder/Feed/Model/Map/Product/Downloadable.php +2 -2
  26. app/code/community/Doofinder/Feed/Model/Map/Product/Grouped.php +2 -2
  27. app/code/community/Doofinder/Feed/Model/Map/Product/Simple.php +2 -2
  28. app/code/community/Doofinder/Feed/Model/Map/Product/Virtual.php +2 -2
  29. app/code/community/Doofinder/Feed/Model/Mysql4/Cron.php +1 -1
  30. app/code/community/Doofinder/Feed/Model/Mysql4/Cron/Collection.php +1 -1
  31. app/code/community/Doofinder/Feed/Model/Mysql4/Log.php +1 -1
  32. app/code/community/Doofinder/Feed/Model/Mysql4/Log/Collection.php +1 -1
  33. app/code/community/Doofinder/Feed/Model/Observers/Feed.php +55 -23
  34. app/code/community/Doofinder/Feed/Model/Observers/Logs.php +1 -1
  35. app/code/community/Doofinder/Feed/Model/Observers/Schedule.php +1 -1
  36. app/code/community/Doofinder/Feed/Model/Resource/Mysql4/Setup.php +1 -1
  37. app/code/community/Doofinder/Feed/Model/System/Config/Backend/Map/Additional.php +1 -1
  38. app/code/community/Doofinder/Feed/Model/System/Config/Reset.php +1 -1
  39. app/code/community/Doofinder/Feed/Model/System/Config/Source/Feed/Pricetaxmode.php +1 -1
  40. app/code/community/Doofinder/Feed/Model/System/Config/Source/Product/Attributes.php +1 -1
  41. app/code/community/Doofinder/Feed/Model/Tools.php +2 -2
  42. app/code/community/Doofinder/Feed/controllers/DoofinderFeedFeedController.php +26 -1
  43. app/code/community/Doofinder/Feed/controllers/DoofinderFeedLogController.php +1 -1
  44. app/code/community/Doofinder/Feed/controllers/FeedController.php +2 -2
  45. app/code/community/Doofinder/Feed/controllers/IndexController.php +2 -2
  46. app/code/community/Doofinder/Feed/etc/config.xml +2 -1
  47. app/code/community/Doofinder/Feed/etc/system.xml +29 -0
  48. 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.7
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.8
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.7
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.8
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.7
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.8
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.7
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.8
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.7
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.8
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 ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.8
10
+ */
11
+
12
+ class Doofinder_Feed_Block_Settings_Locks extends Mage_Adminhtml_Block_System_Config_Form_Field
13
+ {
14
+ public function render(Varien_Data_Form_Element_Abstract $element)
15
+ {
16
+ $element->setCanUseDefaultValue(false);
17
+ return parent::render($element);
18
+ }
19
+
20
+ protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
21
+ {
22
+ $helper = Mage::helper('doofinder_feed');
23
+
24
+ $this->setElement($element);
25
+ $name = $element->getName();
26
+ $element->setScopeLabel('');
27
+
28
+ $store_code = Mage::app()->getRequest()->getParam('store');
29
+
30
+ $stores = array();
31
+
32
+ if ($store_code) {
33
+ $stores[$store_code] = Mage::getModel('core/store')->load($store_code);
34
+ } else {
35
+ foreach (Mage::app()->getStores() as $store) {
36
+ if ($store->getIsActive()) {
37
+ $stores[$store->getCode()] = $store;
38
+ }
39
+ }
40
+ }
41
+
42
+ $locks = array();
43
+
44
+ foreach ($stores as $store) {
45
+ if (file_exists($helper->getFeedLockPath($store->getCode()))) {
46
+ $msg = $this->getLayout()->createBlock('adminhtml/widget_button')
47
+ ->setType('button')
48
+ ->setClass('remove-lock')
49
+ ->setLabel($helper->__('Remove lock'))
50
+ ->setOnClick("confirm('Removing lock file may cause inconsistencies in generated feed. Proceed?') && removeFeedLock('" . $store->getCode() . "')")
51
+ ->toHtml();
52
+ } else {
53
+ $msg = $helper->__('Lock file for store <em>%s</em> does not exist.', $store->getCode());
54
+ }
55
+
56
+ $locks[$store->getCode()] = $msg;
57
+ }
58
+
59
+ $html = '';
60
+
61
+ if (count($locks) > 1) {
62
+ $html .= '<ul>';
63
+ foreach ($locks as $code => $file) {
64
+ $html .= '<li><b>' . $stores[$code]->getName() . ':</b><div>' . $file . '</div></li>';
65
+ }
66
+ $html .= '</ul>';
67
+ } else {
68
+ $html .= reset($locks);
69
+ }
70
+
71
+ $url = Mage::helper("adminhtml")->getUrl('adminhtml/doofinderFeedFeed/removeLock');
72
+ $script = "<script type=\"text/javascript\">
73
+ function removeFeedLock(storeCode) {
74
+ var call = new Ajax.Request('" . $url . "', {
75
+ method: 'post',
76
+ parameters: {
77
+ store: storeCode
78
+ },
79
+ onComplete: function(transport) {
80
+ alert(transport.responseText);
81
+ window.location.reload();
82
+ }
83
+ });
84
+ }
85
+ </script>";
86
+
87
+ return $html . $script;
88
+ }
89
+ }
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.7
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.8
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.7
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.8
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.7
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.8
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/File.php CHANGED
@@ -6,7 +6,7 @@
6
  /**
7
  * @category blocks
8
  * @package Doofinder_Feed
9
- * @version 1.8.7
10
  */
11
 
12
  class Doofinder_Feed_Block_Settings_Panel_File extends Mage_Adminhtml_Block_System_Config_Form_Field
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
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.7
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.8
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.7
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.8
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.7
10
  */
11
 
12
  /**
13
  * Data helper for Doofinder Feed
14
  *
15
- * @version 1.8.7
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Helper_Data extends Mage_Core_Helper_Abstract
@@ -78,7 +78,8 @@ class Doofinder_Feed_Helper_Data extends Mage_Core_Helper_Abstract
78
  $tax = $taxHelper->getPriceDisplayType() != Mage_Tax_Model_Config::DISPLAY_TYPE_EXCLUDING_TAX;
79
  }
80
 
81
- return $taxHelper->getPrice($product, $price, $tax);
 
82
  }
83
 
84
  /**
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
78
  $tax = $taxHelper->getPriceDisplayType() != Mage_Tax_Model_Config::DISPLAY_TYPE_EXCLUDING_TAX;
79
  }
80
 
81
+ // Return raw price with/without tax - no price rounding here
82
+ return $taxHelper->getPrice($product, $price, $tax, null, null, null, null, null, false);
83
  }
84
 
85
  /**
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.7
10
  */
11
 
12
  /**
13
  * Log helper for Doofinder Feed
14
  *
15
- * @version 1.8.7
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Helper_Log extends Mage_Core_Helper_Abstract
@@ -21,15 +21,31 @@ class Doofinder_Feed_Helper_Log extends Mage_Core_Helper_Abstract
21
  const WARNING = 'warning';
22
  const ERROR = 'error';
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  /**
25
  * Log the feed event.
26
  *
27
  * @param Doofinder_Feed_Model_Cron $process
28
  * @param string $type
29
  * @param string $message
 
30
  */
31
- function log(Doofinder_Feed_Model_Cron $process, $type, $message)
32
  {
 
 
33
  $entry = Mage::getModel('doofinder_feed/log')
34
  ->setProcessId($process->getId())
35
  ->setType($type)
@@ -52,4 +68,18 @@ class Doofinder_Feed_Helper_Log extends Mage_Core_Helper_Abstract
52
  static::ERROR => $this->__('Error'),
53
  );
54
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
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
21
  const WARNING = 'warning';
22
  const ERROR = 'error';
23
 
24
+ /**
25
+ * @var boolean
26
+ */
27
+ public $_debugEnabled;
28
+
29
+ /**
30
+ * Constructor
31
+ */
32
+ function __construct()
33
+ {
34
+ $this->_debugEnabled = Mage::getStoreConfig('doofinder_cron/feed_settings/debug', false);
35
+ }
36
+
37
  /**
38
  * Log the feed event.
39
  *
40
  * @param Doofinder_Feed_Model_Cron $process
41
  * @param string $type
42
  * @param string $message
43
+ * @param boolean $debug Pass message to debug log
44
  */
45
+ function log(Doofinder_Feed_Model_Cron $process, $type, $message, $debug = true)
46
  {
47
+ $debug && $this->debug(sprintf('log(%d, %s) %s', $process->getId(), $type, $message));
48
+
49
  $entry = Mage::getModel('doofinder_feed/log')
50
  ->setProcessId($process->getId())
51
  ->setType($type)
68
  static::ERROR => $this->__('Error'),
69
  );
70
  }
71
+
72
+ /**
73
+ * Log a debug message
74
+ *
75
+ * @param string $msg
76
+ */
77
+ function debug($msg)
78
+ {
79
+ if (!$this->_debugEnabled) {
80
+ return;
81
+ }
82
+
83
+ Mage::log($msg, null, 'doofinder.log');
84
+ }
85
  }
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.7
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.8
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.7
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.8
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.7
10
  */
11
 
12
  /**
13
  * Config model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
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.8
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.7
10
  */
11
 
12
  /**
13
  * Generator model for Doofinder Feed
14
  *
15
- * @version 1.8.7
16
  * @package Doofinder_Feed
17
  */
18
  if (!defined('DS'))
@@ -50,6 +50,20 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
50
 
51
  protected $_lastProcessedProductId;
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  /**
54
  * Log to doofinder generator logfile
55
  *
@@ -58,6 +72,7 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
58
  */
59
  public function logError($message)
60
  {
 
61
  $this->_errors[] = $message;
62
  }
63
 
@@ -79,6 +94,8 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
79
 
80
  public function run()
81
  {
 
 
82
  // This must NOT depend on cron being enabled because it's used
83
  // by the front controller!!!
84
 
@@ -93,6 +110,8 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
93
  // Clear errors
94
  $this->_errors = array();
95
 
 
 
96
  // Perform run
97
  $this->_initFeed();
98
  $this->_batchProcessProducts(
@@ -100,11 +119,16 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
100
  $this->getData('_limit_')
101
  );
102
 
 
 
103
  // Only close feed if close empty flag is set to true or there was at least one processed product
104
  if ($this->getData('close_empty') || $this->getLastProcessedProductId() != $this->getData('_offset_')) {
 
105
  $this->_closeFeed();
106
  }
107
 
 
 
108
  return $this->_response;
109
  }
110
 
@@ -175,6 +199,7 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
175
  try
176
  {
177
  $row = $args['row'];
 
178
 
179
  $this->_lastProcessedProductId = $row['entity_id'];
180
 
@@ -205,6 +230,8 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
205
  $this->_iDumped++;
206
 
207
  $map->unsetData();
 
 
208
  }
209
  catch (Exception $e)
210
  {
@@ -236,6 +263,7 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
236
  protected function _addProductToXml(
237
  Doofinder_Feed_Model_Map_Product_Abstract $productMap)
238
  {
 
239
 
240
  $iDumped = 0;
241
  $displayPrice = $this->getDisplayPrice();
@@ -244,6 +272,7 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
244
  {
245
  if ($productMap->isSkip())
246
  {
 
247
  $this->_iSkipped++;
248
  return $this;
249
  }
@@ -339,11 +368,12 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
339
 
340
  $iDumped++;
341
  }
 
 
342
  }
343
  catch (Exception $e)
344
  {
345
- if ($this->getConfigVar('debug') == 1)
346
- $this->_debug($e->getMessage());
347
  }
348
 
349
  return $iDumped > 0;
@@ -530,6 +560,8 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
530
  $this->_oXmlWriter->openMemory();
531
  if (!$this->getData('_offset_'))
532
  {
 
 
533
  $this->_oXmlWriter->startDocument('1.0', 'UTF-8');
534
 
535
  // Output the parent rss tag
@@ -577,13 +609,6 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
577
  }
578
  }
579
 
580
- protected function _debug($m)
581
- {
582
- // $this->_response .= '<pre>';
583
- // var_dump($m);
584
- // $this->_response .= '</pre>';
585
- }
586
-
587
  protected function _sanitizeData($data)
588
  {
589
  $sanitized = array();
@@ -634,8 +659,7 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
634
  }
635
  catch (Exception $e)
636
  {
637
- $e->setMessage('Invalid Store Code.');
638
- $this->_stopOnException($e);
639
  }
640
  }
641
 
@@ -781,11 +805,6 @@ class Doofinder_Feed_Model_Generator extends Varien_Object
781
  return $this->_fieldMap;
782
  }
783
 
784
- protected function _stopOnException(Exception $e)
785
- {
786
- Mage::logError($e->getMessage());
787
- }
788
-
789
  protected function _cleanFieldValue($field)
790
  {
791
  // http://stackoverflow.com/questions/4224141/php-removing-invalid-utf-8-characters-in-xml-using-filter
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'))
50
 
51
  protected $_lastProcessedProductId;
52
 
53
+ /**
54
+ * @var Doofinder_Feed_Helper_Log
55
+ */
56
+ protected $_log;
57
+
58
+ /**
59
+ * Initialize log
60
+ */
61
+ public function _construct()
62
+ {
63
+ parent::_construct();
64
+ $this->_log = Mage::helper('doofinder_feed/log');
65
+ }
66
+
67
  /**
68
  * Log to doofinder generator logfile
69
  *
72
  */
73
  public function logError($message)
74
  {
75
+ $this->_log->debug($message);
76
  $this->_errors[] = $message;
77
  }
78
 
94
 
95
  public function run()
96
  {
97
+ $this->_log->debug("Running generator");
98
+
99
  // This must NOT depend on cron being enabled because it's used
100
  // by the front controller!!!
101
 
110
  // Clear errors
111
  $this->_errors = array();
112
 
113
+ $this->_log->debug("Starting products processig");
114
+
115
  // Perform run
116
  $this->_initFeed();
117
  $this->_batchProcessProducts(
119
  $this->getData('_limit_')
120
  );
121
 
122
+ $this->_log->debug("Products processig done");
123
+
124
  // Only close feed if close empty flag is set to true or there was at least one processed product
125
  if ($this->getData('close_empty') || $this->getLastProcessedProductId() != $this->getData('_offset_')) {
126
+ $this->_log->debug("Closing xml feed");
127
  $this->_closeFeed();
128
  }
129
 
130
+ $this->_log->debug("Generator finished");
131
+
132
  return $this->_response;
133
  }
134
 
199
  try
200
  {
201
  $row = $args['row'];
202
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Adding product %d to feed', $row['entity_id']));
203
 
204
  $this->_lastProcessedProductId = $row['entity_id'];
205
 
230
  $this->_iDumped++;
231
 
232
  $map->unsetData();
233
+
234
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Product %d added to feed', $row['entity_id']));
235
  }
236
  catch (Exception $e)
237
  {
263
  protected function _addProductToXml(
264
  Doofinder_Feed_Model_Map_Product_Abstract $productMap)
265
  {
266
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Adding product %d to xml', $productMap->getProduct()->getId()));
267
 
268
  $iDumped = 0;
269
  $displayPrice = $this->getDisplayPrice();
272
  {
273
  if ($productMap->isSkip())
274
  {
275
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Product %d skipped', $productMap->getProduct()->getId()));
276
  $this->_iSkipped++;
277
  return $this;
278
  }
368
 
369
  $iDumped++;
370
  }
371
+
372
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Product %d added to xml', $productMap->getProduct()->getId()));
373
  }
374
  catch (Exception $e)
375
  {
376
+ $this->logError($e->getMessage());
 
377
  }
378
 
379
  return $iDumped > 0;
560
  $this->_oXmlWriter->openMemory();
561
  if (!$this->getData('_offset_'))
562
  {
563
+ $this->_log->debug('Opening feed');
564
+
565
  $this->_oXmlWriter->startDocument('1.0', 'UTF-8');
566
 
567
  // Output the parent rss tag
609
  }
610
  }
611
 
 
 
 
 
 
 
 
612
  protected function _sanitizeData($data)
613
  {
614
  $sanitized = array();
659
  }
660
  catch (Exception $e)
661
  {
662
+ $this->logError(sprintf('Invalid store code %s', $this->getData('store_code')));
 
663
  }
664
  }
665
 
805
  return $this->_fieldMap;
806
  }
807
 
 
 
 
 
 
808
  protected function _cleanFieldValue($field)
809
  {
810
  // http://stackoverflow.com/questions/4224141/php-removing-invalid-utf-8-characters-in-xml-using-filter
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.7
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.8
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.7
10
  */
11
 
12
  /**
13
  * Abstract Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
16
  * @package Doofinder_Feed
17
  */
18
  class Doofinder_Feed_Model_Map_Product_Abstract extends Varien_Object
@@ -21,9 +21,24 @@ class Doofinder_Feed_Model_Map_Product_Abstract extends Varien_Object
21
  protected $skip = false;
22
  protected $_attributeSetModel;
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  public function initialize()
26
  {
 
 
27
  $currency_code = Mage::app()
28
  ->getStore($this->getData('store_code'))
29
  ->getCurrentCurrencyCode();
@@ -47,10 +62,14 @@ class Doofinder_Feed_Model_Map_Product_Abstract extends Varien_Object
47
 
48
  public function map()
49
  {
 
 
50
  $this->_beforeMap();
51
  $rows = $this->_map();
52
  $this->_afterMap($rows);
53
 
 
 
54
  return $rows;
55
  }
56
 
@@ -247,11 +266,8 @@ class Doofinder_Feed_Model_Map_Product_Abstract extends Varien_Object
247
 
248
  $store = Mage::app()->getStore($this->getStoreCode());
249
 
250
- // Convert price to store currency
251
- $price = Mage::helper('core')->currencyByStore($price, $store, false, false);
252
-
253
- // Format price with store currency
254
- return $store->getCurrentCurrency()->format($price, array('display' => Zend_Currency::NO_SYMBOL), false);
255
  }
256
 
257
  protected function mapFieldPrice()
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
21
  protected $skip = false;
22
  protected $_attributeSetModel;
23
 
24
+ /**
25
+ * @var Doofinder_Feed_Helper_Log
26
+ */
27
+ protected $_log;
28
+
29
+ /**
30
+ * Initialize log
31
+ */
32
+ public function _construct()
33
+ {
34
+ parent::_construct();
35
+ $this->_log = Mage::helper('doofinder_feed/log');
36
+ }
37
 
38
  public function initialize()
39
  {
40
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Initializing %s for product %d', get_called_class(), $this->getProduct()->getId()));
41
+
42
  $currency_code = Mage::app()
43
  ->getStore($this->getData('store_code'))
44
  ->getCurrentCurrencyCode();
62
 
63
  public function map()
64
  {
65
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Mapping product %d', $this->getProduct()->getId()));
66
+
67
  $this->_beforeMap();
68
  $rows = $this->_map();
69
  $this->_afterMap($rows);
70
 
71
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Map for product %d: %s', $this->getProduct()->getId(), json_encode($rows)));
72
+
73
  return $rows;
74
  }
75
 
266
 
267
  $store = Mage::app()->getStore($this->getStoreCode());
268
 
269
+ // Return price converted to store currency
270
+ return Mage::helper('core')->currencyByStore($price, $store, false, false);
 
 
 
271
  }
272
 
273
  protected function mapFieldPrice()
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.7
10
  */
11
 
12
  /**
13
  * Associated Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  /**
13
  * Bundle Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  /**
13
  * Configurable Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  /**
13
  * Downloadable Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  /**
13
  * Grouped Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  /**
13
  * Simple Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  /**
13
  * Virtual Product Map Model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
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.8
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.7
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.8
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.7
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.8
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.7
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.8
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.7
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Feed
@@ -18,6 +18,18 @@ class Doofinder_Feed_Model_Observers_Feed
18
 
19
  private $productCount;
20
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
  public function updateSearchEngineIndexes($observer) {
23
 
@@ -77,6 +89,8 @@ class Doofinder_Feed_Model_Observers_Feed
77
 
78
  $generator = Mage::getModel('doofinder_feed/generator', $options);
79
 
 
 
80
  $xmlData = $generator->run();
81
 
82
  if ($xmlData) {
@@ -89,6 +103,7 @@ class Doofinder_Feed_Model_Observers_Feed
89
  updated for
90
  this store view. To fix this problem set HashID for a given stor view or disable Internal Search in Doofinder
91
  Search Configuration.', $this->storeCode);
 
92
  Mage::getSingleton('adminhtml/session')->addWarning($warning);
93
  continue;
94
  }
@@ -98,6 +113,7 @@ class Doofinder_Feed_Model_Observers_Feed
98
  // Check if search engine exists and skip foreach iteration if not.
99
  if (!$searchEngine) {
100
  $error = sprintf('Search engine with HashID %s doesn\'t exists. Please, check your configuration.', $hashId);
 
101
  Mage::getSingleton('adminhtml/session')->addError($error);
102
  continue;
103
  }
@@ -105,19 +121,21 @@ class Doofinder_Feed_Model_Observers_Feed
105
  // Declare array of products to update
106
  $products = array();
107
  foreach ($rss->channel->item as $item) {
108
- $product = array();
109
  foreach ($item as $key => $value) {
110
- $product[$key] = (string)$value;
111
  }
112
- $products[] = $product;
113
  }
114
- if (count($products))
115
  $searchEngine->updateItems('product', $products);
116
-
 
 
117
  }
118
- }
119
-
120
 
 
 
121
  }
122
 
123
  /**
@@ -136,12 +154,16 @@ class Doofinder_Feed_Model_Observers_Feed
136
 
137
  // Create lock file
138
  if (!$remove) {
 
 
139
  if (file_exists($lockFilepath)) {
140
  Mage::throwException($helper->__('Process for store %s is already locked', $process->getStoreCode()));
141
  }
142
 
143
  touch($lockFilepath);
144
  } else {
 
 
145
  unlink($lockFilepath);
146
  }
147
  }
@@ -174,22 +196,25 @@ class Doofinder_Feed_Model_Observers_Feed
174
  $process = $collection->fetchItem();
175
 
176
  if (!$process || !$process->getId()) {
 
177
  return;
178
  }
179
 
180
- // Lock process
181
- $this->lockProcess($process);
182
 
183
- // Get store code
184
- $this->storeCode = $process->getStoreCode();
 
185
 
186
- // Set store context
187
- Mage::app()->setCurrentStore($this->storeCode);
188
 
189
- // Get store config
190
- $this->config = $helper->getStoreConfig($this->storeCode);
 
 
 
191
 
192
- try {
193
  // Clear out the message
194
  $process->setMessage($helper::MSG_EMPTY);
195
 
@@ -203,6 +228,9 @@ class Doofinder_Feed_Model_Observers_Feed
203
  $path = $helper->getFeedPath($this->storeCode);
204
  $tmpPath = $helper->getFeedTemporaryPath($this->storeCode);
205
 
 
 
 
206
  // Get job code
207
  $jobCode = $helper::JOB_CODE;
208
 
@@ -220,19 +248,23 @@ class Doofinder_Feed_Model_Observers_Feed
220
 
221
  $generator = Mage::getModel('doofinder_feed/generator', $options);
222
 
223
- $xmlData = $generator->run();
 
 
 
 
224
 
225
  // If there were errors log them
226
  if ($errors = $generator->getErrors()) {
227
  $process->setErrorStack($process->getErrorStack() + count($errors));
228
 
229
  foreach ($errors as $error) {
230
- Mage::helper('doofinder_feed/log')->log($process, Doofinder_Feed_Helper_Log::ERROR, $error);
231
  }
232
  }
233
 
234
  $message = $helper->__('Processed products with ids in range %d - %d', $offset + 1, $generator->getLastProcessedProductId());
235
- Mage::helper('doofinder_feed/log')->log($process, Doofinder_Feed_Helper_Log::STATUS, $message);
236
 
237
  // If there is new data append to xml.tmp else convert into xml
238
  if ($xmlData) {
@@ -250,7 +282,7 @@ class Doofinder_Feed_Model_Observers_Feed
250
 
251
  $this->productCount = $generator->getProductCount();
252
  } else {
253
- Mage::helper('doofinder_feed/log')->log($process, Doofinder_Feed_Helper_Log::WARNING, $helper->__('No data added to feed'));
254
  }
255
 
256
  // Set process offset and progress
@@ -260,7 +292,7 @@ class Doofinder_Feed_Model_Observers_Feed
260
  if (!$generator->isFeedDone()) {
261
  $helper->createNewSchedule($process);
262
  } else {
263
- Mage::helper('doofinder_feed/log')->log($process, Doofinder_Feed_Helper_Log::STATUS, $helper->__('Feed generation completed'));
264
 
265
  if (!rename($tmpPath, $path)) {
266
  Mage::throwException($helper->__("Cannot rename {$tmpPath} to {$path}"));
@@ -271,7 +303,7 @@ class Doofinder_Feed_Model_Observers_Feed
271
  }
272
 
273
  } catch (Exception $e) {
274
- Mage::helper('doofinder_feed/log')->log($process, Doofinder_Feed_Helper_Log::ERROR, $e->getMessage());
275
  $process->setErrorStack($process->getErrorStack() + 1);
276
  $process->setMessage('#error#' . $e->getMessage());
277
  $helper->createNewSchedule($process);
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.8
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Feed
18
 
19
  private $productCount;
20
 
21
+ /**
22
+ * @var Doofinder_Feed_Helper_Log
23
+ */
24
+ protected $_log;
25
+
26
+ /**
27
+ * Initialize log
28
+ */
29
+ public function __construct()
30
+ {
31
+ $this->_log = Mage::helper('doofinder_feed/log');
32
+ }
33
 
34
  public function updateSearchEngineIndexes($observer) {
35
 
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) {
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
  }
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
  }
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
 
141
  /**
154
 
155
  // Create lock file
156
  if (!$remove) {
157
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Locking cron process for store %s', $process->getStoreCode()));
158
+
159
  if (file_exists($lockFilepath)) {
160
  Mage::throwException($helper->__('Process for store %s is already locked', $process->getStoreCode()));
161
  }
162
 
163
  touch($lockFilepath);
164
  } else {
165
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Unlocking cron process for store %s locked', $process->getStoreCode()));
166
+
167
  unlink($lockFilepath);
168
  }
169
  }
196
  $process = $collection->fetchItem();
197
 
198
  if (!$process || !$process->getId()) {
199
+ $this->_log->debug('No active cron processes');
200
  return;
201
  }
202
 
203
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Starting cron process for store %s', $process->getStoreCode()));
 
204
 
205
+ try {
206
+ // Lock process
207
+ $this->lockProcess($process);
208
 
209
+ // Get store code
210
+ $this->storeCode = $process->getStoreCode();
211
 
212
+ // Set store context
213
+ Mage::app()->setCurrentStore($this->storeCode);
214
+
215
+ // Get store config
216
+ $this->config = $helper->getStoreConfig($this->storeCode);
217
 
 
218
  // Clear out the message
219
  $process->setMessage($helper::MSG_EMPTY);
220
 
228
  $path = $helper->getFeedPath($this->storeCode);
229
  $tmpPath = $helper->getFeedTemporaryPath($this->storeCode);
230
 
231
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Feed path for store %s: ', $process->getStoreCode(), $path));
232
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Temporary feed path for store %s: ', $process->getStoreCode(), $path));
233
+
234
  // Get job code
235
  $jobCode = $helper::JOB_CODE;
236
 
248
 
249
  $generator = Mage::getModel('doofinder_feed/generator', $options);
250
 
251
+ try {
252
+ $xmlData = $generator->run();
253
+ } finally {
254
+ $this->_log->_debugEnabled && $this->_log->debug(sprintf('Generator run failed with errors: %s', json_encode($generator->getErrors())));
255
+ }
256
 
257
  // If there were errors log them
258
  if ($errors = $generator->getErrors()) {
259
  $process->setErrorStack($process->getErrorStack() + count($errors));
260
 
261
  foreach ($errors as $error) {
262
+ $this->_log->log($process, Doofinder_Feed_Helper_Log::ERROR, $error, false);
263
  }
264
  }
265
 
266
  $message = $helper->__('Processed products with ids in range %d - %d', $offset + 1, $generator->getLastProcessedProductId());
267
+ $this->_log->log($process, Doofinder_Feed_Helper_Log::STATUS, $message);
268
 
269
  // If there is new data append to xml.tmp else convert into xml
270
  if ($xmlData) {
282
 
283
  $this->productCount = $generator->getProductCount();
284
  } else {
285
+ $this->_log->log($process, Doofinder_Feed_Helper_Log::WARNING, $helper->__('No data added to feed'));
286
  }
287
 
288
  // Set process offset and progress
292
  if (!$generator->isFeedDone()) {
293
  $helper->createNewSchedule($process);
294
  } else {
295
+ $this->_log->log($process, Doofinder_Feed_Helper_Log::STATUS, $helper->__('Feed generation completed'));
296
 
297
  if (!rename($tmpPath, $path)) {
298
  Mage::throwException($helper->__("Cannot rename {$tmpPath} to {$path}"));
303
  }
304
 
305
  } catch (Exception $e) {
306
+ $this->_log->log($process, Doofinder_Feed_Helper_Log::ERROR, $e->getMessage());
307
  $process->setErrorStack($process->getErrorStack() + 1);
308
  $process->setMessage('#error#' . $e->getMessage());
309
  $helper->createNewSchedule($process);
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.7
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Logs
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.8
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.7
10
  */
11
 
12
  class Doofinder_Feed_Model_Observers_Schedule
6
  /**
7
  * @category Models
8
  * @package Doofinder_Feed
9
+ * @version 1.8.8
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.7
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.8
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.7
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.8
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.7
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.8
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.7
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Source_Feed_Pricetaxmode
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
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.7
10
  */
11
 
12
  class Doofinder_Feed_Model_System_Config_Source_Product_Attributes
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
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.7
10
  */
11
 
12
  /**
13
  * Tools model for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  class Doofinder_Feed_DoofinderFeedFeedController extends Mage_Adminhtml_Controller_Action
@@ -40,4 +40,29 @@ class Doofinder_Feed_DoofinderFeedFeedController extends Mage_Adminhtml_Controll
40
 
41
  $this->getResponse()->setBody('Feed generation has been scheduled.');
42
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  }
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
40
 
41
  $this->getResponse()->setBody('Feed generation has been scheduled.');
42
  }
43
+
44
+ /**
45
+ * Remove feed lock action
46
+ */
47
+ public function removeLockAction()
48
+ {
49
+ $response = $this->getResponse();
50
+ $storeCode = $this->getRequest()->getParam('store', false);
51
+
52
+ if (!$storeCode) {
53
+ $response->setBody('No store code given.');
54
+ return;
55
+ }
56
+
57
+ $lockPath = Mage::helper('doofinder_feed')->getFeedLockPath($storeCode);
58
+
59
+ if (file_exists($lockPath)) {
60
+ unlink($lockPath);
61
+ } else {
62
+ $response->setBody('Lock file not exists.');
63
+ return;
64
+ }
65
+
66
+ $response->setBody('Feed lock file has been removed.');
67
+ }
68
  }
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.7
10
  */
11
 
12
  class Doofinder_Feed_DoofinderFeedLogController extends Mage_Adminhtml_Controller_Action
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
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.7
10
  */
11
 
12
  /**
13
  * Feed controller for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
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.7
10
  */
11
 
12
  /**
13
  * Index controller for Doofinder Feed
14
  *
15
- * @version 1.8.7
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.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
app/code/community/Doofinder/Feed/etc/config.xml CHANGED
@@ -3,7 +3,7 @@
3
 
4
  <modules>
5
  <Doofinder_Feed>
6
- <version>1.8.7</version>
7
  </Doofinder_Feed>
8
  </modules>
9
  <global>
@@ -254,6 +254,7 @@
254
  <atomic_updates_enabled>0</atomic_updates_enabled>
255
  <categories_in_navigation>0</categories_in_navigation>
256
  <price_tax_mode>0</price_tax_mode>
 
257
  </feed_settings>
258
  <attributes_mapping>
259
  <id>df_directive_id</id>
3
 
4
  <modules>
5
  <Doofinder_Feed>
6
+ <version>1.8.8</version>
7
  </Doofinder_Feed>
8
  </modules>
9
  <global>
254
  <atomic_updates_enabled>0</atomic_updates_enabled>
255
  <categories_in_navigation>0</categories_in_navigation>
256
  <price_tax_mode>0</price_tax_mode>
257
+ <debug>0</debug>
258
  </feed_settings>
259
  <attributes_mapping>
260
  <id>df_directive_id</id>
app/code/community/Doofinder/Feed/etc/system.xml CHANGED
@@ -248,6 +248,16 @@
248
  <show_in_website>0</show_in_website>
249
  <show_in_store>1</show_in_store>
250
  </categories_in_navigation>
 
 
 
 
 
 
 
 
 
 
251
  </fields>
252
  </feed_settings>
253
 
@@ -423,6 +433,25 @@
423
  </view_log>
424
  </fields>
425
  </panel>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  </groups>
427
  </doofinder_cron>
428
  <doofinder_search translate="label" module="doofinder_feed">
248
  <show_in_website>0</show_in_website>
249
  <show_in_store>1</show_in_store>
250
  </categories_in_navigation>
251
+ <debug>
252
+ <label>Debug</label>
253
+ <frontend_type>select</frontend_type>
254
+ <comment>Debug mode with intensively verbose logging. Use with care.</comment>
255
+ <source_model>adminhtml/system_config_source_yesno</source_model>
256
+ <sort_order>12</sort_order>
257
+ <show_in_default>1</show_in_default>
258
+ <show_in_website>0</show_in_website>
259
+ <show_in_store>1</show_in_store>
260
+ </debug>
261
  </fields>
262
  </feed_settings>
263
 
433
  </view_log>
434
  </fields>
435
  </panel>
436
+ <advanced translate="label">
437
+ <label>Advanced</label>
438
+ <expanded>false</expanded>
439
+ <frontend_type>text</frontend_type>
440
+ <sort_order>40</sort_order>
441
+ <show_in_default>1</show_in_default>
442
+ <show_in_website>0</show_in_website>
443
+ <show_in_store>1</show_in_store>
444
+ <fields>
445
+ <locks>
446
+ <label>Locks</label>
447
+ <frontend_model>doofinder_feed/settings_locks</frontend_model>
448
+ <sort_order>10</sort_order>
449
+ <show_in_default>1</show_in_default>
450
+ <show_in_website>0</show_in_website>
451
+ <show_in_store>1</show_in_store>
452
+ </locks>
453
+ </fields>
454
+ </advanced>
455
  </groups>
456
  </doofinder_cron>
457
  <doofinder_search translate="label" module="doofinder_feed">
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Doofinder_Feed</name>
4
- <version>1.8.7</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>Fixed bug in price export.</notes>
52
  <authors><author><name>Carlos Escribano Rey</name><user>doofinder</user><email>carlos@doofinder.com</email></author></authors>
53
- <date>2017-05-23</date>
54
- <time>10:16:29</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="73e6de491e775801dc62da5dc2e89d3d"/></dir><dir name="Map"><file name="Additional.php" hash="b396670a743b827f193525002fdd8607"/></dir></dir><file name="Integration.php" hash="8648a9589ae0249500edb3ac0e79e652"/><dir name="Settings"><dir name="Buttons"><file name="Generate.php" hash="822d757b72299a2dc4b6cf1f1daab225"/><file name="ViewLog.php" hash="549130cc58c360fb0c180fbdaec59fa4"/></dir><dir name="Panel"><file name="Cron.php" hash="e93e0471544eef8d6cc1ea5c2a8037dd"/><file name="Crondescription.php" hash="5daa900c57fd0c3e652ac91dd9d060c9"/><file name="Datetime.php" hash="e0ca50653124d283ec7b2be0bd266581"/><file name="Description.php" hash="b1629643743b11c778926563156b17bc"/><file name="File.php" hash="bf85f22e336b22817631ae050d673a88"/><file name="Hashdescription.php" hash="707aa2f0eff7a1e170e6355787e09e84"/><file name="Layerdescription.php" hash="348805ce191a4bdbe847d0e8e7ae4752"/><file name="Message.php" hash="3c6202dc6540fcc48adc82bfff93a13f"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="004973209321123329f84dba15c076da"/><file name="Log.php" hash="ba97e542e216c4e269963c37db533b42"/><file name="Search.php" hash="adedec93e07dadb8edfcac8dd74fa07c"/><file name="Tax.php" hash="3399db1e5755d2879702c00d71c5386a"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="a1472bdc546f6c0033eb99ee341981b0"/></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="e5910a0c6cb8f0e34a5fe7348cea2538"/><file name="Cron.php" hash="e5f98d6dddbc478298a067310c22aa3f"/><file name="Generator.php" hash="4a6893b0355089cb16e4b0275821fc25"/><file name="Log.php" hash="a347c3da70f76a5522a2642d697585e5"/><dir name="Map"><dir name="Product"><file name="Abstract.php" hash="cc957246b10554f68e1114f192d8b751"/><file name="Associated.php" hash="e9f24bf2782b881547a6b33d9b61ce02"/><file name="Bundle.php" hash="c6cadd4c1293ec6189ea74d178311759"/><file name="Configurable.php" hash="56df12620996ae1d03b5108b9b861f10"/><file name="Downloadable.php" hash="464dd3cf4b39f4c5fca554870a7e545c"/><file name="Grouped.php" hash="058d5c383ff4ac4edfc9a61eb6c4cbd6"/><file name="Simple.php" hash="0a9e03d2ff62935f82d52f6334636d5b"/><file name="Virtual.php" hash="0a75f600182622fdf56c5befaf371d92"/></dir></dir><dir name="Mysql4"><dir name="Cron"><file name="Collection.php" hash="c22785d02e838b750186f853d81083da"/></dir><file name="Cron.php" hash="6eeb775471cf6159796498af8e254d91"/><dir name="Log"><file name="Collection.php" hash="b4a0c6f4b59f25a2c16dd279248ed123"/></dir><file name="Log.php" hash="c575a7da1032c57b237af9be0bb5863c"/></dir><dir name="Observers"><file name="Feed.php" hash="bb4c1377102b10635f7bc13eef08ce86"/><file name="Logs.php" hash="2470d5946a920019e420389df39e4a03"/><file name="Schedule.php" hash="bfa416017aa0d5ae2334316445397097"/></dir><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="1a4098d5b5387ae0189be2c03486652c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Map"><file name="Additional.php" hash="7186aaa0d7154883998e2a4f848ca52b"/></dir><file name="Password.php" hash="b52b0e16c0ae02fd528bf5c567a7a8b5"/><dir name="Total"><file name="Limit.php" hash="a23092ea72cbe81e2779b086ad055bf6"/></dir></dir><file name="Reset.php" hash="e4ae818e643e78b5ce927555bbb2a1a8"/><dir name="Source"><dir name="Feed"><file name="Pricetaxmode.php" hash="dde5e6c2e3156010800457446223b686"/></dir><dir name="Product"><file name="Attributes.php" hash="290a6cc8025e5b3d7adec0c17f75b99e"/></dir></dir></dir></dir><file name="Tools.php" hash="8b9657b1df74aa2d84ee7144a839f2b6"/></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="5509aff6d9f01ae333810c7a6d4127fc"/><file name="DoofinderFeedLogController.php" hash="c173384508d60d2be279a27366470fb0"/><file name="FeedController.php" hash="b71e80d9fe5724ee10f83ebf543dc2fd"/><file name="IndexController.php" hash="a2f247bde58ea9515b842d9609974afc"/></dir><dir name="etc"><file name="config.xml" hash="3e41b3b15faf01a847e0c5aac5932f7e"/><file name="system.xml" hash="f7138fa707defa46ec4a8433b6e24624"/></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.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
  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>