Flagbit_Factfinder - Version 4.1.13

Version Notes

- Fixed bug with attribute name with space character in slider #127
- Improved attributes product export #121
- Fixed bug with static fields not being exported #190
- Improved export performance
- Add possibility to use any JSONP callback #145
- multiple small bugfixes (tracking, export, suggest)

Download this release

Release Info

Developer FACTFinder
Extension Flagbit_Factfinder
Version 4.1.13
Comparing to
See all releases


Code changes from version 4.1.12 to 4.1.13

Files changed (103) hide show
  1. app/code/community/FACTFinder/Asn/Helper/Data.php +25 -1
  2. app/code/community/FACTFinder/Asn/Model/Handler/Search.php +3 -2
  3. app/code/community/FACTFinder/Campaigns/Block/Feedback/Product.php +15 -0
  4. app/code/community/FACTFinder/Campaigns/Block/Pushed/Product.php +15 -0
  5. app/code/community/FACTFinder/Campaigns/Model/Observer.php +1 -1
  6. app/code/community/FACTFinder/Core/Block/Adminhtml/Exportlink.php +2 -2
  7. app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Attributes.php +63 -23
  8. app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/{Attribute.php → Column/Attribute.php} +17 -3
  9. app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Column/Type.php +72 -0
  10. app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Column/Unit.php +80 -0
  11. app/code/community/FACTFinder/Core/Block/Catalog/Product/List/Toolbar.php +5 -3
  12. app/code/community/FACTFinder/Core/Block/Catalog/Product/Pager.php +3 -3
  13. app/code/community/FACTFinder/Core/Block/CatalogSearch/Layer.php +1 -1
  14. app/code/community/FACTFinder/Core/Block/EnterpriseSearch/Layer.php +1 -1
  15. app/code/community/FACTFinder/Core/Helper/Backend.php +2 -2
  16. app/code/community/FACTFinder/Core/Helper/Data.php +2 -2
  17. app/code/community/FACTFinder/Core/Helper/Debug.php +2 -2
  18. app/code/community/FACTFinder/Core/Helper/Export.php +15 -1
  19. app/code/community/FACTFinder/Core/Helper/Rewrite.php +1 -1
  20. app/code/community/FACTFinder/Core/Helper/Search.php +2 -2
  21. app/code/community/FACTFinder/Core/Model/Autoloader.php +2 -2
  22. app/code/community/FACTFinder/Core/Model/CatalogSearch/Layer.php +2 -2
  23. app/code/community/FACTFinder/Core/Model/CatalogSearch/Query.php +1 -1
  24. app/code/community/FACTFinder/Core/Model/Export/Observer.php +1 -1
  25. app/code/community/FACTFinder/Core/Model/Export/Semaphore.php +2 -2
  26. app/code/community/FACTFinder/Core/Model/Export/Type/Price.php +8 -4
  27. app/code/community/FACTFinder/Core/Model/Export/Type/Product.php +148 -564
  28. app/code/community/FACTFinder/Core/Model/Export/Type/Product/Attribute.php +646 -0
  29. app/code/community/FACTFinder/Core/Model/Export/Type/Stock.php +8 -4
  30. app/code/community/FACTFinder/Core/Model/Facade.php +27 -3
  31. app/code/community/FACTFinder/Core/Model/File.php +2 -2
  32. app/code/community/FACTFinder/Core/Model/File/Validator/Abstract.php +3 -3
  33. app/code/community/FACTFinder/Core/Model/Ftp.php +1 -1
  34. app/code/community/FACTFinder/Core/Model/Handler/Abstract.php +2 -2
  35. app/code/community/FACTFinder/Core/Model/Handler/Search.php +6 -6
  36. app/code/community/FACTFinder/Core/Model/Handler/Status.php +2 -2
  37. app/code/community/FACTFinder/Core/Model/Observer.php +2 -2
  38. app/code/community/FACTFinder/Core/Model/Resource/Attribute.php +101 -0
  39. app/code/community/FACTFinder/Core/Model/Resource/Fulltext.php +2 -2
  40. app/code/community/FACTFinder/Core/Model/Resource/{Export.php → Product.php} +3 -84
  41. app/code/community/FACTFinder/Core/Model/Resource/Search/Collection.php +2 -2
  42. app/code/community/FACTFinder/Core/Model/Resource/Search/Engine.php +2 -2
  43. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Attributes.php +2 -2
  44. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Cron.php +2 -2
  45. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Enabled.php +2 -2
  46. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Engine.php +1 -1
  47. app/code/community/FACTFinder/Core/Model/System/Config/Source/Authtype.php +2 -2
  48. app/code/community/FACTFinder/Core/Model/System/Config/Source/Engine.php +1 -1
  49. app/code/community/FACTFinder/Core/Model/System/Config/Source/Identifier.php +2 -2
  50. app/code/community/FACTFinder/Core/Model/System/Config/Source/Protocol.php +2 -2
  51. app/code/community/FACTFinder/Core/Model/Url.php +1 -1
  52. app/code/community/FACTFinder/Core/controllers/ExportController.php +2 -2
  53. app/code/community/FACTFinder/Core/etc/adminhtml.xml +1 -1
  54. app/code/community/FACTFinder/Core/etc/config.xml +1 -1
  55. app/code/community/FACTFinder/Core/etc/system.xml +22 -12
  56. app/code/community/FACTFinder/Suggest/Block/TopSearch.php +2 -2
  57. app/code/community/FACTFinder/Suggest/Block/XmlConnect/Catalog/Search/Suggest.php +2 -2
  58. app/code/community/FACTFinder/Suggest/Helper/Data.php +2 -2
  59. app/code/community/FACTFinder/Suggest/Model/Facade.php +2 -2
  60. app/code/community/FACTFinder/Suggest/Model/Handler/Suggest.php +7 -7
  61. app/code/community/FACTFinder/Suggest/Model/Observer.php +2 -2
  62. app/code/community/FACTFinder/Suggest/Model/Processor.php +20 -3
  63. app/code/community/FACTFinder/Suggest/Model/System/Config/Source/Imagetype.php +2 -2
  64. app/code/community/FACTFinder/Suggest/controllers/ProxyController.php +2 -2
  65. app/code/community/FACTFinder/Suggest/etc/config.xml +4 -1
  66. app/code/community/FACTFinder/Suggest/etc/system.xml +1 -1
  67. app/code/community/FACTFinder/Tagcloud/Block/TagCloud.php +2 -2
  68. app/code/community/FACTFinder/Tagcloud/Helper/Data.php +2 -2
  69. app/code/community/FACTFinder/Tagcloud/Model/Facade.php +2 -2
  70. app/code/community/FACTFinder/Tagcloud/Model/Handler/TagCloud.php +2 -2
  71. app/code/community/FACTFinder/Tagcloud/etc/config.xml +1 -1
  72. app/code/community/FACTFinder/Tracking/Block/Abstract.php +1 -1
  73. app/code/community/FACTFinder/Tracking/Block/Click.php +2 -2
  74. app/code/community/FACTFinder/Tracking/Block/Recommendation.php +2 -2
  75. app/code/community/FACTFinder/Tracking/Helper/Data.php +2 -2
  76. app/code/community/FACTFinder/Tracking/Model/Facade.php +2 -2
  77. app/code/community/FACTFinder/Tracking/Model/Handler/Tracking.php +2 -2
  78. app/code/community/FACTFinder/Tracking/Model/Observer.php +4 -3
  79. app/code/community/FACTFinder/Tracking/Model/Processor.php +2 -2
  80. app/code/community/FACTFinder/Tracking/Model/Queue.php +2 -2
  81. app/code/community/FACTFinder/Tracking/Model/Resource/Queue.php +2 -2
  82. app/code/community/FACTFinder/Tracking/Model/Resource/Queue/Collection.php +2 -2
  83. app/code/community/FACTFinder/Tracking/controllers/ProxyController.php +2 -2
  84. app/code/community/FACTFinder/Tracking/etc/config.xml +1 -1
  85. app/code/community/FACTFinder/Tracking/etc/system.xml +1 -1
  86. app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/install-1.0.0.php +1 -1
  87. app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-1.0.0-4.1.2.php +1 -1
  88. app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-4.1.11-4.1.12.php +1 -1
  89. app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-4.1.2-4.1.11.php +1 -1
  90. app/design/adminhtml/default/default/template/factfinder/core/system/config/form/field/attributes.phtml +183 -0
  91. app/design/frontend/base/default/layout/factfinder/core.xml +1 -1
  92. app/design/frontend/base/default/layout/factfinder/suggest.xml +1 -1
  93. app/design/frontend/base/default/layout/factfinder/tagcloud.xml +1 -1
  94. app/design/frontend/base/default/layout/factfinder/tracking.xml +1 -1
  95. app/design/frontend/base/default/template/factfinder/core/export/locked.phtml +1 -1
  96. app/design/frontend/base/default/template/factfinder/core/export/nofile.phtml +1 -1
  97. app/design/frontend/base/default/template/factfinder/suggest/advancedsuggest.phtml +1 -1
  98. app/design/frontend/base/default/template/factfinder/tracking/click.phtml +1 -1
  99. app/design/frontend/base/default/template/factfinder/tracking/recommendation.phtml +1 -1
  100. js/factfinder/suggest.js +2 -2
  101. js/factfinder/tracking.js +1 -1
  102. package.xml +12 -11
  103. skin/frontend/base/default/css/factfinder_suggest.css +2 -6
app/code/community/FACTFinder/Asn/Helper/Data.php CHANGED
@@ -44,7 +44,7 @@ class FACTFinder_Asn_Helper_Data extends Mage_Core_Helper_Abstract
44
 
45
  $parseUrl = parse_url($url);
46
  if (isset($parseUrl['query'])) {
47
- parse_str($parseUrl['query'], $queryParams);
48
  }
49
 
50
  // recover spaces
@@ -94,4 +94,28 @@ class FACTFinder_Asn_Helper_Data extends Mage_Core_Helper_Abstract
94
  }
95
 
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  }
44
 
45
  $parseUrl = parse_url($url);
46
  if (isset($parseUrl['query'])) {
47
+ $queryParams = $this->parseStr($parseUrl['query']);
48
  }
49
 
50
  // recover spaces
94
  }
95
 
96
 
97
+ /**
98
+ * Does practically the same as parse_str
99
+ * but does NOT underscore parameter names
100
+ *
101
+ * @param string $string
102
+ *
103
+ * @return array
104
+ *
105
+ */
106
+ public function parseStr($string)
107
+ {
108
+ $result = array();
109
+ $query = trim($string, '?&');
110
+ $query = explode('&', $query);
111
+
112
+ foreach ($query as $item) {
113
+ $item = explode('=', $item);
114
+ $result[urldecode(array_shift($item))] = urldecode(array_shift($item));
115
+ }
116
+
117
+ return $result;
118
+ }
119
+
120
+
121
  }
app/code/community/FACTFinder/Asn/Model/Handler/Search.php CHANGED
@@ -73,10 +73,11 @@ class FACTFinder_Asn_Model_Handler_Search extends FACTFinder_Core_Model_Handler_
73
  * Get Attribute Options Array from FactFinder FilterGroupItems
74
  *
75
  * @param FACTFinder\Data\FilterGroup $filterGroup
 
76
  *
77
  * @return array
78
  */
79
- protected function _getAttributeOptions(FACTFinder\Data\FilterGroup $filterGroup)
80
  {
81
  $attributeOptions = array();
82
 
@@ -98,7 +99,7 @@ class FACTFinder_Asn_Model_Handler_Search extends FACTFinder_Core_Model_Handler_
98
  }
99
 
100
  if ($filterGroup->isSliderStyle()) {
101
- $queryParams['filter' . $option->getFieldName()] = $filterValue;
102
  $attributeOptions[] = $this->_prepareSliderOption($option, $filterGroup, $queryParams);
103
  } else {
104
  if (!$option->getLabel() || $this->_isTopLevelNavigation($option, $currentCategoryPath)) {
73
  * Get Attribute Options Array from FactFinder FilterGroupItems
74
  *
75
  * @param FACTFinder\Data\FilterGroup $filterGroup
76
+ * @param string $unit
77
  *
78
  * @return array
79
  */
80
+ protected function _getAttributeOptions(FACTFinder\Data\FilterGroup $filterGroup, $unit = '')
81
  {
82
  $attributeOptions = array();
83
 
99
  }
100
 
101
  if ($filterGroup->isSliderStyle()) {
102
+ $queryParams[urldecode('filter' . $option->getFieldName())] = $filterValue;
103
  $attributeOptions[] = $this->_prepareSliderOption($option, $filterGroup, $queryParams);
104
  } else {
105
  if (!$option->getLabel() || $this->_isTopLevelNavigation($option, $currentCategoryPath)) {
app/code/community/FACTFinder/Campaigns/Block/Feedback/Product.php CHANGED
@@ -26,6 +26,21 @@ class FACTFinder_Campaigns_Block_Feedback_Product extends FACTFinder_Campaigns_B
26
  protected $_handlerModel = 'factfinder_campaigns/handler_product';
27
 
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /**
30
  * Check is the campign can be shown on product page
31
  *
26
  protected $_handlerModel = 'factfinder_campaigns/handler_product';
27
 
28
 
29
+ /**
30
+ * @return Mage_Core_Model_Abstract
31
+ */
32
+ protected function _getHandler()
33
+ {
34
+ $product = Mage::registry('current_product');
35
+ if ($product) {
36
+ $productId = $product->getData(Mage::helper('factfinder_campaigns')->getIdFieldName());
37
+ return Mage::getSingleton($this->_handlerModel, array($productId));
38
+ }
39
+
40
+ return parent::_getHandler();
41
+ }
42
+
43
+
44
  /**
45
  * Check is the campign can be shown on product page
46
  *
app/code/community/FACTFinder/Campaigns/Block/Pushed/Product.php CHANGED
@@ -26,6 +26,21 @@ class FACTFinder_Campaigns_Block_Pushed_Product extends FACTFinder_Campaigns_Blo
26
  protected $_handlerModel = 'factfinder_campaigns/handler_product';
27
 
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /**
30
  * Check is the campign can be shown on product page
31
  *
26
  protected $_handlerModel = 'factfinder_campaigns/handler_product';
27
 
28
 
29
+ /**
30
+ * @return Mage_Core_Model_Abstract
31
+ */
32
+ protected function _getHandler()
33
+ {
34
+ $product = Mage::registry('current_product');
35
+ if ($product) {
36
+ $productId = $product->getData(Mage::helper('factfinder_campaigns')->getIdFieldName());
37
+ return Mage::getSingleton($this->_handlerModel, array($productId));
38
+ }
39
+
40
+ return parent::_getHandler();
41
+ }
42
+
43
+
44
  /**
45
  * Check is the campign can be shown on product page
46
  *
app/code/community/FACTFinder/Campaigns/Model/Observer.php CHANGED
@@ -45,7 +45,7 @@ class FACTFinder_Campaigns_Model_Observer
45
  if (Mage::registry('current_product')) {
46
  $product = Mage::registry('current_product');
47
  $ids = array($product->getData(Mage::helper('factfinder_campaigns')->getIdFieldName()));
48
- $handler = Mage::getModel('factfinder_campaigns/handler_product', $ids);
49
  } elseif (Mage::helper('factfinder/search')->getIsOnSearchPage()) {
50
  $handler = Mage::getSingleton('factfinder_campaigns/handler_search');
51
  } else {
45
  if (Mage::registry('current_product')) {
46
  $product = Mage::registry('current_product');
47
  $ids = array($product->getData(Mage::helper('factfinder_campaigns')->getIdFieldName()));
48
+ $handler = Mage::getSingleton('factfinder_campaigns/handler_product', $ids);
49
  } elseif (Mage::helper('factfinder/search')->getIsOnSearchPage()) {
50
  $handler = Mage::getSingleton('factfinder_campaigns/handler_search');
51
  } else {
app/code/community/FACTFinder/Core/Block/Adminhtml/Exportlink.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Attributes.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,37 +17,28 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Form_Field_Attributes
25
  extends Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstract
26
  {
 
 
 
27
 
28
- /**
29
- * @var FACTFinder_Core_Block_Adminhtml_Form_Field_Attribute
30
- */
31
- protected $_attributeRenderer;
32
 
 
33
 
34
- /**
35
- * Retrieve group column renderer
36
- *
37
- * @return FACTFinder_Core_Block_Adminhtml_Form_Field_Attribute
38
- */
39
- protected function _getAttributeRenderer()
40
  {
41
- if (!$this->_attributeRenderer) {
42
- $this->_attributeRenderer = $this->getLayout()->createBlock(
43
- 'factfinder/adminhtml_form_field_attribute', '',
44
- array('is_render_to_js_template' => true)
45
- );
46
- $this->_attributeRenderer->setClass('attribute_select');
47
- $this->_attributeRenderer->setExtraParams('style="width:200px"');
48
  }
49
-
50
- return $this->_attributeRenderer;
51
  }
52
 
53
 
@@ -60,7 +51,17 @@ class FACTFinder_Core_Block_Adminhtml_Form_Field_Attributes
60
  {
61
  $this->addColumn('attribute', array(
62
  'label' => Mage::helper('factfinder')->__('Attribute'),
63
- 'renderer' => $this->_getAttributeRenderer(),
 
 
 
 
 
 
 
 
 
 
64
  ));
65
 
66
  $this->_addAfter = false;
@@ -78,9 +79,48 @@ class FACTFinder_Core_Block_Adminhtml_Form_Field_Attributes
78
  protected function _prepareArrayRow(Varien_Object $row)
79
  {
80
  $row->setData(
81
- 'option_extra_attr_' . $this->_getAttributeRenderer()->calcOptionHash($row->getData('attribute')),
 
82
  'selected="selected"'
83
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
 
86
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Form_Field_Attributes
25
  extends Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstract
26
  {
27
+ const RENDERER_ATTRIBUTE = 'factfinder/adminhtml_form_field_column_attribute';
28
+ const RENDERER_TYPE = 'factfinder/adminhtml_form_field_column_type';
29
+ const RENDERER_UNIT = 'factfinder/adminhtml_form_field_column_unit';
30
 
31
+ protected $_columnRenderers = array();
 
 
 
32
 
33
+ protected $_template = 'factfinder/core/system/config/form/field/attributes.phtml';
34
 
35
+
36
+ public function __construct()
 
 
 
 
37
  {
38
+ if (!$this->_addButtonLabel) {
39
+ $this->_addButtonLabel = Mage::helper('adminhtml')->__('Add');
 
 
 
 
 
40
  }
41
+ parent::__construct();
 
42
  }
43
 
44
 
51
  {
52
  $this->addColumn('attribute', array(
53
  'label' => Mage::helper('factfinder')->__('Attribute'),
54
+ 'renderer' => $this->_getRenderer(self::RENDERER_ATTRIBUTE),
55
+ ));
56
+
57
+ $this->addColumn('type', array(
58
+ 'label' => Mage::helper('factfinder')->__('Data Type'),
59
+ 'renderer' => $this->_getRenderer(self::RENDERER_TYPE),
60
+ ));
61
+
62
+ $this->addColumn('unit', array(
63
+ 'label' => Mage::helper('factfinder')->__('Unit'),
64
+ 'renderer' => $this->_getRenderer(self::RENDERER_UNIT),
65
  ));
66
 
67
  $this->_addAfter = false;
79
  protected function _prepareArrayRow(Varien_Object $row)
80
  {
81
  $row->setData(
82
+ 'option_extra_attr_' . $this->_getRenderer(self::RENDERER_TYPE)
83
+ ->calcOptionHash($row->getData('type')),
84
  'selected="selected"'
85
  );
86
+ $row->setData(
87
+ 'option_extra_attr_' . $this->_getRenderer(self::RENDERER_ATTRIBUTE)
88
+ ->calcOptionHash($row->getData('attribute')),
89
+ 'selected="selected"'
90
+ );
91
+ }
92
+
93
+
94
+ /**
95
+ * @param $blockType
96
+ * @param array $data
97
+ *
98
+ * @return Mage_Core_Block_Abstract
99
+ */
100
+ protected function _getRenderer($blockType, $data = array())
101
+ {
102
+ if (!isset($this->_columnRenderers[$blockType])) {
103
+ $renderer = $this->getLayout()->createBlock(
104
+ $blockType, '',
105
+ array('is_render_to_js_template' => true)
106
+ );
107
+
108
+ foreach ($data as $key => $value) {
109
+ $renderer->setData($key, $value);
110
+ }
111
+
112
+ $this->_columnRenderers[$blockType] = $renderer;
113
+ }
114
+
115
+ return $this->_columnRenderers[$blockType];
116
+ }
117
+
118
+
119
+ protected function _toHtml()
120
+ {
121
+ $html = parent::_toHtml();
122
+
123
+ return $this->_afterToHtml($html);
124
  }
125
 
126
 
app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/{Attribute.php → Column/Attribute.php} RENAMED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,13 +17,27 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
- class FACTFinder_Core_Block_Adminhtml_Form_Field_Attribute extends Mage_Core_Block_Html_Select
25
  {
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  /**
28
  * Attributes cache
29
  *
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
+ class FACTFinder_Core_Block_Adminhtml_Form_Field_Column_Attribute extends Mage_Core_Block_Html_Select
25
  {
26
 
27
+ /**
28
+ * Set initial options
29
+ */
30
+ protected function _construct()
31
+ {
32
+ parent::_construct();
33
+
34
+ $this->setId('attibute_select')
35
+ ->setTitle('attribute')
36
+ ->setClass('attribute_select')
37
+ ;
38
+ }
39
+
40
+
41
  /**
42
  * Attributes cache
43
  *
app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Column/Type.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Core
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+
14
+ /**
15
+ * Class FACTFinder_Core_Block_Adminhtml_Form_Field_Attribute
16
+ *
17
+ * @category Mage
18
+ * @package FACTFinder_Core
19
+ * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
+ * @link http://www.flagbit.de
23
+ */
24
+ class FACTFinder_Core_Block_Adminhtml_Form_Field_Column_Type extends Mage_Core_Block_Html_Select
25
+ {
26
+
27
+ /**
28
+ * Set initial options
29
+ */
30
+ protected function _construct()
31
+ {
32
+ parent::_construct();
33
+
34
+ $this->setId('type_select')
35
+ ->setTitle('type')
36
+ ->setClass('type_select')
37
+ ;
38
+ }
39
+
40
+
41
+ /**
42
+ * Set name of the html input
43
+ *
44
+ * @param string $value
45
+ *
46
+ * @return mixed
47
+ */
48
+ public function setInputName($value)
49
+ {
50
+ return $this->setName($value);
51
+ }
52
+
53
+
54
+ /**
55
+ * Render block HTML
56
+ *
57
+ * @return string
58
+ */
59
+ public function _toHtml()
60
+ {
61
+ if (!$this->getOptions()) {
62
+ foreach (array('text' => 'Text', 'number' => 'Number') as $id => $label) {
63
+ $htmlLabel = htmlspecialchars($label, ENT_QUOTES);
64
+ $this->addOption($id, $htmlLabel);
65
+ }
66
+ }
67
+
68
+ return parent::_toHtml();
69
+ }
70
+
71
+
72
+ }
app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Column/Unit.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Core
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+
14
+ /**
15
+ * Class FACTFinder_Core_Block_Adminhtml_Form_Field_Attribute
16
+ *
17
+ * @category Mage
18
+ * @package FACTFinder_Core
19
+ * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
+ * @link http://www.flagbit.de
23
+ */
24
+ class FACTFinder_Core_Block_Adminhtml_Form_Field_Column_Unit extends Mage_Core_Block_Abstract
25
+ {
26
+
27
+ const COLUMN_NAME = 'unit';
28
+
29
+
30
+ /**
31
+ * @return void
32
+ */
33
+ protected function _construct()
34
+ {
35
+ parent::_construct();
36
+
37
+ $this->addData(array(
38
+ 'id' => 'attribute_unit',
39
+ 'name' => self::COLUMN_NAME,
40
+ 'title' => $this->__('Attribute Unit'),
41
+ 'class' => 'attribute_unit',
42
+ ));
43
+ }
44
+
45
+
46
+ /**
47
+ * Render HTML
48
+ *
49
+ * @return string
50
+ */
51
+ protected function _toHtml()
52
+ {
53
+ if (!$this->_beforeToHtml()) {
54
+ return '';
55
+ }
56
+
57
+ $html = '<input name="' . $this->getName() . '" id="' . $this->getId() . '" class="'
58
+ . $this->getClass() . '" title="' . $this->getTitle() . '" ' . $this->getExtraParams()
59
+ . 'value="#{' . self::COLUMN_NAME . '}">';
60
+
61
+ $html .= '</input>';
62
+
63
+ return $html;
64
+ }
65
+
66
+
67
+ /**
68
+ * Set name of the html input
69
+ *
70
+ * @param string $value
71
+ *
72
+ * @return mixed
73
+ */
74
+ public function setInputName($value)
75
+ {
76
+ return $this->setName($value);
77
+ }
78
+
79
+
80
+ }
app/code/community/FACTFinder/Core/Block/Catalog/Product/List/Toolbar.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
@@ -224,7 +224,9 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
224
 
225
  if (!isset($orders[$defaultOrder])) {
226
  $keys = array_keys($orders);
227
- $defaultOrder = $keys[0];
 
 
228
  }
229
 
230
  // the only change of this method is here
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
224
 
225
  if (!isset($orders[$defaultOrder])) {
226
  $keys = array_keys($orders);
227
+ if (isset($keys[0])) {
228
+ $defaultOrder = $keys[0];
229
+ }
230
  }
231
 
232
  // the only change of this method is here
app/code/community/FACTFinder/Core/Block/Catalog/Product/Pager.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
@@ -70,7 +70,7 @@ class FACTFinder_Core_Block_Catalog_Product_Pager extends Mage_Page_Block_Html_P
70
  return parent::getPagerUrl($params);
71
  }
72
 
73
- $pageNum = $params['p'];
74
 
75
  if (!isset($this->_pagingUrls[$pageNum])) {
76
  $this->_pagingUrls[$pageNum] = '';
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
70
  return parent::getPagerUrl($params);
71
  }
72
 
73
+ $pageNum = (isset($params['p']) ? $params['p'] : 0);
74
 
75
  if (!isset($this->_pagingUrls[$pageNum])) {
76
  $this->_pagingUrls[$pageNum] = '';
app/code/community/FACTFinder/Core/Block/CatalogSearch/Layer.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Core/Block/EnterpriseSearch/Layer.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Core/Helper/Backend.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Core/Helper/Data.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Helper/Debug.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Helper/Export.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
@@ -29,6 +29,7 @@ class FACTFinder_Core_Helper_Export extends Mage_Core_Helper_Abstract
29
  const EXPORT_URLS_IMAGES = 'urls';
30
  const OUT_OF_STOCK_PRODUCTS = 'out_of_stock_products';
31
  const VALIDATION_DISABLED = 'disabled_validation';
 
32
 
33
  /**
34
  * @var int
@@ -393,4 +394,17 @@ class FACTFinder_Core_Helper_Export extends Mage_Core_Helper_Abstract
393
  }
394
 
395
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  }
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
29
  const EXPORT_URLS_IMAGES = 'urls';
30
  const OUT_OF_STOCK_PRODUCTS = 'out_of_stock_products';
31
  const VALIDATION_DISABLED = 'disabled_validation';
32
+ const EXPLICIT_ATTRIBUTES = 'explicit_attributes';
33
 
34
  /**
35
  * @var int
394
  }
395
 
396
 
397
+ /**
398
+ * Check if explicit attribute type configuration should be used
399
+ *
400
+ * @param int $storeId
401
+ *
402
+ * @return bool
403
+ */
404
+ public function useExplicitAttributes($storeId = 0)
405
+ {
406
+ return (bool) $this->getExportConfigValue(self::EXPLICIT_ATTRIBUTES, $storeId);
407
+ }
408
+
409
+
410
  }
app/code/community/FACTFinder/Core/Helper/Rewrite.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Core/Helper/Search.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/Autoloader.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -20,7 +20,7 @@
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
25
  * @link http://www.flagbit.de
26
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
25
  * @link http://www.flagbit.de
26
  */
app/code/community/FACTFinder/Core/Model/CatalogSearch/Layer.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/CatalogSearch/Query.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Core/Model/Export/Observer.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Core/Model/Export/Semaphore.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
@@ -16,7 +16,7 @@
16
  * @category Mage
17
  * @package FACTFinder_Core
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
20
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
5
  * @category Mage
6
  * @package FACTFinder
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
16
  * @category Mage
17
  * @package FACTFinder_Core
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
20
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
app/code/community/FACTFinder/Core/Model/Export/Type/Price.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
@@ -86,7 +86,11 @@ class FACTFinder_Core_Model_Export_Type_Price extends Mage_Core_Model_Resource_D
86
  $dir = Mage::helper('factfinder/export')->getExportDirectory();
87
  $fileName = $this->getFilenameForStore($storeId);
88
  $this->_file = Mage::getModel('factfinder/file');
89
- $this->_file->setValidator(Mage::getModel(self::FILE_VALIDATOR));
 
 
 
 
90
  $this->_file->open($dir, $fileName);
91
  }
92
 
@@ -137,7 +141,7 @@ class FACTFinder_Core_Model_Export_Type_Price extends Mage_Core_Model_Resource_D
137
  $semaphore->release();
138
  }
139
 
140
- if (Mage::helper('factfinder/export')->isValidationEnabled($storeId) && !$this->_getFile($storeId)->isValid()) {
141
  return false;
142
  }
143
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
86
  $dir = Mage::helper('factfinder/export')->getExportDirectory();
87
  $fileName = $this->getFilenameForStore($storeId);
88
  $this->_file = Mage::getModel('factfinder/file');
89
+
90
+ if (Mage::helper('factfinder/export')->isValidationEnabled($storeId) ) {
91
+ $this->_file->setValidator(Mage::getModel(self::FILE_VALIDATOR));
92
+ }
93
+
94
  $this->_file->open($dir, $fileName);
95
  }
96
 
141
  $semaphore->release();
142
  }
143
 
144
+ if (!$this->_getFile($storeId)->isValid()) {
145
  return false;
146
  }
147
 
app/code/community/FACTFinder/Core/Model/Export/Type/Product.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -16,12 +16,12 @@
16
  *
17
  * This class provides the Product export
18
  *
19
- * @method getResource() FACTFinder_Core_Model_Resource_Export
20
  *
21
  * @category Mage
22
  * @package FACTFinder_Core
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
25
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
@@ -33,12 +33,6 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
33
  const CSV_DELIMITER = ';';
34
  const FILE_VALIDATOR = 'factfinder/file_validator_product';
35
 
36
- /**
37
- * Option ID to Value Mapping Array
38
- * @var mixed
39
- */
40
- protected $_optionIdToValue = null;
41
-
42
  /**
43
  * Products to Category Path Mapping
44
  *
@@ -56,26 +50,7 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
56
  * export attribute codes
57
  * @var mixed
58
  */
59
- protected $_exportAttributeCodes = null;
60
-
61
- /**
62
- * export attribute objects
63
- * @var mixed
64
- */
65
- protected $_exportAttributes = null;
66
-
67
- /**
68
- * helper to generate the image urls
69
- * @var Mage_Catalog_Helper_Image
70
- */
71
- protected $_imageHelper = null;
72
-
73
- /**
74
- * add CSV Row
75
- *
76
- * @param array $data
77
- */
78
- protected $_lines = array();
79
 
80
  /**
81
  * @var FACTFinder_Core_Model_File
@@ -96,9 +71,18 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
96
  );
97
 
98
  /**
99
- * @var
 
 
 
 
 
 
 
 
 
100
  */
101
- protected $_engine;
102
 
103
 
104
  /**
@@ -107,8 +91,7 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
107
  */
108
  protected function _construct()
109
  {
110
- $this->_init('factfinder/export');
111
- $this->_engine = Mage::helper('catalogsearch')->getEngine();
112
  }
113
 
114
 
@@ -150,35 +133,6 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
150
  }
151
 
152
 
153
- /**
154
- * get Option Text by Option ID
155
- *
156
- * @param int $optionId Option ID
157
- * @param int $storeId Store ID
158
- *
159
- * @return string
160
- */
161
- protected function _getAttributeOptionText($optionId, $storeId)
162
- {
163
- $value = '';
164
- if (intval($optionId)) {
165
- if ($this->_optionIdToValue === null) {
166
- /** @var Mage_Eav_Model_Resource_Entity_Attribute_Option_Collection $optionCollection */
167
- $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection');
168
- $optionCollection->setStoreFilter($storeId);
169
- $this->_optionIdToValue = array();
170
- foreach ($optionCollection as $option) {
171
- $this->_optionIdToValue[$option->getId()] = $option->getValue();
172
- }
173
- }
174
-
175
- $value = isset($this->_optionIdToValue[$optionId]) ? $this->_optionIdToValue[$optionId] : '';
176
- }
177
-
178
- return $value;
179
- }
180
-
181
-
182
  /**
183
  * Get CSV Header Array
184
  *
@@ -186,58 +140,31 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
186
  *
187
  * @return array
188
  */
189
- protected function _getExportAttributes($storeId = 0)
190
  {
191
- if (!isset($this->_exportAttributeCodes[$storeId])) {
192
- $headerDynamic = array();
193
-
194
  $additionalColumns = array();
195
  if (Mage::getStoreConfigFlag('factfinder/export/urls', $storeId)) {
196
  $additionalColumns[] = 'image';
197
- $this->_imageHelper = Mage::helper('catalog/image');
198
  }
199
  $additionalColumns[] = 'deeplink';
200
 
201
- // get dynamic Attributes
202
- foreach ($this->_getSearchableAttributes(null, 'system', $storeId) as $attribute) {
203
- if (in_array($attribute->getAttributeCode(), array('sku', 'status', 'visibility'))) {
204
- continue;
205
- }
206
 
207
- $headerDynamic[] = $attribute->getAttributeCode();
208
- }
209
-
210
- // compare dynamic with setup attributes
211
- $headerSetup = Mage::helper('factfinder/backend')
212
- ->unserializeFieldValue(Mage::getStoreConfig('factfinder/export/attributes', $storeId));
213
- foreach ($headerDynamic as $code) {
214
- if (in_array($code, $headerSetup)) {
215
- continue;
216
- }
217
-
218
- $headerSetup[$code]['attribute'] = $code;
219
- }
220
-
221
- // remove default attributes from setup
222
- foreach ($this->_defaultHeader as $code) {
223
- if (array_key_exists($code, $headerSetup)) {
224
- unset($headerSetup[$code]);
225
- }
226
- }
227
-
228
- $this->_exportAttributeCodes[$storeId] = array_merge(
229
  $this->_defaultHeader,
230
  $additionalColumns,
231
- array_keys($headerSetup)
232
  );
233
 
234
  // apply field limit as required by ff
235
- if(count($this->_exportAttributeCodes[$storeId]) > 128) {
236
- array_splice($this->_exportAttributeCodes[$storeId], 128);
237
  }
238
  }
239
 
240
- return $this->_exportAttributeCodes[$storeId];
 
241
  }
242
 
243
 
@@ -318,8 +245,12 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
318
  $fileName = $this->getFilenameForStore($storeId);
319
 
320
  $file = Mage::getModel('factfinder/file');
321
- $file->setValidator(Mage::getModel(self::FILE_VALIDATOR))
322
- ->open($dir, $fileName);
 
 
 
 
323
 
324
  $this->_file[$storeId] = $file;
325
  }
@@ -342,115 +273,72 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
342
 
343
  $idFieldName = Mage::helper('factfinder/search')->getIdFieldName();
344
 
345
- $header = $this->_getExportAttributes($storeId);
346
  $this->_writeCsvRow($header, $storeId);
347
 
348
- // preparesearchable attributes
349
- $staticFields = $this->_getStaticFields($storeId);
350
-
351
- $dynamicFields = $this->_getDynamicFields();
352
-
353
- // status and visibility filter
354
- $visibility = $this->getResource()->getSearchableAttribute('visibility');
355
- $status = $this->getResource()->getSearchableAttribute('status');
356
- $visibilityVals = Mage::getSingleton('catalog/product_visibility')->getVisibleInSearchIds();
357
- $statusVals = Mage::getSingleton('catalog/product_status')->getVisibleStatusIds();
358
 
359
  $lastProductId = 0;
360
  while (true) {
 
361
  $products = $this->getResource()->getSearchableProducts($storeId, $staticFields, $lastProductId);
362
  if (!$products) {
363
  break;
364
  }
365
 
366
- $productAttributes = array();
367
  $productRelations = array();
368
  foreach ($products as $productData) {
369
- $lastProductId = $productData['entity_id'];
370
- $productAttributes[$productData['entity_id']] = $productData['entity_id'];
371
- $productChildren = $this->getResource()
372
- ->getProductChildIds($productData['entity_id'], $productData['type_id']);
373
- $productRelations[$productData['entity_id']] = $productChildren;
374
- foreach ($productChildren as $productChild) {
375
- $productAttributes[$productChild['entity_id']] = $productChild;
376
  }
 
 
377
  }
378
 
379
- $productAttributes = $this->getResource()
380
- ->getProductAttributes($storeId, array_keys($productAttributes), $dynamicFields);
 
381
  foreach ($products as $productData) {
382
- if (!isset($productAttributes[$productData['entity_id']])) {
383
  continue;
384
  }
385
 
386
- $productAttr = $productAttributes[$productData['entity_id']];
387
-
388
- if (!isset($productAttr[$visibility->getId()])
389
- || !in_array($productAttr[$visibility->getId()], $visibilityVals)
390
- ) {
391
- continue;
392
- }
393
 
394
- if (!isset($productAttr[$status->getId()]) || !in_array($productAttr[$status->getId()], $statusVals)) {
395
- continue;
396
- }
397
 
398
- $categoryPath = $this->_getCategoryPath($productData['entity_id'], $storeId);
399
 
400
  if ($categoryPath == '' && !$this->_isExportProductsWithoutCategories($storeId)) {
401
  continue;
402
  }
403
 
404
  $productIndex = array(
405
- $productData['entity_id'],
406
  $productData[$idFieldName],
407
  $productData['sku'],
408
  $categoryPath,
409
- $this->_formatAttributes('filterable', $productAttr, $storeId),
410
- $this->_formatAttributes('searchable', $productAttr, $storeId),
411
- $this->_formatAttributes('numerical', $productAttr, $storeId),
412
  );
413
 
414
  $productIndex = $this->_exportImageAndDeepLink($productIndex, $productData, $storeId);
415
-
416
- $productIndex = $this->_getAttributesRowArray($productIndex, $productAttr, $storeId);
417
 
418
  $this->_writeCsvRow($productIndex, $storeId);
419
 
420
- $productChildren = $productRelations[$productData['entity_id']];
421
- foreach ($productChildren as $productChild) {
422
- if (isset($productAttributes[$productChild['entity_id']])) {
423
-
424
- $productAttr = $productAttributes[$productChild['entity_id']];
425
-
426
- $subProductIndex = array(
427
- $productChild['entity_id'],
428
- $productData[$idFieldName],
429
- $productChild['sku'],
430
- $this->_getCategoryPath($productData['entity_id'], $storeId),
431
- $this->_formatAttributes('filterable', $productAttr, $storeId),
432
- $this->_formatAttributes('searchable', $productAttr, $storeId),
433
- $this->_formatAttributes('numerical', $productAttr, $storeId),
434
- );
435
- //dont need to add image and deeplink to child product, just add empty values
436
- if ($this->getHelper()->shouldExportImages($storeId)) {
437
- $subProductIndex[] = '';
438
- }
439
- $subProductIndex[] = '';
440
-
441
- $subProductIndex = $this->_getAttributesRowArray(
442
- $subProductIndex,
443
- $productAttributes[$productChild['entity_id']],
444
- $storeId
445
- );
446
-
447
- $this->_writeCsvRow($subProductIndex, $storeId);
448
- }
449
- }
450
  }
451
  }
452
 
453
- if ($this->getHelper()->isValidationEnabled($storeId) && !$this->_getFile($storeId)->isValid()) {
454
  return false;
455
  }
456
 
@@ -468,102 +356,8 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
468
  */
469
  protected function _resetInternalState()
470
  {
471
- $this->_lines = array();
472
  $this->_categoryNames = null;
473
  $this->_productsToCategoryPath = null;
474
- $this->_exportAttributes = null;
475
- }
476
-
477
- /**
478
- * Get attributes by type
479
- *
480
- * @param string $type Possible values: filterable|searchable|numerical
481
- * @param int $storeId
482
- *
483
- * @return array
484
- */
485
- protected function _getAttributesByType($type, $storeId)
486
- {
487
- switch ($type) {
488
- case 'numerical':
489
- $attributes = $this->_getSearchableAttributes('decimal', $type, $storeId);
490
- break;
491
- default:
492
- $attributes = $this->_getSearchableAttributes(null, $type, $storeId);
493
- }
494
-
495
- return $attributes;
496
- }
497
-
498
-
499
- /**
500
- * Format attributes for csv
501
- *
502
- * @param string $type
503
- * @param array $values
504
- * @param null|int $storeId
505
- *
506
- * @return string
507
- */
508
- protected function _formatAttributes($type, $values, $storeId = null)
509
- {
510
- $attributes = $this->_getAttributesByType($type, $storeId);
511
-
512
- $returnArray = array();
513
- $counter = 0;
514
-
515
- foreach ($attributes as $attribute) {
516
- $attributeValue = isset($values[$attribute->getId()]) ? $values[$attribute->getId()] : null;
517
- if (!$attributeValue
518
- || in_array($attribute->getAttributeCode(), array('sku', 'status', 'visibility', 'price'))
519
- ) {
520
- continue;
521
- }
522
-
523
- $attributeValues = $this->_getAttributeValue($attribute->getId(), $attributeValue, $storeId);
524
-
525
- if (!is_array($attributeValues)) {
526
- $attributeValues = array($attributeValues);
527
- }
528
-
529
- $attributeValues = $this->_filterAttributeValues($attributeValues);
530
- foreach ($attributeValues as $attributeValue) {
531
- $attributeValue = $this->_removeTags($attributeValue, $storeId);
532
- if ($type == 'searchable') {
533
- $returnArray[] = $attributeValue;
534
- } else {
535
- $attributeCode = $this->_removeTags($attribute->getAttributeCode(), $storeId);
536
- $attributeValue = str_replace(array('|', '=', '#'), '', array($attributeCode, $attributeValue));
537
- $returnArray[] = implode('=', $attributeValue);
538
- }
539
- }
540
-
541
- // apply field limit as required by ff
542
- $counter++;
543
- if ($counter >= 1000) {
544
- break;
545
- }
546
- }
547
-
548
- $delimiter = ($type == 'searchable' ? ',' : '|');
549
-
550
- return implode($delimiter, $returnArray);
551
- }
552
-
553
-
554
- /**
555
- * Remove all empty values from array
556
- *
557
- * @param array $values
558
- *
559
- * @return array
560
- */
561
- protected function _filterAttributeValues($values)
562
- {
563
- // filter all empty values out
564
- return array_filter($values, function ($value) {
565
- return !empty($value);
566
- });
567
  }
568
 
569
 
@@ -613,193 +407,6 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
613
  }
614
 
615
 
616
- /**
617
- * Retrieve attribute source value for search
618
- * This method is mostly copied from Mage_CatalogSearch_Model_Resource_Fulltext,
619
- * but it also retrieves attribute values from non-searchable/non-filterable attributes
620
- *
621
- * @param int $attributeId
622
- * @param mixed $value
623
- * @param int $storeId
624
- *
625
- * @return mixed
626
- */
627
- protected function _getAttributeValue($attributeId, $value, $storeId)
628
- {
629
- $attribute = $this->getResource()->getSearchableAttribute($attributeId);
630
- if (!$attribute->getIsSearchable() && $attribute->getAttributeCode() == 'visibility') {
631
- return $value;
632
- }
633
-
634
- if ($attribute->usesSource()) {
635
- if (method_exists($this->_engine, 'allowAdvancedIndex') && $this->_engine->allowAdvancedIndex()) {
636
- return $value;
637
- }
638
-
639
- $attribute->setStoreId($storeId);
640
- $value = $attribute->getSource()->getOptionText($value);
641
-
642
- if (empty($value)) {
643
- $inputType = $attribute->getFrontend()->getInputType();
644
- if ($inputType == 'select' || $inputType == 'multiselect') {
645
- return null;
646
- }
647
- }
648
- } elseif ($attribute->getBackendType() == 'datetime') {
649
- $value = strtotime($value) * 1000; // Java.lang.System.currentTimeMillis()
650
- } else {
651
- $inputType = $attribute->getFrontend()->getInputType();
652
- if ($inputType == 'price') {
653
- $value = Mage::app()->getStore($storeId)->roundPrice($value);
654
- }
655
- }
656
-
657
- return $value;
658
- }
659
-
660
-
661
- /**
662
- * get Attribute Row Array
663
- *
664
- * @param array $dataArray Export row Array
665
- * @param array $values Attributes Array
666
- * @param int $storeId Store ID
667
- *
668
- * @return array
669
- */
670
- protected function _getAttributesRowArray($dataArray, $values, $storeId = null)
671
- {
672
- // get attributes objects assigned to their position at the export
673
- if ($this->_exportAttributes == null) {
674
- $this->_exportAttributes = array_fill(0, count($this->_getExportAttributes($storeId)), null);
675
-
676
- $attributeCodes = array_flip($this->_getExportAttributes($storeId));
677
- foreach ($this->_getSearchableAttributes() as $attribute) {
678
- if (isset($attributeCodes[$attribute->getAttributeCode()])
679
- && !in_array($attribute->getAttributeCode(), array('sku', 'status', 'visibility'))
680
- ) {
681
- $this->_exportAttributes[$attributeCodes[$attribute->getAttributeCode()]] = $attribute;
682
- }
683
- }
684
- }
685
-
686
- // fill dataArray with the values of the attributes that should be exported
687
- foreach ($this->_exportAttributes as $pos => $attribute) {
688
- if ($attribute != null) {
689
- $value = isset($values[$attribute->getId()]) ? $values[$attribute->getId()] : null;
690
- $value = $this->_getAttributeValue($attribute->getId(), $value, $storeId);
691
- $value = $this->_removeTags($value, $storeId);
692
- $dataArray[$pos] = $value;
693
- } else if (!array_key_exists($pos, $dataArray)) {
694
- // it's unlikely that an attribute exists in header but is not delivered by "getSearchableAttributes",
695
- // but actually it might be a result of a broken database or something like that..
696
- $dataArray[$pos] = null;
697
- }
698
- }
699
-
700
- return $dataArray;
701
- }
702
-
703
-
704
- /**
705
- * Check whether the attribute should be skipped
706
- *
707
- * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
708
- * @param string $type
709
- *
710
- * @return bool
711
- */
712
- protected function _checkIfSkipAttribute($attribute, $type)
713
- {
714
- $shouldSkip = false;
715
- switch ($type) {
716
- case "system":
717
- if ($attribute->getIsUserDefined() && !$attribute->getUsedForSortBy()) {
718
- $shouldSkip = true;
719
- }
720
- break;
721
- case "sortable":
722
- if (!$attribute->getUsedForSortBy()) {
723
- $shouldSkip = true;
724
- }
725
- break;
726
- case "filterable":
727
- $shouldSkip = $this->_shouldSkipFilterableAttribute($attribute);
728
- break;
729
- case 'numerical':
730
- $shouldSkip = $this->_shouldSkipNumericalAttribute($attribute);
731
- break;
732
- case "searchable":
733
- $shouldSkip = $this->_shouldSkipSearchableAttribute($attribute);
734
- break;
735
- default:;
736
- }
737
-
738
- return $shouldSkip;
739
- }
740
-
741
-
742
- /**
743
- * Check if we should skip searchable attribute
744
- *
745
- * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
746
- *
747
- * @return bool
748
- */
749
- protected function _shouldSkipSearchableAttribute($attribute)
750
- {
751
- if (!$attribute->getIsUserDefined()
752
- || !$attribute->getIsSearchable()
753
- || in_array($attribute->getAttributeCode(), $this->_getExportAttributes())
754
- || $attribute->getBackendType() === 'decimal'
755
- ) {
756
- return true;
757
- }
758
-
759
- return false;
760
- }
761
-
762
-
763
- /**
764
- * Check if we should skip filterable attribute
765
- *
766
- * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
767
- *
768
- * @return bool
769
- */
770
- protected function _shouldSkipFilterableAttribute($attribute)
771
- {
772
- if (!$attribute->getIsFilterableInSearch()
773
- || in_array($attribute->getAttributeCode(), $this->_getExportAttributes())
774
- || $attribute->getBackendType() === 'decimal'
775
- ) {
776
- return true;
777
- }
778
-
779
- return false;
780
- }
781
-
782
-
783
- /**
784
- * Check if we should skip numerical attribute
785
- *
786
- * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
787
- *
788
- * @return bool
789
- */
790
- protected function _shouldSkipNumericalAttribute($attribute)
791
- {
792
- if (!$attribute->getIsFilterableInSearch()
793
- || in_array($attribute->getAttributeCode(), $this->_getExportAttributes())
794
- || $attribute->getBackendType() != 'decimal'
795
- ) {
796
- return true;
797
- }
798
-
799
- return false;
800
- }
801
-
802
-
803
  /**
804
  * Add image and deep link information to product row
805
  *
@@ -829,71 +436,6 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
829
  }
830
 
831
 
832
- /**
833
- * Get array of dynamic fields to use in csv
834
- *
835
- * @return array
836
- */
837
- protected function _getDynamicFields()
838
- {
839
- $dynamicFields = array();
840
- foreach (array('int', 'varchar', 'text', 'decimal', 'datetime') as $type) {
841
- $dynamicFields[$type] = array_keys($this->_getSearchableAttributes($type));
842
- }
843
-
844
- return $dynamicFields;
845
- }
846
-
847
-
848
- /**
849
- * Get array of static fields to use in csv
850
- *
851
- * @param int $storeId
852
- *
853
- * @return array
854
- */
855
- protected function _getStaticFields($storeId)
856
- {
857
- $staticFields = array();
858
- foreach ($this->_getSearchableAttributes('static', 'system', $storeId) as $attribute) {
859
- $staticFields[] = $attribute->getAttributeCode();
860
- }
861
- return $staticFields;
862
- }
863
-
864
-
865
- /**
866
- * Check if html tags and entities should be removed on export
867
- *
868
- * @param string $value
869
- * @param int $storeId
870
- *
871
- * @return bool
872
- */
873
- protected function _removeTags($value, $storeId)
874
- {
875
- if (Mage::getStoreConfig('factfinder/export/remove_tags', $storeId)) {
876
- $attributeValues = $value;
877
- if (!is_array($attributeValues)) {
878
- $attributeValues = array($value);
879
- }
880
- foreach ($attributeValues as &$attributeValue) {
881
- // decode html entities
882
- $attributeValue = html_entity_decode($attributeValue, null, 'UTF-8');
883
- // Add spaces before HTML Tags, so that strip_tags() does not join word which were in different block elements
884
- // Additional spaces are not an issue, because they will be removed in the next step anyway
885
- $attributeValue = preg_replace('/</u', ' <', $attributeValue);
886
- $attributeValue = preg_replace("#\s+#siu", ' ', trim(strip_tags($attributeValue)));
887
- // remove rest html entities
888
- $attributeValue = preg_replace("/&(?:[a-z\d]|#\d|#x[a-f\d]){2,8};/i", '', $attributeValue);
889
- }
890
- $value = implode("|", $attributeValues);
891
- }
892
-
893
- return $value;
894
- }
895
-
896
-
897
  /**
898
  * Check if products without categories should be exported
899
  *
@@ -932,6 +474,7 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
932
  ->getCollection()
933
  ->addAttributeToFilter('entity_id', $productId)
934
  ->setStoreId($storeId)
 
935
  ->addUrlRewrite()
936
  ->getFirstItem()
937
  ->getProductUrl();
@@ -985,41 +528,6 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
985
  }
986
 
987
 
988
- /**
989
- * Get searchable attributes by type
990
- *
991
- * @param null $backendType Backend type of the attributes
992
- * @param string $type Possible Types: system, sortable, filterable, searchable
993
- * @param int $storeId
994
- *
995
- * @return array
996
- */
997
- protected function _getSearchableAttributes($backendType = null, $type = null, $storeId = 0)
998
- {
999
- $attributes = array();
1000
-
1001
- if ($type !== null || $backendType !== null) {
1002
- foreach ($this->getResource()->getSearchableAttributes($storeId) as $attribute) {
1003
- if ($backendType !== null
1004
- && $attribute->getBackendType() != $backendType
1005
- ) {
1006
- continue;
1007
- }
1008
-
1009
- if ($this->_checkIfSkipAttribute($attribute, $type)) {
1010
- continue;
1011
- }
1012
-
1013
- $attributes[$attribute->getId()] = $attribute;
1014
- }
1015
- } else {
1016
- $attributes = $this->getResource()->getSearchableAttributes($storeId);
1017
- }
1018
-
1019
- return $attributes;
1020
- }
1021
-
1022
-
1023
  /**
1024
  * Get number of products that should be exported
1025
  *
@@ -1029,8 +537,8 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
1029
  */
1030
  public function getSize($storeId)
1031
  {
1032
- $staticFields = $this->_getStaticFields($storeId);
1033
- $dynamicFields = $this->_getDynamicFields();
1034
 
1035
  $count = 0;
1036
 
@@ -1056,7 +564,8 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
1056
 
1057
  $lastId = $productData['entity_id'];
1058
 
1059
- $attributes = $this->getResource()->getProductAttributes($storeId, array_keys($attributes), $dynamicFields);
 
1060
  foreach ($products as $productData) {
1061
 
1062
  if ($this->shouldSkipProduct($attributes, $productData)) {
@@ -1071,7 +580,6 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
1071
 
1072
  $count++;
1073
 
1074
-
1075
  $children = $relations[$productData['entity_id']];
1076
  foreach ($children as $child) {
1077
  if (isset($attributes[$child['entity_id']])) {
@@ -1081,12 +589,11 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
1081
  }
1082
  }
1083
 
1084
-
1085
  return $count;
1086
  }
1087
 
1088
 
1089
- /**
1090
  * Check if product should be skipped in export
1091
  *
1092
  * @param $attributes
@@ -1096,24 +603,25 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
1096
  */
1097
  protected function shouldSkipProduct($attributes, $productData)
1098
  {
1099
-
1100
  if (!isset($attributes[$productData['entity_id']])) {
1101
  return true;
1102
  }
1103
 
1104
  // status and visibility filter
1105
- $visibilityId = $this->getResource()->getSearchableAttribute('visibility')->getId();
1106
- $statusId = $this->getResource()->getSearchableAttribute('status')->getId();
 
 
1107
 
1108
  $visibilities = Mage::getSingleton('catalog/product_visibility')->getVisibleInSearchIds();
1109
  $statuses = Mage::getSingleton('catalog/product_status')->getVisibleStatusIds();
1110
 
1111
  $productAttributes = $attributes[$productData['entity_id']];
1112
 
1113
- if (!isset($productAttributes[$visibilityId])
1114
- || !isset($productAttributes[$statusId])
1115
- || !in_array($productAttributes[$visibilityId], $visibilities)
1116
- || !in_array($productAttributes[$statusId], $statuses)
1117
  ) {
1118
  return true;
1119
  }
@@ -1122,4 +630,80 @@ class FACTFinder_Core_Model_Export_Type_Product extends Mage_Core_Model_Abstract
1122
  }
1123
 
1124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1125
  }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
16
  *
17
  * This class provides the Product export
18
  *
19
+ * @method FACTFinder_Core_Model_Resource_Product getResource()
20
  *
21
  * @category Mage
22
  * @package FACTFinder_Core
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
25
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
33
  const CSV_DELIMITER = ';';
34
  const FILE_VALIDATOR = 'factfinder/file_validator_product';
35
 
 
 
 
 
 
 
36
  /**
37
  * Products to Category Path Mapping
38
  *
50
  * export attribute codes
51
  * @var mixed
52
  */
53
+ protected $_headerColumns = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
  /**
56
  * @var FACTFinder_Core_Model_File
71
  );
72
 
73
  /**
74
+ * Visibility attribute id
75
+ *
76
+ * @var int
77
+ */
78
+ protected $_visibilityId;
79
+
80
+ /**
81
+ * Status attribute id
82
+ *
83
+ * @var int
84
  */
85
+ protected $_statusId;
86
 
87
 
88
  /**
91
  */
92
  protected function _construct()
93
  {
94
+ $this->_init('factfinder/product');
 
95
  }
96
 
97
 
133
  }
134
 
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  /**
137
  * Get CSV Header Array
138
  *
140
  *
141
  * @return array
142
  */
143
+ protected function _getHeader($storeId = 0)
144
  {
145
+ if (!isset($this->_headerColumns[$storeId])) {
 
 
146
  $additionalColumns = array();
147
  if (Mage::getStoreConfigFlag('factfinder/export/urls', $storeId)) {
148
  $additionalColumns[] = 'image';
 
149
  }
150
  $additionalColumns[] = 'deeplink';
151
 
152
+ $exportAttributes = $this->getAttributeModel()->getExportAttributes($storeId);
 
 
 
 
153
 
154
+ $this->_headerColumns[$storeId] = array_merge(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  $this->_defaultHeader,
156
  $additionalColumns,
157
+ $exportAttributes
158
  );
159
 
160
  // apply field limit as required by ff
161
+ if(count($this->_headerColumns[$storeId]) > 128) {
162
+ array_splice($this->_headerColumns[$storeId], 128);
163
  }
164
  }
165
 
166
+
167
+ return $this->_headerColumns[$storeId];
168
  }
169
 
170
 
245
  $fileName = $this->getFilenameForStore($storeId);
246
 
247
  $file = Mage::getModel('factfinder/file');
248
+
249
+ if ($this->getHelper()->isValidationEnabled($storeId)) {
250
+ $file->setValidator(Mage::getModel(self::FILE_VALIDATOR));
251
+ }
252
+
253
+ $file->open($dir, $fileName);
254
 
255
  $this->_file[$storeId] = $file;
256
  }
273
 
274
  $idFieldName = Mage::helper('factfinder/search')->getIdFieldName();
275
 
276
+ $header = $this->_getHeader($storeId);
277
  $this->_writeCsvRow($header, $storeId);
278
 
279
+ $staticFields = $this->getAttributeModel()->getStaticFields($storeId);
280
+ $dynamicFields = $this->getAttributeModel()->getDynamicFields($storeId);
 
 
 
 
 
 
 
 
281
 
282
  $lastProductId = 0;
283
  while (true) {
284
+ // get basic product data
285
  $products = $this->getResource()->getSearchableProducts($storeId, $staticFields, $lastProductId);
286
  if (!$products) {
287
  break;
288
  }
289
 
290
+ $productIds = array();
291
  $productRelations = array();
292
  foreach ($products as $productData) {
293
+ $productId = $productData['entity_id'];
294
+ $productIds[] = $productId;
295
+ $productChildren = $this->getResource()->getProductChildIds($productId, $productData['type_id']);
296
+ foreach ($productChildren as $child) {
297
+ $productIds[] = $child['entity_id'];
 
 
298
  }
299
+ $productRelations[$productId] = $productChildren;
300
+ $lastProductId = $productId;
301
  }
302
 
303
+ $attributeValues = $this->getAttributeModel()
304
+ ->getProductAttributes($storeId, $productIds, $dynamicFields); // store, ids, codes
305
+
306
  foreach ($products as $productData) {
307
+ if ($this->shouldSkipProduct($attributeValues, $productData)) {
308
  continue;
309
  }
310
 
311
+ $productId = $productData['entity_id'];
 
 
 
 
 
 
312
 
313
+ $productAttributes = $attributeValues[$productId];
 
 
314
 
315
+ $categoryPath = $this->_getCategoryPath($productId, $storeId);
316
 
317
  if ($categoryPath == '' && !$this->_isExportProductsWithoutCategories($storeId)) {
318
  continue;
319
  }
320
 
321
  $productIndex = array(
322
+ $productId,
323
  $productData[$idFieldName],
324
  $productData['sku'],
325
  $categoryPath,
326
+ $this->_formatAttributes('filterable', $productAttributes, $storeId),
327
+ $this->_formatAttributes('searchable', $productAttributes, $storeId),
328
+ $this->_formatAttributes('numerical', $productAttributes, $storeId),
329
  );
330
 
331
  $productIndex = $this->_exportImageAndDeepLink($productIndex, $productData, $storeId);
332
+ $productIndex = $this->getAttributeModel()
333
+ ->addAttributesToRow($productIndex, $productAttributes, $storeId, $productData);
334
 
335
  $this->_writeCsvRow($productIndex, $storeId);
336
 
337
+ $this->_exportChildren($storeId, $productRelations, $attributeValues, $productData);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
338
  }
339
  }
340
 
341
+ if (!$this->_getFile($storeId)->isValid()) {
342
  return false;
343
  }
344
 
356
  */
357
  protected function _resetInternalState()
358
  {
 
359
  $this->_categoryNames = null;
360
  $this->_productsToCategoryPath = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  }
362
 
363
 
407
  }
408
 
409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  /**
411
  * Add image and deep link information to product row
412
  *
436
  }
437
 
438
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
439
  /**
440
  * Check if products without categories should be exported
441
  *
474
  ->getCollection()
475
  ->addAttributeToFilter('entity_id', $productId)
476
  ->setStoreId($storeId)
477
+ ->setPage(1, 1)
478
  ->addUrlRewrite()
479
  ->getFirstItem()
480
  ->getProductUrl();
528
  }
529
 
530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
  /**
532
  * Get number of products that should be exported
533
  *
537
  */
538
  public function getSize($storeId)
539
  {
540
+ $staticFields = $this->getAttributeModel()->getStaticFields($storeId);
541
+ $dynamicFields = $this->getAttributeModel()->getDynamicFields($storeId);
542
 
543
  $count = 0;
544
 
564
 
565
  $lastId = $productData['entity_id'];
566
 
567
+ $attributes = $this->getAttributeModel()
568
+ ->getProductAttributes($storeId, array_keys($attributes), $dynamicFields);
569
  foreach ($products as $productData) {
570
 
571
  if ($this->shouldSkipProduct($attributes, $productData)) {
580
 
581
  $count++;
582
 
 
583
  $children = $relations[$productData['entity_id']];
584
  foreach ($children as $child) {
585
  if (isset($attributes[$child['entity_id']])) {
589
  }
590
  }
591
 
 
592
  return $count;
593
  }
594
 
595
 
596
+ /**
597
  * Check if product should be skipped in export
598
  *
599
  * @param $attributes
603
  */
604
  protected function shouldSkipProduct($attributes, $productData)
605
  {
 
606
  if (!isset($attributes[$productData['entity_id']])) {
607
  return true;
608
  }
609
 
610
  // status and visibility filter
611
+ if (!$this->_visibilityId && !$this->_statusId) {
612
+ $this->_visibilityId = $this->getAttributeModel()->getSearchableAttribute('visibility')->getId();
613
+ $this->_statusId = $this->getAttributeModel()->getSearchableAttribute('status')->getId();
614
+ }
615
 
616
  $visibilities = Mage::getSingleton('catalog/product_visibility')->getVisibleInSearchIds();
617
  $statuses = Mage::getSingleton('catalog/product_status')->getVisibleStatusIds();
618
 
619
  $productAttributes = $attributes[$productData['entity_id']];
620
 
621
+ if (!isset($productAttributes[$this->_visibilityId])
622
+ || !isset($productAttributes[$this->_statusId])
623
+ || !in_array($productAttributes[$this->_visibilityId], $visibilities)
624
+ || !in_array($productAttributes[$this->_statusId], $statuses)
625
  ) {
626
  return true;
627
  }
630
  }
631
 
632
 
633
+ /**
634
+ * Get instance of attribute model
635
+ *
636
+ * @return FACTFinder_Core_Model_Export_Type_Product_Attribute
637
+ */
638
+ protected function getAttributeModel()
639
+ {
640
+ return Mage::getSingleton('factfinder/export_type_product_attribute');
641
+ }
642
+
643
+
644
+ /**
645
+ * Export product children
646
+ *
647
+ * @param int $storeId
648
+ * @param array $productRelations
649
+ * @param array $attributeValues
650
+ * @param array $productData
651
+ *
652
+ * @return void
653
+ */
654
+ protected function _exportChildren($storeId, $productRelations, $attributeValues, $productData)
655
+ {
656
+ $idFieldName = Mage::helper('factfinder/search')->getIdFieldName();
657
+ $productChildren = $productRelations[$productData['entity_id']];
658
+ foreach ($productChildren as $productChild) {
659
+ if (!isset($attributeValues[$productChild['entity_id']])) {
660
+ continue;
661
+ }
662
+
663
+ $productAttributes = $attributeValues[$productChild['entity_id']];
664
+
665
+ $subProductIndex = array(
666
+ $productChild['entity_id'],
667
+ $productData[$idFieldName],
668
+ $productChild['sku'],
669
+ $this->_getCategoryPath($productData['entity_id'], $storeId),
670
+ $this->_formatAttributes('filterable', $productAttributes, $storeId),
671
+ $this->_formatAttributes('searchable', $productAttributes, $storeId),
672
+ $this->_formatAttributes('numerical', $productAttributes, $storeId),
673
+ );
674
+
675
+ //no need to add image and deeplink to child product, just add empty values
676
+ if ($this->getHelper()->shouldExportImages($storeId)) {
677
+ $subProductIndex[] = '';
678
+ }
679
+ $subProductIndex[] = '';
680
+
681
+ $subProductIndex = $this->getAttributeModel()->addAttributesToRow(
682
+ $subProductIndex,
683
+ $attributeValues[$productChild['entity_id']],
684
+ $storeId,
685
+ $productData
686
+ );
687
+
688
+ $this->_writeCsvRow($subProductIndex, $storeId);
689
+ }
690
+ }
691
+
692
+
693
+ /**
694
+ * Format attributes
695
+ * Method wrapper
696
+ *
697
+ * @param $type
698
+ * @param $attributes
699
+ * @param $storeId
700
+ *
701
+ * @return string
702
+ */
703
+ protected function _formatAttributes($type, $attributes, $storeId)
704
+ {
705
+ return $this->getAttributeModel()->formatAttributes($type, $attributes, $storeId);
706
+ }
707
+
708
+
709
  }
app/code/community/FACTFinder/Core/Model/Export/Type/Product/Attribute.php ADDED
@@ -0,0 +1,646 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class FACTFinder_Core_Model_Export_Type_Product_Attribute
5
+ *
6
+ * @method FACTFinder_Core_Model_Resource_Attribute getResource()
7
+ */
8
+ class FACTFinder_Core_Model_Export_Type_Product_Attribute extends Mage_Core_Model_Abstract
9
+ {
10
+
11
+ /**
12
+ * Option ID to Value Mapping Array
13
+ *
14
+ * @var mixed
15
+ */
16
+ protected $_optionIdToValue;
17
+
18
+ /**
19
+ * @var array
20
+ */
21
+ protected $_exportAttributeCodes;
22
+
23
+ /**
24
+ * @var
25
+ */
26
+ protected $_engine;
27
+
28
+ /**
29
+ * @var array
30
+ */
31
+ protected $_exportAttributes;
32
+
33
+ /**
34
+ * @var array
35
+ */
36
+ protected $_configuredAttributes;
37
+
38
+ /**
39
+ * @var array
40
+ */
41
+ protected $_attributesByType;
42
+
43
+ /**
44
+ * @var array
45
+ */
46
+ protected $_searchableAttributes;
47
+
48
+
49
+ protected function _construct()
50
+ {
51
+ parent::_construct();
52
+
53
+ $this->_init('factfinder/attribute');
54
+ $this->_engine = Mage::helper('catalogsearch')->getEngine();
55
+ }
56
+
57
+
58
+ /**
59
+ * Retrieve attributes configured in FF backend
60
+ *
61
+ * @param int $storeId
62
+ * @param string $type
63
+ *
64
+ * @return mixed
65
+ */
66
+ public function getConfiguredAttributes($storeId, $type = null)
67
+ {
68
+ if (!isset($this->_configuredAttributes[$storeId])) {
69
+ $configuredAttributes = Mage::getStoreConfig('factfinder/export/attributes', $storeId);
70
+ $this->_configuredAttributes[$storeId] = unserialize($configuredAttributes);
71
+ }
72
+
73
+ if (!empty($type)) {
74
+ $result = array();
75
+ foreach ($this->_configuredAttributes[$storeId] as $code => $configuredAttribute) {
76
+ if ($configuredAttribute['type'] == $type) {
77
+ $result[$code] = $configuredAttribute;
78
+ }
79
+ }
80
+
81
+ return $result;
82
+ }
83
+
84
+ return $this->_configuredAttributes[$storeId];
85
+ }
86
+
87
+
88
+ /**
89
+ * Get text of a select option
90
+ *
91
+ * @param $optionId
92
+ * @param $storeId
93
+ *
94
+ * @return mixed|string
95
+ */
96
+ public function getOptionText($optionId, $storeId)
97
+ {
98
+ $value = '';
99
+ if (intval($optionId)) {
100
+ if ($this->_optionIdToValue === null) {
101
+ /** @var Mage_Eav_Model_Resource_Entity_Attribute_Option_Collection $optionCollection */
102
+ $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection');
103
+ $optionCollection->setStoreFilter($storeId);
104
+ $this->_optionIdToValue = array();
105
+ foreach ($optionCollection as $option) {
106
+ $this->_optionIdToValue[$option->getId()] = $option->getValue();
107
+ }
108
+ }
109
+
110
+ $value = isset($this->_optionIdToValue[$optionId]) ? $this->_optionIdToValue[$optionId] : '';
111
+ }
112
+
113
+ return $value;
114
+ }
115
+
116
+
117
+ /**
118
+ * Retrieve attribute source value for search
119
+ * This method is mostly copied from Mage_CatalogSearch_Model_Resource_Fulltext,
120
+ * but it also retrieves attribute values from non-searchable/non-filterable attributes
121
+ *
122
+ * @param int $attributeId
123
+ * @param mixed $value
124
+ * @param int $storeId
125
+ *
126
+ * @return mixed
127
+ */
128
+ public function getAttributeValue($attributeId, $value, $storeId)
129
+ {
130
+ /** @var Mage_Catalog_Model_Resource_Eav_Attribute $attribute */
131
+ $attribute = $this->getSearchableAttribute($attributeId);
132
+ if (!$attribute->getIsSearchable() && $attribute->getAttributeCode() == 'visibility') {
133
+ return $value;
134
+ }
135
+
136
+ if ($attribute->usesSource()) {
137
+ if (method_exists($this->_engine, 'allowAdvancedIndex') && $this->_engine->allowAdvancedIndex()) {
138
+ return $value;
139
+ }
140
+
141
+ $attribute->setStoreId($storeId);
142
+ $value = $attribute->getSource()->getOptionText($value);
143
+ if (!is_array($value) && empty($value)) {
144
+ $inputType = $attribute->getFrontend()->getInputType();
145
+ if ($inputType == 'select' || $inputType == 'multiselect') {
146
+ return null;
147
+ }
148
+ }
149
+ } elseif ($attribute->getBackendType() == 'datetime') {
150
+ $value = strtotime($value) * 1000; // Java.lang.System.currentTimeMillis()
151
+ } else {
152
+ $inputType = $attribute->getFrontend()->getInputType();
153
+ if ($inputType == 'price') {
154
+ $value = Mage::app()->getStore($storeId)->roundPrice($value);
155
+ }
156
+ }
157
+
158
+ return $value;
159
+ }
160
+
161
+
162
+ /**
163
+ * Get attributes that can be used in search
164
+ *
165
+ * @param null $storeId
166
+ *
167
+ * @return mixed
168
+ */
169
+ public function getSearchableAttributes($storeId = null)
170
+ {
171
+ return $this->getResource()->getSearchableAttributes($storeId);
172
+ }
173
+
174
+
175
+ /**
176
+ * Retrieve searchable attribute by Id or code
177
+ *
178
+ * @param int|string $attribute
179
+ *
180
+ * @return Mage_Eav_Model_Entity_Attribute
181
+ */
182
+ public function getSearchableAttribute($attribute)
183
+ {
184
+ if (!isset($this->_searchableAttributes[$attribute])) {
185
+ $this->_searchableAttributes[$attribute] = $this->getResource()->getSearchableAttribute($attribute);
186
+ }
187
+
188
+ return $this->_searchableAttributes[$attribute];
189
+ }
190
+
191
+
192
+ /**
193
+ * Load product(s) attributes
194
+ *
195
+ * @param int $storeId
196
+ * @param array $productIds
197
+ * @param array $attributeTypes
198
+ *
199
+ * @return array
200
+ */
201
+ public function getProductAttributes($storeId, array $productIds, array $attributeTypes)
202
+ {
203
+ return $this->getResource()->getProductAttributes($storeId, $productIds, $attributeTypes);
204
+ }
205
+
206
+
207
+ /**
208
+ * Get CSV Header Array
209
+ *
210
+ * @param int $storeId
211
+ *
212
+ * @return array
213
+ */
214
+ public function getExportAttributes($storeId = 0)
215
+ {
216
+ if (!isset($this->_exportAttributeCodes[$storeId])) {
217
+ $headerDynamic = array();
218
+
219
+ // get dynamic Attributes
220
+ foreach ($this->getSearchableAttributesByType(null, 'system', $storeId) as $attribute) {
221
+ if (in_array($attribute->getAttributeCode(), array('sku', 'status', 'visibility'))) {
222
+ continue;
223
+ }
224
+
225
+ $headerDynamic[] = $attribute->getAttributeCode();
226
+ }
227
+
228
+ $configuredAttributes = array_keys($this->getConfiguredAttributes($storeId));
229
+ if (Mage::helper('factfinder/export')->useExplicitAttributes($storeId)) {
230
+ $headerDynamic = array_diff($headerDynamic, $configuredAttributes);
231
+ $configuredAttributes = array();
232
+ }
233
+
234
+
235
+ $this->_exportAttributeCodes[$storeId] = array_values(array_unique(array_merge(
236
+ $headerDynamic,
237
+ $configuredAttributes
238
+ )));
239
+ }
240
+
241
+ return $this->_exportAttributeCodes[$storeId];
242
+ }
243
+
244
+
245
+ /**
246
+ * Get searchable attributes by type
247
+ *
248
+ * @param null $backendType Backend type of the attributes
249
+ * @param string $type Possible Types: system, sortable, filterable, searchable
250
+ * @param int $storeId
251
+ *
252
+ * @return array
253
+ */
254
+ public function getSearchableAttributesByType($backendType = null, $type = null, $storeId = 0)
255
+ {
256
+ $cacheCode = $backendType . '|' . $type . '|' . $storeId;
257
+
258
+ if (isset($this->_attributesByType[$cacheCode])) {
259
+ return $this->_attributesByType[$cacheCode];
260
+ }
261
+
262
+ $attributes = array();
263
+
264
+ if ($type !== null || $backendType !== null) {
265
+ foreach ($this->getSearchableAttributes($storeId) as $attribute) {
266
+ if ($backendType !== null && $attribute->getBackendType() != $backendType) {
267
+ continue;
268
+ }
269
+
270
+ if (!$this->_isAttributeOfType($attribute, $type, $storeId)) {
271
+ continue;
272
+ }
273
+
274
+ $attributes[$attribute->getId()] = $attribute;
275
+ }
276
+ } else {
277
+ $attributes = $this->getSearchableAttributes($storeId);
278
+ }
279
+
280
+ $this->_attributesByType[$cacheCode] = $attributes;
281
+
282
+ return $attributes;
283
+ }
284
+
285
+
286
+ /**
287
+ * Check whether the attribute is of the requested type
288
+ *
289
+ * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
290
+ * @param string $type
291
+ * @param int $storeId
292
+ *
293
+ * @return bool
294
+ */
295
+ protected function _isAttributeOfType($attribute, $type, $storeId = 0)
296
+ {
297
+ if ($type
298
+ && isset($this->_attributesByType[$type][$storeId])
299
+ && in_array($attribute->getAttributeCode(), $this->_attributesByType[$type][$storeId])
300
+ ) {
301
+ return true;
302
+ }
303
+
304
+ $isOfType = true;
305
+ switch ($type) {
306
+ case 'system':
307
+ if ($attribute->getIsUserDefined() && !$attribute->getUsedForSortBy()) {
308
+ $isOfType = false;
309
+ }
310
+ break;
311
+ case 'sortable':
312
+ if (!$attribute->getUsedForSortBy()) {
313
+ $isOfType = false;
314
+ }
315
+ break;
316
+ case 'filterable':
317
+ $isOfType = $this->_isAttributeFilterable($attribute, $storeId);
318
+ break;
319
+ case 'numerical':
320
+ $isOfType = $this->_isAttributeNumerical($attribute, $storeId);
321
+ break;
322
+ case 'searchable':
323
+ $isOfType = $this->_isAttributeSearchable($attribute, $storeId);
324
+ break;
325
+ default:;
326
+ }
327
+
328
+ if ($type && $isOfType) {
329
+ $this->_attributesByType[$type][$storeId][] = $attribute->getAttributeCode();
330
+ }
331
+
332
+ return $isOfType;
333
+ }
334
+
335
+
336
+ /**
337
+ * Check if attribute is searchable
338
+ *
339
+ * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
340
+ * @param $storeId
341
+ *
342
+ * @return bool
343
+ */
344
+ protected function _isAttributeSearchable($attribute, $storeId)
345
+ {
346
+ if ($this->_isAttributeNumerical($attribute, $storeId)) {
347
+ return false;
348
+ }
349
+
350
+ if (!$attribute->getIsUserDefined()
351
+ || !$attribute->getIsSearchable()
352
+ || in_array($attribute->getAttributeCode(), $this->getExportAttributes($storeId))
353
+ ) {
354
+ return true;
355
+ }
356
+
357
+ return false;
358
+ }
359
+
360
+
361
+ /**
362
+ * Check if attribute is filterable
363
+ *
364
+ * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
365
+ * @param int $storeId
366
+ *
367
+ * @return bool
368
+ */
369
+ protected function _isAttributeFilterable($attribute, $storeId)
370
+ {
371
+ if ($this->_isAttributeNumerical($attribute, $storeId)) {
372
+ return false;
373
+ }
374
+
375
+ if (Mage::helper('factfinder/export')->useExplicitAttributes($storeId)) {
376
+ $attributes = $this->getConfiguredAttributes($storeId, 'text');
377
+ if (in_array($attribute->getAttributeCode(), array_keys($attributes))) {
378
+ return true;
379
+ }
380
+ }
381
+
382
+ if (!$attribute->getIsFilterableInSearch()
383
+ || in_array($attribute->getAttributeCode(), $this->getExportAttributes($storeId))
384
+ ) {
385
+ return false;
386
+ }
387
+
388
+ return true;
389
+ }
390
+
391
+
392
+ /**
393
+ * Check if attribute is numerical
394
+ *
395
+ * @param Mage_Catalog_Model_Resource_EAV_Attribute $attribute
396
+ * @param int $storeId
397
+ *
398
+ * @return bool
399
+ */
400
+ protected function _isAttributeNumerical($attribute, $storeId)
401
+ {
402
+ if (Mage::helper('factfinder/export')->useExplicitAttributes($storeId)) {
403
+ $attributes = $this->getConfiguredAttributes($storeId, 'number');
404
+ if (in_array($attribute->getAttributeCode(), array_keys($attributes))) {
405
+ return true;
406
+ }
407
+ }
408
+
409
+ if (!$attribute->getIsFilterableInSearch()
410
+ || in_array($attribute->getAttributeCode(), $this->getExportAttributes($storeId))
411
+ || $attribute->getBackendType() != 'decimal'
412
+ ) {
413
+ return false;
414
+ }
415
+
416
+ return true;
417
+ }
418
+
419
+
420
+ /**
421
+ * Get array of static product fields
422
+ *
423
+ * @param int $storeId
424
+ *
425
+ * @return array
426
+ */
427
+ public function getStaticFields($storeId)
428
+ {
429
+ $staticFields = array();
430
+ foreach ($this->getSearchableAttributesByType('static', 'system', $storeId) as $attribute) {
431
+ $staticFields[] = $attribute->getAttributeCode();
432
+ }
433
+ return $staticFields;
434
+ }
435
+
436
+
437
+ /**
438
+ * Get array of dynamic fields to use in csv
439
+ *
440
+ * @param $storeId
441
+ *
442
+ * @return array
443
+ */
444
+ public function getDynamicFields($storeId)
445
+ {
446
+ $dynamicFields = array();
447
+ foreach (array('int', 'varchar', 'text', 'decimal', 'datetime') as $type) {
448
+ $dynamicFields[$type] = array_keys($this->getSearchableAttributesByType($type, null, $storeId));
449
+ }
450
+
451
+ return $dynamicFields;
452
+ }
453
+
454
+
455
+ /**
456
+ * Get Attribute Row Array
457
+ *
458
+ * @param array $dataArray Export row Array
459
+ * @param array $values Attributes Array
460
+ * @param int $storeId Store ID
461
+ * @param array $productData
462
+ *
463
+ * @return array
464
+ */
465
+ public function addAttributesToRow($dataArray, $values, $storeId = 0, $productData = array())
466
+ {
467
+ // get attributes objects assigned to their position at the export
468
+ if (empty($this->_exportAttributes[$storeId])) {
469
+ $attributes = $this->getExportAttributes($storeId);
470
+ $this->_exportAttributes[$storeId] = array_fill_keys(
471
+ $attributes,
472
+ null
473
+ );
474
+
475
+ $searchableAttributes = $this->getSearchableAttributesByType(null, null, $storeId);
476
+ foreach ($searchableAttributes as $attribute) {
477
+ if (in_array($attribute->getAttributeCode(), $attributes)
478
+ && !in_array($attribute->getAttributeCode(), array('sku', 'status', 'visibility'))
479
+ ) {
480
+ $this->_exportAttributes[$storeId][$attribute->getAttributeCode()] = $attribute;
481
+ }
482
+ }
483
+ }
484
+
485
+ // fill dataArray with the values of the attributes that should be exported
486
+ foreach ($this->_exportAttributes[$storeId] as $code => $attribute) {
487
+ if ($attribute != null) {
488
+ $value = isset($values[$attribute->getId()]) ? $values[$attribute->getId()] : null;
489
+ if (empty($value)) {
490
+ $value = isset($productData[$code]) ? $productData[$code] : null;
491
+ }
492
+ $value = $this->getAttributeValue($attribute->getId(), $value, $storeId);
493
+ $value = $this->_removeTags($value, $storeId);
494
+ $dataArray[$code] = $value;
495
+ } else {
496
+ $dataArray[$code] = null;
497
+ }
498
+ }
499
+
500
+ return $dataArray;
501
+ }
502
+
503
+
504
+ /**
505
+ * Format attributes for csv
506
+ *
507
+ * @param string $type Possible values: filterable|searchable|numerical
508
+ * @param array $values
509
+ * @param null|int $storeId
510
+ *
511
+ * @return string
512
+ */
513
+ public function formatAttributes($type, $values, $storeId = null)
514
+ {
515
+ $attributes = $this->getSearchableAttributesByType(null, $type, $storeId);
516
+
517
+ $returnArray = array();
518
+ $counter = 0;
519
+
520
+ foreach ($attributes as $attribute) {
521
+ $attributeValue = isset($values[$attribute->getId()]) ? $values[$attribute->getId()] : null;
522
+ if (!$attributeValue
523
+ || in_array($attribute->getAttributeCode(), array('sku', 'status', 'visibility', 'price'))
524
+ ) {
525
+ continue;
526
+ }
527
+
528
+ $attributeValues = $this->getAttributeValue($attribute->getId(), $attributeValue, $storeId);
529
+
530
+ if (!is_array($attributeValues)) {
531
+ $attributeValues = array($attributeValues);
532
+ }
533
+
534
+ $attributeValues = $this->_filterAttributeValues($attributeValues);
535
+ foreach ($attributeValues as $attributeValue) {
536
+ $attributeValue = $this->_removeTags($attributeValue, $storeId);
537
+ if ($type == 'searchable') {
538
+ $returnArray[] = $attributeValue;
539
+ } elseif ($type == 'numerical') {
540
+ $returnArray[] = $this->_formatNumericalAttributes($storeId, $attribute, $attributeValue);
541
+ } else {
542
+ $attributeCode = $this->_removeTags($attribute->getAttributeCode(), $storeId);
543
+ $attributeValue = str_replace(array('|', '=', '#'), '', array($attributeCode, $attributeValue));
544
+ $returnArray[] = implode('=', $attributeValue);
545
+ }
546
+ }
547
+
548
+ // apply field limit as required by ff
549
+ $counter++;
550
+ if ($counter >= 1000) {
551
+ break;
552
+ }
553
+ }
554
+
555
+ $delimiter = ($type == 'searchable' ? ',' : '|');
556
+
557
+ return implode($delimiter, $returnArray);
558
+ }
559
+
560
+
561
+ /**
562
+ * Check if html tags and entities should be removed on export
563
+ *
564
+ * @param string $value
565
+ * @param int $storeId
566
+ *
567
+ * @return bool
568
+ */
569
+ protected function _removeTags($value, $storeId)
570
+ {
571
+ if (Mage::getStoreConfig('factfinder/export/remove_tags', $storeId)) {
572
+ $attributeValues = $value;
573
+ if (!is_array($attributeValues)) {
574
+ $attributeValues = array($value);
575
+ }
576
+ foreach ($attributeValues as &$attributeValue) {
577
+ // decode html entities
578
+ $attributeValue = html_entity_decode($attributeValue, null, 'UTF-8');
579
+ // Add spaces before HTML Tags, so that strip_tags() does not join word which were in different block elements
580
+ // Additional spaces are not an issue, because they will be removed in the next step anyway
581
+ $attributeValue = preg_replace('/</u', ' <', $attributeValue);
582
+ $attributeValue = preg_replace("#\s+#siu", ' ', trim(strip_tags($attributeValue)));
583
+ // remove rest html entities
584
+ $attributeValue = preg_replace("/&(?:[a-z\d]|#\d|#x[a-f\d]){2,8};/i", '', $attributeValue);
585
+ }
586
+ $value = implode("|", $attributeValues);
587
+ }
588
+
589
+ return $value;
590
+ }
591
+
592
+
593
+ /**
594
+ * Remove all empty values from array
595
+ *
596
+ * @param array $values
597
+ *
598
+ * @return array
599
+ */
600
+ protected function _filterAttributeValues($values)
601
+ {
602
+ // filter all empty values out
603
+ return array_filter($values, function ($value) {
604
+ return !empty($value);
605
+ });
606
+ }
607
+
608
+
609
+ /**
610
+ * Format numerical attribute value
611
+ *
612
+ * @param int $storeId
613
+ * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
614
+ * @param string $attributeValue
615
+ *
616
+ * @return array
617
+ */
618
+ protected function _formatNumericalAttributes($storeId, $attribute, $attributeValue)
619
+ {
620
+ $attributeCode = $attribute->getAttributeCode();
621
+ if (Mage::helper('factfinder/export')->useExplicitAttributes($storeId)) {
622
+ // make sure attributes are loaded
623
+ $this->getConfiguredAttributes($storeId);
624
+
625
+ // add unit if available
626
+ if (isset($this->_configuredAttributes[$storeId][$attributeCode])) {
627
+ $configuredAttribute = $this->_configuredAttributes[$storeId][$attributeCode];
628
+ if (!empty($configuredAttribute['unit'])) {
629
+ $unit = $configuredAttribute['unit'];
630
+ $attributeCode .= '~~' . $unit;
631
+ }
632
+ }
633
+ }
634
+
635
+ $attributeCode = $this->_removeTags($attributeCode, $storeId);
636
+
637
+ // bring it to the en_US format without thousand separator (eg. 2134.7639)
638
+ $attributeValue = round(number_format(floatval($attributeValue), 4, '.', ''), 4);
639
+ // remove forbidden symbols
640
+ $attributeValue = str_replace(array('|', '=', '#'), '', array($attributeCode, $attributeValue));
641
+
642
+ return implode('=', $attributeValue);
643
+ }
644
+
645
+
646
+ }
app/code/community/FACTFinder/Core/Model/Export/Type/Stock.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
@@ -87,7 +87,11 @@ class FACTFinder_Core_Model_Export_Type_Stock extends Mage_Core_Model_Resource_D
87
  $dir = Mage::helper('factfinder/export')->getExportDirectory();
88
  $fileName = $this->getFilenameForStore($storeId);
89
  $this->_file = Mage::getModel('factfinder/file');
90
- $this->_file->setValidator(Mage::getModel(self::FILE_VALIDATOR));
 
 
 
 
91
  $this->_file->open($dir, $fileName);
92
  }
93
 
@@ -137,7 +141,7 @@ class FACTFinder_Core_Model_Export_Type_Stock extends Mage_Core_Model_Resource_D
137
  $semaphore->release();
138
  }
139
 
140
- if (Mage::helper('factfinder/export')->isValidationEnabled($storeId) && !$this->_getFile($storeId)->isValid()) {
141
  return false;
142
  }
143
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
87
  $dir = Mage::helper('factfinder/export')->getExportDirectory();
88
  $fileName = $this->getFilenameForStore($storeId);
89
  $this->_file = Mage::getModel('factfinder/file');
90
+
91
+ if (Mage::helper('factfinder/export')->isValidationEnabled($storeId)) {
92
+ $this->_file->setValidator(Mage::getModel(self::FILE_VALIDATOR));
93
+ }
94
+
95
  $this->_file->open($dir, $fileName);
96
  }
97
 
141
  $semaphore->release();
142
  }
143
 
144
+ if (!$this->_getFile($storeId)->isValid()) {
145
  return false;
146
  }
147
 
app/code/community/FACTFinder/Core/Model/Facade.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -22,7 +22,7 @@ use FACTFinder\Loader as FF;
22
  * @category Mage
23
  * @package FACTFinder_Core
24
  * @author Flagbit Magento Team <magento@flagbit.de>
25
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
26
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
27
  * @link http://www.flagbit.de
28
  */
@@ -372,6 +372,10 @@ class FACTFinder_Core_Model_Facade
372
  */
373
  protected function _getAdapter($type, $channel = null, $id = null)
374
  {
 
 
 
 
375
  $hashKey = $this->_getAdapterIdentifier($type, $channel, $id);
376
 
377
  // get the channel after calculating the adapter identifier
@@ -593,7 +597,7 @@ class FACTFinder_Core_Model_Facade
593
  * @param string $channel
594
  * @param int $id
595
  *
596
- * @return Object|null
597
  */
598
  protected function _getFactFinderObject($type, $objectGetter, $channel = null, $id = null)
599
  {
@@ -699,4 +703,24 @@ class FACTFinder_Core_Model_Facade
699
  }
700
 
701
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
702
  }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
22
  * @category Mage
23
  * @package FACTFinder_Core
24
  * @author Flagbit Magento Team <magento@flagbit.de>
25
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
26
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
27
  * @link http://www.flagbit.de
28
  */
372
  */
373
  protected function _getAdapter($type, $channel = null, $id = null)
374
  {
375
+ if (!$this->_validateAdapterConfiguration($type)) {
376
+ Mage::throwException('Invalid search adapter configuration');
377
+ }
378
+
379
  $hashKey = $this->_getAdapterIdentifier($type, $channel, $id);
380
 
381
  // get the channel after calculating the adapter identifier
597
  * @param string $channel
598
  * @param int $id
599
  *
600
+ * @return \FACTFinder\Adapter\AbstractAdapter|null
601
  */
602
  protected function _getFactFinderObject($type, $objectGetter, $channel = null, $id = null)
603
  {
703
  }
704
 
705
 
706
+ /**
707
+ * Check if all required parameters are set for the adapter
708
+ *
709
+ * @param $type
710
+ *
711
+ * @return bool
712
+ */
713
+ protected function _validateAdapterConfiguration($type)
714
+ {
715
+ if ($type == 'search') {
716
+ $params = $this->getClientRequestParams();
717
+ if (!$params->offsetExists('navigation') && !$params->offsetExists('query')) {
718
+ return false;
719
+ }
720
+ }
721
+
722
+ return true;
723
+ }
724
+
725
+
726
  }
app/code/community/FACTFinder/Core/Model/File.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/File/Validator/Abstract.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
@@ -122,7 +122,7 @@ abstract class FACTFinder_Core_Model_File_Validator_Abstract
122
  {
123
  $actualSize = 0;
124
  $h = fopen($file, 'r');
125
- while (fgetcsv($h)) {
126
  $actualSize++;
127
  }
128
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
122
  {
123
  $actualSize = 0;
124
  $h = fopen($file, 'r');
125
+ while (fgetcsv($h, null, $this->getCsvDelimiter())) {
126
  $actualSize++;
127
  }
128
 
app/code/community/FACTFinder/Core/Model/Ftp.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package magento
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Core/Model/Handler/Abstract.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/Handler/Search.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
@@ -200,11 +200,11 @@ class FACTFinder_Core_Model_Handler_Search extends FACTFinder_Core_Model_Handler
200
  /**
201
  * Get pagination object from FF
202
  *
203
- * @return \FACTFinder\Data\Paging
204
  */
205
  public function getPaging()
206
  {
207
- if (!$this->isSearchHasResult()) {
208
  return null;
209
  }
210
 
@@ -219,7 +219,7 @@ class FACTFinder_Core_Model_Handler_Search extends FACTFinder_Core_Model_Handler
219
  */
220
  public function getSorting()
221
  {
222
- if (!$this->isSearchHasResult()) {
223
  return null;
224
  }
225
 
@@ -233,7 +233,7 @@ class FACTFinder_Core_Model_Handler_Search extends FACTFinder_Core_Model_Handler
233
  */
234
  public function getResultsPerPageOptions()
235
  {
236
- if (!$this->isSearchHasResult()) {
237
  return null;
238
  }
239
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
200
  /**
201
  * Get pagination object from FF
202
  *
203
+ * @return \FACTFinder\Data\Paging|null
204
  */
205
  public function getPaging()
206
  {
207
+ if (!Mage::helper('factfinder')->isEnabled() || !$this->isSearchHasResult()) {
208
  return null;
209
  }
210
 
219
  */
220
  public function getSorting()
221
  {
222
+ if (!Mage::helper('factfinder')->isEnabled() || !$this->isSearchHasResult()) {
223
  return null;
224
  }
225
 
233
  */
234
  public function getResultsPerPageOptions()
235
  {
236
+ if (!Mage::helper('factfinder')->isEnabled() || !$this->isSearchHasResult()) {
237
  return null;
238
  }
239
 
app/code/community/FACTFinder/Core/Model/Handler/Status.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -35,7 +35,7 @@ define('FFE_SERVER_TIME_MISMATCH', 16183003); // server time is not consistent w
35
  * @category Mage
36
  * @package FACTFinder_Core
37
  * @author Flagbit Magento Team <magento@flagbit.de>
38
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
39
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
40
  * @link http://www.flagbit.de
41
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
35
  * @category Mage
36
  * @package FACTFinder_Core
37
  * @author Flagbit Magento Team <magento@flagbit.de>
38
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
39
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
40
  * @link http://www.flagbit.de
41
  */
app/code/community/FACTFinder/Core/Model/Observer.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Core/Model/Resource/Attribute.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class FACTFinder_Core_Model_Resource_Attribute extends Mage_CatalogSearch_Model_Resource_Fulltext
3
+ {
4
+
5
+ protected function _construct()
6
+ {
7
+ $this->_init('catalog/attribute', 'entity_id');
8
+ }
9
+
10
+ /**
11
+ * Retrieve EAV Config Singleton
12
+ *
13
+ * @return Mage_Eav_Model_Config
14
+ */
15
+ public function getEavConfig()
16
+ {
17
+ return Mage::getSingleton('eav/config');
18
+ }
19
+
20
+ /**
21
+ * Retrieve Searchable attributes
22
+ *
23
+ * @param int $storeId
24
+ *
25
+ * @return array
26
+ */
27
+ public function getSearchableAttributes($storeId = null)
28
+ {
29
+ if ($this->_searchableAttributes === null) {
30
+ $this->_searchableAttributes = array();
31
+ $entityType = $this->getEavConfig()->getEntityType('catalog_product');
32
+ $entity = $entityType->getEntity();
33
+
34
+ $userDefinedAttributes = Mage::getStoreConfig('factfinder/export/attributes', $storeId);
35
+ $userDefinedAttributes = array_keys(
36
+ Mage::helper('factfinder/backend')->unserializeFieldValue($userDefinedAttributes)
37
+ );
38
+
39
+ $whereCond = array(
40
+ $this->_getWriteAdapter()->quoteInto('additional_table.is_searchable=?', 1),
41
+ $this->_getWriteAdapter()->quoteInto('additional_table.is_filterable=?', 1),
42
+ $this->_getWriteAdapter()->quoteInto('additional_table.used_for_sort_by=?', 1),
43
+ $this->_getWriteAdapter()->quoteInto(
44
+ 'main_table.attribute_code IN(?)',
45
+ array_merge(array('status', 'visibility'), $userDefinedAttributes)
46
+ )
47
+ );
48
+
49
+ $select = $this->_getWriteAdapter()->select()
50
+ ->from(array('main_table' => $this->getTable('eav/attribute')))
51
+ ->join(
52
+ array('additional_table' => $this->getTable('catalog/eav_attribute')),
53
+ 'additional_table.attribute_id = main_table.attribute_id'
54
+ )
55
+ ->where('main_table.entity_type_id=?', $entityType->getEntityTypeId())
56
+ ->where(join(' OR ', $whereCond))
57
+ ->order('main_table.attribute_id', 'asc');
58
+
59
+ $attributesData = $this->_getWriteAdapter()->fetchAll($select);
60
+ $this->getEavConfig()->importAttributesData($entityType, $attributesData);
61
+
62
+ foreach ($attributesData as $attributeData) {
63
+ $attributeCode = $attributeData['attribute_code'];
64
+ $attribute = $this->getEavConfig()->getAttribute($entityType, $attributeCode);
65
+ $attribute->setEntity($entity);
66
+ $this->_searchableAttributes[$attribute->getId()] = $attribute;
67
+ }
68
+ }
69
+
70
+ return $this->_searchableAttributes;
71
+ }
72
+
73
+ /**
74
+ * Retrieve searchable attribute by Id or code
75
+ *
76
+ * @param int|string $attribute
77
+ *
78
+ * @return Mage_Eav_Model_Entity_Attribute
79
+ */
80
+ public function getSearchableAttribute($attribute)
81
+ {
82
+ return $this->_getSearchableAttribute($attribute);
83
+ }
84
+
85
+
86
+ /**
87
+ * Load product(s) attributes
88
+ *
89
+ * @param int $storeId
90
+ * @param array $productIds
91
+ * @param array $attributeTypes
92
+ *
93
+ * @return array
94
+ */
95
+ public function getProductAttributes($storeId, array $productIds, array $attributeTypes)
96
+ {
97
+ return $this->_getProductAttributes($storeId, $productIds, $attributeTypes);
98
+ }
99
+
100
+
101
+ }
app/code/community/FACTFinder/Core/Model/Resource/Fulltext.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/Resource/{Export.php → Product.php} RENAMED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,11 +19,11 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
- class FACTFinder_Core_Model_Resource_Export extends Mage_CatalogSearch_Model_Resource_Fulltext
27
  {
28
 
29
 
@@ -84,59 +84,6 @@ class FACTFinder_Core_Model_Resource_Export extends Mage_CatalogSearch_Model_Res
84
  }
85
 
86
 
87
- /**
88
- * Retrieve Searchable attributes
89
- *
90
- * @param int $storeId
91
- *
92
- * @return array
93
- */
94
- public function getSearchableAttributes($storeId = null)
95
- {
96
- if ($this->_searchableAttributes === null) {
97
- $this->_searchableAttributes = array();
98
- $entityType = $this->getEavConfig()->getEntityType('catalog_product');
99
- $entity = $entityType->getEntity();
100
-
101
- $userDefinedAttributes = Mage::getStoreConfig('factfinder/export/attributes', $storeId);
102
- $userDefinedAttributes = array_keys(
103
- Mage::helper('factfinder/backend')->unserializeFieldValue($userDefinedAttributes)
104
- );
105
-
106
- $whereCond = array(
107
- $this->_getWriteAdapter()->quoteInto('additional_table.is_searchable=?', 1),
108
- $this->_getWriteAdapter()->quoteInto('additional_table.is_filterable=?', 1),
109
- $this->_getWriteAdapter()->quoteInto('additional_table.used_for_sort_by=?', 1),
110
- $this->_getWriteAdapter()->quoteInto(
111
- 'main_table.attribute_code IN(?)',
112
- array_merge(array('status', 'visibility'), $userDefinedAttributes)
113
- )
114
- );
115
-
116
- $select = $this->_getWriteAdapter()->select()
117
- ->from(array('main_table' => $this->getTable('eav/attribute')))
118
- ->join(
119
- array('additional_table' => $this->getTable('catalog/eav_attribute')),
120
- 'additional_table.attribute_id = main_table.attribute_id'
121
- )
122
- ->where('main_table.entity_type_id=?', $entityType->getEntityTypeId())
123
- ->where(join(' OR ', $whereCond))
124
- ->order('main_table.attribute_id', 'asc');
125
-
126
- $attributesData = $this->_getWriteAdapter()->fetchAll($select);
127
- $this->getEavConfig()->importAttributesData($entityType, $attributesData);
128
-
129
- foreach ($attributesData as $attributeData) {
130
- $attributeCode = $attributeData['attribute_code'];
131
- $attribute = $this->getEavConfig()->getAttribute($entityType, $attributeCode);
132
- $attribute->setEntity($entity);
133
- $this->_searchableAttributes[$attribute->getId()] = $attribute;
134
- }
135
- }
136
-
137
- return $this->_searchableAttributes;
138
- }
139
-
140
 
141
  /**
142
  * Get products to category paths
@@ -271,32 +218,4 @@ class FACTFinder_Core_Model_Resource_Export extends Mage_CatalogSearch_Model_Res
271
  }
272
 
273
 
274
- /**
275
- * Retrieve searchable attribute by Id or code
276
- *
277
- * @param int|string $attribute
278
- *
279
- * @return Mage_Eav_Model_Entity_Attribute
280
- */
281
- public function getSearchableAttribute($attribute)
282
- {
283
- return $this->_getSearchableAttribute($attribute);
284
- }
285
-
286
-
287
- /**
288
- * Load product(s) attributes
289
- *
290
- * @param int $storeId
291
- * @param array $productIds
292
- * @param array $attributeTypes
293
- *
294
- * @return array
295
- */
296
- public function getProductAttributes($storeId, array $productIds, array $attributeTypes)
297
- {
298
- return $this->_getProductAttributes($storeId, $productIds, $attributeTypes);
299
- }
300
-
301
-
302
  }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
+ class FACTFinder_Core_Model_Resource_Product extends Mage_CatalogSearch_Model_Resource_Fulltext
27
  {
28
 
29
 
84
  }
85
 
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
  /**
89
  * Get products to category paths
218
  }
219
 
220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  }
app/code/community/FACTFinder/Core/Model/Resource/Search/Collection.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/Resource/Search/Engine.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Attributes.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Cron.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Enabled.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Engine.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/code/community/FACTFinder/Core/Model/System/Config/Source/Authtype.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Core/Model/System/Config/Source/Engine.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/code/community/FACTFinder/Core/Model/System/Config/Source/Identifier.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/System/Config/Source/Protocol.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Core/Model/Url.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package FACTFinder
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Core/controllers/ExportController.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -20,7 +20,7 @@
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
25
  * @link http://www.flagbit.de
26
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
25
  * @link http://www.flagbit.de
26
  */
app/code/community/FACTFinder/Core/etc/adminhtml.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/code/community/FACTFinder/Core/etc/config.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/code/community/FACTFinder/Core/etc/system.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
@@ -221,11 +221,21 @@
221
  <show_in_website>1</show_in_website>
222
  <show_in_store>1</show_in_store>
223
  </attributes>
 
 
 
 
 
 
 
 
 
 
224
  <trigger_data_import translate="label">
225
  <label>Trigger Data Import</label>
226
  <frontend_type>select</frontend_type>
227
  <source_model>adminhtml/system_config_source_yesno</source_model>
228
- <sort_order>40</sort_order>
229
  <show_in_default>1</show_in_default>
230
  <show_in_website>1</show_in_website>
231
  <show_in_store>1</show_in_store>
@@ -235,7 +245,7 @@
235
  <label>Import Delay Enabled</label>
236
  <frontend_type>select</frontend_type>
237
  <source_model>adminhtml/system_config_source_yesno</source_model>
238
- <sort_order>45</sort_order>
239
  <show_in_default>1</show_in_default>
240
  <show_in_website>1</show_in_website>
241
  <show_in_store>1</show_in_store>
@@ -245,7 +255,7 @@
245
  <label>Upload files to FTP host</label>
246
  <frontend_type>select</frontend_type>
247
  <source_model>adminhtml/system_config_source_yesno</source_model>
248
- <sort_order>50</sort_order>
249
  <show_in_default>1</show_in_default>
250
  <show_in_website>1</show_in_website>
251
  <show_in_store>1</show_in_store>
@@ -254,7 +264,7 @@
254
  <ftp_host translate="label">
255
  <label>FTP Host</label>
256
  <frontend_type>text</frontend_type>
257
- <sort_order>55</sort_order>
258
  <show_in_default>1</show_in_default>
259
  <show_in_website>1</show_in_website>
260
  <show_in_store>1</show_in_store>
@@ -263,7 +273,7 @@
263
  <ftp_port translate="label">
264
  <label>FTP Port</label>
265
  <frontend_type>text</frontend_type>
266
- <sort_order>60</sort_order>
267
  <show_in_default>1</show_in_default>
268
  <show_in_website>1</show_in_website>
269
  <show_in_store>1</show_in_store>
@@ -272,7 +282,7 @@
272
  <ftp_user translate="label">
273
  <label>FTP User</label>
274
  <frontend_type>text</frontend_type>
275
- <sort_order>65</sort_order>
276
  <show_in_default>1</show_in_default>
277
  <show_in_website>1</show_in_website>
278
  <show_in_store>1</show_in_store>
@@ -281,7 +291,7 @@
281
  <ftp_password translate="label">
282
  <label>FTP Password</label>
283
  <frontend_type>password</frontend_type>
284
- <sort_order>70</sort_order>
285
  <show_in_default>1</show_in_default>
286
  <show_in_website>1</show_in_website>
287
  <show_in_store>1</show_in_store>
@@ -290,7 +300,7 @@
290
  <ftp_path translate="label">
291
  <label>FTP Path</label>
292
  <frontend_type>text</frontend_type>
293
- <sort_order>75</sort_order>
294
  <show_in_default>1</show_in_default>
295
  <show_in_website>1</show_in_website>
296
  <show_in_store>1</show_in_store>
@@ -300,7 +310,7 @@
300
  <label>Use SSL</label>
301
  <frontend_type>select</frontend_type>
302
  <source_model>adminhtml/system_config_source_yesno</source_model>
303
- <sort_order>80</sort_order>
304
  <show_in_default>1</show_in_default>
305
  <show_in_website>1</show_in_website>
306
  <show_in_store>1</show_in_store>
@@ -309,7 +319,7 @@
309
  </ftp_ssl>
310
  <export_url translate="label">
311
  <frontend_model>factfinder/adminhtml_exportlink</frontend_model>
312
- <sort_order>95</sort_order>
313
  <show_in_default>1</show_in_default>
314
  <show_in_website>1</show_in_website>
315
  <show_in_store>1</show_in_store>
@@ -318,7 +328,7 @@
318
  <label>Disable export feed validation</label>
319
  <frontend_type>select</frontend_type>
320
  <source_model>adminhtml/system_config_source_yesno</source_model>
321
- <sort_order>120</sort_order>
322
  <show_in_default>1</show_in_default>
323
  <show_in_website>1</show_in_website>
324
  <show_in_store>1</show_in_store>
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
221
  <show_in_website>1</show_in_website>
222
  <show_in_store>1</show_in_store>
223
  </attributes>
224
+ <explicit_attributes translate="label">
225
+ <label>Use explicit attribute types</label>
226
+ <frontend_type>select</frontend_type>
227
+ <source_model>adminhtml/system_config_source_yesno</source_model>
228
+ <sort_order>40</sort_order>
229
+ <show_in_default>1</show_in_default>
230
+ <show_in_website>1</show_in_website>
231
+ <show_in_store>1</show_in_store>
232
+ <comment><![CDATA[Use types from the above table to export attributes in type-specific columns rather than in separate ones]]></comment>
233
+ </explicit_attributes>
234
  <trigger_data_import translate="label">
235
  <label>Trigger Data Import</label>
236
  <frontend_type>select</frontend_type>
237
  <source_model>adminhtml/system_config_source_yesno</source_model>
238
+ <sort_order>50</sort_order>
239
  <show_in_default>1</show_in_default>
240
  <show_in_website>1</show_in_website>
241
  <show_in_store>1</show_in_store>
245
  <label>Import Delay Enabled</label>
246
  <frontend_type>select</frontend_type>
247
  <source_model>adminhtml/system_config_source_yesno</source_model>
248
+ <sort_order>60</sort_order>
249
  <show_in_default>1</show_in_default>
250
  <show_in_website>1</show_in_website>
251
  <show_in_store>1</show_in_store>
255
  <label>Upload files to FTP host</label>
256
  <frontend_type>select</frontend_type>
257
  <source_model>adminhtml/system_config_source_yesno</source_model>
258
+ <sort_order>70</sort_order>
259
  <show_in_default>1</show_in_default>
260
  <show_in_website>1</show_in_website>
261
  <show_in_store>1</show_in_store>
264
  <ftp_host translate="label">
265
  <label>FTP Host</label>
266
  <frontend_type>text</frontend_type>
267
+ <sort_order>80</sort_order>
268
  <show_in_default>1</show_in_default>
269
  <show_in_website>1</show_in_website>
270
  <show_in_store>1</show_in_store>
273
  <ftp_port translate="label">
274
  <label>FTP Port</label>
275
  <frontend_type>text</frontend_type>
276
+ <sort_order>90</sort_order>
277
  <show_in_default>1</show_in_default>
278
  <show_in_website>1</show_in_website>
279
  <show_in_store>1</show_in_store>
282
  <ftp_user translate="label">
283
  <label>FTP User</label>
284
  <frontend_type>text</frontend_type>
285
+ <sort_order>100</sort_order>
286
  <show_in_default>1</show_in_default>
287
  <show_in_website>1</show_in_website>
288
  <show_in_store>1</show_in_store>
291
  <ftp_password translate="label">
292
  <label>FTP Password</label>
293
  <frontend_type>password</frontend_type>
294
+ <sort_order>110</sort_order>
295
  <show_in_default>1</show_in_default>
296
  <show_in_website>1</show_in_website>
297
  <show_in_store>1</show_in_store>
300
  <ftp_path translate="label">
301
  <label>FTP Path</label>
302
  <frontend_type>text</frontend_type>
303
+ <sort_order>120</sort_order>
304
  <show_in_default>1</show_in_default>
305
  <show_in_website>1</show_in_website>
306
  <show_in_store>1</show_in_store>
310
  <label>Use SSL</label>
311
  <frontend_type>select</frontend_type>
312
  <source_model>adminhtml/system_config_source_yesno</source_model>
313
+ <sort_order>130</sort_order>
314
  <show_in_default>1</show_in_default>
315
  <show_in_website>1</show_in_website>
316
  <show_in_store>1</show_in_store>
319
  </ftp_ssl>
320
  <export_url translate="label">
321
  <frontend_model>factfinder/adminhtml_exportlink</frontend_model>
322
+ <sort_order>140</sort_order>
323
  <show_in_default>1</show_in_default>
324
  <show_in_website>1</show_in_website>
325
  <show_in_store>1</show_in_store>
328
  <label>Disable export feed validation</label>
329
  <frontend_type>select</frontend_type>
330
  <source_model>adminhtml/system_config_source_yesno</source_model>
331
+ <sort_order>150</sort_order>
332
  <show_in_default>1</show_in_default>
333
  <show_in_website>1</show_in_website>
334
  <show_in_store>1</show_in_store>
app/code/community/FACTFinder/Suggest/Block/TopSearch.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Suggest/Block/XmlConnect/Catalog/Search/Suggest.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Suggest/Helper/Data.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Suggest/Model/Facade.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Suggest/Model/Handler/Suggest.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
@@ -28,7 +28,7 @@ class FACTFinder_Suggest_Model_Handler_Suggest extends FACTFinder_Core_Model_Han
28
 
29
  protected $_query;
30
 
31
- protected $_jqueryCallback;
32
 
33
  protected $_suggestResult;
34
 
@@ -50,16 +50,16 @@ class FACTFinder_Suggest_Model_Handler_Suggest extends FACTFinder_Core_Model_Han
50
  * We might need to supply the facade manually, because we might not have a full Magento
51
  * context and we cannot call Mage::getSingleton().
52
  * @param string $query
53
- * @param string $jqueryCallback
54
  * @param FACTFinder_Suggest_Model_Facade $facade
55
  */
56
- public function __construct($query, $jqueryCallback = '', $facade = null)
57
  {
58
  $this->_facade = $facade;
59
  $this->_query = $query;
60
 
61
  // prevent xss (<script> tags can open a vulnerability)
62
- $this->_jqueryCallback = strip_tags($jqueryCallback);
63
 
64
  parent::__construct();
65
  }
@@ -154,7 +154,7 @@ class FACTFinder_Suggest_Model_Handler_Suggest extends FACTFinder_Core_Model_Han
154
  );
155
  }
156
  }
157
- return $this->_jqueryCallback . '(' . Zend_Json_Encoder::encode($resultArray) . ');';
158
  }
159
 
160
 
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
28
 
29
  protected $_query;
30
 
31
+ protected $_jsCallback;
32
 
33
  protected $_suggestResult;
34
 
50
  * We might need to supply the facade manually, because we might not have a full Magento
51
  * context and we cannot call Mage::getSingleton().
52
  * @param string $query
53
+ * @param string $jsCallback
54
  * @param FACTFinder_Suggest_Model_Facade $facade
55
  */
56
+ public function __construct($query, $jsCallback = '', $facade = null)
57
  {
58
  $this->_facade = $facade;
59
  $this->_query = $query;
60
 
61
  // prevent xss (<script> tags can open a vulnerability)
62
+ $this->_jsCallback = strip_tags($jsCallback);
63
 
64
  parent::__construct();
65
  }
154
  );
155
  }
156
  }
157
+ return $this->_jsCallback . '(' . Zend_Json_Encoder::encode($resultArray) . ');';
158
  }
159
 
160
 
app/code/community/FACTFinder/Suggest/Model/Observer.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Suggest/Model/Processor.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -21,7 +21,7 @@ require_once BP . DS . 'lib' . DS . 'FACTFinder' . DS . 'Loader.php';
21
  * @category Mage
22
  * @package FACTFinder_Suggest
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
25
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
@@ -168,7 +168,7 @@ class FACTFinder_Suggest_Model_Processor
168
  {
169
  $handler = new FACTFinder_Suggest_Model_Handler_Suggest(
170
  $this->_getRequestParam('query'),
171
- $this->_getRequestParam('jquery_callback'),
172
  $this->_getFacade()
173
  );
174
 
@@ -299,4 +299,21 @@ class FACTFinder_Suggest_Model_Processor
299
  }
300
 
301
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  }
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
21
  * @category Mage
22
  * @package FACTFinder_Suggest
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
25
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
168
  {
169
  $handler = new FACTFinder_Suggest_Model_Handler_Suggest(
170
  $this->_getRequestParam('query'),
171
+ $this->_getJsCallback(),
172
  $this->_getFacade()
173
  );
174
 
299
  }
300
 
301
 
302
+ /**
303
+ * Get JS callback from request data
304
+ *
305
+ * @return string
306
+ */
307
+ protected function _getJsCallback()
308
+ {
309
+ $jsCallback = $this->_getRequestParam('jquery_callback');
310
+
311
+ if (!$jsCallback) {
312
+ $jsCallback = $this->_getRequestParam('callback');
313
+ }
314
+
315
+ return $jsCallback;
316
+ }
317
+
318
+
319
  }
app/code/community/FACTFinder/Suggest/Model/System/Config/Source/Imagetype.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Suggest/controllers/ProxyController.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Suggest/etc/config.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
@@ -92,6 +92,9 @@
92
  <config>
93
  <proxy>1</proxy>
94
  </config>
 
 
 
95
  </factfinder>
96
  </default>
97
  </config>
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
92
  <config>
93
  <proxy>1</proxy>
94
  </config>
95
+ <export>
96
+ <suggest_image_size>60</suggest_image_size>
97
+ </export>
98
  </factfinder>
99
  </default>
100
  </config>
app/code/community/FACTFinder/Suggest/etc/system.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/code/community/FACTFinder/Tagcloud/Block/TagCloud.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -19,7 +19,7 @@
19
  * @category Mage
20
  * @package FACTFinder_TagCloud
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
19
  * @category Mage
20
  * @package FACTFinder_TagCloud
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
23
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
app/code/community/FACTFinder/Tagcloud/Helper/Data.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tagcloud/Model/Facade.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tagcloud/Model/Handler/TagCloud.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tagcloud/etc/config.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/code/community/FACTFinder/Tracking/Block/Abstract.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
app/code/community/FACTFinder/Tracking/Block/Click.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/Block/Recommendation.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/Helper/Data.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/Model/Facade.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/Model/Handler/Tracking.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/Model/Observer.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
@@ -191,7 +191,8 @@ class FACTFinder_Tracking_Model_Observer
191
  continue;
192
  }
193
 
194
- $parentProductId = null;
 
195
  $price = $item->getPrice();
196
 
197
  $parentItem = $item->getParentItem();
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
191
  continue;
192
  }
193
 
194
+ // use product id as default value in case there's no parent item
195
+ $parentProductId = $item->getProduct()->getData($idFieldName);
196
  $price = $item->getPrice();
197
 
198
  $parentItem = $item->getParentItem();
app/code/community/FACTFinder/Tracking/Model/Processor.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -21,7 +21,7 @@ require_once BP . DS . 'lib' . DS . 'FACTFinder' . DS . 'Loader.php';
21
  * @category Mage
22
  * @package FACTFinder_Tracking
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
25
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
21
  * @category Mage
22
  * @package FACTFinder_Tracking
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
25
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
app/code/community/FACTFinder/Tracking/Model/Queue.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/Model/Resource/Queue.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/Model/Resource/Queue/Collection.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/controllers/ProxyController.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
@@ -17,7 +17,7 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
21
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
app/code/community/FACTFinder/Tracking/etc/config.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/code/community/FACTFinder/Tracking/etc/system.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/install-1.0.0.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-1.0.0-4.1.2.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-4.1.11-4.1.12.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-4.1.2-4.1.11.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/design/adminhtml/default/default/template/factfinder/core/system/config/form/field/attributes.phtml ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento Enterprise Edition
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Magento Enterprise Edition End User License Agreement
8
+ * that is bundled with this package in the file LICENSE_EE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://www.magento.com/license/enterprise-edition
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
24
+ * @license http://www.magento.com/license/enterprise-edition
25
+ */
26
+ ?>
27
+ <?php
28
+
29
+ $_htmlId = $this->getHtmlId() ? $this->getHtmlId() : '_' . uniqid();
30
+
31
+ $_colspan = 2;
32
+ if (!$this->_addAfter) {
33
+ $_colspan -= 1;
34
+ }
35
+ $_colspan = $_colspan > 1 ? 'colspan="' . $_colspan . '"' : '';
36
+ ?>
37
+
38
+ <div class="grid" id="grid<?php echo $_htmlId ?>">
39
+ <table cellpadding="0" cellspacing="0" class="border">
40
+ <tbody>
41
+
42
+ <tr class="headings" id="headings<?php echo $_htmlId ?>">
43
+ <?php foreach ($this->_columns as $columnName => $column):?>
44
+ <th><?php echo $column['label'] ?></th>
45
+ <?php endforeach;?>
46
+ <th <?php echo $_colspan?>></th>
47
+ </tr>
48
+
49
+ <tr id="addRow<?php echo $_htmlId ?>">
50
+ <td colspan="<?php echo count($this->_columns) ?>"></td>
51
+ <td <?php echo $_colspan?>>
52
+ <button style="" onclick="" class="scalable add" type="button" id="addToEndBtn<?php echo $_htmlId ?>">
53
+ <span><span><span><?php echo $this->_addButtonLabel ?></span></span></span>
54
+ </button>
55
+ </td>
56
+ </tr>
57
+
58
+ </tbody>
59
+ </table>
60
+ <input type="hidden" name="<?php echo $this->getElement()->getName() ?>[__empty]" value="" />
61
+ </div>
62
+ <div id="empty<?php echo $_htmlId ?>">
63
+ <button style="" onclick="" class="scalable add" type="button" id="emptyAddBtn<?php echo $_htmlId ?>">
64
+ <span><span><span><?php echo $this->_addButtonLabel ?></span></span></span>
65
+ </button>
66
+ </div>
67
+
68
+ <script type="text/javascript">
69
+ //<![CDATA[
70
+ // create row creator
71
+ var arrayRow<?php echo $_htmlId ?> = {
72
+ // define row prototypeJS template
73
+ template : new Template(
74
+ '<tr id="#{_id}">'
75
+ <?php foreach ($this->_columns as $columnName => $column):?>
76
+ +'<td>'
77
+ +'<?php echo Mage::helper('core')->jsQuoteEscape($this->_renderCellTemplate($columnName)) ?>'
78
+ +'<\/td>'
79
+ <?php endforeach;?>
80
+ <?php if ($this->_addAfter):?>
81
+ +'<td><button onclick="" class="scalable add" type="button" id="addAfterBtn#{_id}"><span><span><span><?php echo Mage::helper('core')->jsQuoteEscape(Mage::helper('adminhtml')->__('Add after')) ?><\/span><\/span><\/span><\/button><\/td>'
82
+ <?php endif;?>
83
+ +'<td><button onclick="arrayRow<?php echo $_htmlId ?>.del(\'#{_id}\')" class="scalable delete" type="button"><span><span><span><?php echo Mage::helper('core')->jsQuoteEscape(Mage::helper('adminhtml')->__('Delete')) ?><\/span><\/span><\/span><\/button><\/td>'
84
+ +'<\/tr>'
85
+ ),
86
+
87
+ rowsCount : 0,
88
+
89
+ add : function(templateData, insertAfterId)
90
+ {
91
+ // generate default template data
92
+ if ('' == templateData) {
93
+ var d = new Date();
94
+ var templateData = {
95
+ <?php foreach ($this->_columns as $columnName => $column):?>
96
+ <?php echo $columnName ?> : '',
97
+ <?php endforeach;?>
98
+ _id : '_' + d.getTime() + '_' + d.getMilliseconds()
99
+ };
100
+ }
101
+
102
+ // insert before last row
103
+ if ('' == insertAfterId) {
104
+ Element.insert($('addRow<?php echo $_htmlId ?>'), {before: this.template.evaluate(templateData)});
105
+ }
106
+ // insert after specified row
107
+ else {
108
+ Element.insert($(insertAfterId), {after: this.template.evaluate(templateData)});
109
+ }
110
+
111
+ var typeElement = $(templateData._id).down('.type_select');
112
+ var unitElement = $(templateData._id).down('.attribute_unit');
113
+ if (typeElement && unitElement) {
114
+ updateUnit(typeElement, unitElement);
115
+ typeElement.observe('change', function (event) {
116
+ updateUnit(typeElement, unitElement);
117
+ }.bind(this));
118
+ }
119
+
120
+ <?php if ($this->_addAfter):?>
121
+ Event.observe('addAfterBtn' + templateData._id, 'click', this.add.bind(this, '', templateData._id));
122
+ <?php endif;?>
123
+
124
+ this.rowsCount += 1;
125
+ },
126
+
127
+ del : function(rowId)
128
+ {
129
+ $(rowId).remove();
130
+ this.rowsCount -= 1;
131
+ if (0 == this.rowsCount) {
132
+ this.showButtonOnly();
133
+ }
134
+ },
135
+
136
+ showButtonOnly : function()
137
+ {
138
+ $('grid<?php echo $_htmlId ?>').hide();
139
+ $('empty<?php echo $_htmlId ?>').show();
140
+ }
141
+ }
142
+
143
+ // bind add action to "Add" button in last row
144
+ Event.observe('addToEndBtn<?php echo $_htmlId ?>', 'click', arrayRow<?php echo $_htmlId ?>.add.bind(arrayRow<?php echo $_htmlId ?>, '', ''));
145
+
146
+ // add existing rows
147
+ <?php
148
+ $_addAfterId = "headings{$_htmlId}";
149
+ foreach ($this->getArrayRows() as $_rowId => $_row) {
150
+ echo "arrayRow{$_htmlId}.add(" . $_row->toJson() . ", '{$_addAfterId}');\n";
151
+ $_addAfterId = $_rowId;
152
+ }
153
+ ?>
154
+
155
+ // initialize standalone button
156
+ $('empty<?php echo $_htmlId ?>').hide();
157
+ Event.observe('emptyAddBtn<?php echo $_htmlId ?>', 'click', function () {
158
+ $('grid<?php echo $_htmlId ?>').show();
159
+ $('empty<?php echo $_htmlId ?>').hide();
160
+ arrayRow<?php echo $_htmlId ?>.add('', '');
161
+ });
162
+
163
+ // if no rows, hide grid and show button only
164
+ <?php if (!$this->getArrayRows()):?>
165
+ arrayRow<?php echo $_htmlId ?>.showButtonOnly();
166
+ <?php endif;?>
167
+
168
+ // toggle the grid, if element is disabled (depending on scope)
169
+ <?php if ($this->getElement()->getDisabled()):?>
170
+ toggleValueElements({checked:true}, $('grid<?php echo $_htmlId ?>').parentNode);
171
+ <?php endif;?>
172
+
173
+ // toggle unit attribute input
174
+ function updateUnit(typeElement, unitElement) {
175
+ if (typeElement.getValue() == 'number') {
176
+ unitElement.enable();
177
+ } else {
178
+ unitElement.disable();
179
+ }
180
+ }
181
+
182
+ //]]>
183
+ </script>
app/design/frontend/base/default/layout/factfinder/core.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/design/frontend/base/default/layout/factfinder/suggest.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/design/frontend/base/default/layout/factfinder/tagcloud.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/design/frontend/base/default/layout/factfinder/tracking.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
10
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
app/design/frontend/base/default/template/factfinder/core/export/locked.phtml CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/design/frontend/base/default/template/factfinder/core/export/nofile.phtml CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/design/frontend/base/default/template/factfinder/suggest/advancedsuggest.phtml CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/design/frontend/base/default/template/factfinder/tracking/click.phtml CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
app/design/frontend/base/default/template/factfinder/tracking/recommendation.phtml CHANGED
@@ -5,7 +5,7 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
9
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
js/factfinder/suggest.js CHANGED
@@ -4,7 +4,7 @@
4
  * @category Mage
5
  * @package FACTFinder_Suggest
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
8
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
9
  * @link http://www.flagbit.de
10
  *
@@ -292,7 +292,7 @@ var FactFinderSuggest = Class.create(Varien.searchForm, {
292
 
293
  temp += '<span class="amount">' + (item.hitCount == 0 ? '' : item.hitCount) + '</span>';
294
  if (item.image) {
295
- temp += '<img src="' + item.image + '" title="' + item.name + '" class="thumbnail"/>';
296
  }
297
 
298
  temp += item.name.replace(new RegExp("("+this.field.value+")","ig"), '<strong>$1</strong>');
4
  * @category Mage
5
  * @package FACTFinder_Suggest
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
8
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
9
  * @link http://www.flagbit.de
10
  *
292
 
293
  temp += '<span class="amount">' + (item.hitCount == 0 ? '' : item.hitCount) + '</span>';
294
  if (item.image) {
295
+ temp += '<span class="thumbnail"><img src="' + item.image + '" title="' + item.name + '" /></span>';
296
  }
297
 
298
  temp += item.name.replace(new RegExp("("+this.field.value+")","ig"), '<strong>$1</strong>');
js/factfinder/tracking.js CHANGED
@@ -4,7 +4,7 @@
4
  * @category Mage
5
  * @package FACTFinder_Tracking
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
- * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
8
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
9
  * @link http://www.flagbit.de
10
  *
4
  * @category Mage
5
  * @package FACTFinder_Tracking
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
+ * @copyright Copyright (c) 2017 Flagbit GmbH & Co. KG
8
  * @license https://opensource.org/licenses/MIT The MIT License (MIT)
9
  * @link http://www.flagbit.de
10
  *
package.xml CHANGED
@@ -1,22 +1,23 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Flagbit_Factfinder</name>
4
- <version>4.1.12</version>
5
  <stability>stable</stability>
6
  <license uri="https://opensource.org/licenses/MIT">MIT</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>4.1.12 Release</summary>
10
- <description>4.1.12 Release</description>
11
- <notes> - Fixed invalid argument supplied for foreach() by @lars85&#xD;
12
- - Catch and log image exceptions in product export by @xpoback&#xD;
13
- - Fix URLs in case of X before spaces by @xpoback&#xD;
14
- - Different config names for disabled_validation by @lars85&#xD;
15
- - Fix price and parent\child in checkout tracking #188 by @xpoback</notes>
 
16
  <authors><author><name>FACTFinder</name><user>FACT_Finder</user><email>info@flagbit.de</email></author></authors>
17
- <date>2016-12-16</date>
18
- <time>11:04:44</time>
19
- <contents><target name="magecommunity"><dir name="FACTFinder"><dir name="Asn"><dir name="Block"><dir name="Catalog"><dir name="Layer"><file name="Factfinder.php" hash="0e79d252a2752aab67f7490436350fe7"/><file name="State.php" hash="2bf2c99237e881372fdc074c3505d188"/></dir><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="9b0c98e266174c8f8b02b896a556b769"/></dir><file name="Pager.php" hash="ec87967ba312a3d589e0af0afbacdd0a"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="f482bd5b7111165fcacc3bfa28797828"/></dir><dir name="Model"><dir name="Catalog"><file name="Layer.php" hash="6dafe882395b5d09f84c102f3b785410"/></dir><dir name="Handler"><file name="Search.php" hash="bbec7bd87e1d2f15792fdda46f34eb52"/></dir><dir name="Layer"><dir name="Filter"><file name="Factfinder.php" hash="2666ae9c79aa939e9539a1af5b0f7784"/><file name="Item.php" hash="a68545b4cb4487691ae75cdbf47af377"/></dir></dir><file name="Observer.php" hash="9ec46432b3d3170b626cfb4439315209"/><dir name="Resource"><dir name="Product"><dir name="Attribute"><file name="Collection.php" hash="03b060fd637de1fd632f1b9784b1124c"/></dir></dir><dir name="Search"><file name="Collection.php" hash="3e7a88eb53ccfb79b4448f9eb7bd4177"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="e07b890b06b00d94bc4a4a5931325366"/><file name="system.xml" hash="7a8a776e911a831b401900dbf9529b68"/></dir></dir><dir name="Campaigns"><dir name="Block"><file name="Abstract.php" hash="cbb92e501e5576dcc5ec121a708850a6"/><dir name="Advisory"><file name="Search.php" hash="1d4bf82a7baffbe64be17216436c35d4"/></dir><dir name="Feedback"><file name="Abstract.php" hash="018e415bdd754127cfad8bfa5881c0ce"/><file name="Cart.php" hash="35f9fec2518383c909495af90b324b8b"/><file name="Page.php" hash="b791d428663177b38acf568b424f9b62"/><file name="Product.php" hash="be7d867bb4d19510977ad6451918a110"/><file name="Search.php" hash="ebf3d35f6425b771291b08f696169d04"/></dir><dir name="Pushed"><file name="Abstract.php" hash="6dc968f84fb74d615e1441a3a18f34b7"/><file name="Cart.php" hash="741d3bd71ce91cd583778a5e26be9ff5"/><file name="Page.php" hash="f41d08224acf14ee5ebeb281117b43c3"/><file name="Product.php" hash="522cc331532f0e5c1b404429678d4145"/><file name="Search.php" hash="7db401a3ee1153ff5677b544fbb2a44e"/></dir></dir><dir name="Helper"><file name="Data.php" hash="92b1313e10cc6c448c6fae40fd113ba6"/></dir><dir name="Model"><file name="Facade.php" hash="44fc55139509b76f19b7c95c6a81eb4c"/><dir name="Handler"><file name="Abstract.php" hash="1784c503a2979f42dbd4e9698e482c47"/><file name="Cart.php" hash="d954c511b4f11d7f721c4117746de35a"/><file name="Page.php" hash="dcbde5a5d54da6893ccc6cbc678bfb45"/><file name="Product.php" hash="fbd9ced4527fce56144c7913af979b65"/><file name="Search.php" hash="e039a207ca98655c647355ebf287566d"/></dir><file name="Observer.php" hash="043e7411be7ec13a656b07750a7811af"/><dir name="Resource"><dir name="Pushedproducts"><file name="Collection.php" hash="569856158dee935d611ebc30f426835c"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="8f6b7cec7cff39b149beeffb39764668"/><file name="system.xml" hash="20ee896b686b17dc832a64b440d130bb"/></dir></dir><dir name="Core"><dir name="Block"><dir name="Adminhtml"><file name="Exportlink.php" hash="7a845ee8974cfcf74d9a32fed2ac0b21"/><dir name="Form"><dir name="Field"><file name="Attribute.php" hash="bea2183e56100233e7aebaccd6680c6f"/><file name="Attributes.php" hash="292742f954dec1863caaee9313a237c9"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="814a8b4935563e53db5f4e3b0a2b926e"/></dir><file name="Pager.php" hash="931dea1213da57df14fea950a5cacf43"/></dir></dir><dir name="CatalogSearch"><file name="Layer.php" hash="ad3dcdd26b5a723e43c7b8011a4ea25f"/></dir><dir name="EnterpriseSearch"><file name="Layer.php" hash="19455e36be3e0c14cabba762ccbdef1a"/></dir></dir><dir name="Helper"><file name="Backend.php" hash="f30c89ca668b193a8fc8bf00eda34413"/><file name="Data.php" hash="5f9e4fe2269743ac3ee81e3e1dc16b1e"/><file name="Debug.php" hash="c563d343c68db980e9256dc510e78ea1"/><file name="Export.php" hash="a417ba066deafb92cccb2256b6ca6932"/><file name="Rewrite.php" hash="30921c0924e535d669ecdd7e9592f883"/><file name="Search.php" hash="fd1e90271d620c57a0cb7b80e33f536f"/></dir><dir name="Model"><file name="Autoloader.php" hash="29370ccbcd483f93be86999485889900"/><dir name="CatalogSearch"><file name="Layer.php" hash="8d15e27cca249cd3827d33e9acdbb369"/><file name="Query.php" hash="4f5b732eb28a7c1efde28eb602c38772"/></dir><dir name="Export"><file name="Observer.php" hash="66968e7d4d8f1baa556e5955b27517dc"/><file name="Semaphore.php" hash="63def987da73dc369580845149bdba25"/><dir name="Type"><file name="Interface.php" hash="b29c7b7319fa52783eb546aabf5cb6e9"/><file name="Price.php" hash="47feaf492e4dec15f8a207a8e6f8104c"/><file name="Product.php" hash="96d6f286806592fbd480554a52739225"/><file name="Stock.php" hash="0e7b89cf2868569ce449c7736f544d27"/></dir></dir><file name="Facade.php" hash="b2fd0c05a687db4c784111ecb4da9ef8"/><dir name="File"><dir name="Validator"><file name="Abstract.php" hash="bae31d36c5307014bece14d3a0c18b79"/><file name="Price.php" hash="38a6be7fb1f41f4682eb1daa38554669"/><file name="Product.php" hash="31cf15e2204bb5a50136a06089d18afe"/><file name="Stock.php" hash="0dd23287ff233398f0d65106cccca029"/></dir></dir><file name="File.php" hash="ea54b7088ddb35c778a65ce97cfcd242"/><file name="Ftp.php" hash="d70cfab0ce607aca6efa32d82d3a85c3"/><dir name="Handler"><file name="Abstract.php" hash="1924821d13996f9f672369b63a05ac08"/><file name="Search.php" hash="303ba490e7113794e7398e457e645f31"/><file name="Status.php" hash="a70285cfc99c388ba826e501c0411a83"/></dir><file name="Observer.php" hash="e5decfa3b52571cb75335dd41b1927f5"/><dir name="Resource"><file name="Export.php" hash="4cf2df31bcfeb468f64b42d9140d7c86"/><file name="Fulltext.php" hash="dfbece11e5fe8224c94d1e1bb7affe3e"/><dir name="Search"><file name="Collection.php" hash="50596cf9508d0d96a4bb315a50f35984"/><file name="Engine.php" hash="602547a2d224f80933b6681db1cb3cc4"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Attributes.php" hash="d877a4da13c592f5b8260b202bcead13"/><file name="Cron.php" hash="f24b6995fea6309acb720876f3156270"/><file name="Enabled.php" hash="cb13a29b7100518350a7e5830180e9bd"/><file name="Engine.php" hash="ef1f702d79c7ed0fe72437ca4bf13a19"/></dir><dir name="Source"><file name="Authtype.php" hash="7ce07da0f6bcb8e88b5699ace77e6f31"/><file name="Engine.php" hash="8f1c2f344aa3182c312a665488661fa5"/><file name="Identifier.php" hash="a80606fe94b2eaf78f8d07628f2a64f0"/><file name="Protocol.php" hash="310b7fd8648b60f5cc9c3e3c9f87345c"/></dir></dir></dir><file name="Url.php" hash="57e5e87457b3051cec9bc3c988f79282"/></dir><dir name="controllers"><file name="ExportController.php" hash="231a148e48c714363a5d0bd76b088853"/></dir><dir name="etc"><file name="adminhtml.xml" hash="0247e1b846aefb3fb9c5c0706681a586"/><file name="config.xml" hash="471974367bce221b6795be5f4015a6e9"/><file name="system.xml" hash="7362f4ca3e6355b1d476044611cd770a"/></dir></dir><dir name="Recommendation"><dir name="Helper"><file name="Data.php" hash="6312dfdef17070694f59139acbb2d5e1"/></dir><dir name="Model"><file name="Facade.php" hash="ed9c246bc831c7f3950a88853d401288"/><dir name="Handler"><file name="Recommendations.php" hash="d51721bbd3348242c7252b6d4c29f187"/></dir><file name="Observer.php" hash="50cfe5f830cfd50c26061b7497f7e1a6"/></dir><dir name="etc"><file name="config.xml" hash="03ec96e0fa78fdfbc3d4d5fac7193704"/><file name="system.xml" hash="f841228bf8a5397fe18da6186c5e3208"/></dir></dir><dir name="Suggest"><dir name="Block"><file name="TopSearch.php" hash="96fc7e73d907a0438111253ae6c5fc6f"/><dir name="XmlConnect"><dir name="Catalog"><dir name="Search"><file name="Suggest.php" hash="150658cb1d7bc7ae5b4566ed1331bb12"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="ce3b53789b0bf025874a36789228abe5"/></dir><dir name="Model"><file name="Facade.php" hash="254f13fa4cbbe9602ae40c5cd124282e"/><dir name="Handler"><file name="Suggest.php" hash="948fd13668d507ba4ebed7c9a2055be4"/></dir><file name="Observer.php" hash="3a5bed9bd7b7c9bac85446c9172dfa48"/><file name="Processor.php" hash="f37cf3fb0c72464f1e651f34d64b44dd"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Imagetype.php" hash="a8a39dc5d44080a3b070bc72f103efef"/></dir></dir></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="68fc8cee37a52a538762252e47f340a1"/></dir><dir name="etc"><file name="config.xml" hash="5e6b384d971afc4a0c6b7cc4d437badf"/><file name="system.xml" hash="4cc10555be3b56982c6d67671c54f57b"/></dir></dir><dir name="Tagcloud"><dir name="Block"><file name="TagCloud.php" hash="d0c6c681b3da27ef349ff1295c5e26a9"/></dir><dir name="Helper"><file name="Data.php" hash="ea2c8093a1d87a8148f1205e8b73cc2d"/></dir><dir name="Model"><file name="Facade.php" hash="69069badc93509011f7c4fa2b1ca3e72"/><dir name="Handler"><file name="TagCloud.php" hash="e2e5ba229002ad3cfa5769a9f74d808b"/></dir></dir><dir name="etc"><file name="config.xml" hash="3ff00cc34fdbaed962f704204ce47f1a"/></dir></dir><dir name="Tracking"><dir name="Block"><file name="Abstract.php" hash="24419c96d9768b86ec890a1b38278e0f"/><file name="Click.php" hash="9fe6720543830930d97d7eb16f7fb489"/><file name="Recommendation.php" hash="aab0b759394df3f5e3571bb4e3e46cc2"/></dir><dir name="Helper"><file name="Data.php" hash="f0018ce83f815b057fab66351e58fdb6"/></dir><dir name="Model"><file name="Facade.php" hash="f8684a20a82bff4b668af460af476d41"/><dir name="Handler"><file name="Tracking.php" hash="9672d838ac3775c8a7dc4ef70593ca7e"/></dir><file name="Observer.php" hash="c6b0e677417aaf8552daa78a4b580541"/><file name="Processor.php" hash="cf9d0d242166aab8eab66a8fdb7c952a"/><file name="Queue.php" hash="046d6d464d56a609b71574c6e0a3c4d1"/><dir name="Resource"><dir name="Queue"><file name="Collection.php" hash="daecedd55cb992ae3988305324c8c1b9"/></dir><file name="Queue.php" hash="3be1d09978ae6e8c56fb673931b05479"/></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="33f25104bc086fcbe998459baccdd0b3"/></dir><dir name="etc"><file name="config.xml" hash="326d9c67e7491574da2ec9e97ef1fd0c"/><file name="system.xml" hash="2358dd767b2350084c83e2cf6aa360d3"/></dir><dir name="sql"><dir name="factfinder_tracking_setup"><file name="install-1.0.0.php" hash="553ad063abd837a220ebff97618578b4"/><file name="upgrade-1.0.0-4.1.2.php" hash="a80b4f755d0bea172eefebe10b877cd6"/><file name="upgrade-4.1.11-4.1.12.php" hash="9429e942617be216bc13b00b4aa71bf8"/><file name="upgrade-4.1.2-4.1.11.php" hash="7cdc830ef2799954e5ab4093d65a1f0e"/></dir></dir></dir></dir></target><target name="magelib"><dir name="FACTFinder"><dir name="Adapter"><file name="AbstractAdapter.php" hash="91eae466a803590699160600c430eab6"/><file name="Compare.php" hash="6b7cbae461ef45587c565affadbf8664"/><file name="ConfigurableResponse.php" hash="8ffa7eaa12d448a7bd4a9bba9975c573"/><file name="Import.php" hash="584eecdb7281603ba5ef901082fb52d7"/><file name="PersonalisedResponse.php" hash="6b62c326d25e123f686baa358a1b258b"/><file name="ProductCampaign.php" hash="945181a15218fd90721d3258eaf2fd17"/><file name="Recommendation.php" hash="0bcc4ccce41f40d343ebe19c901bea69"/><file name="Search.php" hash="202f3e5d444edb8be0b4e187bd98ea78"/><file name="SimilarRecords.php" hash="b80691760f993d2a43cbe2eb933090fe"/><file name="Suggest.php" hash="5f91090f7c7ea764f9fc21938aade3c8"/><file name="TagCloud.php" hash="fe1faf30373e91b96e57c08fb64df23a"/><file name="Tracking.php" hash="18948f9db1782730258a0e83f6f517b9"/></dir><dir name="Core"><file name="AbstractConfiguration.php" hash="d9341f7f13615a8a0c2805b2021cdfc8"/><file name="AbstractEncodingConverter.php" hash="7946720c77c47e3ed2070606a74a48cb"/><file name="ArrayConfiguration.php" hash="dc60873fa6eed180126944247cb4de99"/><dir name="Client"><file name="RequestParser.php" hash="bc5dabb648f7278db4a1c5f14af4dfa0"/><file name="UrlBuilder.php" hash="d73cc166fcf20b7623ea0f7c319d3224"/></dir><file name="ConfigurationInterface.php" hash="1158aaee6a7502cf81bf27b8ed0c76ff"/><file name="IConvEncodingConverter.php" hash="5c504a3229cc8a59c09f03f3bf2c9348"/><file name="ManualConfiguration.php" hash="a49d0b05cc319b807c40b37a861b060d"/><dir name="Page"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><file name="ParametersConverter.php" hash="9c01642c6de1842b8f1b4e8d9f93017e"/><dir name="Server"><file name="AbstractDataProvider.php" hash="8d33ddebe3d3e60b72893188d7f2369f"/><file name="ConnectionData.php" hash="c4246099ec93e7f589c0e22179d9557a"/><file name="EasyCurlDataProvider.php" hash="48f452cd3ca1dcf3b4e7cc4d8b59c8a9"/><file name="EasyCurlRequestFactory.php" hash="61f88e882120dca5e5e1964d1f898527"/><file name="FileSystemDataProvider.php" hash="30b428e2b76307b1143057a155371c34"/><file name="FileSystemRequestFactory.php" hash="f0a464725448393e64948a6063208d91"/><file name="MultiCurlDataProvider.php" hash="2e467a4976694ef4e7775d913dafedf4"/><file name="MultiCurlRequestFactory.php" hash="41f978e0dd60065026dc5adced1f9503"/><file name="NullResponse.php" hash="3a419c1ea234ef20e1330c7b445eb9c6"/><file name="Request.php" hash="08ddaaa7701558e1802408089d15b5dd"/><file name="RequestFactoryInterface.php" hash="65cfad6045407bdd63af980f6f996c99"/><file name="Response.php" hash="695c80ce5ee4e8dc38c78d0349e1f31b"/><file name="UrlBuilder.php" hash="6f468178b95a96f6217f44f9ef392cfb"/></dir><file name="Utf8EncodingConverter.php" hash="1cb05e6f174e36ed3cce6e2a7eb987ed"/><file name="XmlConfiguration.php" hash="faafd887682d6aa01f61604df24df277"/></dir><dir name="Custom"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="Data"><file name="AdvisorAnswer.php" hash="55ffe5c6f8e1363d1d02875feec202d1"/><file name="AdvisorQuestion.php" hash="baa784c529640f2976b22262ec6f8983"/><file name="AfterSearchNavigation.php" hash="f1d08832e73cf45b8a35d99020aa49ea"/><file name="ArticleNumberSearchStatus.php" hash="da1966d4016c32ea492b8b6b931d8222"/><file name="BreadCrumb.php" hash="84b69c8df53c6d9eb721950a29e4a84d"/><file name="BreadCrumbTrail.php" hash="324bb6a06c0058e53c58bd3f96fe0ff3"/><file name="BreadCrumbType.php" hash="c9c3568bbfa4989517ee8f3b9c779fa2"/><file name="Campaign.php" hash="23966a3bea56ac66ff2b795e11983c6a"/><file name="CampaignIterator.php" hash="503766bc960efe69e861c2f45dce77d2"/><file name="Filter.php" hash="aafda20fe7c992af46316d74be33ec73"/><file name="FilterGroup.php" hash="8820c34c807044489682a290e86466b6"/><file name="FilterSelectionType.php" hash="bd0d0676af5d0182f6b6631e6df8ecb9"/><file name="FilterStyle.php" hash="1299441866fb075e331d2f9ca2755091"/><file name="FilterType.php" hash="b073cf2f411298509337808624666687"/><file name="Item.php" hash="b91116ddeb81c0b90e76a2a4f7b51261"/><file name="Page.php" hash="35daab87fdc5e3b4732480996b982364"/><file name="Paging.php" hash="1b06374d761489582de08551f17a58a1"/><file name="Record.php" hash="cd62198f27ebbb1e0a88008642c7157a"/><file name="Result.php" hash="01b94e91b11b61d794fb9ff40d6148d3"/><file name="ResultsPerPageOptions.php" hash="ae22d184bf43cd7b11cad567489a2261"/><file name="SearchParameters.php" hash="e8e1f9d24396f864f0367c9c6d575a37"/><file name="SearchStatus.php" hash="356fd9774c237a0e26ac85a6186bccfd"/><file name="SingleWordSearchItem.php" hash="db057d7f0460f29c5b31ab9689b3906b"/><file name="SliderFilter.php" hash="344d226acde13ec85f59d5a97cf8afc5"/><file name="Sorting.php" hash="284b4811c99ad057d08caead45ea2dee"/><file name="SortingDirection.php" hash="ec86bc437928a4aa623a8c098c94f435"/><file name="SortingItem.php" hash="428e8c59a5372cafc5ec69bf868dea18"/><file name="SortingItems.php" hash="4fd36b79ed02099265103e1e81c71557"/><file name="SuggestQuery.php" hash="4011313cfd853eace88c399444ffa4cc"/><file name="TagQuery.php" hash="a4460d5e8a9f918eea820a029dc21290"/></dir><file name="Loader.php" hash="cf900585b0fd44978f97e7a2b2279a99"/><dir name="Util"><file name="Curl.php" hash="c9cbe7b2116dd6160b8db3a14b634561"/><file name="CurlHandle.php" hash="bea42fdebc33e31cf58889de18232d3e"/><file name="CurlInterface.php" hash="1858bc215b7706ba81ff6e14aa2f4750"/><file name="CurlMultiHandle.php" hash="2085a5a09c218971412a44c0dad6bf72"/><file name="CurlStub.php" hash="555c36a9a5352e1a6acfd65a68cf911b"/><file name="Log4PhpLogger.php" hash="d232fe476b310ec8692877edddc972e4"/><file name="LoggerInterface.php" hash="36dfa3ee8a089595ef285806d0068b27"/><file name="NullLogger.php" hash="51e1a2a9c89a9efba49d0a0d3ee9325d"/><file name="Parameters.php" hash="6bb6f333d55dd7bce2a0014f10edbc29"/><file name="Pimple.php" hash="fb5e70660a5fe56edfdf11bec1ba6009"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="93832ed3840c5899c9c761c702dec17b"/></dir><dir name="log4php"><file name="Logger.php" hash="39841035ea058cc62571fcb9b4f3aa43"/><file name="LoggerAppender.php" hash="a8b07b24ee26931cef9373163542128a"/><file name="LoggerAppenderPool.php" hash="7e44ee58fbd3c50ae51c98742aa4f327"/><file name="LoggerAutoloader.php" hash="5aa85dd61ff00167d2b9d482bf418c77"/><file name="LoggerConfigurable.php" hash="4c89cbf3c90a724930c6d46995da16bd"/><file name="LoggerConfigurator.php" hash="b8ac801c410e0515fbd5ec6b67dfb40b"/><file name="LoggerException.php" hash="c91fd8cc5bfee3cad373f8ed9440458c"/><file name="LoggerFilter.php" hash="39b6689eeb15e468781c0a62a8f482b5"/><file name="LoggerHierarchy.php" hash="be16af259ec43bef5c49bd1118e94859"/><file name="LoggerLayout.php" hash="7c089f20f7abba10699de2bd4423af7c"/><file name="LoggerLevel.php" hash="f380928eb1aac5ade3d7654f200ebb81"/><file name="LoggerLocationInfo.php" hash="33f1a195cfdcc7ebf681a3085eb6b228"/><file name="LoggerLoggingEvent.php" hash="f227e5ae0d04fef3a36899906d4ad478"/><file name="LoggerMDC.php" hash="64868651982829e59d3b316498145a79"/><file name="LoggerNDC.php" hash="482045e33b9fe22e53269c021cbfe877"/><file name="LoggerReflectionUtils.php" hash="174b22dd241ba4263aba8d978d37959f"/><file name="LoggerRoot.php" hash="0d762ed21fdff2708adab3068b94c2c3"/><file name="LoggerThrowableInformation.php" hash="76d98d20d55cf0e3bd4b1b138023c3af"/><dir name="appenders"><file name="LoggerAppenderConsole.php" hash="5eefc20589c86b11d2832f9a8fafa44f"/><file name="LoggerAppenderDailyFile.php" hash="f97b57f6b0b9dba2f650ae5e17d9f28b"/><file name="LoggerAppenderEcho.php" hash="76824ae7be6503e8c5ca3a9fc15b7816"/><file name="LoggerAppenderFile.php" hash="92481c41d6f9d3d2cf6cfc82c7c0ef22"/><file name="LoggerAppenderFirePHP.php" hash="1eccdf817ff2e0204265a5a77901f0a1"/><file name="LoggerAppenderMail.php" hash="a23d71d709af265b20797eeb0d71911e"/><file name="LoggerAppenderMailEvent.php" hash="f853e9e18511ab18873484882c744655"/><file name="LoggerAppenderMongoDB.php" hash="494b30e44a3add5eeb9c0d54ea88c29b"/><file name="LoggerAppenderNull.php" hash="ec6ca85fadc4d71f75b5e8e13df6e058"/><file name="LoggerAppenderPDO.php" hash="4388d8e542fe680228365ffd48d8ab6d"/><file name="LoggerAppenderPhp.php" hash="9853767b74b8234361ace83867c9f18d"/><file name="LoggerAppenderRollingFile.php" hash="5bc49b8f05b36842b800d699bfe05e45"/><file name="LoggerAppenderSocket.php" hash="6111536426fdf6f8a4adafb460510301"/><file name="LoggerAppenderSyslog.php" hash="afda0ccf876a87781e58d63104519bdc"/></dir><dir name="configurators"><file name="LoggerConfigurationAdapter.php" hash="b07bade9ae4809776742d3b36ca4feb7"/><file name="LoggerConfigurationAdapterINI.php" hash="bfbca46c36693f098334699c7b71b569"/><file name="LoggerConfigurationAdapterPHP.php" hash="9f9c0bd65cda5224c8e90726baebb363"/><file name="LoggerConfigurationAdapterXML.php" hash="42ec1e713dadb1c6c813df278e6c58cb"/><file name="LoggerConfiguratorDefault.php" hash="a27dd348466a605849ffa946a5fa7bdf"/></dir><dir name="filters"><file name="LoggerFilterDenyAll.php" hash="8800e84c773b87e2638d22d627baae51"/><file name="LoggerFilterLevelMatch.php" hash="2ea447c40baea629486a6b7a4f8f352d"/><file name="LoggerFilterLevelRange.php" hash="b4b6753e0d0a8d734471482bb7b4981c"/><file name="LoggerFilterStringMatch.php" hash="342113e5152ef6e9703807fa36e52785"/></dir><dir name="helpers"><file name="LoggerFormattingInfo.php" hash="89a5ed8f751e4a6a826275619266b911"/><file name="LoggerOptionConverter.php" hash="e02f5ffc3918a0352bf77121e5add1d5"/><file name="LoggerPatternParser.php" hash="a5d4dfeb2a66b022380e0e3d7ba9b318"/><file name="LoggerUtils.php" hash="90264a3263bc4e3a3dac1dbeb3cc35df"/></dir><dir name="layouts"><file name="LoggerLayoutHtml.php" hash="cf6066b51d7ac2de4accaf13f68fb442"/><file name="LoggerLayoutPattern.php" hash="10c48d2fa44953d20fcb3e3542a05ebf"/><file name="LoggerLayoutSerialized.php" hash="cef71f72176167a15c79f5cab5515a77"/><file name="LoggerLayoutSimple.php" hash="ba2aaa713c715b823c4e767a2f0b3e67"/><file name="LoggerLayoutTTCC.php" hash="1ecb0af018b78ad42f4a9d70e182f429"/><file name="LoggerLayoutXml.php" hash="b52409dbb1bacc1c7b4c5ddf66ed8afa"/></dir><dir name="pattern"><file name="LoggerPatternConverter.php" hash="fcbd56bf082b96f02fcf5b0b552de4c1"/><file name="LoggerPatternConverterClass.php" hash="e61c2f7544feee8ee9b966311471a2a7"/><file name="LoggerPatternConverterCookie.php" hash="465d359167443336f258d9b5a89095ef"/><file name="LoggerPatternConverterDate.php" hash="4a399075a3c2d7542e3c649f55162482"/><file name="LoggerPatternConverterEnvironment.php" hash="829265aa84843818bd9faf3bd42b0432"/><file name="LoggerPatternConverterFile.php" hash="a7091f0857b99db4e00c33b61df5e3d3"/><file name="LoggerPatternConverterLevel.php" hash="6219dcb0d8630e6f69cbf4ba669fd11f"/><file name="LoggerPatternConverterLine.php" hash="a27bf38b5c6453a9925d365bde65fe47"/><file name="LoggerPatternConverterLiteral.php" hash="a2cd9e35ca6253cde6a467320837a767"/><file name="LoggerPatternConverterLocation.php" hash="b88efadaccdf31b25b1fb14866c106a0"/><file name="LoggerPatternConverterLogger.php" hash="4342ab32fa26cdf53308896272c2e36b"/><file name="LoggerPatternConverterMDC.php" hash="d241043bc9ea9ecdbf3a0ae5d5a42206"/><file name="LoggerPatternConverterMessage.php" hash="cad3040a1a3d1d40dc6a26727bebe19d"/><file name="LoggerPatternConverterMethod.php" hash="3208fb30a3bc0a7e0fb281800c43ecef"/><file name="LoggerPatternConverterNDC.php" hash="2e68ba79896c47c5067bbf0b371df260"/><file name="LoggerPatternConverterNewLine.php" hash="291bd541e0f689484a5596323e3cac14"/><file name="LoggerPatternConverterProcess.php" hash="7421d9b9b6a5f8f51c3a9a1c796911a5"/><file name="LoggerPatternConverterRelative.php" hash="24495b25867aac190135610061cd244d"/><file name="LoggerPatternConverterRequest.php" hash="67a484d44fd7ddc06a654995904e9653"/><file name="LoggerPatternConverterServer.php" hash="bef42f8b51bc220453e3f4b1e67e7402"/><file name="LoggerPatternConverterSession.php" hash="7cd6290d364837cd2ff4358c03022e98"/><file name="LoggerPatternConverterSessionID.php" hash="fc7b37aa3cb28fbb09862eb7edc6d042"/><file name="LoggerPatternConverterSuperglobal.php" hash="6b984fb3d26fb0186595370d0f066659"/><file name="LoggerPatternConverterThrowable.php" hash="4ca10f0f20408a30243ff589415634c9"/></dir><dir name="renderers"><file name="LoggerRenderer.php" hash="332819a947805d55c2aa546ced274f01"/><file name="LoggerRendererDefault.php" hash="4c4003cde8e0a74cc562060ca7bccf61"/><file name="LoggerRendererException.php" hash="4b2def2de9aa459bd321e826c02e31c2"/><file name="LoggerRendererMap.php" hash="b9aadee6f31f7cb38210653141b94fa6"/></dir><dir name="xml"><file name="log4php.dtd" hash="fb7e60edf02964352b7ddee1f26d8924"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="factfinder"><file name="asn.xml" hash="05ee1b7d0d34d7e43de8c115aeaab69d"/><file name="campaigns.xml" hash="40a945b639f93c059f921b2d89664258"/><file name="core.xml" hash="fe920d8ef444afbcfa2053b72bc819fc"/><file name="suggest.xml" hash="9c1a761044cd33da5e028c92ce9abe4f"/><file name="tagcloud.xml" hash="0d31f54985019d96bb1b5af17ccdf0d3"/><file name="tracking.xml" hash="53ce8afeb32391a4b207121a372162a2"/></dir></dir><dir name="template"><dir name="factfinder"><dir name="asn"><dir name="layer"><dir name="filter"><file name="slider.phtml" hash="2004f809f803e17d9739a7173958ceca"/></dir><file name="slider.phtml" hash="d48c9aace222c7525430b5235acd4026"/></dir></dir><dir name="campaigns"><file name="advisory.phtml" hash="3341ee58f81da41020f85c2145048b8b"/><file name="feedback.phtml" hash="4c1868f038a13bd2ca270b7d9a077452"/><file name="pushed.phtml" hash="b76b7c5b064ee6dc86ccc94a363bdb05"/></dir><dir name="core"><dir name="export"><file name="locked.phtml" hash="f0948f48fcc40dfcb21a8da68ce29425"/><file name="nofile.phtml" hash="c304b037812f4c34d7e094fe3b70cd80"/></dir></dir><dir name="suggest"><file name="advancedsuggest.phtml" hash="9f74281e6e75d1d3aec83d5d7f026c17"/></dir><dir name="tracking"><file name="click.phtml" hash="3e545af810a201db7c76c0502f606308"/><file name="recommendation.phtml" hash="02dba2d0cc5e1608682a700916a963d8"/></dir></dir></dir></dir></dir><dir name="rwd"><dir name="enterprise"><dir name="layout"><dir name="factfinder"><file name="suggest.xml" hash="9c1a761044cd33da5e028c92ce9abe4f"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="."><file name="factfinder.xml" hash="f87803fd5c96fc784baff992c2bce96b"/></dir><dir name="modules"><file name="FACTFinder_Asn.xml" hash="a003a8010c577c396c8e2ee5b1ea4417"/><file name="FACTFinder_Campaigns.xml" hash="ccd3080cf57535193a6fe2e6946640fd"/><file name="FACTFinder_Core.xml" hash="80f5142c2acf5ceeca0fd552ddb7ce4c"/><file name="FACTFinder_Recommendation.xml" hash="9742344545ee435a4dc87eb2bb80bf19"/><file name="FACTFinder_Suggest.xml" hash="882806b936029f0ef04d4719542ecea3"/><file name="FACTFinder_Tagcloud.xml" hash="62d3ccec2191e7dfd8225e02912891d2"/><file name="FACTFinder_Tracking.xml" hash="779b734bdcafabab072a1afd9d0bf7c4"/></dir></target><target name="mage"><dir name="shell"><file name="factfinder.php" hash="86667fac5a3532b607bb622f23bd67ad"/></dir></target><target name="mageweb"><dir name="js"><dir name="factfinder"><file name="jXHR.js" hash="a62424da9902b49a76659683121618d0"/><file name="suggest.js" hash="3e235179d35a59cb07410251c2d9dd32"/><file name="tracking.js" hash="8c429f905c02793f28761e44764049da"/></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><dir name="factfinder_onetouchslider"><file name="234A0ACCECB3C19247FA8B7920453761.cache.js" hash="df488d926e6054769d4731148e707b58"/><file name="25E490B929D7CDBF44085E4E4D9D6F78.cache.js" hash="2a017b95cfbd8653a222660b60697419"/><file name="53ABFAE8983A4589B497F48695DB2A7C.cache.js" hash="b6b02347438384cc886b2509426826b5"/><file name="75B23D057185BAB61CFE100CE08C4D84.cache.js" hash="ec9c94e05e64372a9636ef03e688d451"/><file name="79DD9AE9135ADFDE204324DA7F1B1405.cache.png" hash="6ba720deee377e093c5f5b0423c152df"/><file name="9F0D0456482D7A7A901A2CD8F64EA019.cache.js" hash="dad64db53266865af02c620795c6ab13"/><file name="clear.cache.gif" hash="6d22e4f2d2057c6e8d6fab098e76e80f"/><file name="de.factfinder.asn.slider.OneTouchSlider.nocache.js" hash="f92d47fc9eb8cf8ff78173997f5a4a7a"/></dir></dir><dir name="css"><file name="factfinder_suggest.css" hash="1a8a97d65582535cbc74c5599fcb34e1"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="FACTFinder_Suggest.csv" hash="3098dfae8ccf75366dfa093ce5c863f2"/></dir><dir name="en_US"><file name="FACTFinder_Suggest.csv" hash="2e9fd7bbc9407364430a7c281c94ec63"/></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php></required></dependencies>
22
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Flagbit_Factfinder</name>
4
+ <version>4.1.13</version>
5
  <stability>stable</stability>
6
  <license uri="https://opensource.org/licenses/MIT">MIT</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>4.1.13 Release</summary>
10
+ <description>4.1.13 Release</description>
11
+ <notes>- Fixed bug with attribute name with space character in slider #127&#xD;
12
+ - Improved attributes product export #121&#xD;
13
+ - Fixed bug with static fields not being exported #190&#xD;
14
+ - Improved export performance&#xD;
15
+ - Add possibility to use any JSONP callback #145&#xD;
16
+ - multiple small bugfixes (tracking, export, suggest)</notes>
17
  <authors><author><name>FACTFinder</name><user>FACT_Finder</user><email>info@flagbit.de</email></author></authors>
18
+ <date>2017-03-14</date>
19
+ <time>14:32:04</time>
20
+ <contents><target name="magecommunity"><dir name="FACTFinder"><dir name="Asn"><dir name="Block"><dir name="Catalog"><dir name="Layer"><file name="Factfinder.php" hash="0e79d252a2752aab67f7490436350fe7"/><file name="State.php" hash="2bf2c99237e881372fdc074c3505d188"/></dir><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="9b0c98e266174c8f8b02b896a556b769"/></dir><file name="Pager.php" hash="ec87967ba312a3d589e0af0afbacdd0a"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="e91e88f58d9057043299a40ed01910e9"/></dir><dir name="Model"><dir name="Catalog"><file name="Layer.php" hash="6dafe882395b5d09f84c102f3b785410"/></dir><dir name="Handler"><file name="Search.php" hash="42365aa93a4e9e1f278dd299f3e06d7d"/></dir><dir name="Layer"><dir name="Filter"><file name="Factfinder.php" hash="2666ae9c79aa939e9539a1af5b0f7784"/><file name="Item.php" hash="a68545b4cb4487691ae75cdbf47af377"/></dir></dir><file name="Observer.php" hash="9ec46432b3d3170b626cfb4439315209"/><dir name="Resource"><dir name="Product"><dir name="Attribute"><file name="Collection.php" hash="03b060fd637de1fd632f1b9784b1124c"/></dir></dir><dir name="Search"><file name="Collection.php" hash="3e7a88eb53ccfb79b4448f9eb7bd4177"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="e07b890b06b00d94bc4a4a5931325366"/><file name="system.xml" hash="7a8a776e911a831b401900dbf9529b68"/></dir></dir><dir name="Campaigns"><dir name="Block"><file name="Abstract.php" hash="cbb92e501e5576dcc5ec121a708850a6"/><dir name="Advisory"><file name="Search.php" hash="1d4bf82a7baffbe64be17216436c35d4"/></dir><dir name="Feedback"><file name="Abstract.php" hash="018e415bdd754127cfad8bfa5881c0ce"/><file name="Cart.php" hash="35f9fec2518383c909495af90b324b8b"/><file name="Page.php" hash="b791d428663177b38acf568b424f9b62"/><file name="Product.php" hash="d3014e9684a2812ca653bde5ce945c21"/><file name="Search.php" hash="ebf3d35f6425b771291b08f696169d04"/></dir><dir name="Pushed"><file name="Abstract.php" hash="6dc968f84fb74d615e1441a3a18f34b7"/><file name="Cart.php" hash="741d3bd71ce91cd583778a5e26be9ff5"/><file name="Page.php" hash="f41d08224acf14ee5ebeb281117b43c3"/><file name="Product.php" hash="1f58a3b139eae9915987295f17c26c6e"/><file name="Search.php" hash="7db401a3ee1153ff5677b544fbb2a44e"/></dir></dir><dir name="Helper"><file name="Data.php" hash="92b1313e10cc6c448c6fae40fd113ba6"/></dir><dir name="Model"><file name="Facade.php" hash="44fc55139509b76f19b7c95c6a81eb4c"/><dir name="Handler"><file name="Abstract.php" hash="1784c503a2979f42dbd4e9698e482c47"/><file name="Cart.php" hash="d954c511b4f11d7f721c4117746de35a"/><file name="Page.php" hash="dcbde5a5d54da6893ccc6cbc678bfb45"/><file name="Product.php" hash="fbd9ced4527fce56144c7913af979b65"/><file name="Search.php" hash="e039a207ca98655c647355ebf287566d"/></dir><file name="Observer.php" hash="79d77c8ca8d4d0a1859eb8913bbf14d4"/><dir name="Resource"><dir name="Pushedproducts"><file name="Collection.php" hash="569856158dee935d611ebc30f426835c"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="8f6b7cec7cff39b149beeffb39764668"/><file name="system.xml" hash="20ee896b686b17dc832a64b440d130bb"/></dir></dir><dir name="Core"><dir name="Block"><dir name="Adminhtml"><file name="Exportlink.php" hash="d26379c98cceb566bb78eac7cbd9ae52"/><dir name="Form"><dir name="Field"><file name="Attributes.php" hash="067c235c05c8f636391c5bbfcd96410b"/><dir name="Column"><file name="Attribute.php" hash="cef785ba8591ba4757f23c64d5f32667"/><file name="Type.php" hash="24e7c94e4ed7be13f5b39698d2f95610"/><file name="Unit.php" hash="bf2dbb9fad861e312b3ed3a71596aa42"/></dir></dir></dir></dir><dir name="Catalog"><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="9b1c3f6717affec05152880022879b69"/></dir><file name="Pager.php" hash="02397c2a714c21afef30cc8becb6cecc"/></dir></dir><dir name="CatalogSearch"><file name="Layer.php" hash="eebbe0062114b187a80ed5ef0d2e09bd"/></dir><dir name="EnterpriseSearch"><file name="Layer.php" hash="03053f5747b0c1fa0f10defb54b40e9d"/></dir></dir><dir name="Helper"><file name="Backend.php" hash="58c3e5a0adbe4eeef0955f257ecc1d5e"/><file name="Data.php" hash="4e3706e32b44052485333738979243cb"/><file name="Debug.php" hash="06e39e999086a55d2fff8dc28dae8434"/><file name="Export.php" hash="891fb821f5d5f788031281a477a11d8a"/><file name="Rewrite.php" hash="da643b708ef5ee159f7f397a203d704a"/><file name="Search.php" hash="82c64c9e22a4403771df8fc1067c1f01"/></dir><dir name="Model"><file name="Autoloader.php" hash="fdb9e2c46fdfd035d378d02de417d827"/><dir name="CatalogSearch"><file name="Layer.php" hash="e4078f3f9068223071afabc0db814689"/><file name="Query.php" hash="f2fd055d2aa8fe6051b825e3ab4c19a8"/></dir><dir name="Export"><file name="Observer.php" hash="917ca235a1b2af3c707e25747b8af8b5"/><file name="Semaphore.php" hash="6de4c7895b0c130d539b48b93182fdc5"/><dir name="Type"><file name="Interface.php" hash="b29c7b7319fa52783eb546aabf5cb6e9"/><file name="Price.php" hash="e2d7cc9bcd023ba56775a4a69feba607"/><dir name="Product"><file name="Attribute.php" hash="d5208db71e5ecfdaa5628a34f1f3f783"/></dir><file name="Product.php" hash="c215caa9347e705a52187a8ea0c5186c"/><file name="Stock.php" hash="6e14917934d4aacad66df17d17fbf8c0"/></dir></dir><file name="Facade.php" hash="2b0f32231eb4f8b8ad896dac5b381773"/><dir name="File"><dir name="Validator"><file name="Abstract.php" hash="bbbd31edca86104e830c84660417bbd8"/><file name="Price.php" hash="38a6be7fb1f41f4682eb1daa38554669"/><file name="Product.php" hash="31cf15e2204bb5a50136a06089d18afe"/><file name="Stock.php" hash="0dd23287ff233398f0d65106cccca029"/></dir></dir><file name="File.php" hash="1fdbfd13f875e8bae744a45a03a2ccd3"/><file name="Ftp.php" hash="00306205e204f83f6f835bfcd695df18"/><dir name="Handler"><file name="Abstract.php" hash="a17ffe402ff7413651b1de6b65c5701f"/><file name="Search.php" hash="9decdf6cc701cdb2e53ffd32cb4b50f4"/><file name="Status.php" hash="98b9ba6c5da080212493af0390459616"/></dir><file name="Observer.php" hash="f98d829e0ba771894bbc6b53ee100395"/><dir name="Resource"><file name="Attribute.php" hash="082ac9e656bc6a32afddf4e3e42d2c86"/><file name="Fulltext.php" hash="0c483819bb0fed5353c5fde1eecefd19"/><file name="Product.php" hash="47fec2ffe736c66fbde04d7cd83d27e2"/><dir name="Search"><file name="Collection.php" hash="a66e7adad482432d31bbd11e8fd22426"/><file name="Engine.php" hash="20b236f2382f4ab2b2221f6ab8a503ce"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Attributes.php" hash="dcfc0b849dc6b2948810ae647459a0f8"/><file name="Cron.php" hash="4cb4717dbf317edda0925c3bb0563127"/><file name="Enabled.php" hash="b062742b02cdb00903dd3cb0a7f7f4c1"/><file name="Engine.php" hash="740b7292f87d95d9612b080526d8cd80"/></dir><dir name="Source"><file name="Authtype.php" hash="acaabb4477aa8bf927de96d12d122842"/><file name="Engine.php" hash="b83c28048827422378fd83e586c61a27"/><file name="Identifier.php" hash="3702d6f52a9cdf4dbc90956968250b89"/><file name="Protocol.php" hash="67a1cade2674ebfad712ebcd8922da52"/></dir></dir></dir><file name="Url.php" hash="a45453db77e9b4dc0fa587588663862a"/></dir><dir name="controllers"><file name="ExportController.php" hash="026851f86fc10418b9fe2132bb26c2b8"/></dir><dir name="etc"><file name="adminhtml.xml" hash="aedaa0909b44d26a81b96a6f08f8a5b5"/><file name="config.xml" hash="2e71b2d6c1afab4ad92adbb99ab49de5"/><file name="system.xml" hash="829019cffbfc3b8a3b22599bc62829b0"/></dir></dir><dir name="Recommendation"><dir name="Helper"><file name="Data.php" hash="6312dfdef17070694f59139acbb2d5e1"/></dir><dir name="Model"><file name="Facade.php" hash="ed9c246bc831c7f3950a88853d401288"/><dir name="Handler"><file name="Recommendations.php" hash="d51721bbd3348242c7252b6d4c29f187"/></dir><file name="Observer.php" hash="50cfe5f830cfd50c26061b7497f7e1a6"/></dir><dir name="etc"><file name="config.xml" hash="03ec96e0fa78fdfbc3d4d5fac7193704"/><file name="system.xml" hash="f841228bf8a5397fe18da6186c5e3208"/></dir></dir><dir name="Suggest"><dir name="Block"><file name="TopSearch.php" hash="fd792a1d4e21d062efcd40845cc338d5"/><dir name="XmlConnect"><dir name="Catalog"><dir name="Search"><file name="Suggest.php" hash="fc63b3de74852ee8bfc7969e78b6dae1"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="e703dcc7b49cf29a9d559195cd8b3ecc"/></dir><dir name="Model"><file name="Facade.php" hash="3d7c6e63280020cf69ebe405cf0a0ebf"/><dir name="Handler"><file name="Suggest.php" hash="082e7f97eb7808f1cd3720aec4ef6bfd"/></dir><file name="Observer.php" hash="2da8a20b011a7ae949280136e17cab95"/><file name="Processor.php" hash="3d8ec2d81f78612a5b29eb403b3aeecb"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Imagetype.php" hash="68d156442bc9775396d288afb57b76a6"/></dir></dir></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="8661e61670f3e58367dd1820419b70c9"/></dir><dir name="etc"><file name="config.xml" hash="8bf8dbee3b6eb8373270193679988fc8"/><file name="system.xml" hash="9553d46b52f75a15d1a6b25ebaa4ea40"/></dir></dir><dir name="Tagcloud"><dir name="Block"><file name="TagCloud.php" hash="b45ae466a186bb4395c730449df80c17"/></dir><dir name="Helper"><file name="Data.php" hash="c9b6a4f7bdc832720637ff5ec2c6d971"/></dir><dir name="Model"><file name="Facade.php" hash="9c58f1ee809be6acd808404497b51776"/><dir name="Handler"><file name="TagCloud.php" hash="3b5f17d63262979b79a7241687822983"/></dir></dir><dir name="etc"><file name="config.xml" hash="ddff7960cb1b77d7bf510439d5e45ba5"/></dir></dir><dir name="Tracking"><dir name="Block"><file name="Abstract.php" hash="e8093ffb80c9f4b54ec38f26116b39b6"/><file name="Click.php" hash="85a3c931a9c688aa83e5baec982f91fb"/><file name="Recommendation.php" hash="1383ab088059bd3c979c98948c54730d"/></dir><dir name="Helper"><file name="Data.php" hash="69fb7977d09b641f95efb975521da502"/></dir><dir name="Model"><file name="Facade.php" hash="fe00eea3df3698e8cda8c79962caf4f9"/><dir name="Handler"><file name="Tracking.php" hash="bd4791c328adfca912c251ebfff54edc"/></dir><file name="Observer.php" hash="7400d80323cf04066d5b5b5d2ab41177"/><file name="Processor.php" hash="7899ae450be6bd95104c5481b45fe878"/><file name="Queue.php" hash="3a23d97724ef0a4ace3647098e66e54f"/><dir name="Resource"><dir name="Queue"><file name="Collection.php" hash="d9e9efe71a2206fc995a7650f38abe07"/></dir><file name="Queue.php" hash="a6a9f88edb44a564fbc5c33f2cc91ab1"/></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="85ae9d1eb8f56890ea7a52b0640c4c50"/></dir><dir name="etc"><file name="config.xml" hash="a196db9686f2de4b1cea8ee7be4917fc"/><file name="system.xml" hash="e07cec5bb16633c83512926f860d2f2e"/></dir><dir name="sql"><dir name="factfinder_tracking_setup"><file name="install-1.0.0.php" hash="5e59c53c91e9a14653825ce3c5a25c4e"/><file name="upgrade-1.0.0-4.1.2.php" hash="45e617cf3c682b20732abf71b3c240f2"/><file name="upgrade-4.1.11-4.1.12.php" hash="ca9ce7e0f9880099245f51a29c68c77a"/><file name="upgrade-4.1.2-4.1.11.php" hash="0c1d97e009a7b18effb1a54ed9db4f06"/></dir></dir></dir></dir></target><target name="magelib"><dir name="FACTFinder"><dir name="Adapter"><file name="AbstractAdapter.php" hash="91eae466a803590699160600c430eab6"/><file name="Compare.php" hash="6b7cbae461ef45587c565affadbf8664"/><file name="ConfigurableResponse.php" hash="8ffa7eaa12d448a7bd4a9bba9975c573"/><file name="Import.php" hash="584eecdb7281603ba5ef901082fb52d7"/><file name="PersonalisedResponse.php" hash="6b62c326d25e123f686baa358a1b258b"/><file name="ProductCampaign.php" hash="945181a15218fd90721d3258eaf2fd17"/><file name="Recommendation.php" hash="0bcc4ccce41f40d343ebe19c901bea69"/><file name="Search.php" hash="202f3e5d444edb8be0b4e187bd98ea78"/><file name="SimilarRecords.php" hash="b80691760f993d2a43cbe2eb933090fe"/><file name="Suggest.php" hash="5f91090f7c7ea764f9fc21938aade3c8"/><file name="TagCloud.php" hash="fe1faf30373e91b96e57c08fb64df23a"/><file name="Tracking.php" hash="18948f9db1782730258a0e83f6f517b9"/></dir><dir name="Core"><file name="AbstractConfiguration.php" hash="d9341f7f13615a8a0c2805b2021cdfc8"/><file name="AbstractEncodingConverter.php" hash="7946720c77c47e3ed2070606a74a48cb"/><file name="ArrayConfiguration.php" hash="dc60873fa6eed180126944247cb4de99"/><dir name="Client"><file name="RequestParser.php" hash="bc5dabb648f7278db4a1c5f14af4dfa0"/><file name="UrlBuilder.php" hash="d73cc166fcf20b7623ea0f7c319d3224"/></dir><file name="ConfigurationInterface.php" hash="1158aaee6a7502cf81bf27b8ed0c76ff"/><file name="IConvEncodingConverter.php" hash="5c504a3229cc8a59c09f03f3bf2c9348"/><file name="ManualConfiguration.php" hash="a49d0b05cc319b807c40b37a861b060d"/><dir name="Page"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><file name="ParametersConverter.php" hash="9c01642c6de1842b8f1b4e8d9f93017e"/><dir name="Server"><file name="AbstractDataProvider.php" hash="8d33ddebe3d3e60b72893188d7f2369f"/><file name="ConnectionData.php" hash="c4246099ec93e7f589c0e22179d9557a"/><file name="EasyCurlDataProvider.php" hash="48f452cd3ca1dcf3b4e7cc4d8b59c8a9"/><file name="EasyCurlRequestFactory.php" hash="61f88e882120dca5e5e1964d1f898527"/><file name="FileSystemDataProvider.php" hash="30b428e2b76307b1143057a155371c34"/><file name="FileSystemRequestFactory.php" hash="f0a464725448393e64948a6063208d91"/><file name="MultiCurlDataProvider.php" hash="2e467a4976694ef4e7775d913dafedf4"/><file name="MultiCurlRequestFactory.php" hash="41f978e0dd60065026dc5adced1f9503"/><file name="NullResponse.php" hash="3a419c1ea234ef20e1330c7b445eb9c6"/><file name="Request.php" hash="08ddaaa7701558e1802408089d15b5dd"/><file name="RequestFactoryInterface.php" hash="65cfad6045407bdd63af980f6f996c99"/><file name="Response.php" hash="695c80ce5ee4e8dc38c78d0349e1f31b"/><file name="UrlBuilder.php" hash="6f468178b95a96f6217f44f9ef392cfb"/></dir><file name="Utf8EncodingConverter.php" hash="1cb05e6f174e36ed3cce6e2a7eb987ed"/><file name="XmlConfiguration.php" hash="faafd887682d6aa01f61604df24df277"/></dir><dir name="Custom"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="Data"><file name="AdvisorAnswer.php" hash="55ffe5c6f8e1363d1d02875feec202d1"/><file name="AdvisorQuestion.php" hash="baa784c529640f2976b22262ec6f8983"/><file name="AfterSearchNavigation.php" hash="f1d08832e73cf45b8a35d99020aa49ea"/><file name="ArticleNumberSearchStatus.php" hash="da1966d4016c32ea492b8b6b931d8222"/><file name="BreadCrumb.php" hash="84b69c8df53c6d9eb721950a29e4a84d"/><file name="BreadCrumbTrail.php" hash="324bb6a06c0058e53c58bd3f96fe0ff3"/><file name="BreadCrumbType.php" hash="c9c3568bbfa4989517ee8f3b9c779fa2"/><file name="Campaign.php" hash="23966a3bea56ac66ff2b795e11983c6a"/><file name="CampaignIterator.php" hash="503766bc960efe69e861c2f45dce77d2"/><file name="Filter.php" hash="aafda20fe7c992af46316d74be33ec73"/><file name="FilterGroup.php" hash="8820c34c807044489682a290e86466b6"/><file name="FilterSelectionType.php" hash="bd0d0676af5d0182f6b6631e6df8ecb9"/><file name="FilterStyle.php" hash="1299441866fb075e331d2f9ca2755091"/><file name="FilterType.php" hash="b073cf2f411298509337808624666687"/><file name="Item.php" hash="b91116ddeb81c0b90e76a2a4f7b51261"/><file name="Page.php" hash="35daab87fdc5e3b4732480996b982364"/><file name="Paging.php" hash="1b06374d761489582de08551f17a58a1"/><file name="Record.php" hash="cd62198f27ebbb1e0a88008642c7157a"/><file name="Result.php" hash="01b94e91b11b61d794fb9ff40d6148d3"/><file name="ResultsPerPageOptions.php" hash="ae22d184bf43cd7b11cad567489a2261"/><file name="SearchParameters.php" hash="e8e1f9d24396f864f0367c9c6d575a37"/><file name="SearchStatus.php" hash="356fd9774c237a0e26ac85a6186bccfd"/><file name="SingleWordSearchItem.php" hash="db057d7f0460f29c5b31ab9689b3906b"/><file name="SliderFilter.php" hash="344d226acde13ec85f59d5a97cf8afc5"/><file name="Sorting.php" hash="284b4811c99ad057d08caead45ea2dee"/><file name="SortingDirection.php" hash="ec86bc437928a4aa623a8c098c94f435"/><file name="SortingItem.php" hash="428e8c59a5372cafc5ec69bf868dea18"/><file name="SortingItems.php" hash="4fd36b79ed02099265103e1e81c71557"/><file name="SuggestQuery.php" hash="4011313cfd853eace88c399444ffa4cc"/><file name="TagQuery.php" hash="a4460d5e8a9f918eea820a029dc21290"/></dir><file name="Loader.php" hash="cf900585b0fd44978f97e7a2b2279a99"/><dir name="Util"><file name="Curl.php" hash="c9cbe7b2116dd6160b8db3a14b634561"/><file name="CurlHandle.php" hash="bea42fdebc33e31cf58889de18232d3e"/><file name="CurlInterface.php" hash="1858bc215b7706ba81ff6e14aa2f4750"/><file name="CurlMultiHandle.php" hash="2085a5a09c218971412a44c0dad6bf72"/><file name="CurlStub.php" hash="555c36a9a5352e1a6acfd65a68cf911b"/><file name="Log4PhpLogger.php" hash="d232fe476b310ec8692877edddc972e4"/><file name="LoggerInterface.php" hash="36dfa3ee8a089595ef285806d0068b27"/><file name="NullLogger.php" hash="51e1a2a9c89a9efba49d0a0d3ee9325d"/><file name="Parameters.php" hash="6bb6f333d55dd7bce2a0014f10edbc29"/><file name="Pimple.php" hash="fb5e70660a5fe56edfdf11bec1ba6009"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="93832ed3840c5899c9c761c702dec17b"/></dir><dir name="log4php"><file name="Logger.php" hash="39841035ea058cc62571fcb9b4f3aa43"/><file name="LoggerAppender.php" hash="a8b07b24ee26931cef9373163542128a"/><file name="LoggerAppenderPool.php" hash="7e44ee58fbd3c50ae51c98742aa4f327"/><file name="LoggerAutoloader.php" hash="5aa85dd61ff00167d2b9d482bf418c77"/><file name="LoggerConfigurable.php" hash="4c89cbf3c90a724930c6d46995da16bd"/><file name="LoggerConfigurator.php" hash="b8ac801c410e0515fbd5ec6b67dfb40b"/><file name="LoggerException.php" hash="c91fd8cc5bfee3cad373f8ed9440458c"/><file name="LoggerFilter.php" hash="39b6689eeb15e468781c0a62a8f482b5"/><file name="LoggerHierarchy.php" hash="be16af259ec43bef5c49bd1118e94859"/><file name="LoggerLayout.php" hash="7c089f20f7abba10699de2bd4423af7c"/><file name="LoggerLevel.php" hash="f380928eb1aac5ade3d7654f200ebb81"/><file name="LoggerLocationInfo.php" hash="33f1a195cfdcc7ebf681a3085eb6b228"/><file name="LoggerLoggingEvent.php" hash="f227e5ae0d04fef3a36899906d4ad478"/><file name="LoggerMDC.php" hash="64868651982829e59d3b316498145a79"/><file name="LoggerNDC.php" hash="482045e33b9fe22e53269c021cbfe877"/><file name="LoggerReflectionUtils.php" hash="174b22dd241ba4263aba8d978d37959f"/><file name="LoggerRoot.php" hash="0d762ed21fdff2708adab3068b94c2c3"/><file name="LoggerThrowableInformation.php" hash="76d98d20d55cf0e3bd4b1b138023c3af"/><dir name="appenders"><file name="LoggerAppenderConsole.php" hash="5eefc20589c86b11d2832f9a8fafa44f"/><file name="LoggerAppenderDailyFile.php" hash="f97b57f6b0b9dba2f650ae5e17d9f28b"/><file name="LoggerAppenderEcho.php" hash="76824ae7be6503e8c5ca3a9fc15b7816"/><file name="LoggerAppenderFile.php" hash="92481c41d6f9d3d2cf6cfc82c7c0ef22"/><file name="LoggerAppenderFirePHP.php" hash="1eccdf817ff2e0204265a5a77901f0a1"/><file name="LoggerAppenderMail.php" hash="a23d71d709af265b20797eeb0d71911e"/><file name="LoggerAppenderMailEvent.php" hash="f853e9e18511ab18873484882c744655"/><file name="LoggerAppenderMongoDB.php" hash="494b30e44a3add5eeb9c0d54ea88c29b"/><file name="LoggerAppenderNull.php" hash="ec6ca85fadc4d71f75b5e8e13df6e058"/><file name="LoggerAppenderPDO.php" hash="4388d8e542fe680228365ffd48d8ab6d"/><file name="LoggerAppenderPhp.php" hash="9853767b74b8234361ace83867c9f18d"/><file name="LoggerAppenderRollingFile.php" hash="5bc49b8f05b36842b800d699bfe05e45"/><file name="LoggerAppenderSocket.php" hash="6111536426fdf6f8a4adafb460510301"/><file name="LoggerAppenderSyslog.php" hash="afda0ccf876a87781e58d63104519bdc"/></dir><dir name="configurators"><file name="LoggerConfigurationAdapter.php" hash="b07bade9ae4809776742d3b36ca4feb7"/><file name="LoggerConfigurationAdapterINI.php" hash="bfbca46c36693f098334699c7b71b569"/><file name="LoggerConfigurationAdapterPHP.php" hash="9f9c0bd65cda5224c8e90726baebb363"/><file name="LoggerConfigurationAdapterXML.php" hash="42ec1e713dadb1c6c813df278e6c58cb"/><file name="LoggerConfiguratorDefault.php" hash="a27dd348466a605849ffa946a5fa7bdf"/></dir><dir name="filters"><file name="LoggerFilterDenyAll.php" hash="8800e84c773b87e2638d22d627baae51"/><file name="LoggerFilterLevelMatch.php" hash="2ea447c40baea629486a6b7a4f8f352d"/><file name="LoggerFilterLevelRange.php" hash="b4b6753e0d0a8d734471482bb7b4981c"/><file name="LoggerFilterStringMatch.php" hash="342113e5152ef6e9703807fa36e52785"/></dir><dir name="helpers"><file name="LoggerFormattingInfo.php" hash="89a5ed8f751e4a6a826275619266b911"/><file name="LoggerOptionConverter.php" hash="e02f5ffc3918a0352bf77121e5add1d5"/><file name="LoggerPatternParser.php" hash="a5d4dfeb2a66b022380e0e3d7ba9b318"/><file name="LoggerUtils.php" hash="90264a3263bc4e3a3dac1dbeb3cc35df"/></dir><dir name="layouts"><file name="LoggerLayoutHtml.php" hash="cf6066b51d7ac2de4accaf13f68fb442"/><file name="LoggerLayoutPattern.php" hash="10c48d2fa44953d20fcb3e3542a05ebf"/><file name="LoggerLayoutSerialized.php" hash="cef71f72176167a15c79f5cab5515a77"/><file name="LoggerLayoutSimple.php" hash="ba2aaa713c715b823c4e767a2f0b3e67"/><file name="LoggerLayoutTTCC.php" hash="1ecb0af018b78ad42f4a9d70e182f429"/><file name="LoggerLayoutXml.php" hash="b52409dbb1bacc1c7b4c5ddf66ed8afa"/></dir><dir name="pattern"><file name="LoggerPatternConverter.php" hash="fcbd56bf082b96f02fcf5b0b552de4c1"/><file name="LoggerPatternConverterClass.php" hash="e61c2f7544feee8ee9b966311471a2a7"/><file name="LoggerPatternConverterCookie.php" hash="465d359167443336f258d9b5a89095ef"/><file name="LoggerPatternConverterDate.php" hash="4a399075a3c2d7542e3c649f55162482"/><file name="LoggerPatternConverterEnvironment.php" hash="829265aa84843818bd9faf3bd42b0432"/><file name="LoggerPatternConverterFile.php" hash="a7091f0857b99db4e00c33b61df5e3d3"/><file name="LoggerPatternConverterLevel.php" hash="6219dcb0d8630e6f69cbf4ba669fd11f"/><file name="LoggerPatternConverterLine.php" hash="a27bf38b5c6453a9925d365bde65fe47"/><file name="LoggerPatternConverterLiteral.php" hash="a2cd9e35ca6253cde6a467320837a767"/><file name="LoggerPatternConverterLocation.php" hash="b88efadaccdf31b25b1fb14866c106a0"/><file name="LoggerPatternConverterLogger.php" hash="4342ab32fa26cdf53308896272c2e36b"/><file name="LoggerPatternConverterMDC.php" hash="d241043bc9ea9ecdbf3a0ae5d5a42206"/><file name="LoggerPatternConverterMessage.php" hash="cad3040a1a3d1d40dc6a26727bebe19d"/><file name="LoggerPatternConverterMethod.php" hash="3208fb30a3bc0a7e0fb281800c43ecef"/><file name="LoggerPatternConverterNDC.php" hash="2e68ba79896c47c5067bbf0b371df260"/><file name="LoggerPatternConverterNewLine.php" hash="291bd541e0f689484a5596323e3cac14"/><file name="LoggerPatternConverterProcess.php" hash="7421d9b9b6a5f8f51c3a9a1c796911a5"/><file name="LoggerPatternConverterRelative.php" hash="24495b25867aac190135610061cd244d"/><file name="LoggerPatternConverterRequest.php" hash="67a484d44fd7ddc06a654995904e9653"/><file name="LoggerPatternConverterServer.php" hash="bef42f8b51bc220453e3f4b1e67e7402"/><file name="LoggerPatternConverterSession.php" hash="7cd6290d364837cd2ff4358c03022e98"/><file name="LoggerPatternConverterSessionID.php" hash="fc7b37aa3cb28fbb09862eb7edc6d042"/><file name="LoggerPatternConverterSuperglobal.php" hash="6b984fb3d26fb0186595370d0f066659"/><file name="LoggerPatternConverterThrowable.php" hash="4ca10f0f20408a30243ff589415634c9"/></dir><dir name="renderers"><file name="LoggerRenderer.php" hash="332819a947805d55c2aa546ced274f01"/><file name="LoggerRendererDefault.php" hash="4c4003cde8e0a74cc562060ca7bccf61"/><file name="LoggerRendererException.php" hash="4b2def2de9aa459bd321e826c02e31c2"/><file name="LoggerRendererMap.php" hash="b9aadee6f31f7cb38210653141b94fa6"/></dir><dir name="xml"><file name="log4php.dtd" hash="fb7e60edf02964352b7ddee1f26d8924"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="factfinder"><file name="asn.xml" hash="05ee1b7d0d34d7e43de8c115aeaab69d"/><file name="campaigns.xml" hash="40a945b639f93c059f921b2d89664258"/><file name="core.xml" hash="feabe46178c34bfa4d340507d009969a"/><file name="suggest.xml" hash="2effcca680b3f5d4a36360ca51e73c0d"/><file name="tagcloud.xml" hash="08d741753a4cf7ea243d18d8319c7319"/><file name="tracking.xml" hash="2e0e057ef15d8d7767e67d7b93ef728b"/></dir></dir><dir name="template"><dir name="factfinder"><dir name="asn"><dir name="layer"><dir name="filter"><file name="slider.phtml" hash="2004f809f803e17d9739a7173958ceca"/></dir><file name="slider.phtml" hash="d48c9aace222c7525430b5235acd4026"/></dir></dir><dir name="campaigns"><file name="advisory.phtml" hash="3341ee58f81da41020f85c2145048b8b"/><file name="feedback.phtml" hash="4c1868f038a13bd2ca270b7d9a077452"/><file name="pushed.phtml" hash="b76b7c5b064ee6dc86ccc94a363bdb05"/></dir><dir name="core"><dir name="export"><file name="locked.phtml" hash="2a96171a144a2c358624793b2eb5ebe4"/><file name="nofile.phtml" hash="401cc7682371d1341195cfe3ed9c9fae"/></dir></dir><dir name="suggest"><file name="advancedsuggest.phtml" hash="23d418876c5781cacc5d7fdd13217149"/></dir><dir name="tracking"><file name="click.phtml" hash="923247b5ac7d74a56999a68aa6580dc9"/><file name="recommendation.phtml" hash="17eb76af0ea70e8c36e912e992cd1261"/></dir></dir></dir></dir></dir><dir name="rwd"><dir name="enterprise"><dir name="layout"><dir name="factfinder"><file name="suggest.xml" hash="9c1a761044cd33da5e028c92ce9abe4f"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="factfinder"><dir name="core"><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="attributes.phtml" hash="1bfc70db6bbc448a0f7eec006e7a23f7"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="."><file name="factfinder.xml" hash="f87803fd5c96fc784baff992c2bce96b"/></dir><dir name="modules"><file name="FACTFinder_Asn.xml" hash="a003a8010c577c396c8e2ee5b1ea4417"/><file name="FACTFinder_Campaigns.xml" hash="ccd3080cf57535193a6fe2e6946640fd"/><file name="FACTFinder_Core.xml" hash="80f5142c2acf5ceeca0fd552ddb7ce4c"/><file name="FACTFinder_Recommendation.xml" hash="9742344545ee435a4dc87eb2bb80bf19"/><file name="FACTFinder_Suggest.xml" hash="882806b936029f0ef04d4719542ecea3"/><file name="FACTFinder_Tagcloud.xml" hash="62d3ccec2191e7dfd8225e02912891d2"/><file name="FACTFinder_Tracking.xml" hash="779b734bdcafabab072a1afd9d0bf7c4"/></dir></target><target name="mage"><dir name="shell"><file name="factfinder.php" hash="86667fac5a3532b607bb622f23bd67ad"/></dir></target><target name="mageweb"><dir name="js"><dir name="factfinder"><file name="jXHR.js" hash="a62424da9902b49a76659683121618d0"/><file name="suggest.js" hash="95e9a9ee7b9e7bed337da7e1eff874d6"/><file name="tracking.js" hash="b013800782aa36e6bf4b847a40a5b775"/></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><dir name="factfinder_onetouchslider"><file name="234A0ACCECB3C19247FA8B7920453761.cache.js" hash="df488d926e6054769d4731148e707b58"/><file name="25E490B929D7CDBF44085E4E4D9D6F78.cache.js" hash="2a017b95cfbd8653a222660b60697419"/><file name="53ABFAE8983A4589B497F48695DB2A7C.cache.js" hash="b6b02347438384cc886b2509426826b5"/><file name="75B23D057185BAB61CFE100CE08C4D84.cache.js" hash="ec9c94e05e64372a9636ef03e688d451"/><file name="79DD9AE9135ADFDE204324DA7F1B1405.cache.png" hash="6ba720deee377e093c5f5b0423c152df"/><file name="9F0D0456482D7A7A901A2CD8F64EA019.cache.js" hash="dad64db53266865af02c620795c6ab13"/><file name="clear.cache.gif" hash="6d22e4f2d2057c6e8d6fab098e76e80f"/><file name="de.factfinder.asn.slider.OneTouchSlider.nocache.js" hash="f92d47fc9eb8cf8ff78173997f5a4a7a"/></dir></dir><dir name="css"><file name="factfinder_suggest.css" hash="03da9a06173f238e874284c34e58493b"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="FACTFinder_Suggest.csv" hash="3098dfae8ccf75366dfa093ce5c863f2"/></dir><dir name="en_US"><file name="FACTFinder_Suggest.csv" hash="2e9fd7bbc9407364430a7c281c94ec63"/></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php></required></dependencies>
23
  </package>
skin/frontend/base/default/css/factfinder_suggest.css CHANGED
@@ -7,11 +7,7 @@
7
  font-weight: bold;
8
  }
9
 
10
- .form-search .search-autocomplete.advanced-suggest img.thumbnail {
11
  float:left;
12
- margin-top: 2px;
13
- margin-bottom: 3px;
14
- margin-right: 5px;
15
- width: 31px;
16
- height: 31px;
17
  }
7
  font-weight: bold;
8
  }
9
 
10
+ .form-search .search-autocomplete.advanced-suggest span.thumbnail {
11
  float:left;
12
+ margin-right: .3em;
 
 
 
 
13
  }