Flagbit_Factfinder - Version 3.5.4

Version Notes

ADD: necessary information into the build.xml to make the package process work
ADD: it is possible to get the complete search adapter of the secondary search result.
CHG: made it possible to add ignore parameters from the module
CHG: renamed misspelled variable
CHG: as the "Category" name convention is not always complied, accept both notations
CHG: updated ff library to current version
CHG: implemented the legacy tracking for 6.9
FIX: selected filters are now viewed on navigation pages, except of current magento-selected categories closing #62
FIX: Prevent fatal errors in factfinder/search_collection closing #54
FIX: added names to the campaign blocks at the layout xml file
FIX: get caching working; however it won't work with php 5.2 or less!

Download this release

Release Info

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


Code changes from version 3.5.3 to 3.5.4

Files changed (30) hide show
  1. app/code/community/Flagbit/FactFinder/Block/Secondaryresult.php +9 -0
  2. app/code/community/Flagbit/FactFinder/Helper/Data.php +34 -7
  3. app/code/community/Flagbit/FactFinder/Model/Export/Product.php +12 -7
  4. app/code/community/Flagbit/FactFinder/Model/Facade.php +129 -41
  5. app/code/community/Flagbit/FactFinder/Model/Handler/Search.php +26 -24
  6. app/code/community/Flagbit/FactFinder/Model/Handler/SecondarySearch.php +50 -2
  7. app/code/community/Flagbit/FactFinder/Model/Handler/Tracking.php +0 -2
  8. app/code/community/Flagbit/FactFinder/Model/Handler/Tracking/Scic.php +5 -1
  9. app/code/community/Flagbit/FactFinder/Model/Mysql4/Search/Collection.php +2 -3
  10. app/code/community/Flagbit/FactFinder/etc/config.xml +3 -3
  11. app/design/frontend/base/default/layout/factfinder.xml +5 -5
  12. app/design/frontend/base/default/template/factfinder/tracking.phtml +1 -1
  13. lib/FACTFinder/Default/SearchAdapter.php +2 -1
  14. lib/FACTFinder/Default/TrackingAdapter.php +0 -3
  15. lib/FACTFinder/Http/DataProvider.php +4 -4
  16. lib/FACTFinder/Http/LegacyTrackingAdapter.php +15 -0
  17. lib/FACTFinder/Json66/ScicAdapter.php +9 -0
  18. lib/FACTFinder/Json66/SearchAdapter.php +1 -4
  19. lib/FACTFinder/Json67/ScicAdapter.php +8 -0
  20. lib/FACTFinder/Json68/ScicAdapter.php +12 -0
  21. lib/FACTFinder/Json69/ScicAdapter.php +8 -0
  22. lib/FACTFinder/Xml65/ImportAdapter.php +2 -0
  23. lib/FACTFinder/Xml65/ScicAdapter.php +9 -0
  24. lib/FACTFinder/Xml65/SearchAdapter.php +1 -4
  25. lib/FACTFinder/Xml66/ScicAdapter.php +8 -0
  26. lib/FACTFinder/Xml67/ScicAdapter.php +8 -0
  27. lib/FACTFinder/Xml68/ScicAdapter.php +12 -0
  28. lib/FACTFinder/Xml69/ScicAdapter.php +8 -0
  29. lib/FACTFinderCustom/Configuration.php +45 -21
  30. package.xml +16 -14
app/code/community/Flagbit/FactFinder/Block/Secondaryresult.php CHANGED
@@ -19,4 +19,13 @@ class Flagbit_FactFinder_Block_Secondaryresult extends Mage_Core_Block_Template
19
 
20
  return $result;
21
  }
 
 
 
 
 
 
 
 
 
22
  }
19
 
20
  return $result;
21
  }
22
+
23
+ protected function getSecondarySearchAdapter($channel)
24
+ {
25
+ $adapter = null;
26
+ if(Mage::helper('factfinder/search')->getIsEnabled()){
27
+ $adapter = $this->_searchHandler->getSecondarySearchAdapter($channel);
28
+ }
29
+ return $adapter;
30
+ }
31
  }
app/code/community/Flagbit/FactFinder/Helper/Data.php CHANGED
@@ -1,4 +1,4 @@
1
- <?php
2
  /**
3
  * Flagbit_FactFinder
4
  *
@@ -9,9 +9,9 @@
9
 
10
  /**
11
  * Helper class
12
- *
13
  * This helper class provides Translation Methods throw Magento Helper Abstract
14
- *
15
  * @category Mage
16
  * @package Flagbit_FactFinder
17
  * @copyright Copyright (c) 2010 Flagbit GmbH & Co. KG (http://www.flagbit.de/)
@@ -22,7 +22,7 @@ class Flagbit_FactFinder_Helper_Data extends Mage_Core_Helper_Abstract {
22
 
23
  /**
24
  * returns Module Status by Module Code
25
- *
26
  * @param string $code Module Code
27
  * @return boolean
28
  */
@@ -34,13 +34,40 @@ class Flagbit_FactFinder_Helper_Data extends Mage_Core_Helper_Abstract {
34
  }
35
 
36
  /**
37
- * Decide which tracking should be used
38
  *
39
  * @return bool
40
  */
41
  public function useOldTracking()
42
  {
43
- return (Mage::getStoreConfig('factfinder/search/ffversion') < 69);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  }
45
-
46
  }
1
+ <?php
2
  /**
3
  * Flagbit_FactFinder
4
  *
9
 
10
  /**
11
  * Helper class
12
+ *
13
  * This helper class provides Translation Methods throw Magento Helper Abstract
14
+ *
15
  * @category Mage
16
  * @package Flagbit_FactFinder
17
  * @copyright Copyright (c) 2010 Flagbit GmbH & Co. KG (http://www.flagbit.de/)
22
 
23
  /**
24
  * returns Module Status by Module Code
25
+ *
26
  * @param string $code Module Code
27
  * @return boolean
28
  */
34
  }
35
 
36
  /**
37
+ * Decide whether old tracking should be used
38
  *
39
  * @return bool
40
  */
41
  public function useOldTracking()
42
  {
43
+ $ffVersion = Mage::getStoreConfig('factfinder/search/ffversion');
44
+ // to use the new tracking, change the comparison to '$ffVersion < 69'
45
+ return ($ffVersion <= 69);
46
+ }
47
+
48
+ /**
49
+ * Decide whether legacy tracking should be used (old tracking for the versions for 6.8 and 6.9)
50
+ *
51
+ * @return bool
52
+ */
53
+ public function useLegacyTracking()
54
+ {
55
+ $ffVersion = Mage::getStoreConfig('factfinder/search/ffversion');
56
+ return ($ffVersion >= 68 && $ffVersion <= 69);
57
+ }
58
+
59
+ /**
60
+ * returns the correct path where the tracking should be sent
61
+ *
62
+ * @return string
63
+ */
64
+ public function getTrackingUrlPath()
65
+ {
66
+ $urlPath = 'factfinder/proxy/tracking';
67
+ if ($this->useOldTracking() && !$this->useLegacyTracking()) {
68
+ // if old tracking is legacy tracking, don't use the scic url
69
+ $urlPath = 'factfinder/proxy/scic';
70
+ }
71
+ return $urlPathh;
72
  }
 
73
  }
app/code/community/Flagbit/FactFinder/Model/Export/Product.php CHANGED
@@ -213,12 +213,12 @@ class Flagbit_FactFinder_Model_Export_Product extends Mage_CatalogSearch_Model_M
213
  if (!isset($productAttributes[$productData['entity_id']])) {
214
  continue;
215
  }
216
- $protductAttr = $productAttributes[$productData['entity_id']];
217
 
218
- if (!isset($protductAttr[$visibility->getId()]) || !in_array($protductAttr[$visibility->getId()], $visibilityVals)) {
219
  continue;
220
  }
221
- if (!isset($protductAttr[$status->getId()]) || !in_array($protductAttr[$status->getId()], $statusVals)) {
222
  continue;
223
  }
224
 
@@ -227,8 +227,8 @@ class Flagbit_FactFinder_Model_Export_Product extends Mage_CatalogSearch_Model_M
227
  $productData[$idFieldName],
228
  $productData['sku'],
229
  $this->_getCategoryPath($productData['entity_id'], $storeId),
230
- $this->_formatFilterableAttributes($this->_getSearchableAttributes(null, 'filterable'), $protductAttr, $storeId),
231
- $this->_formatSearchableAttributes($this->_getSearchableAttributes(null, 'searchable'), $protductAttr, $storeId)
232
  );
233
 
234
  if ($exportImageAndDeeplink) {
@@ -240,13 +240,18 @@ class Flagbit_FactFinder_Model_Export_Product extends Mage_CatalogSearch_Model_M
240
  $productIndex[] = $product->getProductUrl();
241
  }
242
 
243
- $this->_getAttributesRowArray($productIndex, $protductAttr, $storeId);
244
 
245
  $this->_addCsvRow($productIndex);
246
-
247
  if ($productChilds = $productRelations[$productData['entity_id']]) {
248
  foreach ($productChilds as $productChild) {
249
  if (isset($productAttributes[$productChild['entity_id']])) {
 
 
 
 
 
250
 
251
  $subProductIndex = array(
252
  $productChild['entity_id'],
213
  if (!isset($productAttributes[$productData['entity_id']])) {
214
  continue;
215
  }
216
+ $productAttr = $productAttributes[$productData['entity_id']];
217
 
218
+ if (!isset($productAttr[$visibility->getId()]) || !in_array($productAttr[$visibility->getId()], $visibilityVals)) {
219
  continue;
220
  }
221
+ if (!isset($productAttr[$status->getId()]) || !in_array($productAttr[$status->getId()], $statusVals)) {
222
  continue;
223
  }
224
 
227
  $productData[$idFieldName],
228
  $productData['sku'],
229
  $this->_getCategoryPath($productData['entity_id'], $storeId),
230
+ $this->_formatFilterableAttributes($this->_getSearchableAttributes(null, 'filterable'), $productAttr, $storeId),
231
+ $this->_formatSearchableAttributes($this->_getSearchableAttributes(null, 'searchable'), $productAttr, $storeId)
232
  );
233
 
234
  if ($exportImageAndDeeplink) {
240
  $productIndex[] = $product->getProductUrl();
241
  }
242
 
243
+ $this->_getAttributesRowArray($productIndex, $productAttr, $storeId);
244
 
245
  $this->_addCsvRow($productIndex);
246
+
247
  if ($productChilds = $productRelations[$productData['entity_id']]) {
248
  foreach ($productChilds as $productChild) {
249
  if (isset($productAttributes[$productChild['entity_id']])) {
250
+ /* should be used if sub products should not be exported because of their status
251
+ $subProductAttr = $productAttributes[$productChild[ 'entity_id' ]];
252
+ if (!isset($subProductAttr[$status->getId()]) || !in_array($subProductAttr[$status->getId()], $statusVals)) {
253
+ continue;
254
+ } */
255
 
256
  $subProductIndex = array(
257
  $productChild['entity_id'],
app/code/community/Flagbit/FactFinder/Model/Facade.php CHANGED
@@ -51,13 +51,24 @@ class Flagbit_FactFinder_Model_Facade
51
  */
52
  protected $_urlBuilder = null;
53
 
54
- /**
55
- * logger object to log all module internals
56
- * @var FACTFinder_Abstract_Logger
57
- */
58
- protected $_logger = null;
59
-
60
- public function __construct($arg = null)
 
 
 
 
 
 
 
 
 
 
 
61
  {
62
  if ($arg === null || !($arg instanceof FACTFinder_Abstract_Logger)) {
63
  $arg = Mage::helper('factfinder/debug');
@@ -116,6 +127,11 @@ class Flagbit_FactFinder_Model_Facade
116
  return $this->_getAdapter("tracking", $channel);
117
  }
118
 
 
 
 
 
 
119
  public function configureSearchAdapter($params, $channel = null, $id = null)
120
  {
121
  $this->_configureAdapter($params, "search", $channel, $id);
@@ -169,30 +185,84 @@ class Flagbit_FactFinder_Model_Facade
169
  protected function _configureAdapter($params, $type, $channel = null, $id = null)
170
  {
171
  $adapter = $this->_getAdapter($type, $channel, $id);
 
 
172
 
173
  foreach($params as $key => $value)
174
  $adapter->setParam($key, $value);
175
  }
176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  /**
178
  * @return FACTFinder_Abstract_Adapter
179
  */
180
  protected function _getAdapter($type, $channel = null, $id = null)
181
  {
182
  $format = $this->_getFormat($type);
 
183
 
184
- if(!$id)
185
- $id = '';
186
  if(!$channel)
187
  $channel = $this->_getConfiguration()->getChannel();
188
 
189
- $hashKey = $type.$id;
190
  if(!isset($this->_adapters[$hashKey][$channel]))
191
  {
192
  $config = $this->_getConfiguration();
193
  $encodingHandler = FF::getSingleton('encodingHandler', $config);
194
  $dataProvider = $this->_getParallelDataProvider();
195
  $dataProvider->setParam('channel', $channel);
 
 
 
 
 
 
 
 
 
 
196
  $this->_adapters[$hashKey][$channel] = FF::getInstance(
197
  $format.'/'.$type.'Adapter',
198
  $dataProvider,
@@ -207,7 +277,7 @@ class Flagbit_FactFinder_Model_Facade
207
  protected function _getFormat($type)
208
  {
209
  $format = 'http';
210
- if ($type != 'scic' && $type != 'suggest') {
211
  $version = $this->_getConfiguration()->getFactFinderVersion();
212
  $format = 'xml' . $version;
213
  return $format;
@@ -311,95 +381,101 @@ class Flagbit_FactFinder_Model_Facade
311
 
312
  public function applyTracking($channel = null, $id = null)
313
  {
314
- return $this->_getFactFinderObject("Tracking", "applyTracking", $channel, $id);
315
  }
316
 
317
  public function applyScicTracking($channel = null, $id = null)
318
  {
319
- return $this->_getFactFinderObject("Scic", "applyTracking", $channel, $id);
320
  }
321
 
322
  public function getAfterSearchNavigation($channel = null, $id = null)
323
  {
324
- return $this->_getFactFinderObject("Search", "getAsn", $channel, $id);
325
  }
326
 
327
  public function getCampaigns($channel = null, $id = null)
328
  {
329
- return $this->_getFactFinderObject("Search", "getCampaigns", $channel, $id);
330
  }
331
 
332
  public function getProductCampaigns($channel = null, $id = null)
333
  {
334
- return $this->_getFactFinderObject("ProductCampaign", "getCampaigns", $channel, $id);
335
  }
336
 
337
  public function getRecommendations($channel = null, $id = null)
338
  {
339
- return $this->_getFactFinderObject("Recommendation", "getRecommendations", $channel, $id);
340
  }
341
 
342
  public function getSearchError($channel = null, $id = null)
343
  {
344
- return $this->_getFactFinderObject("Search", "getError", $channel, $id);
345
  }
346
 
347
  public function getSearchParams($channel = null, $id = null)
348
  {
349
- return $this->_getFactFinderObject("Search", "getSearchParams", $channel, $id);
350
  }
351
 
352
  public function getSearchResult($channel = null, $id = null)
353
  {
354
- return $this->_getFactFinderObject("Search", "getResult", $channel, $id);
355
  }
356
 
357
  public function getSearchStackTrace($channel = null, $id = null)
358
  {
359
- return $this->_getFactFinderObject("Search", "getStackTrace", $channel, $id);
360
  }
361
 
362
  public function getSearchStatus($channel = null, $id = null)
363
  {
364
- return $this->_getFactFinderObject("Search", "getStatus", $channel, $id);
365
  }
366
 
367
  public function getSuggestions($channel = null, $id = null)
368
  {
369
- return $this->_getFactFinderObject("Suggest", "getSuggestions", $channel, $id);
370
  }
371
 
372
  public function getTagCloud($channel = null, $id = null)
373
  {
374
- return $this->_getFactFinderObject("TagCloud", "getTagCloud", $channel, $id);
375
  }
376
 
377
- protected function _getFactFinderObject($adapterType, $objectGetter, $channel = null, $id = null)
378
  {
379
- $args = func_get_args();
380
- $cacheKey = 'FACTFINDER_'.implode('_',$args).'_' . md5(serialize($this->_getParamsParser()));
381
 
382
- if(Mage::app()->useCache('factfinder_search') && $cache = Mage::app()->loadCache($cacheKey))
383
  {
384
- return unserialize($cache);
 
 
 
 
 
385
  }
386
 
387
- try {
388
- $this->_loadAllData();
389
- $adapterGetter = "get".$adapterType."Adapter";
390
 
391
- $data = $this->$adapterGetter($channel, $id)->$objectGetter();
 
392
 
393
- if(Mage::app()->useCache('factfinder_search'))
394
- {
395
- Mage::app()->saveCache(serialize($data), $cacheKey, array('FACTFINDER_SEARCH'), 600);
396
- }
397
 
398
- return $data;
399
- } catch (Exception $e) {
400
- Mage::logException($e);
401
- return null;
402
  }
 
403
  }
404
 
405
  public function getActualFactFinderVersion()
@@ -414,6 +490,18 @@ class Flagbit_FactFinder_Model_Facade
414
  }
415
  }
416
 
 
 
 
 
 
 
 
 
 
 
 
 
417
  public function getActualFactFinderVersionString()
418
  {
419
  try {
51
  */
52
  protected $_urlBuilder = null;
53
 
54
+ /**
55
+ * logger object to log all module internals
56
+ * @var FACTFinder_Abstract_Logger
57
+ */
58
+ protected $_logger = null;
59
+
60
+ /**
61
+ * map between known adapters and its state based on its parameters
62
+ * @var array
63
+ */
64
+ protected $_paramHashes = array();
65
+
66
+ /**
67
+ * @var boolean is set to true, if caching is enabled and can be used
68
+ */
69
+ private $_useCaching = null;
70
+
71
+ public function __construct($arg = null)
72
  {
73
  if ($arg === null || !($arg instanceof FACTFinder_Abstract_Logger)) {
74
  $arg = Mage::helper('factfinder/debug');
127
  return $this->_getAdapter("tracking", $channel);
128
  }
129
 
130
+ public function getLegacyTrackingAdapter($channel = null)
131
+ {
132
+ return $this->_getAdapter("legacyTracking", $channel);
133
+ }
134
+
135
  public function configureSearchAdapter($params, $channel = null, $id = null)
136
  {
137
  $this->_configureAdapter($params, "search", $channel, $id);
185
  protected function _configureAdapter($params, $type, $channel = null, $id = null)
186
  {
187
  $adapter = $this->_getAdapter($type, $channel, $id);
188
+ $adapterId = $this->_getAdapterIdentifier($type, $channel, $id);
189
+ $this->_paramHashes[$adapterId] = $this->_createParametersHash($params);
190
 
191
  foreach($params as $key => $value)
192
  $adapter->setParam($key, $value);
193
  }
194
 
195
+ /**
196
+ * returns the hash that identifies a certain combination of parameters.
197
+ * It represents the current parameter state of the adapter specified by $type, $channel and $id
198
+ *
199
+ * @param $type (any adapter type)
200
+ * @param $channel (default: null => default channel)
201
+ * @param $id (default: null => no special id)
202
+ * @return string
203
+ */
204
+ protected function _getParametersHash($type, $channel = null, $id = null)
205
+ {
206
+ $returnValue = '';
207
+ $adapterId = $this->_getAdapterIdentifier($type, $channel, $id);
208
+ if (array_key_exists($adapterId, $this->_paramHashes))
209
+ {
210
+ $returnValue = $this->_paramHashes[$adapterId];
211
+ }
212
+ return $returnValue;
213
+ }
214
+
215
+ private function _createParametersHash($params)
216
+ {
217
+ $returnValue = '';
218
+ if($params) {
219
+ ksort($params);
220
+ $returnValue = md5(http_build_query($params));
221
+ }
222
+ return $returnValue;
223
+ }
224
+
225
+ /**
226
+ * get identifying hash for each adapter based on type, channel and id
227
+ * @param $type
228
+ * @param $channel (default: null)
229
+ * @param $id (default: null)
230
+ * @return string hash
231
+ */
232
+ protected function _getAdapterIdentifier($type, $channel = null, $id = null)
233
+ {
234
+ $args = func_get_args();
235
+ return implode('_', $args);
236
+ }
237
+
238
  /**
239
  * @return FACTFinder_Abstract_Adapter
240
  */
241
  protected function _getAdapter($type, $channel = null, $id = null)
242
  {
243
  $format = $this->_getFormat($type);
244
+ $hashKey = $this->_getAdapterIdentifier($type, $channel, $id);
245
 
246
+ // get the channel after calculating the adapter identifier
 
247
  if(!$channel)
248
  $channel = $this->_getConfiguration()->getChannel();
249
 
 
250
  if(!isset($this->_adapters[$hashKey][$channel]))
251
  {
252
  $config = $this->_getConfiguration();
253
  $encodingHandler = FF::getSingleton('encodingHandler', $config);
254
  $dataProvider = $this->_getParallelDataProvider();
255
  $dataProvider->setParam('channel', $channel);
256
+
257
+ /*
258
+ // new tracking needs session ID and sourceRefKey for every request
259
+ // helper must not be used inside this class, as it is also used without the app context
260
+ // TODO: do it in a different way
261
+ if(!Mage::helper('factfinder')->useOldTracking()) {
262
+ $dataProvider->setParam('sourceRefKey', Mage::getSingleton('core/session')->getFactFinderRefKey());
263
+ $dataProvider->setParam('sid' , md5(Mage::getSingleton('core/session')->getSessionId()));
264
+ }*/
265
+
266
  $this->_adapters[$hashKey][$channel] = FF::getInstance(
267
  $format.'/'.$type.'Adapter',
268
  $dataProvider,
277
  protected function _getFormat($type)
278
  {
279
  $format = 'http';
280
+ if (!in_array($type, array('scic', 'suggest', 'legacyTracking'))) {
281
  $version = $this->_getConfiguration()->getFactFinderVersion();
282
  $format = 'xml' . $version;
283
  return $format;
381
 
382
  public function applyTracking($channel = null, $id = null)
383
  {
384
+ return $this->_getFactFinderObject("tracking", "applyTracking", $channel, $id);
385
  }
386
 
387
  public function applyScicTracking($channel = null, $id = null)
388
  {
389
+ return $this->_getFactFinderObject("scic", "applyTracking", $channel, $id);
390
  }
391
 
392
  public function getAfterSearchNavigation($channel = null, $id = null)
393
  {
394
+ return $this->_getFactFinderObject("search", "getAsn", $channel, $id);
395
  }
396
 
397
  public function getCampaigns($channel = null, $id = null)
398
  {
399
+ return $this->_getFactFinderObject("search", "getCampaigns", $channel, $id);
400
  }
401
 
402
  public function getProductCampaigns($channel = null, $id = null)
403
  {
404
+ return $this->_getFactFinderObject("productCampaign", "getCampaigns", $channel, $id);
405
  }
406
 
407
  public function getRecommendations($channel = null, $id = null)
408
  {
409
+ return $this->_getFactFinderObject("recommendation", "getRecommendations", $channel, $id);
410
  }
411
 
412
  public function getSearchError($channel = null, $id = null)
413
  {
414
+ return $this->_getFactFinderObject("search", "getError", $channel, $id);
415
  }
416
 
417
  public function getSearchParams($channel = null, $id = null)
418
  {
419
+ return $this->_getFactFinderObject("search", "getSearchParams", $channel, $id);
420
  }
421
 
422
  public function getSearchResult($channel = null, $id = null)
423
  {
424
+ return $this->_getFactFinderObject("search", "getResult", $channel, $id);
425
  }
426
 
427
  public function getSearchStackTrace($channel = null, $id = null)
428
  {
429
+ return $this->_getFactFinderObject("search", "getStackTrace", $channel, $id);
430
  }
431
 
432
  public function getSearchStatus($channel = null, $id = null)
433
  {
434
+ return $this->_getFactFinderObject("search", "getStatus", $channel, $id);
435
  }
436
 
437
  public function getSuggestions($channel = null, $id = null)
438
  {
439
+ return $this->_getFactFinderObject("suggest", "getSuggestions", $channel, $id);
440
  }
441
 
442
  public function getTagCloud($channel = null, $id = null)
443
  {
444
+ return $this->_getFactFinderObject("tagCloud", "getTagCloud", $channel, $id);
445
  }
446
 
447
+ protected function _getFactFinderObject($type, $objectGetter, $channel = null, $id = null)
448
  {
449
+ $cacheKey = '';
450
+ $data = null;
451
 
452
+ if ($this->_useSearchCaching())
453
  {
454
+ $adapterId = $this->_getAdapterIdentifier($type, $channel, $id);
455
+ $cacheKey = 'FACTFINDER_'.$adapterId . '_' . $objectGetter .'_'. $this->_getParametersHash($type, $channel, $id);
456
+ if($cache = Mage::app()->loadCache($cacheKey))
457
+ {
458
+ $data = unserialize($cache);
459
+ }
460
  }
461
 
462
+ if ($data == null) {
463
+ try {
464
+ $this->_loadAllData();
465
 
466
+ $adapter = $this->_getAdapter($type, $channel, $id);
467
+ $data = $adapter->$objectGetter();
468
 
469
+ if($this->_useSearchCaching())
470
+ {
471
+ Mage::app()->saveCache(serialize($data), $cacheKey, array('FACTFINDER_SEARCH'), 600);
472
+ }
473
 
474
+ } catch (Exception $e) {
475
+ Mage::logException($e);
476
+ }
 
477
  }
478
+ return $data;
479
  }
480
 
481
  public function getActualFactFinderVersion()
490
  }
491
  }
492
 
493
+ private function _useSearchCaching()
494
+ {
495
+ if ($this->_useCaching == null)
496
+ {
497
+ // caching only works from version 5.3 because of php bug 45706 (http://bugs.php.net/45706):
498
+ // because of it, the asn objects can't be serialized and cached
499
+ // this bug was fixed with 5.3.0 (http://www.php.net/ChangeLog-5.php)
500
+ $this->_useCaching = (version_compare(PHP_VERSION, '5.3.0') >= 0 && Mage::app()->useCache('factfinder_search'));
501
+ }
502
+ return $this->_useCaching;
503
+ }
504
+
505
  public function getActualFactFinderVersionString()
506
  {
507
  try {
app/code/community/Flagbit/FactFinder/Model/Handler/Search.php CHANGED
@@ -70,7 +70,7 @@ class Flagbit_FactFinder_Model_Handler_Search
70
  $value = base64_decode($value);
71
  if(strpos($value, '|')) {
72
  $param = explode('|', $value);
73
- if($key == 'Category') {
74
  $categories = array_merge(array_slice(explode('/', $param[0]), 1), array($param[1]));
75
  foreach($categories AS $k => $v) { $categories[$k] = urldecode($v); }
76
  $filterKey = '';
@@ -88,7 +88,7 @@ class Flagbit_FactFinder_Model_Handler_Search
88
  break;
89
 
90
  case "catalog":
91
- if (!isset($requestParams['Category'])) {
92
  $requestParams['Category'] = $this->_getCurrentFactFinderCategoryPath();
93
  }
94
 
@@ -134,7 +134,7 @@ class Flagbit_FactFinder_Model_Handler_Search
134
  break;
135
 
136
  default:
137
- if($key == 'Category') {
138
  $categories = array_merge(array_slice(explode('/', $param[0]), 1), array($param[1]));
139
  foreach($categories AS $k => $v) { $categories[$k] = $v; }
140
  $filterKey = '';
@@ -160,29 +160,30 @@ class Flagbit_FactFinder_Model_Handler_Search
160
 
161
  protected function _getCurrentFactFinderCategoryPath($all = false)
162
  {
163
- $returnValue = '';
164
- if($this->_currentFactFinderCategoryPath == null && Mage::getStoreConfigFlag('factfinder/activation/navigation') && Mage::registry('current_category')){
165
  $this->_currentFactFinderCategoryPath = array();
166
- /* @var $category Mage_Catalog_Model_Category */
167
- $category = Mage::registry('current_category');
168
-
169
- $pathInStore = $category->getPathInStore();
170
- $pathIds = array_reverse(explode(',', $pathInStore));
171
-
172
- $categories = $category->getParentCategories();
173
- $mainCategoriesString = '';
174
- foreach ($pathIds as $categoryId) {
175
- if (isset($categories[$categoryId]) && $categories[$categoryId]->getName()) {
176
- if(empty($mainCategoriesString)){
177
- $this->_currentFactFinderCategoryPath[] = 'categoryROOT|'.$categories[$categoryId]->getName();
178
- }else{
179
- $this->_currentFactFinderCategoryPath[] = 'categoryROOT'.$mainCategoriesString.'|'.$categories[$categoryId]->getName();
 
 
 
 
180
  }
181
- $mainCategoriesString .= '/'. str_replace('/', '%2F', $categories[$categoryId]->getName());
182
  }
183
  }
184
- } else {
185
- $this->_currentFactFinderCategoryPath = array();
186
  }
187
 
188
  if($all === false){
@@ -283,10 +284,11 @@ class Flagbit_FactFinder_Model_Handler_Search
283
  $_value = $this->_getAttributeOptionValue($option);
284
  if(Mage::getStoreConfigFlag('factfinder/activation/navigation')
285
  && !$helper->getIsOnSearchPage()
 
286
  && (
287
  empty($_value) === true
288
- || in_array($_value, $_currentCategoryPath)
289
- && $_currentCategoryPath[count($_currentCategoryPath)-1] != $_value
290
  )){
291
  continue;
292
  }
70
  $value = base64_decode($value);
71
  if(strpos($value, '|')) {
72
  $param = explode('|', $value);
73
+ if($key == 'Category' || $key == 'category') {
74
  $categories = array_merge(array_slice(explode('/', $param[0]), 1), array($param[1]));
75
  foreach($categories AS $k => $v) { $categories[$k] = urldecode($v); }
76
  $filterKey = '';
88
  break;
89
 
90
  case "catalog":
91
+ if (!isset($requestParams['Category']) && !isset($requestParams['category'])) {
92
  $requestParams['Category'] = $this->_getCurrentFactFinderCategoryPath();
93
  }
94
 
134
  break;
135
 
136
  default:
137
+ if($key == 'Category' || $key == 'category') {
138
  $categories = array_merge(array_slice(explode('/', $param[0]), 1), array($param[1]));
139
  foreach($categories AS $k => $v) { $categories[$k] = $v; }
140
  $filterKey = '';
160
 
161
  protected function _getCurrentFactFinderCategoryPath($all = false)
162
  {
163
+ $returnValue = array();
164
+ if($this->_currentFactFinderCategoryPath == null){
165
  $this->_currentFactFinderCategoryPath = array();
166
+ if (Mage::getStoreConfigFlag('factfinder/activation/navigation') && Mage::registry('current_category')){
167
+ $this->_currentFactFinderCategoryPath = array();
168
+ /* @var $category Mage_Catalog_Model_Category */
169
+ $category = Mage::registry('current_category');
170
+
171
+ $pathInStore = $category->getPathInStore();
172
+ $pathIds = array_reverse(explode(',', $pathInStore));
173
+
174
+ $categories = $category->getParentCategories();
175
+ $mainCategoriesString = '';
176
+ foreach ($pathIds as $categoryId) {
177
+ if (isset($categories[$categoryId]) && $categories[$categoryId]->getName()) {
178
+ if(empty($mainCategoriesString)){
179
+ $this->_currentFactFinderCategoryPath[] = 'categoryROOT|'.$categories[$categoryId]->getName();
180
+ }else{
181
+ $this->_currentFactFinderCategoryPath[] = 'categoryROOT'.$mainCategoriesString.'|'.$categories[$categoryId]->getName();
182
+ }
183
+ $mainCategoriesString .= '/'. str_replace('/', '%2F', $categories[$categoryId]->getName());
184
  }
 
185
  }
186
  }
 
 
187
  }
188
 
189
  if($all === false){
284
  $_value = $this->_getAttributeOptionValue($option);
285
  if(Mage::getStoreConfigFlag('factfinder/activation/navigation')
286
  && !$helper->getIsOnSearchPage()
287
+ && strpos($option->getField(), 'categoryROOT') !== FALSE
288
  && (
289
  empty($_value) === true
290
+ || in_array($_value, $_currentCategoryPath)
291
+ && $_currentCategoryPath[count($_currentCategoryPath)-1] != $_value
292
  )){
293
  continue;
294
  }
app/code/community/Flagbit/FactFinder/Model/Handler/SecondarySearch.php CHANGED
@@ -28,11 +28,16 @@ class Flagbit_FactFinder_Model_Handler_SecondarySearch
28
  }
29
  }
30
 
 
 
 
 
 
 
31
  public function getSecondarySearchResult($channel)
32
  {
33
- if(!in_array($channel, $this->_secondaryChannels))
34
  {
35
- Mage::logException(new Exception("Tried to query a channel that was not configured as a secondary channel."));
36
  return array();
37
  }
38
 
@@ -43,4 +48,47 @@ class Flagbit_FactFinder_Model_Handler_SecondarySearch
43
 
44
  return $this->_secondarySearchResults[$channel];
45
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
28
  }
29
  }
30
 
31
+ /**
32
+ * returns the FACTFinder_Result object of the given channel.
33
+ *
34
+ * @param $channel
35
+ * @return FACTFinder_Result
36
+ */
37
  public function getSecondarySearchResult($channel)
38
  {
39
+ if(!$this->isSecondaryChannel($channel))
40
  {
 
41
  return array();
42
  }
43
 
48
 
49
  return $this->_secondarySearchResults[$channel];
50
  }
51
+
52
+ /**
53
+ * returns the search adapter of the FACT-Finder library the module is based on. This adapter gives access to all
54
+ * search result relevant objects of the channel's result.
55
+ *
56
+ * if there is no adapter for that channel, an error is logged an null is returned.
57
+ *
58
+ * @param $channel
59
+ * @return FACTFinder_Default_SearchAdapter (or one of the version specific implementations)
60
+ */
61
+ public function getSecondarySearchAdapter($channel)
62
+ {
63
+ echo "$channel <br>";
64
+ print_r($this->isSecondaryChannel($channel));
65
+ if(!$this->isSecondaryChannel($channel))
66
+ {
67
+ return null;
68
+ }
69
+
70
+ if(!isset($this->_secondarySearchAdapters[$channel]))
71
+ {
72
+ $this->_secondarySearchAdapters[$channel] = $this->_getFacade()->getSearchAdapter($channel);
73
+ }
74
+
75
+ return $this->_secondarySearchAdapters[$channel];
76
+ }
77
+
78
+ /**
79
+ * returns true if the set channel is a secondary channel. if it is not, it also logs an error
80
+ *
81
+ * @param $channel
82
+ * @return bool
83
+ */
84
+ private function isSecondaryChannel($channel)
85
+ {
86
+ if(!in_array($channel, $this->_secondaryChannels))
87
+ {
88
+ Mage::logException(new Exception("Tried to query a channel that was not configured as a secondary channel."));
89
+ return false;
90
+ } else {
91
+ return true;
92
+ }
93
+ }
94
  }
app/code/community/Flagbit/FactFinder/Model/Handler/Tracking.php CHANGED
@@ -57,8 +57,6 @@ class Flagbit_FactFinder_Model_Handler_Tracking
57
  $result = $this->_getFacade()->applyTracking();
58
  }
59
 
60
- Mage::getSingleton('core/session')->setFactFinderRefKey(null);
61
-
62
  return $result;
63
  }
64
  }
57
  $result = $this->_getFacade()->applyTracking();
58
  }
59
 
 
 
60
  return $result;
61
  }
62
  }
app/code/community/Flagbit/FactFinder/Model/Handler/Tracking/Scic.php CHANGED
@@ -24,7 +24,11 @@ class Flagbit_FactFinder_Model_Handler_Tracking_Scic
24
  public function setupEventTracking($event, $inputParams)
25
  {
26
  /* @var $scicAdapter FACTFinder_Default_ScicAdapter */
27
- $scicAdapter = $this->_getFacade()->getScicAdapter();
 
 
 
 
28
 
29
  switch ($event) {
30
  case FACTFinder_Default_TrackingAdapter::EVENT_INSPECT:
24
  public function setupEventTracking($event, $inputParams)
25
  {
26
  /* @var $scicAdapter FACTFinder_Default_ScicAdapter */
27
+ if (Mage::helper('factfinder')->useLegacyTracking()) {
28
+ $scicAdapter = $this->_getFacade()->getLegacyTrackingAdapter();
29
+ } else {
30
+ $scicAdapter = $this->_getFacade()->getScicAdapter();
31
+ }
32
 
33
  switch ($event) {
34
  case FACTFinder_Default_TrackingAdapter::EVENT_INSPECT:
app/code/community/Flagbit/FactFinder/Model/Mysql4/Search/Collection.php CHANGED
@@ -52,9 +52,8 @@ class Flagbit_FactFinder_Model_Mysql4_Search_Collection
52
  // get product IDs from Fact-Finder
53
  $productIds = $this->_getSearchHandler()->getSearchResult();
54
 
55
- Mage::getSingleton('core/session')->setFactFinderRefKey(null);
56
- if($refKey = Mage::getSingleton('factfinder/facade')->getSearchResult()->getRefKey())
57
- {
58
  Mage::getSingleton('core/session')->setFactFinderRefKey($refKey);
59
  }
60
 
52
  // get product IDs from Fact-Finder
53
  $productIds = $this->_getSearchHandler()->getSearchResult();
54
 
55
+ $searchResult = Mage::getSingleton('factfinder/facade')->getSearchResult();
56
+ if($searchResult && $refKey = $searchResult->getRefKey()) {
 
57
  Mage::getSingleton('core/session')->setFactFinderRefKey($refKey);
58
  }
59
 
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.5.3</version>
26
  </Flagbit_FactFinder>
27
  </modules>
28
  <global>
@@ -115,7 +115,7 @@
115
  <types>
116
  <factfinder_search translate="label,description" module="factfinder">
117
  <label>FACT-Finder</label>
118
- <description>Search Request Cache</description>
119
  <tags>FACTFINDER_SEARCH</tags>
120
  </factfinder_search>
121
  </types>
@@ -259,7 +259,7 @@
259
  </search>
260
  </catalog>
261
  <factfinder>
262
- <version>3.5.3</version>
263
  <revision>$Rev: 25896 $</revision>
264
  <debug>false</debug>
265
 
22
  <modules>
23
  <Flagbit_FactFinder>
24
  <active>true</active>
25
+ <version>3.5.4</version>
26
  </Flagbit_FactFinder>
27
  </modules>
28
  <global>
115
  <types>
116
  <factfinder_search translate="label,description" module="factfinder">
117
  <label>FACT-Finder</label>
118
+ <description>Search Request Cache (won't work with PHP 5.2 or less)</description>
119
  <tags>FACTFINDER_SEARCH</tags>
120
  </factfinder_search>
121
  </types>
259
  </search>
260
  </catalog>
261
  <factfinder>
262
+ <version>3.5.4</version>
263
  <revision>$Rev: 25896 $</revision>
264
  <debug>false</debug>
265
 
app/design/frontend/base/default/layout/factfinder.xml CHANGED
@@ -44,7 +44,7 @@
44
  <block type="factfinder/campaign_feedback" before="search.result" name="factfinder.campaign.feedback" template="factfinder/campaign/feedback.phtml">
45
  <action method="setTextNumber"><number>1</number></action>
46
  </block>
47
- <block type="factfinder/campaign_advisory" after="factfinder.campaign.feedback" template="factfinder/campaign/advisory.phtml" />
48
  <block type="core/template" name="factfinder.logo" template="factfinder/logo.phtml"/>
49
  <block type="factfinder/secondaryresult" after="search.result" name="factfinder.secondaryresult" template="factfinder/secondaryresult.phtml" />
50
  </reference>
@@ -52,8 +52,8 @@
52
 
53
  <catalog_product_view>
54
  <reference name="content">
55
- <block type="factfinder/campaign_product_advisory" before="product.info" template="factfinder/campaign/product/advisory.phtml" />
56
- <block type="factfinder/campaign_product_feedback" before="product.info" template="factfinder/campaign/product/feedback.phtml" />
57
  </reference>
58
  <reference name="product.info.upsell">
59
  <action method="setItemLimit"><type>upsell</type><limit>20</limit></action>
@@ -62,8 +62,8 @@
62
 
63
  <checkout_cart_index>
64
  <reference name="checkout.cart.form.before">
65
- <block type="factfinder/campaign_cart_advisory" before="-" template="factfinder/campaign/cart/advisory.phtml" />
66
- <block type="factfinder/campaign_cart_feedback" before="-" template="factfinder/campaign/cart/feedback.phtml" />
67
  </reference>
68
  </checkout_cart_index>
69
 
44
  <block type="factfinder/campaign_feedback" before="search.result" name="factfinder.campaign.feedback" template="factfinder/campaign/feedback.phtml">
45
  <action method="setTextNumber"><number>1</number></action>
46
  </block>
47
+ <block type="factfinder/campaign_advisory" after="factfinder.campaign.feedback" name="factfinder.campaign.advisory" template="factfinder/campaign/advisory.phtml" />
48
  <block type="core/template" name="factfinder.logo" template="factfinder/logo.phtml"/>
49
  <block type="factfinder/secondaryresult" after="search.result" name="factfinder.secondaryresult" template="factfinder/secondaryresult.phtml" />
50
  </reference>
52
 
53
  <catalog_product_view>
54
  <reference name="content">
55
+ <block type="factfinder/campaign_product_advisory" before="product.info" name="factfinder.campaign.advisory" template="factfinder/campaign/product/advisory.phtml" />
56
+ <block type="factfinder/campaign_product_feedback" before="product.info" name="factfinder.campaign.feedback" template="factfinder/campaign/product/feedback.phtml" />
57
  </reference>
58
  <reference name="product.info.upsell">
59
  <action method="setItemLimit"><type>upsell</type><limit>20</limit></action>
62
 
63
  <checkout_cart_index>
64
  <reference name="checkout.cart.form.before">
65
+ <block type="factfinder/campaign_cart_advisory" before="-" name="factfinder.campaign.advisory" template="factfinder/campaign/cart/advisory.phtml" />
66
+ <block type="factfinder/campaign_cart_feedback" before="-" name="factfinder.campaign.feedback" template="factfinder/campaign/cart/feedback.phtml" />
67
  </reference>
68
  </checkout_cart_index>
69
 
app/design/frontend/base/default/template/factfinder/tracking.phtml CHANGED
@@ -23,7 +23,7 @@ var factfinderTracking = new FactfinderTracking(
23
  '.col-main',
24
  $H(<?php echo $this->getJsonDataObject();?>),
25
  $H(<?php echo $this->getJsonUrlToIdMappingObject();?>),
26
- '<?php echo (Mage::helper('factfinder')->useOldTracking() ? $this->getUrl('factfinder/proxy/scic') : $this->getUrl('factfinder/proxy/tracking')) ?>',
27
  false
28
  );
29
 
23
  '.col-main',
24
  $H(<?php echo $this->getJsonDataObject();?>),
25
  $H(<?php echo $this->getJsonUrlToIdMappingObject();?>),
26
+ '<?php echo $this->getUrl(Mage::helper('factfinder')->getTrackingUrlPath()) ?>',
27
  false
28
  );
29
 
lib/FACTFinder/Default/SearchAdapter.php CHANGED
@@ -39,7 +39,8 @@ class FACTFinder_Default_SearchAdapter extends FACTFinder_Abstract_Adapter
39
  $params = $this->getDataProvider()->getParams();
40
  if ((!isset($params['query']) || strlen($params['query']) == 0)
41
  && (!isset($params['seoPath']) || strlen($params['seoPath']) == 0)
42
- && (!isset($params['catalog']) || $params['catalog'] != 'true')) {
 
43
  $this->log->error("No query was set.");
44
  throw new Exception(self::NO_QUERY);
45
  }
39
  $params = $this->getDataProvider()->getParams();
40
  if ((!isset($params['query']) || strlen($params['query']) == 0)
41
  && (!isset($params['seoPath']) || strlen($params['seoPath']) == 0)
42
+ && (!isset($params['catalog']) || $params['catalog'] != 'true')
43
+ && (!isset($params['navigation']) || $params['navigation'] != 'true')) {
44
  $this->log->error("No query was set.");
45
  throw new Exception(self::NO_QUERY);
46
  }
lib/FACTFinder/Default/TrackingAdapter.php CHANGED
@@ -34,9 +34,6 @@ class FACTFinder_Default_TrackingAdapter extends FACTFinder_Abstract_Adapter
34
 
35
  public function prepareDefaultParams($inputParams, $event) {
36
  $eventsNoSourceRefKeyRequired = array(
37
- self::EVENT_INSPECT,
38
- self::EVENT_CART,
39
- self::EVENT_BUY,
40
  self::EVENT_SESSION_START
41
  );
42
 
34
 
35
  public function prepareDefaultParams($inputParams, $event) {
36
  $eventsNoSourceRefKeyRequired = array(
 
 
 
37
  self::EVENT_SESSION_START
38
  );
39
 
lib/FACTFinder/Http/DataProvider.php CHANGED
@@ -98,7 +98,7 @@ class FACTFinder_Http_DataProvider extends FACTFinder_Abstract_DataProvider
98
  {
99
  $this->urlBuilder->setArrayParam($name, $values);
100
  }
101
-
102
  /**
103
  * this implementation of the data provider uses the type as request path in addition to the request context path.
104
  * please ensure that this is the full action name, i.e. "Search.ff"
@@ -174,7 +174,7 @@ class FACTFinder_Http_DataProvider extends FACTFinder_Abstract_DataProvider
174
  }
175
  return $this->data;
176
  }
177
-
178
  /**
179
  * sets the URL that was used for the most recent request
180
  **/
@@ -182,7 +182,7 @@ class FACTFinder_Http_DataProvider extends FACTFinder_Abstract_DataProvider
182
  {
183
  $this->previousUrl = $url;
184
  }
185
-
186
  /**
187
  * checks whether the URL (and thus the parameters) have changed since last loading the data
188
  **/
@@ -320,4 +320,4 @@ class FACTFinder_Http_DataProvider extends FACTFinder_Abstract_DataProvider
320
  *
321
  * @package FACTFinder\Http
322
  */
323
- class NoRequestTypeException extends Exception {}
98
  {
99
  $this->urlBuilder->setArrayParam($name, $values);
100
  }
101
+
102
  /**
103
  * this implementation of the data provider uses the type as request path in addition to the request context path.
104
  * please ensure that this is the full action name, i.e. "Search.ff"
174
  }
175
  return $this->data;
176
  }
177
+
178
  /**
179
  * sets the URL that was used for the most recent request
180
  **/
182
  {
183
  $this->previousUrl = $url;
184
  }
185
+
186
  /**
187
  * checks whether the URL (and thus the parameters) have changed since last loading the data
188
  **/
320
  *
321
  * @package FACTFinder\Http
322
  */
323
+ class NoRequestTypeException extends Exception {}
lib/FACTFinder/Http/LegacyTrackingAdapter.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tracking adapter using the old tracking API with FACT-Finder 6.8 or 6.9
4
+ */
5
+ class FACTFinder_Http_LegacyTrackingAdapter extends FACTFinder_Http_ScicAdapter
6
+ {
7
+ /**
8
+ * Set up the old tracking adapter with the new Action path it has
9
+ */
10
+ protected function init()
11
+ {
12
+ parent::init();
13
+ $this->getDataProvider()->setType('Tracking.ff');
14
+ }
15
+ }
lib/FACTFinder/Json66/ScicAdapter.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the json interface
4
+ */
5
+ class FACTFinder_Json66_ScicAdapter extends FACTFinder_Http_ScicAdapter
6
+ {
7
+ /* SCIC is really not interface-specific. We just need an inheritance
8
+ * chain because the action changes in FF 6.8. */
9
+ }
lib/FACTFinder/Json66/SearchAdapter.php CHANGED
@@ -257,10 +257,7 @@ class FACTFinder_Json66_SearchAdapter extends FACTFinder_Default_SearchAdapter
257
  $filterLink = $this->createLink($elementData);
258
 
259
  if ($group->isSliderStyle()) {
260
- // get last (empty) parameter from the search params property
261
- $params = $this->getParamsParser()->parseParamsFromResultString(trim($elementData['searchParams']));
262
- end($params);
263
- $filterLink .= '&' . key($params) . '=';
264
 
265
  $filter = FF::getInstance('asnSliderFilter',
266
  $filterLink,
257
  $filterLink = $this->createLink($elementData);
258
 
259
  if ($group->isSliderStyle()) {
260
+ $filterLink .= '&filter' . $elementData['associatedFieldName'] . '=';
 
 
 
261
 
262
  $filter = FF::getInstance('asnSliderFilter',
263
  $filterLink,
lib/FACTFinder/Json67/ScicAdapter.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the json interface
4
+ */
5
+ class FACTFinder_Json67_ScicAdapter extends FACTFinder_Json66_ScicAdapter
6
+ {
7
+ /* no changes in FF 6.7 */
8
+ }
lib/FACTFinder/Json68/ScicAdapter.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the json interface
4
+ */
5
+ class FACTFinder_Json68_ScicAdapter extends FACTFinder_Json67_ScicAdapter
6
+ {
7
+ protected function init()
8
+ {
9
+ parent::init();
10
+ $this->getDataProvider()->setType('Tracking.ff');
11
+ }
12
+ }
lib/FACTFinder/Json69/ScicAdapter.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the json interface
4
+ */
5
+ class FACTFinder_Json69_ScicAdapter extends FACTFinder_Json68_ScicAdapter
6
+ {
7
+ /* no changes in FF 6.9 */
8
+ }
lib/FACTFinder/Xml65/ImportAdapter.php CHANGED
@@ -33,6 +33,8 @@ class FACTFinder_Xml65_ImportAdapter extends FACTFinder_Default_ImportAdapter
33
  */
34
  protected function getData()
35
  {
 
 
36
  libxml_use_internal_errors(true);
37
  return new SimpleXMLElement(parent::getData()); //throws exception on error
38
  }
33
  */
34
  protected function getData()
35
  {
36
+ FACTFinder_Http_ParallelDataProvider::loadAllData();
37
+
38
  libxml_use_internal_errors(true);
39
  return new SimpleXMLElement(parent::getData()); //throws exception on error
40
  }
lib/FACTFinder/Xml65/ScicAdapter.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the xml interface
4
+ */
5
+ class FACTFinder_Xml65_ScicAdapter extends FACTFinder_Http_ScicAdapter
6
+ {
7
+ /* SCIC is really not interface-specific. We just need an inheritance
8
+ * chain because the action changes in FF 6.8. */
9
+ }
lib/FACTFinder/Xml65/SearchAdapter.php CHANGED
@@ -267,10 +267,7 @@ class FACTFinder_Xml65_SearchAdapter extends FACTFinder_Default_SearchAdapter
267
  $filterLink = $this->createLink($xmlFilter);
268
 
269
  if ($group->isSliderStyle()) {
270
- // get last (empty) parameter from the search params property
271
- $params = $this->getParamsParser()->parseParamsFromResultString(trim($xmlFilter->searchParams));
272
- end($params);
273
- $filterLink .= '&' . key($params) . '=';
274
 
275
  $filter = FF::getInstance('asnSliderFilter',
276
  $filterLink,
267
  $filterLink = $this->createLink($xmlFilter);
268
 
269
  if ($group->isSliderStyle()) {
270
+ $filterLink .= '&filter' . strval($xmlFilter->attributes()->field) . '=';
 
 
 
271
 
272
  $filter = FF::getInstance('asnSliderFilter',
273
  $filterLink,
lib/FACTFinder/Xml66/ScicAdapter.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the xml interface
4
+ */
5
+ class FACTFinder_Xml66_ScicAdapter extends FACTFinder_Xml65_ScicAdapter
6
+ {
7
+ /* no changes in FF 6.6 */
8
+ }
lib/FACTFinder/Xml67/ScicAdapter.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the xml interface
4
+ */
5
+ class FACTFinder_Xml67_ScicAdapter extends FACTFinder_Xml66_ScicAdapter
6
+ {
7
+ /* no changes in FF 6.7 */
8
+ }
lib/FACTFinder/Xml68/ScicAdapter.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the xml interface
4
+ */
5
+ class FACTFinder_Xml68_ScicAdapter extends FACTFinder_Xml67_ScicAdapter
6
+ {
7
+ protected function init()
8
+ {
9
+ parent::init();
10
+ $this->getDataProvider()->setType('Tracking.ff');
11
+ }
12
+ }
lib/FACTFinder/Xml69/ScicAdapter.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SCIC adapter using the xml interface
4
+ */
5
+ class FACTFinder_Xml69_ScicAdapter extends FACTFinder_Xml68_ScicAdapter
6
+ {
7
+ /* no changes in FF 6.9 */
8
+ }
lib/FACTFinderCustom/Configuration.php CHANGED
@@ -19,7 +19,28 @@ class FACTFinderCustom_Configuration implements FACTFinder_Abstract_Configuratio
19
  private $secondaryChannels;
20
  private $storeId = null;
21
  private $semaphoreTimeout = self::DEFAULT_SEMAPHORE_TIMEOUT;
22
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  // Should the search adapters retrieve only product ids? (otherwise, full records will be requested)
24
  private $idsOnly = true;
25
 
@@ -206,7 +227,7 @@ class FACTFinderCustom_Configuration implements FACTFinder_Abstract_Configuratio
206
  /**
207
  * @return string
208
  */
209
- public function getAdvancedAuthPostfix(){
210
  return $this->getCustomValue('auth_advancedPostfix');
211
  }
212
 
@@ -230,19 +251,31 @@ class FACTFinderCustom_Configuration implements FACTFinder_Abstract_Configuratio
230
  return array();
231
  }
232
 
 
 
 
 
 
 
 
 
 
233
  /**
234
  * {@inheritdoc}
235
  *
236
  * @return array with string as key and boolean true as value for each of them
237
  */
238
  public function getIgnoredPageParams() {
239
- return array(
240
- 'channel' => true,
241
- 'format' => true,
242
- 'log' => true,
243
- 'productsPerPage' => true,
244
- 'query' => true
245
- );
 
 
 
246
  }
247
 
248
  /**
@@ -251,16 +284,7 @@ class FACTFinderCustom_Configuration implements FACTFinder_Abstract_Configuratio
251
  * @return array with string as key and boolean true as value for each of them
252
  */
253
  public function getIgnoredServerParams() {
254
- return array(
255
- 'q' => true,
256
- 'p' => true,
257
- 'limit' => true,
258
- 'is_ajax' => true,
259
- 'type_search' => true,
260
- 'order' => true,
261
- 'dir' => true,
262
- 'mode' => true
263
- );
264
  }
265
 
266
  /**
@@ -268,7 +292,7 @@ class FACTFinderCustom_Configuration implements FACTFinder_Abstract_Configuratio
268
  *
269
  * @return array string to string map (param-name as array-key; default value as array-value)
270
  */
271
- public function getRequiredPageParams(){
272
  return array();
273
  }
274
 
@@ -277,7 +301,7 @@ class FACTFinderCustom_Configuration implements FACTFinder_Abstract_Configuratio
277
  *
278
  * @return array string to string map (param-name as array-key; default value as array-value)
279
  */
280
- function getRequiredServerParams(){
281
  return array();
282
  }
283
 
19
  private $secondaryChannels;
20
  private $storeId = null;
21
  private $semaphoreTimeout = self::DEFAULT_SEMAPHORE_TIMEOUT;
22
+
23
+ private $ignoredPageParams = array(
24
+ 'channel' => true,
25
+ 'format' => true,
26
+ 'log' => true,
27
+ 'productsPerPage' => true,
28
+ 'query' => true,
29
+ 'catalog' => true,
30
+ 'navigation' => true
31
+ );
32
+
33
+ private $ignoredServerParams = array(
34
+ 'q' => true,
35
+ 'p' => true,
36
+ 'limit' => true,
37
+ 'is_ajax' => true,
38
+ 'type_search' => true,
39
+ 'order' => true,
40
+ 'dir' => true,
41
+ 'mode' => true
42
+ );
43
+
44
  // Should the search adapters retrieve only product ids? (otherwise, full records will be requested)
45
  private $idsOnly = true;
46
 
227
  /**
228
  * @return string
229
  */
230
+ public function getAdvancedAuthPostfix() {
231
  return $this->getCustomValue('auth_advancedPostfix');
232
  }
233
 
251
  return array();
252
  }
253
 
254
+ /**
255
+ * add parameter that should be ignored for page urls
256
+ *
257
+ * @param $parameterName
258
+ */
259
+ public function addIgnoredPageParam($parameterName) {
260
+ $this->ignoredPageParams[$parameterName] = true;
261
+ }
262
+
263
  /**
264
  * {@inheritdoc}
265
  *
266
  * @return array with string as key and boolean true as value for each of them
267
  */
268
  public function getIgnoredPageParams() {
269
+ return $this->ignoredPageParams;
270
+ }
271
+
272
+ /**
273
+ * add parameter that should be ignored for the server request
274
+ *
275
+ * @param $parameterName
276
+ */
277
+ public function addIgnoredServerParam($parameterName) {
278
+ $this->ignoredServerParams[$parameterName] = true;
279
  }
280
 
281
  /**
284
  * @return array with string as key and boolean true as value for each of them
285
  */
286
  public function getIgnoredServerParams() {
287
+ return $this->ignoredServerParams;
 
 
 
 
 
 
 
 
 
288
  }
289
 
290
  /**
292
  *
293
  * @return array string to string map (param-name as array-key; default value as array-value)
294
  */
295
+ public function getRequiredPageParams() {
296
  return array();
297
  }
298
 
301
  *
302
  * @return array string to string map (param-name as array-key; default value as array-value)
303
  */
304
+ function getRequiredServerParams() {
305
  return array();
306
  }
307
 
package.xml CHANGED
@@ -1,26 +1,28 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Flagbit_Factfinder</name>
4
- <version>3.5.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 $graceful parameter to true. This avoid exceptions on Mage::register if the key already exists. This happens if the layered navigation will be included more than once. i. e. left and content
12
- [+BUGFIX] issue #34 selected filters are displayed twice
13
- [+BUGFIX] trim category values before encoding them
14
- [+BUGFIX] don't send clicktracking if disabled
15
- [~BUGFIX] don't allow default attributes inside the attribute-setup
16
- [+TASK] updated FF PHP framework
17
- [~TASK] improved export memory usage, by unsetting some bigger variables
18
- [~TASK] remove typical magento parameters from the request to ff
19
- [~TASK] extracted method sendClickTrackingForSingleProduct</notes>
 
 
20
  <authors><author><name>Flagbit GmbH Co. KG</name><user>auto-converted</user><email>magento@flagbit.de</email></author></authors>
21
- <date>2013-09-24</date>
22
- <time>13:16:44</time>
23
- <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="0ef84cf79848e6e3a8d254a3a33f440d"/></dir><dir name="template"><dir name="factfinder"><file name="form.advancedsuggest.phtml" hash="d51345fde3b0cbede02f4d2ac7d43af0"/><file name="form.advancedsuggest68.phtml" hash="40f1abe8fad017cc52442bd6a4a8ef35"/><file name="form.mini.phtml" hash="eb49c2fb57594e2ebeed1ffb01c2606d"/><file name="logo.phtml" hash="7a40d67bf648e65345f69b2cf9d3c6b6"/><file name="secondaryresult.phtml" hash="a4cdff409ccedb16d4fe9a038a4dd9e8"/><file name="tracking.phtml" hash="e42ced8505b97260b83b4b55b6139b1d"/><dir name="campaign"><file name="advisory.phtml" hash="d0ef29b97aa4c3bdfa2b94596beb5b21"/><file name="feedback.phtml" hash="a00ad977b82b199630371aef060f25ab"/><dir name="cart"><file name="advisory.phtml" hash="bb994272a6daaaba298a38023f6db212"/><file name="feedback.phtml" hash="01fa6a9cd024a2a8edaea7013b00fc89"/></dir><dir name="product"><file name="advisory.phtml" hash="00c978cf9c129c777fecf4cbbbb9d218"/><file name="feedback.phtml" hash="1bb121e2708490793190ce9f2d6ee666"/></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="eacf94cdf077a77bece17ef67d09b829"/></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="e2aaefed8203667491262c6bf6f41f03"/><file name="AsnSliderFilter.php" hash="14fcd343b14d85b53d2908e04132bca4"/><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="Curl.php" hash="967c0b604dfdc045c9de70e9e9a44bea"/><file name="CurlHandle.php" hash="2c9dfeccd8256c16def2685e7498ae1c"/><file name="CurlInterface.php" hash="a57574dcd102ff54575cbc9131687854"/><file name="CurlStub.php" hash="01b5a07b0599ccd4b7e1b102cbdc3993"/><file name="EncodingHandler.php" hash="4f0b616bca9158bfb7eddcfcba192dc6"/><file name="Item.php" hash="b8bae7f7d296a5acca29dc3ce0c46642"/><file name="Loader.php" hash="c26cc57da777bfe7096fadbfeb6e1645"/><file name="Log4PhpLogger.php" hash="ecfb1f084b8d0bd2d51bf417fa0b0b3c"/><file name="NullLogger.php" hash="be8782000070665f0e9fcc011ae4fe77"/><file name="Paging.php" hash="4ca274beffac0c0a8cb5136b08fa8b24"/><file name="Parameters.php" hash="612c4a9b98cb8a17d0f2d30cf2641936"/><file name="ParametersParser.php" hash="9b55a42ea9195c2b40f9640ac3ba3b1a"/><file name="ProductsPerPageOptions.php" hash="1e69121e89109f31b0929706ea3dcabc"/><file name="Record.php" hash="46319caed19fbdeb5fc065ddd395b18f"/><file name="Result.php" hash="8f97f1509ee78d773aa2c5ace2830225"/><file name="SingleWordSearchItem.php" hash="8f0feac780e68a8b0eab6d44dd6c6813"/><file name="SuggestQuery.php" hash="847d637921e9bc46b9c1d3d8b03737af"/><file name="TagQuery.php" hash="ece1fda66af2c6053507941f35423c5f"/><file name="Util.php" hash="0a26a0d655c3f257b74302683a4859ba"/><dir name="Abstract"><file name="Adapter.php" hash="1c3acf21c0e5bb954973e22e52910906"/><file name="Configuration.php" hash="233565de45f56ba7bdcd604817dd7fc6"/><file name="DataProvider.php" hash="8b1dfc68d335aa006f7af9f2a60e519d"/><file name="Logger.php" hash="c5b1ace6158035e80b3d4a79a942a381"/></dir><dir name="Default"><file name="CompareAdapter.php" hash="8a8b027675e195b7be2bf5bf64666926"/><file name="ImportAdapter.php" hash="50c1a885dabcad55d4f7b6de00800701"/><file name="ProductCampaignAdapter.php" hash="049bfd0c3831114a2cd632af96aa0aaf"/><file name="RecommendationAdapter.php" hash="1858f0553c6deb21fb561cb454974a4e"/><file name="ScicAdapter.php" hash="8fd1c9e60cdb039ce4369af63d72a459"/><file name="SearchAdapter.php" hash="ea278ff85e02d484039f3ecea58a7d65"/><file name="SimilarRecordsAdapter.php" hash="b498d3df0fc663c40fc362fd20134b43"/><file name="SuggestAdapter.php" hash="f74d7d5578131355f8e44e8b6e0734c7"/><file name="TagCloudAdapter.php" hash="c2ecc0d869d232ce4b8f09eb497e2b64"/><file name="TrackingAdapter.php" hash="7816352fa227529a00e223ade35be597"/></dir><dir name="Http"><file name="DataProvider.php" hash="d994803f248f2a7419531f13ef03fcd2"/><file name="DummyProvider.php" hash="fcf82a2349f5b403912b1cb62907439c"/><file name="ParallelDataProvider.php" hash="71f895680f881d06793507f7ac8e7ef3"/><file name="ScicAdapter.php" hash="c283d851d23e531a1c26fee3d8c49ea8"/><file name="StatusHelper.php" hash="e4760fadae33a5574f9445bbc73c1283"/><file name="SuggestAdapter.php" hash="875adeae854b52bb6a20322c2934423c"/><file name="TrackingAdapter.php" hash="9ce06d21ea64a7dd329ce12e28576488"/><file name="UrlBuilder.php" hash="99efad6cb8243ee93a5d4b61c93d8303"/></dir><dir name="Json66"><file name="CompareAdapter.php" hash="3034c100a97d222704b1462db0b97811"/><file name="ImportAdapter.php" hash="63b19c72cfcf52d9832a81080678232c"/><file name="RecommendationAdapter.php" hash="9f4fed83d6d6c10b471ef8f4810eefa5"/><file name="SearchAdapter.php" hash="28111822684b93e72d40436acd3f21e0"/><file name="SimilarRecordsAdapter.php" hash="6f3565723be247381f561b60ed49d8da"/><file name="SuggestAdapter.php" hash="e06a19df2260abcd6ce46a8744ca58b0"/><file name="TagCloudAdapter.php" hash="0ef622889613de3660591ef41c08c65d"/></dir><dir name="Json67"><file name="CompareAdapter.php" hash="2324e34be1d48e42a1dafff4a6368863"/><file name="ImportAdapter.php" hash="295fa619d1a020f87e3d6772e428f4b3"/><file name="ProductCampaignAdapter.php" hash="c43222b1d277e2965e1209ff6375500c"/><file name="RecommendationAdapter.php" hash="db72e4179a831b331f53505a2ba9d01f"/><file name="SearchAdapter.php" hash="c69ac5f6fcfe47351ed3b601d03e18ad"/><file name="SimilarRecordsAdapter.php" hash="55f5553511f5fb965fa9b6abf5e9ba01"/><file name="SuggestAdapter.php" hash="ae47090fab5d202a22c8dbf9e604e2d1"/><file name="TagCloudAdapter.php" hash="1d7fdbd4ea8488d1bdfd0a4143a1a130"/></dir><dir name="Json68"><file name="CompareAdapter.php" hash="f3c610d6347a6671f5ee1bf716801ae2"/><file name="ImportAdapter.php" hash="c7ec5f12e1f7f17084de9d71c4d4051d"/><file name="ProductCampaignAdapter.php" hash="1ffc9f568d7ee73722765f16fdf45b07"/><file name="RecommendationAdapter.php" hash="b5082f0db80730bb866ac332d143f4a8"/><file name="SearchAdapter.php" hash="5814eb254324b96b10a35411bea6bc6c"/><file name="SimilarRecordsAdapter.php" hash="51412237e3233ccc3bfc124e3e9abee6"/><file name="SuggestAdapter.php" hash="9bfbd6a282aba70e3b1f2e1f632c113f"/><file name="TagCloudAdapter.php" hash="b632b03f8e044ebdd3a4f318c8e50c3a"/></dir><dir name="Json69"><file name="CompareAdapter.php" hash="e0ab8d442b26ca492d3986a32ea7a7a4"/><file name="ImportAdapter.php" hash="e969905c5ef9a2577eb80df12f5350c5"/><file name="ProductCampaignAdapter.php" hash="1ab5cb62aafe5f67c1f77461b89fe24d"/><file name="RecommendationAdapter.php" hash="0036cea44c296a3f9c8ac5c7458afb83"/><file name="SearchAdapter.php" hash="bc5b9f9404017d003fb27d21b2837609"/><file name="SimilarRecordsAdapter.php" hash="aee8d4212c9e3f1b62035be5307c73f1"/><file name="SuggestAdapter.php" hash="fce98d2451db47e4608e6f252f3759ff"/><file name="TagCloudAdapter.php" hash="e1b77df045382804e6ddfe2a05180469"/></dir><dir name="Xml64"><file name="SearchAdapter.php" hash="58a49882c741216cf278c4556ea7d224"/></dir><dir name="Xml65"><file name="ImportAdapter.php" hash="489d0aadda12a41111635a2b738936c1"/><file name="RecommendationAdapter.php" hash="dda97f6db1ae97c5a217632067d7c101"/><file name="SearchAdapter.php" hash="240370edf600728b472ae96078f3ed35"/><file name="SuggestAdapter.php" hash="e5381502b74dd62be1a7aa833cbb03e2"/><file name="TagCloudAdapter.php" hash="3bca14558fbd758207e97566dafb1ca2"/></dir><dir name="Xml66"><file name="CompareAdapter.php" hash="a1e323dec8fbee2930d531765adef0cc"/><file name="ImportAdapter.php" hash="5ea0d06cc2ddc7a1b7c880203c38fe40"/><file name="RecommendationAdapter.php" hash="9490ea2b17fded94d087046065596b1b"/><file name="SearchAdapter.php" hash="aba7b0e052a28c93bad70786706e2475"/><file name="SimilarRecordsAdapter.php" hash="f6c70898407d65c5b315a9ec5ebba166"/><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="794020c94d6d62c3d835f167c484f674"/><file name="RecommendationAdapter.php" hash="b991b5e2570c28530164b3cacfffa6e1"/><file name="SearchAdapter.php" hash="1458660092403f1c1f3c088c40b54550"/><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="5f33b2af574a27ce54da2fd200e54bf8"/><file name="SimilarRecordsAdapter.php" hash="b9c70b5c7d6d803bb1c7f1255be55285"/><file name="SuggestAdapter.php" hash="5cf5b95340983823c9e7a3fd0dc20a0b"/><file name="TagCloudAdapter.php" hash="3bfa1e877269be17ee08c403254925bf"/></dir><dir name="Xml69"><file name="CompareAdapter.php" hash="7fb11570f8ff0d4375808e2848b9a4e5"/><file name="ImportAdapter.php" hash="38ca51ae3571aa19df0552592c3ca7a1"/><file name="ProductCampaignAdapter.php" hash="b8387c660a11be69d4a549226fe398a9"/><file name="RecommendationAdapter.php" hash="2dcb3dd6cf309a5f0c2ae43fb203b26b"/><file name="SearchAdapter.php" hash="d40a1e847d228fa5018c47b43eb26d57"/><file name="SimilarRecordsAdapter.php" hash="ba87aaa6a786094720941117c976899d"/><file name="SuggestAdapter.php" hash="b0c54b42c01101adda15e3634b896e56"/><file name="TagCloudAdapter.php" hash="9529b709e9f1d897776d33fea96bb4df"/><file name="TrackingAdapter.php" hash="5fab2bf699274380c07988cdad48913a"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="06068d50a15e6e6a865c1727b7af0ded"/></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="8cc0245865ee5760fbfe7442cf859ade"/><file name="Secondaryresult.php" hash="cb1ca2347767ebed5671ad6a91dc881e"/><file name="TagCloud.php" hash="6e3769771ef5a1b50fc1d9a963e90aad"/><file name="Tracking.php" hash="7ce879afb562e5a0e96132fa31ebe98d"/><dir name="Adminhtml"><file name="Cockpit.php" hash="e12c45f55d5fd31d164187bd9d16a0bd"/><file name="Exportlink.php" hash="6aa91d07c5e0094c89b2494bac9d1ed3"/><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="14791cddb1fd131f7f78928e7877fc48"/><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="2651771f335616765f26a611486b9e25"/></dir></dir><dir name="XmlConnect"><dir name="Catalog"><file name="Search.php" hash="a5719137254795a4e9053bd801bc1f39"/><dir name="Product"><file name="List.php" hash="5c6ddfd680c0bcf597d07f02de69c4a7"/></dir><dir name="Search"><file name="Suggest.php" hash="a0fed06b80840e63f9983909847d7e58"/></dir></dir></dir></dir><dir name="controllers"><file name="ExportController.php" hash="1a0ab571e3cc525b043c39c8d71c0e18"/><file name="ProxyController.php" hash="1fc770e60199e28aedabba1578f569cd"/><dir name="Adminhtml"><dir name="Factfinder"><file name="CockpitController.php" hash="4c8665feaf14c38e6ba2384db496c95a"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="1165a0fecfaa31f2aa4a882d1d8bc033"/><file name="config.xml" hash="686dfb4518a20e8f0498ba9279420ce6"/><file name="system.xml" hash="4e232a8d8e9ba653ba658b510470a20d"/></dir><dir name="Helper"><file name="Backend.php" hash="87b662c7c7242ef349f4606ad2ab5279"/><file name="Data.php" hash="91d08be56cfa17025d0dbfcda3691bb1"/><file name="Debug.php" hash="24b939b03efb2cd5f7815562f896576f"/><file name="Search.php" hash="0ec62f809330706c441c60ad96970880"/></dir><dir name="Model"><file name="Facade.php" hash="6ab653ac461b0c29df77c70627db49fe"/><file name="Layer.php" hash="9da16c44259b4a31d73f63d87787ff11"/><file name="Observer.php" hash="99b06cdb299cd09e4dfafc0f9ab2d541"/><file name="Processor.php" hash="dd87fcca325fc9bfb30e52f5a0c484fb"/><dir name="Export"><file name="Price.php" hash="5561605bf639385c211f339f0c752a0f"/><file name="Product.php" hash="9edb405e971054454be2bc434420595a"/><file name="Stock.php" hash="28e819f8f317957a70a7d4d318e04791"/></dir><dir name="Handler"><file name="Abstract.php" hash="f5724a1c82becbc4d76a6f46dc591977"/><file name="CheckStatus.php" hash="73bf9fec9e0e97a3261b8fad292b1f96"/><file name="ProductCampaign.php" hash="831d8d3ff2cd29e090cff10c3a9c8844"/><file name="ProductDetailCampaign.php" hash="25175d7b6809c9db30e1400f4f800739"/><file name="Recommendations.php" hash="47b12e1f2f1e1d83ecaba77fdb20b63b"/><file name="Search.php" hash="31a7e04564ca9c7973b99d389ba6e00b"/><file name="SecondarySearch.php" hash="de4ced818f7865a491438a4d103b431a"/><file name="ShoppingCartCampaign.php" hash="202fc9ab4018247dfb8e8bcefd417465"/><file name="Suggest.php" hash="3b286cbda3cad188b10f7fac06e0ca32"/><file name="TagCloud.php" hash="e60bd2a5d314cfe3bad445ba88740878"/><file name="Tracking.php" hash="0df6a928578b8376a36eaa9e47079a91"/><dir name="Tracking"><file name="Scic.php" hash="6342c6f0077fb242a8955b1160abec89"/></dir></dir><dir name="Layer"><file name="Abstract.php" hash="0a0505e719ca55320da35c7510b82d3a"/><dir name="Filter"><file name="Item.php" hash="d51a705d6690e06934b81f4ed12c6f3b"/><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="f4aba32bda99ba511686768342664774"/><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="7cd3f4ed651c206e7684b2c5b7c2e788"/><file name="Identifier.php" hash="cec45238f0e28a1bf66d10dee513c2ca"/><file name="Imagetype.php" hash="9f0fc4aaaf6343163a4a2e3b42aaa41c"/></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="suggest.js" hash="b45f28b377c73463527d9aa44e37589b"/><file name="tracking.js" hash="d0c9a7839c7066eec168950c37b0faf2"/></dir></dir></dir></target></contents>
24
  <compatible/>
25
  <dependencies/>
26
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Flagbit_Factfinder</name>
4
+ <version>3.5.4</version>
5
  <stability>stable</stability>
6
+ <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>ADD: necessary information into the build.xml to make the package process work
12
+ ADD: it is possible to get the complete search adapter of the secondary search result.
13
+ CHG: made it possible to add ignore parameters from the module
14
+ CHG: renamed misspelled variable
15
+ CHG: as the "Category" name convention is not always complied, accept both notations
16
+ CHG: updated ff library to current version
17
+ CHG: implemented the legacy tracking for 6.9
18
+ FIX: selected filters are now viewed on navigation pages, except of current magento-selected categories closing #62
19
+ FIX: Prevent fatal errors in factfinder/search_collection closing #54
20
+ FIX: added names to the campaign blocks at the layout xml file
21
+ FIX: get caching working; however it won't work with php 5.2 or less!</notes>
22
  <authors><author><name>Flagbit GmbH Co. KG</name><user>auto-converted</user><email>magento@flagbit.de</email></author></authors>
23
+ <date>2014-01-17</date>
24
+ <time>19:20:51</time>
25
+ <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="205773215ef818caa64d7450c02ea1e8"/></dir><dir name="template"><dir name="factfinder"><file name="form.advancedsuggest.phtml" hash="d51345fde3b0cbede02f4d2ac7d43af0"/><file name="form.advancedsuggest68.phtml" hash="40f1abe8fad017cc52442bd6a4a8ef35"/><file name="form.mini.phtml" hash="eb49c2fb57594e2ebeed1ffb01c2606d"/><file name="logo.phtml" hash="7a40d67bf648e65345f69b2cf9d3c6b6"/><file name="secondaryresult.phtml" hash="a4cdff409ccedb16d4fe9a038a4dd9e8"/><file name="tracking.phtml" hash="c7b2320cc4e8e4937d9df731397bdc60"/><dir name="campaign"><file name="advisory.phtml" hash="d0ef29b97aa4c3bdfa2b94596beb5b21"/><file name="feedback.phtml" hash="a00ad977b82b199630371aef060f25ab"/><dir name="cart"><file name="advisory.phtml" hash="bb994272a6daaaba298a38023f6db212"/><file name="feedback.phtml" hash="01fa6a9cd024a2a8edaea7013b00fc89"/></dir><dir name="product"><file name="advisory.phtml" hash="00c978cf9c129c777fecf4cbbbb9d218"/><file name="feedback.phtml" hash="1bb121e2708490793190ce9f2d6ee666"/></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="eacf94cdf077a77bece17ef67d09b829"/></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="e2aaefed8203667491262c6bf6f41f03"/><file name="AsnSliderFilter.php" hash="14fcd343b14d85b53d2908e04132bca4"/><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="Curl.php" hash="967c0b604dfdc045c9de70e9e9a44bea"/><file name="CurlHandle.php" hash="2c9dfeccd8256c16def2685e7498ae1c"/><file name="CurlInterface.php" hash="a57574dcd102ff54575cbc9131687854"/><file name="CurlStub.php" hash="01b5a07b0599ccd4b7e1b102cbdc3993"/><file name="EncodingHandler.php" hash="4f0b616bca9158bfb7eddcfcba192dc6"/><file name="Item.php" hash="b8bae7f7d296a5acca29dc3ce0c46642"/><file name="Loader.php" hash="c26cc57da777bfe7096fadbfeb6e1645"/><file name="Log4PhpLogger.php" hash="ecfb1f084b8d0bd2d51bf417fa0b0b3c"/><file name="NullLogger.php" hash="be8782000070665f0e9fcc011ae4fe77"/><file name="Paging.php" hash="4ca274beffac0c0a8cb5136b08fa8b24"/><file name="Parameters.php" hash="612c4a9b98cb8a17d0f2d30cf2641936"/><file name="ParametersParser.php" hash="9b55a42ea9195c2b40f9640ac3ba3b1a"/><file name="ProductsPerPageOptions.php" hash="1e69121e89109f31b0929706ea3dcabc"/><file name="Record.php" hash="46319caed19fbdeb5fc065ddd395b18f"/><file name="Result.php" hash="8f97f1509ee78d773aa2c5ace2830225"/><file name="SingleWordSearchItem.php" hash="8f0feac780e68a8b0eab6d44dd6c6813"/><file name="SuggestQuery.php" hash="847d637921e9bc46b9c1d3d8b03737af"/><file name="TagQuery.php" hash="ece1fda66af2c6053507941f35423c5f"/><file name="Util.php" hash="0a26a0d655c3f257b74302683a4859ba"/><dir name="Abstract"><file name="Adapter.php" hash="1c3acf21c0e5bb954973e22e52910906"/><file name="Configuration.php" hash="233565de45f56ba7bdcd604817dd7fc6"/><file name="DataProvider.php" hash="8b1dfc68d335aa006f7af9f2a60e519d"/><file name="Logger.php" hash="c5b1ace6158035e80b3d4a79a942a381"/></dir><dir name="Default"><file name="CompareAdapter.php" hash="8a8b027675e195b7be2bf5bf64666926"/><file name="ImportAdapter.php" hash="50c1a885dabcad55d4f7b6de00800701"/><file name="ProductCampaignAdapter.php" hash="049bfd0c3831114a2cd632af96aa0aaf"/><file name="RecommendationAdapter.php" hash="1858f0553c6deb21fb561cb454974a4e"/><file name="ScicAdapter.php" hash="8fd1c9e60cdb039ce4369af63d72a459"/><file name="SearchAdapter.php" hash="b0b1c7f8527e0e286b55028e305b7c86"/><file name="SimilarRecordsAdapter.php" hash="b498d3df0fc663c40fc362fd20134b43"/><file name="SuggestAdapter.php" hash="f74d7d5578131355f8e44e8b6e0734c7"/><file name="TagCloudAdapter.php" hash="c2ecc0d869d232ce4b8f09eb497e2b64"/><file name="TrackingAdapter.php" hash="9229b7d36802d1fb9584c7d6fa9ccd1e"/></dir><dir name="Http"><file name="DataProvider.php" hash="e0eb9dfa37502f71d6c76acf28d1a8c7"/><file name="DummyProvider.php" hash="fcf82a2349f5b403912b1cb62907439c"/><file name="LegacyTrackingAdapter.php" hash="5af8090c44db0d7a2f630b3afe21da3d"/><file name="ParallelDataProvider.php" hash="71f895680f881d06793507f7ac8e7ef3"/><file name="ScicAdapter.php" hash="c283d851d23e531a1c26fee3d8c49ea8"/><file name="StatusHelper.php" hash="e4760fadae33a5574f9445bbc73c1283"/><file name="SuggestAdapter.php" hash="875adeae854b52bb6a20322c2934423c"/><file name="TrackingAdapter.php" hash="9ce06d21ea64a7dd329ce12e28576488"/><file name="UrlBuilder.php" hash="99efad6cb8243ee93a5d4b61c93d8303"/></dir><dir name="Json66"><file name="CompareAdapter.php" hash="3034c100a97d222704b1462db0b97811"/><file name="ImportAdapter.php" hash="63b19c72cfcf52d9832a81080678232c"/><file name="RecommendationAdapter.php" hash="9f4fed83d6d6c10b471ef8f4810eefa5"/><file name="ScicAdapter.php" hash="f484fd9b7ed416f122bb71e75e544049"/><file name="SearchAdapter.php" hash="90f60bedc69a748e6e18d49c3243bc3d"/><file name="SimilarRecordsAdapter.php" hash="6f3565723be247381f561b60ed49d8da"/><file name="SuggestAdapter.php" hash="e06a19df2260abcd6ce46a8744ca58b0"/><file name="TagCloudAdapter.php" hash="0ef622889613de3660591ef41c08c65d"/></dir><dir name="Json67"><file name="CompareAdapter.php" hash="2324e34be1d48e42a1dafff4a6368863"/><file name="ImportAdapter.php" hash="295fa619d1a020f87e3d6772e428f4b3"/><file name="ProductCampaignAdapter.php" hash="c43222b1d277e2965e1209ff6375500c"/><file name="RecommendationAdapter.php" hash="db72e4179a831b331f53505a2ba9d01f"/><file name="ScicAdapter.php" hash="f76d589d684a68707b3ed86632d7742f"/><file name="SearchAdapter.php" hash="c69ac5f6fcfe47351ed3b601d03e18ad"/><file name="SimilarRecordsAdapter.php" hash="55f5553511f5fb965fa9b6abf5e9ba01"/><file name="SuggestAdapter.php" hash="ae47090fab5d202a22c8dbf9e604e2d1"/><file name="TagCloudAdapter.php" hash="1d7fdbd4ea8488d1bdfd0a4143a1a130"/></dir><dir name="Json68"><file name="CompareAdapter.php" hash="f3c610d6347a6671f5ee1bf716801ae2"/><file name="ImportAdapter.php" hash="c7ec5f12e1f7f17084de9d71c4d4051d"/><file name="ProductCampaignAdapter.php" hash="1ffc9f568d7ee73722765f16fdf45b07"/><file name="RecommendationAdapter.php" hash="b5082f0db80730bb866ac332d143f4a8"/><file name="ScicAdapter.php" hash="33da9351e28946900e620b011f1891bb"/><file name="SearchAdapter.php" hash="5814eb254324b96b10a35411bea6bc6c"/><file name="SimilarRecordsAdapter.php" hash="51412237e3233ccc3bfc124e3e9abee6"/><file name="SuggestAdapter.php" hash="9bfbd6a282aba70e3b1f2e1f632c113f"/><file name="TagCloudAdapter.php" hash="b632b03f8e044ebdd3a4f318c8e50c3a"/></dir><dir name="Json69"><file name="CompareAdapter.php" hash="e0ab8d442b26ca492d3986a32ea7a7a4"/><file name="ImportAdapter.php" hash="e969905c5ef9a2577eb80df12f5350c5"/><file name="ProductCampaignAdapter.php" hash="1ab5cb62aafe5f67c1f77461b89fe24d"/><file name="RecommendationAdapter.php" hash="0036cea44c296a3f9c8ac5c7458afb83"/><file name="ScicAdapter.php" hash="3e37ab5db7240aad6a7f2c3a971014c4"/><file name="SearchAdapter.php" hash="bc5b9f9404017d003fb27d21b2837609"/><file name="SimilarRecordsAdapter.php" hash="aee8d4212c9e3f1b62035be5307c73f1"/><file name="SuggestAdapter.php" hash="fce98d2451db47e4608e6f252f3759ff"/><file name="TagCloudAdapter.php" hash="e1b77df045382804e6ddfe2a05180469"/></dir><dir name="Xml64"><file name="SearchAdapter.php" hash="58a49882c741216cf278c4556ea7d224"/></dir><dir name="Xml65"><file name="ImportAdapter.php" hash="3e24dbe7875252ebc0ddb3e932da3d4a"/><file name="RecommendationAdapter.php" hash="dda97f6db1ae97c5a217632067d7c101"/><file name="ScicAdapter.php" hash="23b169cdb295245a52b96234e10627fa"/><file name="SearchAdapter.php" hash="0afda4c378e041c882739a0035382125"/><file name="SuggestAdapter.php" hash="e5381502b74dd62be1a7aa833cbb03e2"/><file name="TagCloudAdapter.php" hash="3bca14558fbd758207e97566dafb1ca2"/></dir><dir name="Xml66"><file name="CompareAdapter.php" hash="a1e323dec8fbee2930d531765adef0cc"/><file name="ImportAdapter.php" hash="5ea0d06cc2ddc7a1b7c880203c38fe40"/><file name="RecommendationAdapter.php" hash="9490ea2b17fded94d087046065596b1b"/><file name="ScicAdapter.php" hash="3d1fbfeb016b5cbca426835da7abe472"/><file name="SearchAdapter.php" hash="aba7b0e052a28c93bad70786706e2475"/><file name="SimilarRecordsAdapter.php" hash="f6c70898407d65c5b315a9ec5ebba166"/><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="794020c94d6d62c3d835f167c484f674"/><file name="RecommendationAdapter.php" hash="b991b5e2570c28530164b3cacfffa6e1"/><file name="ScicAdapter.php" hash="62b5573da44cae7fc7db15c5a4eaebb5"/><file name="SearchAdapter.php" hash="1458660092403f1c1f3c088c40b54550"/><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="ScicAdapter.php" hash="820e46185da76067d6fd28824aca47e1"/><file name="SearchAdapter.php" hash="5f33b2af574a27ce54da2fd200e54bf8"/><file name="SimilarRecordsAdapter.php" hash="b9c70b5c7d6d803bb1c7f1255be55285"/><file name="SuggestAdapter.php" hash="5cf5b95340983823c9e7a3fd0dc20a0b"/><file name="TagCloudAdapter.php" hash="3bfa1e877269be17ee08c403254925bf"/></dir><dir name="Xml69"><file name="CompareAdapter.php" hash="7fb11570f8ff0d4375808e2848b9a4e5"/><file name="ImportAdapter.php" hash="38ca51ae3571aa19df0552592c3ca7a1"/><file name="ProductCampaignAdapter.php" hash="b8387c660a11be69d4a549226fe398a9"/><file name="RecommendationAdapter.php" hash="2dcb3dd6cf309a5f0c2ae43fb203b26b"/><file name="ScicAdapter.php" hash="6c20f0e9fbfaf3429723dd664cb465ef"/><file name="SearchAdapter.php" hash="d40a1e847d228fa5018c47b43eb26d57"/><file name="SimilarRecordsAdapter.php" hash="ba87aaa6a786094720941117c976899d"/><file name="SuggestAdapter.php" hash="b0c54b42c01101adda15e3634b896e56"/><file name="TagCloudAdapter.php" hash="9529b709e9f1d897776d33fea96bb4df"/><file name="TrackingAdapter.php" hash="5fab2bf699274380c07988cdad48913a"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="8afbd5bb2669f4f34a7d577437d0e69c"/></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="8cc0245865ee5760fbfe7442cf859ade"/><file name="Secondaryresult.php" hash="41ee25e0adeb033ca6e5eef2d50c0f90"/><file name="TagCloud.php" hash="6e3769771ef5a1b50fc1d9a963e90aad"/><file name="Tracking.php" hash="7ce879afb562e5a0e96132fa31ebe98d"/><dir name="Adminhtml"><file name="Cockpit.php" hash="e12c45f55d5fd31d164187bd9d16a0bd"/><file name="Exportlink.php" hash="6aa91d07c5e0094c89b2494bac9d1ed3"/><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="14791cddb1fd131f7f78928e7877fc48"/><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="2651771f335616765f26a611486b9e25"/></dir></dir><dir name="XmlConnect"><dir name="Catalog"><file name="Search.php" hash="a5719137254795a4e9053bd801bc1f39"/><dir name="Product"><file name="List.php" hash="5c6ddfd680c0bcf597d07f02de69c4a7"/></dir><dir name="Search"><file name="Suggest.php" hash="a0fed06b80840e63f9983909847d7e58"/></dir></dir></dir></dir><dir name="controllers"><file name="ExportController.php" hash="1a0ab571e3cc525b043c39c8d71c0e18"/><file name="ProxyController.php" hash="1fc770e60199e28aedabba1578f569cd"/><dir name="Adminhtml"><dir name="Factfinder"><file name="CockpitController.php" hash="4c8665feaf14c38e6ba2384db496c95a"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="1165a0fecfaa31f2aa4a882d1d8bc033"/><file name="config.xml" hash="b34ed09ca9e8817fd01beba3d0e4d9c7"/><file name="system.xml" hash="4e232a8d8e9ba653ba658b510470a20d"/></dir><dir name="Helper"><file name="Backend.php" hash="87b662c7c7242ef349f4606ad2ab5279"/><file name="Data.php" hash="d567225cfe69304e975c18b25123a58f"/><file name="Debug.php" hash="24b939b03efb2cd5f7815562f896576f"/><file name="Search.php" hash="0ec62f809330706c441c60ad96970880"/></dir><dir name="Model"><file name="Facade.php" hash="cfd1c9a0d8660457aa9455c42367f75c"/><file name="Layer.php" hash="9da16c44259b4a31d73f63d87787ff11"/><file name="Observer.php" hash="99b06cdb299cd09e4dfafc0f9ab2d541"/><file name="Processor.php" hash="dd87fcca325fc9bfb30e52f5a0c484fb"/><dir name="Export"><file name="Price.php" hash="5561605bf639385c211f339f0c752a0f"/><file name="Product.php" hash="929ffca44ce0cba1b9ab8a2c3027a665"/><file name="Stock.php" hash="28e819f8f317957a70a7d4d318e04791"/></dir><dir name="Handler"><file name="Abstract.php" hash="f5724a1c82becbc4d76a6f46dc591977"/><file name="CheckStatus.php" hash="73bf9fec9e0e97a3261b8fad292b1f96"/><file name="ProductCampaign.php" hash="831d8d3ff2cd29e090cff10c3a9c8844"/><file name="ProductDetailCampaign.php" hash="25175d7b6809c9db30e1400f4f800739"/><file name="Recommendations.php" hash="47b12e1f2f1e1d83ecaba77fdb20b63b"/><file name="Search.php" hash="cb749d336fd6e2a1dea373ff1a286d94"/><file name="SecondarySearch.php" hash="68395df0f8f61c0776a36b5079ebd720"/><file name="ShoppingCartCampaign.php" hash="202fc9ab4018247dfb8e8bcefd417465"/><file name="Suggest.php" hash="3b286cbda3cad188b10f7fac06e0ca32"/><file name="TagCloud.php" hash="e60bd2a5d314cfe3bad445ba88740878"/><file name="Tracking.php" hash="5aefdfa31865227c1a953c0f1447ab0b"/><dir name="Tracking"><file name="Scic.php" hash="2e34f18eac2125c2017970fcfca22730"/></dir></dir><dir name="Layer"><file name="Abstract.php" hash="0a0505e719ca55320da35c7510b82d3a"/><dir name="Filter"><file name="Item.php" hash="d51a705d6690e06934b81f4ed12c6f3b"/><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="efe031e2f8701d1fa4f0059238144aad"/><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="7cd3f4ed651c206e7684b2c5b7c2e788"/><file name="Identifier.php" hash="cec45238f0e28a1bf66d10dee513c2ca"/><file name="Imagetype.php" hash="9f0fc4aaaf6343163a4a2e3b42aaa41c"/></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="suggest.js" hash="b45f28b377c73463527d9aa44e37589b"/><file name="tracking.js" hash="d0c9a7839c7066eec168950c37b0faf2"/></dir></dir></dir></target></contents>
26
  <compatible/>
27
  <dependencies/>
28
  </package>