Flagbit_Factfinder - Version 3.4.4

Version Notes

[+BUGFIX] use the fallback-offline delay correctly
[~BUGFIX] don't add messages to FF if delay is set to 0 (too many messages)
[~TASK] change search helper method access
[+BUGFIX] only send request to FF if the module is activated
[+BUGFIX] don't collect factfinder fails, if fallback isn't activated
[+BUGFIX] don't make requests to the recommendation engine if the according features are disabled

Download this release

Release Info

Developer Magento Core Team
Extension Flagbit_Factfinder
Version 3.4.4
Comparing to
See all releases


Code changes from version 3.4.3 to 3.4.4

app/code/community/Flagbit/FactFinder/Block/Campaign/Advisory.php CHANGED
@@ -6,7 +6,9 @@ class Flagbit_FactFinder_Block_Campaign_Advisory extends Mage_Core_Block_Templat
6
 
7
  protected function _prepareLayout()
8
  {
9
- $this->_searchHandler = Mage::getSingleton('factfinder/handler_search');
 
 
10
  }
11
 
12
  /**
6
 
7
  protected function _prepareLayout()
8
  {
9
+ if(Mage::helper('factfinder/search')->getIsEnabled(false, 'campaign')){
10
+ $this->_searchHandler = Mage::getSingleton('factfinder/handler_search');
11
+ }
12
  }
13
 
14
  /**
app/code/community/Flagbit/FactFinder/Block/Campaign/Cart/Advisory.php CHANGED
@@ -23,13 +23,15 @@ class Flagbit_FactFinder_Block_Campaign_Cart_Advisory extends Mage_Core_Block_Te
23
 
24
  protected function _prepareLayout()
25
  {
26
- $this->_product = Mage::getModel('catalog/product')->load(Mage::getSingleton('checkout/session')->getLastAddedProductId());
 
27
 
28
- $productIds = array(
29
- $this->_product->getData(Mage::helper('factfinder/search')->getIdFieldName())
30
- );
31
 
32
- $this->_productCampaignHandler = Mage::getSingleton('factfinder/handler_shoppingCartCampaign', array($productIds, true));
 
33
  return parent::_prepareLayout();
34
  }
35
 
23
 
24
  protected function _prepareLayout()
25
  {
26
+ if($this->canCampaignBeDisplayed()){
27
+ $this->_product = Mage::getModel('catalog/product')->load(Mage::getSingleton('checkout/session')->getLastAddedProductId());
28
 
29
+ $productIds = array(
30
+ $this->_product->getData(Mage::helper('factfinder/search')->getIdFieldName())
31
+ );
32
 
33
+ $this->_productCampaignHandler = Mage::getSingleton('factfinder/handler_shoppingCartCampaign', array($productIds, true));
34
+ }
35
  return parent::_prepareLayout();
36
  }
37
 
app/code/community/Flagbit/FactFinder/Block/Campaign/Cart/Feedback.php CHANGED
@@ -23,13 +23,15 @@ class Flagbit_FactFinder_Block_Campaign_Cart_Feedback extends Mage_Core_Block_Te
23
 
24
  protected function _prepareLayout()
25
  {
26
- $this->_product = Mage::getModel('catalog/product')->load(Mage::getSingleton('checkout/session')->getLastAddedProductId());
 
27
 
28
- $productIds = array(
29
- $this->_product->getData(Mage::helper('factfinder/search')->getIdFieldName())
30
- );
31
 
32
- $this->_productCampaignHandler = Mage::getSingleton('factfinder/handler_shoppingCartCampaign', array($productIds, true));
 
33
  return parent::_prepareLayout();
34
  }
35
 
23
 
24
  protected function _prepareLayout()
25
  {
26
+ if(Mage::helper('factfinder/search')->getIsEnabled(false, 'campaign')){
27
+ $this->_product = Mage::getModel('catalog/product')->load(Mage::getSingleton('checkout/session')->getLastAddedProductId());
28
 
29
+ $productIds = array(
30
+ $this->_product->getData(Mage::helper('factfinder/search')->getIdFieldName())
31
+ );
32
 
33
+ $this->_productCampaignHandler = Mage::getSingleton('factfinder/handler_shoppingCartCampaign', array($productIds, true));
34
+ }
35
  return parent::_prepareLayout();
36
  }
37
 
app/code/community/Flagbit/FactFinder/Block/Campaign/Feedback.php CHANGED
@@ -31,7 +31,9 @@ class Flagbit_FactFinder_Block_Campaign_Feedback extends Mage_Core_Block_Templat
31
 
32
  protected function _prepareLayout()
33
  {
34
- $this->_searchHandler = Mage::getSingleton('factfinder/handler_search');
 
 
35
  }
36
 
37
  /**
31
 
32
  protected function _prepareLayout()
33
  {
34
+ if(Mage::helper('factfinder/search')->getIsEnabled(false, 'campaign')){
35
+ $this->_searchHandler = Mage::getSingleton('factfinder/handler_search');
36
+ }
37
  }
38
 
39
  /**
app/code/community/Flagbit/FactFinder/Block/Cart/Crosssell.php CHANGED
@@ -24,8 +24,10 @@ class Flagbit_FactFinder_Block_Cart_Crosssell extends Mage_Checkout_Block_Cart_C
24
 
25
  protected function _prepareLayout()
26
  {
27
- $productIds = $this->_getCartProductIds();
28
- $this->_recommendationsHandler = Mage::getSingleton('factfinder/handler_recommendations', $productIds);
 
 
29
  return parent::_prepareLayout();
30
  }
31
 
24
 
25
  protected function _prepareLayout()
26
  {
27
+ if(Mage::getStoreConfigFlag('factfinder/activation/crosssell')){
28
+ $productIds = $this->_getCartProductIds();
29
+ $this->_recommendationsHandler = Mage::getSingleton('factfinder/handler_recommendations', $productIds);
30
+ }
31
  return parent::_prepareLayout();
32
  }
33
 
app/code/community/Flagbit/FactFinder/Block/Layer.php CHANGED
@@ -9,9 +9,9 @@
9
 
10
  /**
11
  * Block class
12
- *
13
- * This class is used to disable Magento´s default Price and Category Filter Output
14
- *
15
  * @category Mage
16
  * @package Flagbit_FactFinder
17
  * @copyright Copyright (c) 2010 Flagbit GmbH & Co. KG (http://www.flagbit.de/)
@@ -31,8 +31,11 @@ class Flagbit_FactFinder_Block_Layer extends Flagbit_FactFinder_Block_Layer_Abst
31
  */
32
  protected function _prepareLayout()
33
  {
34
- $this->_searchHandler = Mage::getSingleton('factfinder/handler_search');
 
 
35
 
 
36
  $this->_usesAsn = Mage::helper('factfinder/search')->getIsEnabled(false, 'asn');
37
 
38
  if(!$this->_usesAsn){
@@ -101,7 +104,7 @@ class Flagbit_FactFinder_Block_Layer extends Flagbit_FactFinder_Block_Layer_Abst
101
 
102
  $this->getLayer()->apply();
103
  }
104
-
105
  /**
106
  * Get category filter block
107
  *
@@ -111,7 +114,7 @@ class Flagbit_FactFinder_Block_Layer extends Flagbit_FactFinder_Block_Layer_Abst
111
  {
112
  if(!Mage::helper('factfinder/search')->getIsEnabled(false, 'asn')){
113
  return parent::_getCategoryFilter();
114
- }
115
  return false;
116
  }
117
 
@@ -124,11 +127,11 @@ class Flagbit_FactFinder_Block_Layer extends Flagbit_FactFinder_Block_Layer_Abst
124
  {
125
  if(!Mage::helper('factfinder/search')->getIsEnabled(false, 'asn')){
126
  return parent::_getPriceFilter();
127
- }
128
-
129
  return false;
130
  }
131
-
132
  /**
133
  * Check availability display layer block
134
  *
@@ -142,11 +145,11 @@ class Flagbit_FactFinder_Block_Layer extends Flagbit_FactFinder_Block_Layer_Abst
142
  }
143
  if(!Mage::helper('factfinder/search')->getIsEnabled(false, 'asn')){
144
  return false;
145
- }
146
  if ($this->getLayer()->getFilterableAttributes()->count()
147
  && $this->getLayer()->getProductCollection()->getSize()) {
148
  return true;
149
  }
150
  return false;
151
- }
152
  }
9
 
10
  /**
11
  * Block class
12
+ *
13
+ * This class is used to disable Magento´s default Price and Category Filter Output
14
+ *
15
  * @category Mage
16
  * @package Flagbit_FactFinder
17
  * @copyright Copyright (c) 2010 Flagbit GmbH & Co. KG (http://www.flagbit.de/)
31
  */
32
  protected function _prepareLayout()
33
  {
34
+ if(!Mage::helper('factfinder/search')->getIsEnabled()){
35
+ return parent::_prepareLayout();
36
+ }
37
 
38
+ $this->_searchHandler = Mage::getSingleton('factfinder/handler_search');
39
  $this->_usesAsn = Mage::helper('factfinder/search')->getIsEnabled(false, 'asn');
40
 
41
  if(!$this->_usesAsn){
104
 
105
  $this->getLayer()->apply();
106
  }
107
+
108
  /**
109
  * Get category filter block
110
  *
114
  {
115
  if(!Mage::helper('factfinder/search')->getIsEnabled(false, 'asn')){
116
  return parent::_getCategoryFilter();
117
+ }
118
  return false;
119
  }
120
 
127
  {
128
  if(!Mage::helper('factfinder/search')->getIsEnabled(false, 'asn')){
129
  return parent::_getPriceFilter();
130
+ }
131
+
132
  return false;
133
  }
134
+
135
  /**
136
  * Check availability display layer block
137
  *
145
  }
146
  if(!Mage::helper('factfinder/search')->getIsEnabled(false, 'asn')){
147
  return false;
148
+ }
149
  if ($this->getLayer()->getFilterableAttributes()->count()
150
  && $this->getLayer()->getProductCollection()->getSize()) {
151
  return true;
152
  }
153
  return false;
154
+ }
155
  }
app/code/community/Flagbit/FactFinder/Block/Product/List/Crosssell.php CHANGED
@@ -24,10 +24,12 @@ class Flagbit_FactFinder_Block_Product_List_Crosssell extends Mage_Catalog_Block
24
 
25
  protected function _prepareLayout()
26
  {
27
- $productIds = array(
28
- Mage::registry('product')->getData(Mage::helper('factfinder/search')->getIdFieldName())
29
- );
30
- $this->_recommendationsHandler = Mage::getSingleton('factfinder/handler_recommendations', $productIds);
 
 
31
  return parent::_prepareLayout();
32
  }
33
  /**
24
 
25
  protected function _prepareLayout()
26
  {
27
+ if (Mage::getStoreConfigFlag('factfinder/activation/crosssell')) {
28
+ $productIds = array(
29
+ Mage::registry('product')->getData(Mage::helper('factfinder/search')->getIdFieldName())
30
+ );
31
+ $this->_recommendationsHandler = Mage::getSingleton('factfinder/handler_recommendations', $productIds);
32
+ }
33
  return parent::_prepareLayout();
34
  }
35
  /**
app/code/community/Flagbit/FactFinder/Block/Product/List/Upsell.php CHANGED
@@ -29,8 +29,15 @@ class Flagbit_FactFinder_Block_Product_List_Upsell extends Mage_Catalog_Block_Pr
29
  $productIds = array(
30
  Mage::registry('current_product')->getData(Mage::helper('factfinder/search')->getIdFieldName())
31
  );
32
- $this->_productCampaignHandler = Mage::getSingleton('factfinder/handler_productDetailCampaign', $productIds);
33
- $this->_recommendationsHandler = Mage::getSingleton('factfinder/handler_recommendations', $productIds);
 
 
 
 
 
 
 
34
  return parent::_prepareLayout();
35
  }
36
 
29
  $productIds = array(
30
  Mage::registry('current_product')->getData(Mage::helper('factfinder/search')->getIdFieldName())
31
  );
32
+
33
+ if(Mage::helper('factfinder/search')->getIsEnabled(false, 'campaign')) {
34
+ $this->_productCampaignHandler = Mage::getSingleton('factfinder/handler_productDetailCampaign', $productIds);
35
+ }
36
+
37
+ if (Mage::getStoreConfigFlag('factfinder/activation/upsell')) {
38
+ $this->_recommendationsHandler = Mage::getSingleton('factfinder/handler_recommendations', $productIds);
39
+ }
40
+
41
  return parent::_prepareLayout();
42
  }
43
 
app/code/community/Flagbit/FactFinder/Block/Secondaryresult.php CHANGED
@@ -5,12 +5,17 @@ class Flagbit_FactFinder_Block_Secondaryresult extends Mage_Core_Block_Template
5
 
6
  protected function _prepareLayout()
7
  {
8
- $this->_searchHandler = Mage::getSingleton('factfinder/handler_secondarySearch');
 
 
9
  }
10
 
11
  protected function getSecondaryResult($channel)
12
  {
13
- $result = $this->_searchHandler->getSecondarySearchResult($channel);
 
 
 
14
 
15
  return $result;
16
  }
5
 
6
  protected function _prepareLayout()
7
  {
8
+ if(Mage::helper('factfinder/search')->getIsEnabled()){
9
+ $this->_searchHandler = Mage::getSingleton('factfinder/handler_secondarySearch');
10
+ }
11
  }
12
 
13
  protected function getSecondaryResult($channel)
14
  {
15
+ $result = array();
16
+ if(Mage::helper('factfinder/search')->getIsEnabled()){
17
+ $result = $this->_searchHandler->getSecondarySearchResult($channel);
18
+ }
19
 
20
  return $result;
21
  }
app/code/community/Flagbit/FactFinder/Block/TagCloud.php CHANGED
@@ -8,7 +8,9 @@ class Flagbit_FactFinder_Block_TagCloud extends Mage_CatalogSearch_Block_Term
8
 
9
  protected function _prepareLayout()
10
  {
11
- $this->_tagCloudHandler = Mage::getSingleton('factfinder/handler_tagCloud');
 
 
12
  return parent::_prepareLayout();
13
  }
14
 
8
 
9
  protected function _prepareLayout()
10
  {
11
+ if(Mage::helper('factfinder/search')->getIsEnabled(false, 'tagcloud')){
12
+ $this->_tagCloudHandler = Mage::getSingleton('factfinder/handler_tagCloud');
13
+ }
14
  return parent::_prepareLayout();
15
  }
16
 
app/code/community/Flagbit/FactFinder/Helper/Search.php CHANGED
@@ -34,21 +34,23 @@ class Flagbit_FactFinder_Helper_Search extends Mage_Core_Helper_Abstract {
34
  * @var string
35
  */
36
  const XML_CONFIG_PATH_USE_PROXY = 'factfinder/config/proxy';
37
-
38
  const CACHE_TAG = 'FACTFINDER';
39
  const CACHE_ID = "FallbackCache";
40
  const REQUEST_ID_PREFIX = 'FACTFINDER_';
41
 
42
  protected static $_skipFactFinder = null;
43
-
44
- protected static $_isFallbackActive = null;
45
-
46
  protected static $_failedAttemptRegistered = false;
47
-
48
  /**
49
  * if FACT-Finder enabled?
50
  *
51
- * @return boolean
 
 
52
  */
53
  public function getIsEnabled($searchPageCheck = true, $functionality = '')
54
  {
@@ -88,22 +90,36 @@ class Flagbit_FactFinder_Helper_Search extends Mage_Core_Helper_Abstract {
88
 
89
  return $result;
90
  }
91
-
92
  /**
93
  * Determines whether the fallback should be used
94
  *
95
  * @return bool
96
  **/
97
- protected function _isFallbackActive()
98
  {
99
- if(self::$_isFallbackActive === null)
100
  {
101
- self::$_isFallbackActive = Mage::getStoreConfig('factfinder/fallback/use_fallback');
102
  }
103
-
104
- return self::$_isFallbackActive;
105
  }
106
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  /**
108
  * Determines whether FACT-Finder should be skipped completely, because it has failed to respond too often
109
  * The check is made lazily so that it will return the same result for every call during one request to Magento.
@@ -114,33 +130,33 @@ class Flagbit_FactFinder_Helper_Search extends Mage_Core_Helper_Abstract {
114
  {
115
  if(self::$_skipFactFinder === null)
116
  {
117
- if(!$this->_isFallbackActive())
118
  {
119
  self::$_skipFactFinder = false;
120
  }
121
  else
122
  {
123
- $failedAttempts = $this->_loadFailedAttempts();
124
- $failedAttempts = $this->_removeOldEntries($failedAttempts);
125
- $this->saveFailedAttempts($failedAttempts);
126
-
127
- self::$_skipFactFinder = (count($failedAttempts) >= 3);
128
-
129
- if(self::$_skipFactFinder)
130
- {
131
- Mage::helper('factfinder/debug')->log('Failed to connect to FACT-Finder 3 times. Falling back to Magento\'s search.');
132
- }
133
  }
134
  }
135
-
136
  return self::$_skipFactFinder;
137
  }
138
-
139
- protected function _getCacheId()
140
- {
141
- return self::REQUEST_ID_PREFIX . self::CACHE_ID;
142
- }
143
-
 
 
 
 
 
 
144
  /**
145
  * Registers that FACT-Finder has failed to respond.
146
  * The attempt will be represented as an integer corresponding to attempt's timestamp in minutes.
@@ -148,50 +164,67 @@ class Flagbit_FactFinder_Helper_Search extends Mage_Core_Helper_Abstract {
148
  **/
149
  public function registerFailedAttempt()
150
  {
151
- if(self::$_failedAttemptRegistered)
152
  return;
153
-
 
154
  $failedAttempts = $this->_loadFailedAttempts();
155
- $failedAttempts[] = intval(time() / 60);
156
- $this->saveFailedAttempts($failedAttempts);
157
-
 
158
  self::$_failedAttemptRegistered = true;
159
-
160
- Mage::helper('factfinder/debug')->log('Registered failed attempt to connect to FACT-Finder. '.count($failedAttempts).' failed attempts registered.');
161
- if(count($failedAttempts) >= 3)
162
- {
163
- $delay = Mage::getStoreConfig('factfinder/fallback/wait_time');
164
 
165
- $title = 'FACT-Finder unreachable! Falling back to Magento\'s search for '.$delay.' minutes.';
166
- $message = 'FACT-Finder did not respond for the third time. Magento will now use its own search for '.$delay.' minutes before trying to reach FACT-Finder again. If the problem persists, please check your FACT-Finder server and the settings in Magento\'s FACT-Finder configuration.';
167
 
168
- $versionInfo = Mage::getVersionInfo();
169
 
170
- if ($versionInfo['major'] > 1 ||
171
- $versionInfo['major'] >= 1 &&
172
- $versionInfo['minor'] >= 7)
173
- {
174
- Mage::getModel('adminnotification/inbox')->addMajor($title, $message);
175
  }
176
- else
177
- {
178
- $severity = Mage_AdminNotification_Model_Inbox::SEVERITY_MAJOR;
179
-
180
- $date = date('Y-m-d H:i:s');
181
- Mage::getModel('adminnotification/inbox')->parse(array(
182
- array(
183
- 'severity' => $severity,
184
- 'date_added' => $date,
185
- 'title' => $title,
186
- 'description' => $message,
187
- 'url' => '',
188
- 'internal' => true
189
- )
190
- ));
191
- }
192
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  }
194
-
195
  /**
196
  * Loads previously registered failed attempts from cache, if they exist.
197
  * Returns an empty array, otherwise.
@@ -200,26 +233,27 @@ class Flagbit_FactFinder_Helper_Search extends Mage_Core_Helper_Abstract {
200
  **/
201
  protected function _loadFailedAttempts()
202
  {
203
- $cachedContent = Mage::app()->loadCache($this->_getCacheId());
204
  $failedAttempts = array();
205
- if($cachedContent)
206
  $failedAttempts = unserialize($cachedContent);
207
-
 
208
  return $failedAttempts;
209
  }
210
-
211
  /**
212
  * Save failed attempts to cache.
213
  *
214
  * @param array of int failed attempts
215
  **/
216
- public function saveFailedAttempts($failedAttempts)
217
  {
218
- Mage::app()->saveCache(serialize($failedAttempts), $this->_getCacheId(), array(self::CACHE_TAG));
219
  }
220
-
221
  /**
222
- * Removes entries from a list of minute-timestamps which are older than a given delay set within the configuration
223
  *
224
  * @param array of int entries
225
  **/
@@ -227,13 +261,14 @@ class Flagbit_FactFinder_Helper_Search extends Mage_Core_Helper_Abstract {
227
  {
228
  $delay = Mage::getStoreConfig('factfinder/fallback/wait_time');
229
  $newEntries = array();
230
-
231
- foreach($entries as $entry)
232
- {
233
- if(intval(time() / 60) - $entry < $delay)
234
- $newEntries[] = $entry;
235
- }
236
-
 
237
  return $newEntries;
238
  }
239
 
@@ -303,7 +338,7 @@ class Flagbit_FactFinder_Helper_Search extends Mage_Core_Helper_Abstract {
303
  }
304
  $url = $this->_getUrl('factfinder/proxy/suggest', $params);
305
  } else {
306
- $url = Mage::getSingleton('factfinder/facade')->getSuggestUrl();
307
  }
308
  return $url;
309
  }
34
  * @var string
35
  */
36
  const XML_CONFIG_PATH_USE_PROXY = 'factfinder/config/proxy';
37
+
38
  const CACHE_TAG = 'FACTFINDER';
39
  const CACHE_ID = "FallbackCache";
40
  const REQUEST_ID_PREFIX = 'FACTFINDER_';
41
 
42
  protected static $_skipFactFinder = null;
43
+
44
+ protected static $_isFallbackFeatureActive = null;
45
+
46
  protected static $_failedAttemptRegistered = false;
47
+
48
  /**
49
  * if FACT-Finder enabled?
50
  *
51
+ * @param searchPageCheck if true, it will also check whether this is a request for a page with factfinder results
52
+ * @param functionality can be one of those: suggest, asn, campaign, clicktracking, tagcloud
53
+ * @return boolean true it the specified feature is enabled
54
  */
55
  public function getIsEnabled($searchPageCheck = true, $functionality = '')
56
  {
90
 
91
  return $result;
92
  }
93
+
94
  /**
95
  * Determines whether the fallback should be used
96
  *
97
  * @return bool
98
  **/
99
+ protected function _isFallbackFeatureActive()
100
  {
101
+ if(self::$_isFallbackFeatureActive === null)
102
  {
103
+ self::$_isFallbackFeatureActive = Mage::getStoreConfig('factfinder/fallback/use_fallback');
104
  }
105
+
106
+ return self::$_isFallbackFeatureActive;
107
  }
108
+
109
+ protected function _enableFallback($delay)
110
+ {
111
+ $this->_skipFactFinder = true;
112
+ $nextRetryTimestamp = intval(time() / 60) + $delay;
113
+ Mage::app()->saveCache($nextRetryTimestamp, $this->_getCacheId('nextRetryTimestamp'), array(self::CACHE_TAG));
114
+ }
115
+
116
+ protected function _disableFallback()
117
+ {
118
+ $this->_skipFactFinder = false;
119
+ $nextRetryTimestamp = 0;
120
+ Mage::app()->saveCache($nextRetryTimestamp, $this->_getCacheId('nextRetryTimestamp'), array(self::CACHE_TAG));
121
+ }
122
+
123
  /**
124
  * Determines whether FACT-Finder should be skipped completely, because it has failed to respond too often
125
  * The check is made lazily so that it will return the same result for every call during one request to Magento.
130
  {
131
  if(self::$_skipFactFinder === null)
132
  {
133
+ if(!$this->_isFallbackFeatureActive())
134
  {
135
  self::$_skipFactFinder = false;
136
  }
137
  else
138
  {
139
+ $nextRetryTimestamp = intval(Mage::app()->loadCache($this->_getCacheId('nextRetryTimestamp')));
140
+ $currentTimestamp = intval(time() / 60);
141
+
142
+ self::$_skipFactFinder = ($currentTimestamp <= $nextRetryTimestamp);
 
 
 
 
 
 
143
  }
144
  }
145
+
146
  return self::$_skipFactFinder;
147
  }
148
+
149
+ /**
150
+ * resets all fallback counter values.
151
+ *
152
+ * @return void
153
+ */
154
+ public function resetFailedAttemptCount()
155
+ {
156
+ $this->_disableFallback();
157
+ $this->_saveFailedAttempts(array());
158
+ }
159
+
160
  /**
161
  * Registers that FACT-Finder has failed to respond.
162
  * The attempt will be represented as an integer corresponding to attempt's timestamp in minutes.
164
  **/
165
  public function registerFailedAttempt()
166
  {
167
+ if(self::$_failedAttemptRegistered || !$this->_isFallbackFeatureActive() || $this->_skipFactFinder()) {
168
  return;
169
+ }
170
+
171
  $failedAttempts = $this->_loadFailedAttempts();
172
+ $failedAttempts = $this->_removeOldEntries($failedAttempts);
173
+ $failedAttempts[] = intval(time() / 60);
174
+ $this->_saveFailedAttempts($failedAttempts);
175
+
176
  self::$_failedAttemptRegistered = true;
177
+ Mage::helper('factfinder/debug')->log('Registered failed attempt to connect to FACT-Finder. '.count($failedAttempts).' failed attempts registered.');
 
 
 
 
178
 
179
+ if (count($failedAttempts) >= 3) {
180
+ $delay = Mage::getStoreConfig('factfinder/fallback/wait_time');
181
 
182
+ $this->_enableFallback($delay);
183
 
184
+ // don't output a warning, if the delay is set to 0 as this would cause a lot of messages during a factfinder downtime
185
+ if($delay > 0) {
186
+ $this->_outputWarningMessage();
 
 
187
  }
188
+ }
189
+ }
190
+
191
+ protected function _outputWarningMessage()
192
+ {
193
+ $delay = Mage::getStoreConfig('factfinder/fallback/wait_time');
194
+
195
+ $title = 'FACT-Finder unreachable! Falling back to Magento\'s search for '.$delay.' minutes.';
196
+ $message = 'FACT-Finder did not respond for the third time. Magento will now use its own search for '.$delay.' minutes before trying to reach FACT-Finder again. If the problem persists, please check your FACT-Finder server and the settings in Magento\'s FACT-Finder configuration.';
197
+
198
+ $adminNotificationInbox = Mage::getModel('adminnotification/inbox');
199
+
200
+ if (method_exists($adminNotificationInbox, 'addMajor')) {
201
+ Mage::getModel('adminnotification/inbox')->addMajor($title, $message);
202
+ } else {
203
+ $severity = Mage_AdminNotification_Model_Inbox::SEVERITY_MAJOR;
204
+ $date = date('Y-m-d H:i:s');
205
+
206
+ $adminNotificationInbox->parse(array(
207
+ array(
208
+ 'severity' => $severity,
209
+ 'date_added' => $date,
210
+ 'title' => $title,
211
+ 'description' => $message,
212
+ 'url' => '',
213
+ 'internal' => true
214
+ )
215
+ ));
216
+ }
217
+ }
218
+
219
+ protected function _getCacheId($suffix = null)
220
+ {
221
+ $cacheId = self::REQUEST_ID_PREFIX . self::CACHE_ID;
222
+ if ($suffix != null) {
223
+ $cacheId .= '_' . $suffix;
224
+ }
225
+ return $cacheId;
226
  }
227
+
228
  /**
229
  * Loads previously registered failed attempts from cache, if they exist.
230
  * Returns an empty array, otherwise.
233
  **/
234
  protected function _loadFailedAttempts()
235
  {
236
+ $cachedContent = Mage::app()->loadCache($this->_getCacheId('failedAttempts'));
237
  $failedAttempts = array();
238
+ if($cachedContent) {
239
  $failedAttempts = unserialize($cachedContent);
240
+ }
241
+
242
  return $failedAttempts;
243
  }
244
+
245
  /**
246
  * Save failed attempts to cache.
247
  *
248
  * @param array of int failed attempts
249
  **/
250
+ public function _saveFailedAttempts($failedAttempts)
251
  {
252
+ Mage::app()->saveCache(serialize($failedAttempts), $this->_getCacheId('failedAttempts'), array(self::CACHE_TAG));
253
  }
254
+
255
  /**
256
+ * Removes entries from a list of minute-timestamps which are older than 3 minutes
257
  *
258
  * @param array of int entries
259
  **/
261
  {
262
  $delay = Mage::getStoreConfig('factfinder/fallback/wait_time');
263
  $newEntries = array();
264
+
265
+ $minutesTimestamp = intval(time() / 60);
266
+ foreach($entries as $entry)
267
+ {
268
+ if($minutesTimestamp - $entry < 3)
269
+ $newEntries[] = $entry;
270
+ }
271
+
272
  return $newEntries;
273
  }
274
 
338
  }
339
  $url = $this->_getUrl('factfinder/proxy/suggest', $params);
340
  } else {
341
+ $url = Mage::getSingleton('factfinder/facade')->getSuggestUrl();
342
  }
343
  return $url;
344
  }
app/code/community/Flagbit/FactFinder/Model/Observer.php CHANGED
@@ -186,7 +186,7 @@ class Flagbit_FactFinder_Model_Observer
186
  $groups['search']['fields']['enabled']['errors'] = $errors;
187
  } else {
188
  // If there were no errors, reset the fallback feature
189
- Mage::helper('factfinder/search')->saveFailedAttempts(array());
190
  }
191
 
192
  // if we have an error - unset inherit field so that Backend model processing is activated
186
  $groups['search']['fields']['enabled']['errors'] = $errors;
187
  } else {
188
  // If there were no errors, reset the fallback feature
189
+ Mage::helper('factfinder/search')->resetFailedAttemptCount();
190
  }
191
 
192
  // if we have an error - unset inherit field so that Backend model processing is activated
app/code/community/Flagbit/FactFinder/etc/config.xml CHANGED
@@ -22,7 +22,7 @@
22
  <modules>
23
  <Flagbit_FactFinder>
24
  <active>true</active>
25
- <version>3.4.3</version>
26
  </Flagbit_FactFinder>
27
  </modules>
28
  <global>
@@ -250,7 +250,7 @@
250
  </search>
251
  </catalog>
252
  <factfinder>
253
- <version>3.4.3</version>
254
  <revision>$Rev: 25896 $</revision>
255
  <debug>true</debug>
256
 
22
  <modules>
23
  <Flagbit_FactFinder>
24
  <active>true</active>
25
+ <version>3.4.4</version>
26
  </Flagbit_FactFinder>
27
  </modules>
28
  <global>
250
  </search>
251
  </catalog>
252
  <factfinder>
253
+ <version>3.4.4</version>
254
  <revision>$Rev: 25896 $</revision>
255
  <debug>true</debug>
256
 
package.xml CHANGED
@@ -1,24 +1,23 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Flagbit_Factfinder</name>
4
- <version>3.4.3</version>
5
  <stability>stable</stability>
6
  <license>GPL</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Integrates the FACT-Finder for improved product search functionality.</summary>
10
  <description>Integrates the FACT-Finder for improved product search functionality.</description>
11
- <notes>[+BUGFIX] set category parameter for the catalog part into the correct array
12
- [~BUGFIX] Fixed layout definition causing "Invalid block type" exception
13
- [~BUGFIX] the method _getFactFinderObject also supports the id parameter
14
- [~BUGFIX] ignore header in suggest template if no proxy is activated, because without proxy there is no channel property at the suggest data
15
- [~FEATURE] add method isSuggestProxyActivated to Helper/Search.php
16
- [+FEATURE] added the parameter $id to the two generic methods (get|configure){type}Adapter methods; with the id it is possible to force separate adapters for the same type and channel!
17
- [+TASK] extended the documentation of the __call method</notes>
18
  <authors><author><name>Flagbit GmbH Co. KG</name><user>auto-converted</user><email>magento@flagbit.de</email></author></authors>
19
- <date>2012-11-14</date>
20
- <time>11:12:50</time>
21
- <contents><target name="mageetc"><dir><dir><file name="factfinder.xml" hash="ca4dac634339217dd2ee6e8dc477d694"/></dir><dir name="modules"><file name="Flagbit_FactFinder.xml" hash="99c6b4e5981ac7592830a9fb3f5e5a0e"/></dir></dir></target><target name="magedesign"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="factfinder.xml" hash="5e5cb94967917aa2784d19434d02b2d4"/></dir><dir name="template"><dir name="factfinder"><file name="cockpit.phtml" hash="db2b5c21f817f1abdab3dabce26c699f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="factfinder.xml" hash="c059bb14f9d4d929db8234bdf139c2cb"/></dir><dir name="template"><dir name="factfinder"><file name="form.advancedsuggest.phtml" hash="68cf6f46b65e66e1bb88d91b854a339a"/><file name="form.advancedsuggest68.phtml" hash="2910c0f39c52e6e02eead79688f682af"/><file name="form.mini.phtml" hash="eb49c2fb57594e2ebeed1ffb01c2606d"/><file name="logo.phtml" hash="7a40d67bf648e65345f69b2cf9d3c6b6"/><file name="scic.phtml" hash="4d4f8d2318837122973049496feafea5"/><file name="secondaryresult.phtml" hash="a4cdff409ccedb16d4fe9a038a4dd9e8"/><dir name="campaign"><file name="advisory.phtml" hash="d0ef29b97aa4c3bdfa2b94596beb5b21"/><file name="feedback.phtml" hash="a44c2521e961cfb62b4b89ad0cb71b15"/><dir name="cart"><file name="advisory.phtml" hash="bb994272a6daaaba298a38023f6db212"/><file name="feedback.phtml" hash="01fa6a9cd024a2a8edaea7013b00fc89"/></dir></dir><dir name="filter"><file name="scriptaculousSlider.phtml" hash="e3ee4dbb6bc6e0546b4374078a9d88bc"/><file name="slider.phtml" hash="80e4e9e1c81437fe41b6a52d98e73549"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="de_DE"><file name="Flagbit_FactFinder.csv" hash="4df4f128de560a402243cd7718f7be2a"/></dir></dir></target><target name="magelib"><dir><dir name="FACTFinder"><file name="AdvisorAnswer.php" hash="b6dfbe2d43660b1624ce7788bef7356a"/><file name="AdvisorQuestion.php" hash="7f3d039dc86c5baebb4702f8a66ca6d4"/><file name="Asn.php" hash="8a3753feea0901c7ace25e011be38e56"/><file name="AsnFilterItem.php" hash="cdd0bb237873b54877b4b52744250018"/><file name="AsnGroup.php" hash="51aa9c3dfad5ec727cade5962cd7ad2f"/><file name="AsnSliderFilter.php" hash="da4eb96cdb47553793b278aca2d0ec19"/><file name="BreadCrumbItem.php" hash="115ffb2f30e346b29f93ce2d84be724e"/><file name="Campaign.php" hash="138f990ff2180d369bd0b441998b9cb4"/><file name="CampaignIterator.php" hash="d58f054580f0057e8471dbd8334157f1"/><file name="Configuration.php" hash="972367363e6c84fe80f2c73a1528b8aa"/><file name="EncodingHandler.php" hash="4f0b616bca9158bfb7eddcfcba192dc6"/><file name="Item.php" hash="431843e9e2847e8a6c966a185c39f5e9"/><file name="Loader.php" hash="e76d471f86c6c68ef3228c0b98aaed6e"/><file name="Log4PhpLogger.php" hash="ecfb1f084b8d0bd2d51bf417fa0b0b3c"/><file name="NullLogger.php" hash="be8782000070665f0e9fcc011ae4fe77"/><file name="Paging.php" hash="a07db7cb4b02893792e6e29018a36858"/><file name="Parameters.php" hash="612c4a9b98cb8a17d0f2d30cf2641936"/><file name="ParametersParser.php" hash="187527e3d7f233ca60d89748be8c2896"/><file name="ProductsPerPageOptions.php" hash="1e69121e89109f31b0929706ea3dcabc"/><file name="Record.php" hash="4bc036a2d47cd1b76d09af6290f49044"/><file name="Result.php" hash="6b4e959df31a73b9fe25de7a76551970"/><file name="SingleWordSearchItem.php" hash="8f0feac780e68a8b0eab6d44dd6c6813"/><file name="SuggestQuery.php" hash="cf3cf51839e06475bdcf62bb49ee96c5"/><file name="TagQuery.php" hash="ece1fda66af2c6053507941f35423c5f"/><file name="Util.php" hash="4ac8b8eb630e83c65a065fd4e01ab11f"/><dir name="Abstract"><file name="Adapter.php" hash="dea9f000509f94599e3b4d38ee14d66f"/><file name="CompareAdapter.php" hash="d26dec2f3dc98269dcb43f10bcfcdfe9"/><file name="Configuration.php" hash="233565de45f56ba7bdcd604817dd7fc6"/><file name="DataProvider.php" hash="8b1dfc68d335aa006f7af9f2a60e519d"/><file name="ImportAdapter.php" hash="8427bb6b4b33c37bfe9090d7c16e0238"/><file name="Logger.php" hash="c5b1ace6158035e80b3d4a79a942a381"/><file name="ProductCampaignAdapter.php" hash="daa4f28109edf685b33f31fce8573ced"/><file name="RecommendationAdapter.php" hash="0c11f59134083f1377f1d0c38a6fdefb"/><file name="ScicAdapter.php" hash="e1a0b64f7555e32a78109bbbaaf3c939"/><file name="SearchAdapter.php" hash="c03d9bea34da5cc0e0b5885bd2c89c74"/><file name="SimilarRecordsAdapter.php" hash="2cef8bdabc112c2c78fb95e75ef748bd"/><file name="SuggestAdapter.php" hash="ef13ace0995fa2f57b87f38cc2fb701a"/><file name="TagCloudAdapter.php" hash="ac5465a5dde73dde3ead1f6f08eced08"/></dir><dir name="Http"><file name="DataProvider.php" hash="301e78f2d7b9c56d344b4a5989ef6b43"/><file name="DummyProvider.php" hash="30d61ea2ce373f5b501bb64d8ed19393"/><file name="ParallelDataProvider.php" hash="78f6039e0b6ec92b9e066e315fed77de"/><file name="ScicAdapter.php" hash="821294ba5ab1fbce8b8208d89e2162dc"/><file name="StatusHelper.php" hash="e4760fadae33a5574f9445bbc73c1283"/><file name="SuggestAdapter.php" hash="9ddfe5fdd6b373e9f7126867ed1f0b06"/><file name="UrlBuilder.php" hash="99efad6cb8243ee93a5d4b61c93d8303"/></dir><dir name="Xml64"><file name="SearchAdapter.php" hash="58a49882c741216cf278c4556ea7d224"/></dir><dir name="Xml65"><file name="ImportAdapter.php" hash="e372e9eaa322a1b2d9ace33679c80815"/><file name="RecommendationAdapter.php" hash="14a126d5a9c14da3e754186f81bfeacb"/><file name="SearchAdapter.php" hash="255e5ae9cd8fe3ff2588222c5a086376"/><file name="SuggestAdapter.php" hash="e5381502b74dd62be1a7aa833cbb03e2"/><file name="TagCloudAdapter.php" hash="711e1aabd4d2895f66fdc329ee2b82b8"/></dir><dir name="Xml66"><file name="CompareAdapter.php" hash="a6f500504086c842e8e50772305b98df"/><file name="ImportAdapter.php" hash="5ea0d06cc2ddc7a1b7c880203c38fe40"/><file name="RecommendationAdapter.php" hash="9490ea2b17fded94d087046065596b1b"/><file name="SearchAdapter.php" hash="82214090045d963b15ccc7073d73d7ea"/><file name="SimilarRecordsAdapter.php" hash="532cbc18947dad44fdb296bc82ea3fa0"/><file name="SuggestAdapter.php" hash="813bfb64ac9d2dc45443cc7c33e854a7"/><file name="TagCloudAdapter.php" hash="a44dd623910bbb6766a0b0c25584212c"/></dir><dir name="Xml67"><file name="CompareAdapter.php" hash="37980ec507fd7f13e81ece413915da2d"/><file name="ImportAdapter.php" hash="dc0d334439aa59f3e0a4226bbf1456d2"/><file name="ProductCampaignAdapter.php" hash="64faea05ff05c3031da6f30b3a169980"/><file name="RecommendationAdapter.php" hash="b991b5e2570c28530164b3cacfffa6e1"/><file name="SearchAdapter.php" hash="bda78e482ab612bc8902aee11260afb9"/><file name="SimilarRecordsAdapter.php" hash="b60a974a22d3e473538524dc57d1e91d"/><file name="SuggestAdapter.php" hash="7290503daae4ae9e595cc5b1480ce8a1"/><file name="TagCloudAdapter.php" hash="d3efa6616331286cb221f8ca79021324"/></dir><dir name="Xml68"><file name="CompareAdapter.php" hash="0a8ebc48d90e7aaf131b66180d10ba11"/><file name="ImportAdapter.php" hash="bf483742e13d647da407f7da85828b98"/><file name="ProductCampaignAdapter.php" hash="db981749b20f69eca65d5ac1e622bafe"/><file name="RecommendationAdapter.php" hash="69e031adc81be7a88a0cffbe1b96c317"/><file name="SearchAdapter.php" hash="de47913e1c064b171aea892443885e8f"/><file name="SimilarRecordsAdapter.php" hash="b9c70b5c7d6d803bb1c7f1255be55285"/><file name="SuggestAdapter.php" hash="5cf5b95340983823c9e7a3fd0dc20a0b"/><file name="TagCloudAdapter.php" hash="3bfa1e877269be17ee08c403254925bf"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="2451df5afb1c64460c07b4caa228fabf"/></dir><dir name="SAI"><file name="Curl.php" hash="1fb18096257151b5b47bc2964dd9fe39"/><file name="CurlInterface.php" hash="714fa045dd4546d0c92cd022efb09422"/><file name="CurlStub.php" hash="2521763ee414683aced1afd1ec12511d"/><dir name="Curl"><file name="Handle.php" hash="0fc7132737da7cee7df6b974447864ac"/></dir></dir></dir></target><target name="magecommunity"><dir><dir name="Flagbit"><dir name="FactFinder"><dir name="Block"><file name="Layer.php" hash="ad503d9839983c6a803481986d24cf7e"/><file name="Scic.php" hash="9ba6aa43204d0aae206d9f24f09aecfc"/><file name="Secondaryresult.php" hash="3b40908d8089ce30a1ab815e618800d3"/><file name="TagCloud.php" hash="bedca1b6a0a5b40bef6b4c263172a83f"/><dir name="Adminhtml"><file name="Cockpit.php" hash="e12c45f55d5fd31d164187bd9d16a0bd"/><file name="Exportlink.php" hash="29044f67c1ebb0e6950da286a24a1db7"/><dir name="Form"><dir name="Field"><file name="Attribute.php" hash="2e60d7473163fa523f10b2d0c441fe24"/><file name="Attributes.php" hash="cbaf317aa5ce4417cfcd02a6c4f36486"/></dir></dir></dir><dir name="Campaign"><file name="Advisory.php" hash="0dab72c7edeb28479ef82c8c4f85c871"/><file name="Feedback.php" hash="c30b7a27bbf05df9cafc259562cdc50b"/><dir name="Cart"><file name="Advisory.php" hash="73d79fc1a899e2c94cd0301a3901c171"/><file name="Feedback.php" hash="86818ceff0cbe0fea694448037d8c0a9"/></dir><dir name="Product"><file name="Advisory.php" hash="bd1f468d56b6bc1fa3541406796c133a"/><file name="Feedback.php" hash="576bd4801d14f08bc1c62688ffab2e04"/></dir></dir><dir name="Cart"><file name="Crosssell.php" hash="aad1e79b0d9ef61b27e5f94d1a3fe2fe"/></dir><dir name="Filter"><file name="Slider.php" hash="159d3e1b403625dbbb970e5e7ada4ec7"/></dir><dir name="Layer"><file name="Abstract.php" hash="f53a3e2d6ce0da4afee58b4ea806a342"/></dir><dir name="Product"><dir name="List"><file name="Crosssell.php" hash="80ac0ab275f3e903c3df80961d6afa35"/><file name="Upsell.php" hash="5141fb89f0c27970e9540dbbc27c1b25"/></dir></dir><dir name="XmlConnect"><dir name="Catalog"><file name="Search.php" hash="662f7b0df8d21626bf6193906aed5162"/><dir name="Product"><file name="List.php" hash="79103c53bbaa03f02ed8a78554dcc791"/></dir><dir name="Search"><file name="Suggest.php" hash="a0fed06b80840e63f9983909847d7e58"/></dir></dir></dir></dir><dir name="controllers"><file name="ExportController.php" hash="d130083fd8ef132cc48aa4b3746e3c2c"/><file name="ProxyController.php" hash="9cac55f10a4fd33a8396bc460ee3f272"/><dir name="Adminhtml"><dir name="Factfinder"><file name="CockpitController.php" hash="4c8665feaf14c38e6ba2384db496c95a"/></dir></dir></dir><dir name="documentation"><file name="Installation_FACT-Finder_Magento_de.pdf" hash="b4711171c625caaa8996a6a09e0eaaae"/><file name="Installation_FACT-Finder_Magento_en.pdf" hash="d4bef19418ee33a223fbda2d45cca686"/></dir><dir name="etc"><file name="adminhtml.xml" hash="1165a0fecfaa31f2aa4a882d1d8bc033"/><file name="config.xml" hash="60a3050acb2c4601ea35ba2cd283c798"/><file name="system.xml" hash="d3721503a1b346f60633e2f0a8e361a1"/></dir><dir name="Helper"><file name="Backend.php" hash="87b662c7c7242ef349f4606ad2ab5279"/><file name="Data.php" hash="afede9edaf2bcfbc93a4049eee5be89e"/><file name="Debug.php" hash="24b939b03efb2cd5f7815562f896576f"/><file name="Search.php" hash="5aa8ffe5b6045c0680d025984e024f28"/></dir><dir name="Model"><file name="Facade.php" hash="768397419ddb085279c7d9c5bdeb801f"/><file name="Layer.php" hash="9da16c44259b4a31d73f63d87787ff11"/><file name="Observer.php" hash="16b78ca3d1d40e4b961fdf023ea3d0a0"/><file name="Processor.php" hash="5e76103096faccd5b26b2d036bdc7c5e"/><dir name="Export"><file name="Price.php" hash="5561605bf639385c211f339f0c752a0f"/><file name="Product.php" hash="2cc9fb277e4d598fb40f4a2b6858d9f2"/><file name="Stock.php" hash="28e819f8f317957a70a7d4d318e04791"/></dir><dir name="Handler"><file name="Abstract.php" hash="f5724a1c82becbc4d76a6f46dc591977"/><file name="CheckStatus.php" hash="60336786e622127ae3313b168a534ec5"/><file name="ProductCampaign.php" hash="831d8d3ff2cd29e090cff10c3a9c8844"/><file name="ProductDetailCampaign.php" hash="c714d9b43772f1665d64daea8d16594d"/><file name="Recommendations.php" hash="47b12e1f2f1e1d83ecaba77fdb20b63b"/><file name="Search.php" hash="165a115c5b92c40b03f7bfef04d13ef5"/><file name="SecondarySearch.php" hash="de4ced818f7865a491438a4d103b431a"/><file name="ShoppingCartCampaign.php" hash="202fc9ab4018247dfb8e8bcefd417465"/><file name="Suggest.php" hash="3b286cbda3cad188b10f7fac06e0ca32"/><file name="TagCloud.php" hash="e60bd2a5d314cfe3bad445ba88740878"/></dir><dir name="Layer"><file name="Abstract.php" hash="0a0505e719ca55320da35c7510b82d3a"/><dir name="Filter"><file name="Item.php" hash="28e42624d764342dae6cb09a1b29b7b8"/><dir name="Attribute"><file name="Abstract.php" hash="2ad710352f1803d15ba056cd93d519f1"/><file name="Catalog.php" hash="f6dce5ea64da9dfb3458ae9ff4b58a7b"/><file name="Catalogsearch.php" hash="75536576aaaa0186f166550ee746ae04"/></dir></dir></dir><dir name="Mysql4"><dir name="Campaign"><dir name="Pushedproducts"><file name="Collection.php" hash="c657b421e0137bf842ec78c26718363f"/></dir></dir><dir name="Product"><dir name="Attribute"><file name="Collection.php" hash="a5b47ca867be314d2d0edf1621608d8b"/></dir><dir name="Recommendation"><file name="Collection.php" hash="fdb6f35fa1cca09aa405bc5cd0c68601"/></dir></dir><dir name="Scic"><file name="Queue.php" hash="a1521000a1a10df8e6b580f33d06cf23"/><dir name="Queue"><file name="Collection.php" hash="5f6b0b6a50838929065ebd941cedce42"/></dir></dir><dir name="Search"><file name="Collection.php" hash="2a0c4ff355e035d11209115f054dc3dd"/><file name="Engine.php" hash="88a56eb3b4587d87bb1152476b64036e"/></dir></dir><dir name="Scic"><file name="Queue.php" hash="828d391339a22c15ad74ae1a2e784b41"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Attributes.php" hash="8259883090dc4bca9b858d047983e736"/><file name="Enabled.php" hash="3b4d1f4b37d7ddba9768a7da6e3fc778"/></dir><dir name="Source"><file name="Authtype.php" hash="5bc0b1c745782cc51d44d56299059bcb"/><file name="Ffversion.php" hash="0270fbefb18c180abc98f2e02e37532c"/><file name="Identifier.php" hash="cec45238f0e28a1bf66d10dee513c2ca"/></dir></dir></dir></dir><dir name="sql"><dir name="factfinder_setup"><file name="mysql4-install-3.2.0.php" hash="1342320595048cd96659c454381cfbb4"/><file name="mysql4-upgrade-3.2.0-3.2.1.php" hash="3d5276dfe971a6bd48aa8e2a085de004"/><file name="mysql4-upgrade-3.2.1-3.3.0.php" hash="71954ea0cf400950d23b020ff095a9ee"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="factfinder.css" hash="16766d07b20544e11184ee21f95b2692"/></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><dir name="factfinder"><file name="jXHR.js" hash="0473a3ea88f08797737814c7ffbeba18"/><file name="scic.js" hash="e942f1386b29f6868f3ebe20c52e2782"/><file name="suggest.js" hash="c60da60ac082a4bca9d9c04be47e3138"/></dir></dir></dir></target></contents>
22
  <compatible/>
23
  <dependencies/>
24
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Flagbit_Factfinder</name>
4
+ <version>3.4.4</version>
5
  <stability>stable</stability>
6
  <license>GPL</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Integrates the FACT-Finder for improved product search functionality.</summary>
10
  <description>Integrates the FACT-Finder for improved product search functionality.</description>
11
+ <notes>[+BUGFIX] use the fallback-offline delay correctly
12
+ [~BUGFIX] don't add messages to FF if delay is set to 0 (too many messages)
13
+ [~TASK] change search helper method access
14
+ [+BUGFIX] only send request to FF if the module is activated
15
+ [+BUGFIX] don't collect factfinder fails, if fallback isn't activated
16
+ [+BUGFIX] don't make requests to the recommendation engine if the according features are disabled</notes>
 
17
  <authors><author><name>Flagbit GmbH Co. KG</name><user>auto-converted</user><email>magento@flagbit.de</email></author></authors>
18
+ <date>2012-11-23</date>
19
+ <time>17:56:24</time>
20
+ <contents><target name="mageetc"><dir><dir><file name="factfinder.xml" hash="ca4dac634339217dd2ee6e8dc477d694"/></dir><dir name="modules"><file name="Flagbit_FactFinder.xml" hash="99c6b4e5981ac7592830a9fb3f5e5a0e"/></dir></dir></target><target name="magedesign"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="factfinder.xml" hash="5e5cb94967917aa2784d19434d02b2d4"/></dir><dir name="template"><dir name="factfinder"><file name="cockpit.phtml" hash="db2b5c21f817f1abdab3dabce26c699f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="factfinder.xml" hash="c059bb14f9d4d929db8234bdf139c2cb"/></dir><dir name="template"><dir name="factfinder"><file name="form.advancedsuggest.phtml" hash="68cf6f46b65e66e1bb88d91b854a339a"/><file name="form.advancedsuggest68.phtml" hash="2910c0f39c52e6e02eead79688f682af"/><file name="form.mini.phtml" hash="eb49c2fb57594e2ebeed1ffb01c2606d"/><file name="logo.phtml" hash="7a40d67bf648e65345f69b2cf9d3c6b6"/><file name="scic.phtml" hash="4d4f8d2318837122973049496feafea5"/><file name="secondaryresult.phtml" hash="a4cdff409ccedb16d4fe9a038a4dd9e8"/><dir name="campaign"><file name="advisory.phtml" hash="d0ef29b97aa4c3bdfa2b94596beb5b21"/><file name="feedback.phtml" hash="a44c2521e961cfb62b4b89ad0cb71b15"/><dir name="cart"><file name="advisory.phtml" hash="bb994272a6daaaba298a38023f6db212"/><file name="feedback.phtml" hash="01fa6a9cd024a2a8edaea7013b00fc89"/></dir></dir><dir name="filter"><file name="scriptaculousSlider.phtml" hash="e3ee4dbb6bc6e0546b4374078a9d88bc"/><file name="slider.phtml" hash="80e4e9e1c81437fe41b6a52d98e73549"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="de_DE"><file name="Flagbit_FactFinder.csv" hash="4df4f128de560a402243cd7718f7be2a"/></dir></dir></target><target name="magelib"><dir><dir name="FACTFinder"><file name="AdvisorAnswer.php" hash="b6dfbe2d43660b1624ce7788bef7356a"/><file name="AdvisorQuestion.php" hash="7f3d039dc86c5baebb4702f8a66ca6d4"/><file name="Asn.php" hash="8a3753feea0901c7ace25e011be38e56"/><file name="AsnFilterItem.php" hash="cdd0bb237873b54877b4b52744250018"/><file name="AsnGroup.php" hash="51aa9c3dfad5ec727cade5962cd7ad2f"/><file name="AsnSliderFilter.php" hash="da4eb96cdb47553793b278aca2d0ec19"/><file name="BreadCrumbItem.php" hash="115ffb2f30e346b29f93ce2d84be724e"/><file name="Campaign.php" hash="138f990ff2180d369bd0b441998b9cb4"/><file name="CampaignIterator.php" hash="d58f054580f0057e8471dbd8334157f1"/><file name="Configuration.php" hash="972367363e6c84fe80f2c73a1528b8aa"/><file name="EncodingHandler.php" hash="4f0b616bca9158bfb7eddcfcba192dc6"/><file name="Item.php" hash="431843e9e2847e8a6c966a185c39f5e9"/><file name="Loader.php" hash="e76d471f86c6c68ef3228c0b98aaed6e"/><file name="Log4PhpLogger.php" hash="ecfb1f084b8d0bd2d51bf417fa0b0b3c"/><file name="NullLogger.php" hash="be8782000070665f0e9fcc011ae4fe77"/><file name="Paging.php" hash="a07db7cb4b02893792e6e29018a36858"/><file name="Parameters.php" hash="612c4a9b98cb8a17d0f2d30cf2641936"/><file name="ParametersParser.php" hash="187527e3d7f233ca60d89748be8c2896"/><file name="ProductsPerPageOptions.php" hash="1e69121e89109f31b0929706ea3dcabc"/><file name="Record.php" hash="4bc036a2d47cd1b76d09af6290f49044"/><file name="Result.php" hash="6b4e959df31a73b9fe25de7a76551970"/><file name="SingleWordSearchItem.php" hash="8f0feac780e68a8b0eab6d44dd6c6813"/><file name="SuggestQuery.php" hash="cf3cf51839e06475bdcf62bb49ee96c5"/><file name="TagQuery.php" hash="ece1fda66af2c6053507941f35423c5f"/><file name="Util.php" hash="4ac8b8eb630e83c65a065fd4e01ab11f"/><dir name="Abstract"><file name="Adapter.php" hash="dea9f000509f94599e3b4d38ee14d66f"/><file name="CompareAdapter.php" hash="d26dec2f3dc98269dcb43f10bcfcdfe9"/><file name="Configuration.php" hash="233565de45f56ba7bdcd604817dd7fc6"/><file name="DataProvider.php" hash="8b1dfc68d335aa006f7af9f2a60e519d"/><file name="ImportAdapter.php" hash="8427bb6b4b33c37bfe9090d7c16e0238"/><file name="Logger.php" hash="c5b1ace6158035e80b3d4a79a942a381"/><file name="ProductCampaignAdapter.php" hash="daa4f28109edf685b33f31fce8573ced"/><file name="RecommendationAdapter.php" hash="0c11f59134083f1377f1d0c38a6fdefb"/><file name="ScicAdapter.php" hash="e1a0b64f7555e32a78109bbbaaf3c939"/><file name="SearchAdapter.php" hash="c03d9bea34da5cc0e0b5885bd2c89c74"/><file name="SimilarRecordsAdapter.php" hash="2cef8bdabc112c2c78fb95e75ef748bd"/><file name="SuggestAdapter.php" hash="ef13ace0995fa2f57b87f38cc2fb701a"/><file name="TagCloudAdapter.php" hash="ac5465a5dde73dde3ead1f6f08eced08"/></dir><dir name="Http"><file name="DataProvider.php" hash="301e78f2d7b9c56d344b4a5989ef6b43"/><file name="DummyProvider.php" hash="30d61ea2ce373f5b501bb64d8ed19393"/><file name="ParallelDataProvider.php" hash="78f6039e0b6ec92b9e066e315fed77de"/><file name="ScicAdapter.php" hash="821294ba5ab1fbce8b8208d89e2162dc"/><file name="StatusHelper.php" hash="e4760fadae33a5574f9445bbc73c1283"/><file name="SuggestAdapter.php" hash="9ddfe5fdd6b373e9f7126867ed1f0b06"/><file name="UrlBuilder.php" hash="99efad6cb8243ee93a5d4b61c93d8303"/></dir><dir name="Xml64"><file name="SearchAdapter.php" hash="58a49882c741216cf278c4556ea7d224"/></dir><dir name="Xml65"><file name="ImportAdapter.php" hash="e372e9eaa322a1b2d9ace33679c80815"/><file name="RecommendationAdapter.php" hash="14a126d5a9c14da3e754186f81bfeacb"/><file name="SearchAdapter.php" hash="255e5ae9cd8fe3ff2588222c5a086376"/><file name="SuggestAdapter.php" hash="e5381502b74dd62be1a7aa833cbb03e2"/><file name="TagCloudAdapter.php" hash="711e1aabd4d2895f66fdc329ee2b82b8"/></dir><dir name="Xml66"><file name="CompareAdapter.php" hash="a6f500504086c842e8e50772305b98df"/><file name="ImportAdapter.php" hash="5ea0d06cc2ddc7a1b7c880203c38fe40"/><file name="RecommendationAdapter.php" hash="9490ea2b17fded94d087046065596b1b"/><file name="SearchAdapter.php" hash="82214090045d963b15ccc7073d73d7ea"/><file name="SimilarRecordsAdapter.php" hash="532cbc18947dad44fdb296bc82ea3fa0"/><file name="SuggestAdapter.php" hash="813bfb64ac9d2dc45443cc7c33e854a7"/><file name="TagCloudAdapter.php" hash="a44dd623910bbb6766a0b0c25584212c"/></dir><dir name="Xml67"><file name="CompareAdapter.php" hash="37980ec507fd7f13e81ece413915da2d"/><file name="ImportAdapter.php" hash="dc0d334439aa59f3e0a4226bbf1456d2"/><file name="ProductCampaignAdapter.php" hash="64faea05ff05c3031da6f30b3a169980"/><file name="RecommendationAdapter.php" hash="b991b5e2570c28530164b3cacfffa6e1"/><file name="SearchAdapter.php" hash="bda78e482ab612bc8902aee11260afb9"/><file name="SimilarRecordsAdapter.php" hash="b60a974a22d3e473538524dc57d1e91d"/><file name="SuggestAdapter.php" hash="7290503daae4ae9e595cc5b1480ce8a1"/><file name="TagCloudAdapter.php" hash="d3efa6616331286cb221f8ca79021324"/></dir><dir name="Xml68"><file name="CompareAdapter.php" hash="0a8ebc48d90e7aaf131b66180d10ba11"/><file name="ImportAdapter.php" hash="bf483742e13d647da407f7da85828b98"/><file name="ProductCampaignAdapter.php" hash="db981749b20f69eca65d5ac1e622bafe"/><file name="RecommendationAdapter.php" hash="69e031adc81be7a88a0cffbe1b96c317"/><file name="SearchAdapter.php" hash="de47913e1c064b171aea892443885e8f"/><file name="SimilarRecordsAdapter.php" hash="b9c70b5c7d6d803bb1c7f1255be55285"/><file name="SuggestAdapter.php" hash="5cf5b95340983823c9e7a3fd0dc20a0b"/><file name="TagCloudAdapter.php" hash="3bfa1e877269be17ee08c403254925bf"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="2451df5afb1c64460c07b4caa228fabf"/></dir><dir name="SAI"><file name="Curl.php" hash="1fb18096257151b5b47bc2964dd9fe39"/><file name="CurlInterface.php" hash="714fa045dd4546d0c92cd022efb09422"/><file name="CurlStub.php" hash="2521763ee414683aced1afd1ec12511d"/><dir name="Curl"><file name="Handle.php" hash="0fc7132737da7cee7df6b974447864ac"/></dir></dir></dir></target><target name="magecommunity"><dir><dir name="Flagbit"><dir name="FactFinder"><dir name="Block"><file name="Layer.php" hash="78d3ccfc3f47852b853b8eea4148906a"/><file name="Scic.php" hash="9ba6aa43204d0aae206d9f24f09aecfc"/><file name="Secondaryresult.php" hash="cb1ca2347767ebed5671ad6a91dc881e"/><file name="TagCloud.php" hash="6e3769771ef5a1b50fc1d9a963e90aad"/><dir name="Adminhtml"><file name="Cockpit.php" hash="e12c45f55d5fd31d164187bd9d16a0bd"/><file name="Exportlink.php" hash="29044f67c1ebb0e6950da286a24a1db7"/><dir name="Form"><dir name="Field"><file name="Attribute.php" hash="2e60d7473163fa523f10b2d0c441fe24"/><file name="Attributes.php" hash="cbaf317aa5ce4417cfcd02a6c4f36486"/></dir></dir></dir><dir name="Campaign"><file name="Advisory.php" hash="04e35a0e8a75a7ddd4e3af385f933aa5"/><file name="Feedback.php" hash="a1e1f1d393bea196e07f92e171e10513"/><dir name="Cart"><file name="Advisory.php" hash="4faa30edab3a35fffd0e3cf0ebaa81b2"/><file name="Feedback.php" hash="c5a0f657037274881f7d2846e004f164"/></dir><dir name="Product"><file name="Advisory.php" hash="bd1f468d56b6bc1fa3541406796c133a"/><file name="Feedback.php" hash="576bd4801d14f08bc1c62688ffab2e04"/></dir></dir><dir name="Cart"><file name="Crosssell.php" hash="96c00a397ef7e32cb0babfab8b109494"/></dir><dir name="Filter"><file name="Slider.php" hash="159d3e1b403625dbbb970e5e7ada4ec7"/></dir><dir name="Layer"><file name="Abstract.php" hash="f53a3e2d6ce0da4afee58b4ea806a342"/></dir><dir name="Product"><dir name="List"><file name="Crosssell.php" hash="86590a3e65ffe074950f4c630fc10826"/><file name="Upsell.php" hash="dabfd0b10fd73dcdcf8ddc3fd12c8569"/></dir></dir><dir name="XmlConnect"><dir name="Catalog"><file name="Search.php" hash="662f7b0df8d21626bf6193906aed5162"/><dir name="Product"><file name="List.php" hash="79103c53bbaa03f02ed8a78554dcc791"/></dir><dir name="Search"><file name="Suggest.php" hash="a0fed06b80840e63f9983909847d7e58"/></dir></dir></dir></dir><dir name="controllers"><file name="ExportController.php" hash="d130083fd8ef132cc48aa4b3746e3c2c"/><file name="ProxyController.php" hash="9cac55f10a4fd33a8396bc460ee3f272"/><dir name="Adminhtml"><dir name="Factfinder"><file name="CockpitController.php" hash="4c8665feaf14c38e6ba2384db496c95a"/></dir></dir></dir><dir name="documentation"><file name="Installation_FACT-Finder_Magento_de.pdf" hash="b4711171c625caaa8996a6a09e0eaaae"/><file name="Installation_FACT-Finder_Magento_en.pdf" hash="d4bef19418ee33a223fbda2d45cca686"/></dir><dir name="etc"><file name="adminhtml.xml" hash="1165a0fecfaa31f2aa4a882d1d8bc033"/><file name="config.xml" hash="d854839fee413eeee5f549e66f6d54e2"/><file name="system.xml" hash="d3721503a1b346f60633e2f0a8e361a1"/></dir><dir name="Helper"><file name="Backend.php" hash="87b662c7c7242ef349f4606ad2ab5279"/><file name="Data.php" hash="afede9edaf2bcfbc93a4049eee5be89e"/><file name="Debug.php" hash="24b939b03efb2cd5f7815562f896576f"/><file name="Search.php" hash="45d4f115efc2b601ed4385a51c351c5a"/></dir><dir name="Model"><file name="Facade.php" hash="768397419ddb085279c7d9c5bdeb801f"/><file name="Layer.php" hash="9da16c44259b4a31d73f63d87787ff11"/><file name="Observer.php" hash="3cfb83bd65ee37b8a7f6f6f3c36538d6"/><file name="Processor.php" hash="5e76103096faccd5b26b2d036bdc7c5e"/><dir name="Export"><file name="Price.php" hash="5561605bf639385c211f339f0c752a0f"/><file name="Product.php" hash="2cc9fb277e4d598fb40f4a2b6858d9f2"/><file name="Stock.php" hash="28e819f8f317957a70a7d4d318e04791"/></dir><dir name="Handler"><file name="Abstract.php" hash="f5724a1c82becbc4d76a6f46dc591977"/><file name="CheckStatus.php" hash="60336786e622127ae3313b168a534ec5"/><file name="ProductCampaign.php" hash="831d8d3ff2cd29e090cff10c3a9c8844"/><file name="ProductDetailCampaign.php" hash="c714d9b43772f1665d64daea8d16594d"/><file name="Recommendations.php" hash="47b12e1f2f1e1d83ecaba77fdb20b63b"/><file name="Search.php" hash="165a115c5b92c40b03f7bfef04d13ef5"/><file name="SecondarySearch.php" hash="de4ced818f7865a491438a4d103b431a"/><file name="ShoppingCartCampaign.php" hash="202fc9ab4018247dfb8e8bcefd417465"/><file name="Suggest.php" hash="3b286cbda3cad188b10f7fac06e0ca32"/><file name="TagCloud.php" hash="e60bd2a5d314cfe3bad445ba88740878"/></dir><dir name="Layer"><file name="Abstract.php" hash="0a0505e719ca55320da35c7510b82d3a"/><dir name="Filter"><file name="Item.php" hash="28e42624d764342dae6cb09a1b29b7b8"/><dir name="Attribute"><file name="Abstract.php" hash="2ad710352f1803d15ba056cd93d519f1"/><file name="Catalog.php" hash="f6dce5ea64da9dfb3458ae9ff4b58a7b"/><file name="Catalogsearch.php" hash="75536576aaaa0186f166550ee746ae04"/></dir></dir></dir><dir name="Mysql4"><dir name="Campaign"><dir name="Pushedproducts"><file name="Collection.php" hash="c657b421e0137bf842ec78c26718363f"/></dir></dir><dir name="Product"><dir name="Attribute"><file name="Collection.php" hash="a5b47ca867be314d2d0edf1621608d8b"/></dir><dir name="Recommendation"><file name="Collection.php" hash="fdb6f35fa1cca09aa405bc5cd0c68601"/></dir></dir><dir name="Scic"><file name="Queue.php" hash="a1521000a1a10df8e6b580f33d06cf23"/><dir name="Queue"><file name="Collection.php" hash="5f6b0b6a50838929065ebd941cedce42"/></dir></dir><dir name="Search"><file name="Collection.php" hash="2a0c4ff355e035d11209115f054dc3dd"/><file name="Engine.php" hash="88a56eb3b4587d87bb1152476b64036e"/></dir></dir><dir name="Scic"><file name="Queue.php" hash="828d391339a22c15ad74ae1a2e784b41"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Attributes.php" hash="8259883090dc4bca9b858d047983e736"/><file name="Enabled.php" hash="3b4d1f4b37d7ddba9768a7da6e3fc778"/></dir><dir name="Source"><file name="Authtype.php" hash="5bc0b1c745782cc51d44d56299059bcb"/><file name="Ffversion.php" hash="0270fbefb18c180abc98f2e02e37532c"/><file name="Identifier.php" hash="cec45238f0e28a1bf66d10dee513c2ca"/></dir></dir></dir></dir><dir name="sql"><dir name="factfinder_setup"><file name="mysql4-install-3.2.0.php" hash="1342320595048cd96659c454381cfbb4"/><file name="mysql4-upgrade-3.2.0-3.2.1.php" hash="3d5276dfe971a6bd48aa8e2a085de004"/><file name="mysql4-upgrade-3.2.1-3.3.0.php" hash="71954ea0cf400950d23b020ff095a9ee"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="factfinder.css" hash="16766d07b20544e11184ee21f95b2692"/></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><dir name="factfinder"><file name="jXHR.js" hash="0473a3ea88f08797737814c7ffbeba18"/><file name="scic.js" hash="e942f1386b29f6868f3ebe20c52e2782"/><file name="suggest.js" hash="c60da60ac082a4bca9d9c04be47e3138"/></dir></dir></dir></target></contents>
21
  <compatible/>
22
  <dependencies/>
23
  </package>