Simtech_Searchanise - Version 2.0.1

Version Notes

[+] More product attributes can be collected for better deal-aggregator export (e.g. Google Shopping).

[*] Catalog data submitting speed improved.

[!] Fixed an issue with currencies containing the "'" character, which could break the instant search widget and Searchanise admin panel.

[*] Configured products support improved: extra data validation added.

Download this release

Release Info

Developer Simbirsk Technologies, Ltd.
Extension Simtech_Searchanise
Version 2.0.1
Comparing to
See all releases


Code changes from version 2.0.0 to 2.0.1

app/code/community/Simtech/Searchanise/Block/Jsinit.php CHANGED
@@ -82,12 +82,13 @@ class Simtech_Searchanise_Block_Jsinit extends Mage_Core_Block_Text
82
  Searchanise.AdditionalSearchInputs = '#name,#description,#sku';
83
 
84
  Searchanise.options.PriceFormat = {
85
- rate : '{$priceFormat['rate']}',
86
- decimals: '{$priceFormat['decimals']}',
87
- decimals_separator: '{$priceFormat['decimals_separator']}',
88
- thousands_separator: '{$priceFormat['thousands_separator']}',
89
- symbol: '{$priceFormat['symbol']}',
90
- after: {$priceFormat['after']}
 
91
  };
92
 
93
  (function() {
82
  Searchanise.AdditionalSearchInputs = '#name,#description,#sku';
83
 
84
  Searchanise.options.PriceFormat = {
85
+ decimals_separator: '" . addslashes($priceFormat['decimals_separator']) . "',
86
+ thousands_separator: '" . addslashes($priceFormat['thousands_separator']) . "',
87
+ symbol: '" . addslashes($priceFormat['symbol']) . "',
88
+
89
+ decimals: '{$priceFormat['decimals']}',
90
+ rate: '{$priceFormat['rate']}',
91
+ after: {$priceFormat['after']}
92
  };
93
 
94
  (function() {
app/code/community/Simtech/Searchanise/Helper/ApiSe.php CHANGED
@@ -205,6 +205,18 @@ class Simtech_Searchanise_Helper_ApiSe
205
  return self::getSetting('use_navigation', self::CONFIG_PREFIX);
206
  }
207
 
 
 
 
 
 
 
 
 
 
 
 
 
208
  public static function setLastRequest($value = null)
209
  {
210
  self::setSetting('last_request', $value, self::CONFIG_PREFIX);
@@ -1140,7 +1152,6 @@ class Simtech_Searchanise_Helper_ApiSe
1140
  }
1141
 
1142
  self::setExportStatus(self::EXPORT_STATUS_NONE, $store);
1143
- self::setUseNavigation(true);
1144
  }
1145
  }
1146
 
@@ -1718,8 +1729,6 @@ class Simtech_Searchanise_Helper_ApiSe
1718
  self::setApiKey(null, $store);
1719
  self::setPrivateKey(null, $store);
1720
  self::setExportStatus(null, $store);
1721
-
1722
- self::setUseNavigation(true, $store);
1723
 
1724
  Mage::getModel('searchanise/queue')->deleteKeys($store);
1725
  }
205
  return self::getSetting('use_navigation', self::CONFIG_PREFIX);
206
  }
207
 
208
+ public static function setUseFullFeed($value = null)
209
+ {
210
+ self::setSetting('use_full_feed', $value, self::CONFIG_PREFIX);
211
+
212
+ return true;
213
+ }
214
+
215
+ public static function getUseFullFeed($value = null)
216
+ {
217
+ return self::getSetting('use_full_feed', self::CONFIG_PREFIX);
218
+ }
219
+
220
  public static function setLastRequest($value = null)
221
  {
222
  self::setSetting('last_request', $value, self::CONFIG_PREFIX);
1152
  }
1153
 
1154
  self::setExportStatus(self::EXPORT_STATUS_NONE, $store);
 
1155
  }
1156
  }
1157
 
1729
  self::setApiKey(null, $store);
1730
  self::setPrivateKey(null, $store);
1731
  self::setExportStatus(null, $store);
 
 
1732
 
1733
  Mage::getModel('searchanise/queue')->deleteKeys($store);
1734
  }
app/code/community/Simtech/Searchanise/Helper/ApiXML.php CHANGED
@@ -31,6 +31,9 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
31
  const WEIGHT_TEXT_AREA_ATTRIBUTES = 40;
32
  // </if_isSearchable>
33
 
 
 
 
34
  protected static $flWithoutTags = false;
35
 
36
  public static function getStockItem($product, $store = null)
@@ -233,17 +236,58 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
233
  */
234
  private static function getProductMinimalPrice($product, $store, $flagWithChildrenProducts = true, $customerGroupId = null, $groupPrice = null)
235
  {
236
- $minimalPrice = '';
237
 
238
  if ($customerGroupId != null) {
239
  $product->setCustomerGroupId($customerGroupId);
240
  }
241
 
242
- if ($groupPrice == null) {
243
- $minimalPrice = $product->getFinalPrice();
244
- } else {
245
  $minimalPrice = $groupPrice;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  }
 
 
 
 
 
247
  $minimalPrice = self::getProductShowPrice($product, $minimalPrice);
248
 
249
  if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) {
@@ -419,6 +463,7 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
419
  $unitedProducts[] = $childrenProduct;
420
  }
421
  }
 
422
  $entry .= '<entry>' . self::XML_END_LINE;
423
  $entry .= '<id>' . $product->getId() . '</id>' . self::XML_END_LINE;
424
 
@@ -517,7 +562,7 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
517
  $attributeCode = $attribute->getAttributeCode();
518
  $value = $product->getData($attributeCode);
519
 
520
- // unitedValues - childrens values + main value
521
  $unitedValues = array();
522
  {
523
  if ($value == '') {
@@ -544,15 +589,53 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
544
  }
545
  $inputType = $attribute->getData('frontend_input');
546
  $isSearchable = $attribute->getIsSearchable();
 
 
547
  $attributeName = 'attribute_' . $attribute->getId();
548
  $attributeWeight = 0;
 
549
 
550
  if (empty($unitedValues)) {
551
  // nothing
552
 
553
- } elseif ($attributeCode == 'price') {
554
- // nothing
555
- // already defined in the '<cs:price>' field
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
556
 
557
  } elseif ($attributeCode == 'group_price') {
558
  // nothing
@@ -565,67 +648,42 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
565
  $attributeCode == 'meta_description' ||
566
  $attributeCode == 'meta_keyword') {
567
 
568
- if ($isSearchable) {
569
- // <descriptions>
570
- if ($inputType == 'short_description') {
571
- $attributeWeight = self::WEIGHT_SHORT_DESCRIPTION;
572
- } elseif ($inputType == 'description') {
573
- $attributeWeight = self::WEIGHT_DESCRIPTION;
574
- // </descriptions>
575
-
576
- // <meta_information>
577
- } elseif ($inputType == 'meta_title') {
578
- $attributeWeight = self::WEIGHT_META_TITLE;
579
- } elseif ($inputType == 'meta_description') {
580
- $attributeWeight = self::WEIGHT_META_DESCRIPTION;
581
- } elseif ($inputType == 'meta_keyword') {
582
- $attributeWeight = self::WEIGHT_META_KEYWORDS;
583
- // </meta_information>
584
- } else {
585
- // Nothing.
 
 
586
  }
587
- }
588
 
589
- $strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
590
- if ($strTextValues != '') {
591
- $entry .= '<cs:attribute name="' . $attributeName .'" type="text" text_search="Y" weight="' . $attributeWeight . '">';
592
- // fixme in the future
593
- // need for fixed bug of Server
594
- $entry .= ' ';
595
- // end fixme
596
- $entry .= $strTextValues;
597
- $entry .= '</cs:attribute>' . self::XML_END_LINE;
 
598
  }
599
 
600
- // <dates>
601
- // It can be used for sort.
602
- } elseif ($attributeCode == 'created_at' || $attributeCode == 'updated_at') {
603
- // Fixme in the future
604
- // may add check for used_for_sort_by
605
- $dateTimestamp = Mage::getModel('core/date')->timestamp(strtotime($value));
606
- $entry .= '<cs:attribute name="' . $attributeName .'" type="int" text_search="N">';
607
- $entry .= $dateTimestamp;
608
- $entry .= '</cs:attribute>' . self::XML_END_LINE;
609
- // Fixme in the future
610
- // Need add other date attributes ('look for' by type)
611
- // </dates>
612
-
613
- // <unused attributes>
614
- // <system_attributes>
615
- } elseif ($attributeCode == 'status') {
616
- } elseif ($attributeCode == 'visibility') {
617
- } elseif ($attributeCode == 'has_options') {
618
- } elseif ($attributeCode == 'required_options') {
619
- } elseif ($attributeCode == 'custom_layout_update') {
620
- } elseif ($attributeCode == 'tier_price') { // quantity discount
621
- } elseif ($attributeCode == 'image_label') {
622
- } elseif ($attributeCode == 'small_image_label') {
623
- } elseif ($attributeCode == 'thumbnail_label') {
624
- } elseif ($attributeCode == 'url_key') { // seo name
625
- // <system_attributes>
626
- // </unused attributes>
627
-
628
  } elseif ($inputType == 'price') {
 
629
  $entry .= '<cs:attribute name="' . $attributeName .'" type="float">';
630
  $entry .= $value;
631
  $entry .= '</cs:attribute>' . self::XML_END_LINE;
@@ -645,46 +703,61 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
645
  // </id_values>
646
 
647
  // <text_values>
648
- $strTextValues = '';
649
- if ($isSearchable) {
650
- $attributeWeight = self::WEIGHT_SELECT_ATTRIBUTES;
651
  $strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
652
- }
653
 
654
- if ($strTextValues != '') {
655
- $entry .= '<cs:attribute name="' . $attributeCode .'" type="text" text_search="Y" weight="' . $attributeWeight . '">';
656
- // fixme in the future
657
- // need for fixed bug of Server
658
- $entry .= ' ';
659
- // end fixme
660
- $entry .= $strTextValues;
661
- $entry .= '</cs:attribute>' . self::XML_END_LINE;
 
 
 
 
 
662
  }
663
- // <text_values>
664
 
665
  } elseif ($inputType == 'text' || $inputType == 'textarea') {
666
- if ($isSearchable) {
667
- if ($inputType == 'text') {
668
- $attributeWeight = self::WEIGHT_TEXT_ATTRIBUTES;
669
- } elseif ($inputType == 'textarea') {
670
- $attributeWeight = self::WEIGHT_TEXT_AREA_ATTRIBUTES;
671
- } else {
672
- // Nothing.
 
 
 
 
 
 
 
 
 
 
 
 
 
673
  }
674
  }
675
- $strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
676
- if ($strTextValues != '') {
677
- $entry .= '<cs:attribute name="' . $attributeName .'" type="text" text_search="Y" weight="' . $attributeWeight . '">';
678
- // fixme in the future
679
- // need for fixed bug of Server
680
- $entry .= ' ';
681
- // end fixme
682
- $entry .= $strTextValues;
683
  $entry .= '</cs:attribute>' . self::XML_END_LINE;
684
  }
685
-
 
 
 
686
  } else {
687
- // attribute is not filtrable
688
  }
689
  }
690
  }
@@ -693,27 +766,33 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
693
 
694
  // <categories>
695
  {
696
- $entry .= '<cs:attribute name="categories" type="text">';
697
- // need, it's important
 
698
  $entry .= ' ';
 
 
699
  $categoryIds = $product->getCategoryIds();
700
  if (!empty($categoryIds)) {
701
  foreach ($categoryIds as $catKey => $categoryId) {
702
  $entry .= '<value><![CDATA[' . $categoryId . ']]></value>';
 
 
 
 
703
  }
704
  }
705
  $entry .= '</cs:attribute>' . self::XML_END_LINE;
 
 
 
 
 
 
 
706
  }
707
  // </categories>
708
-
709
- // <status>
710
- $entry .= '<cs:attribute name="status" type="text" text_search="N">' . $product->getStatus() . '</cs:attribute>' . self::XML_END_LINE;
711
- // </status>
712
-
713
- // <visibility>
714
- $entry .= '<cs:attribute name="visibility" type="text" text_search="N">' . $product->getData('visibility'). '</cs:attribute>' . self::XML_END_LINE;
715
- // </visibility>
716
-
717
  // <tags>
718
  {
719
  $strTagIds = '';
@@ -1079,7 +1158,7 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
1079
 
1080
  public static function generateFacetXMLCategories()
1081
  {
1082
- return self::generateFacetXMLFromCustom('Category', 0, 'categories', 'select');
1083
  }
1084
 
1085
  public static function generateFacetXMLPrices($store = null)
31
  const WEIGHT_TEXT_AREA_ATTRIBUTES = 40;
32
  // </if_isSearchable>
33
 
34
+ // Tweaks
35
+ const ADDITIONAL_CHECK_FOR_INCORRECT_PRODUCTS = true;
36
+
37
  protected static $flWithoutTags = false;
38
 
39
  public static function getStockItem($product, $store = null)
236
  */
237
  private static function getProductMinimalPrice($product, $store, $flagWithChildrenProducts = true, $customerGroupId = null, $groupPrice = null)
238
  {
239
+ $minimalPrice = false;
240
 
241
  if ($customerGroupId != null) {
242
  $product->setCustomerGroupId($customerGroupId);
243
  }
244
 
245
+ if ($groupPrice != null) {
 
 
246
  $minimalPrice = $groupPrice;
247
+ } else {
248
+ $isCorrectProduct = true;
249
+
250
+ // Additional check for incorrect configurable products.
251
+ if (self::ADDITIONAL_CHECK_FOR_INCORRECT_PRODUCTS) {
252
+ static $arrIncorrectProductIds = array();
253
+
254
+ if (in_array($product->getId(), $arrIncorrectProductIds)) {
255
+ $isCorrectProduct = false;
256
+ }
257
+
258
+ if ($isCorrectProduct && $product->isConfigurable()) {
259
+ try {
260
+ $attributes = $product->getTypeInstance(true)
261
+ ->getConfigurableAttributes($product);
262
+ foreach ($attributes as $attribute) {
263
+ if (!$attribute->getProductAttribute()) {
264
+ $isCorrectProduct = false;
265
+ $arrIncorrectProductIds[] = $product->getId();
266
+ Mage::helper('searchanise/ApiSe')->log('Incorrect configurable product ID = ' . $product->getId(), 'Warning');
267
+ break;
268
+ }
269
+ }
270
+ } catch (Exception $e) {
271
+ Mage::helper('searchanise/ApiSe')->log($e->getMessage(), "Error: Script couldn't check for incorrect configurable product ID = " . $product->getId());
272
+ }
273
+ }
274
+ }
275
+ // end check
276
+
277
+ if ($isCorrectProduct) {
278
+ try {
279
+ $minimalPrice = $product->getFinalPrice();
280
+ } catch (Exception $e) {
281
+ $minimalPrice = false;
282
+ Mage::helper('searchanise/ApiSe')->log($e->getMessage(), "Error: Script couldn't get final price for product ID = " . $product->getId());
283
+ }
284
+ }
285
  }
286
+
287
+ if ($minimalPrice === false) {
288
+ $minimalPrice = $product->getPrice();
289
+ }
290
+
291
  $minimalPrice = self::getProductShowPrice($product, $minimalPrice);
292
 
293
  if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) {
463
  $unitedProducts[] = $childrenProduct;
464
  }
465
  }
466
+ $useFullFeed = Mage::helper('searchanise/ApiSe')->getUseFullFeed();
467
  $entry .= '<entry>' . self::XML_END_LINE;
468
  $entry .= '<id>' . $product->getId() . '</id>' . self::XML_END_LINE;
469
 
562
  $attributeCode = $attribute->getAttributeCode();
563
  $value = $product->getData($attributeCode);
564
 
565
+ // unitedValues - main value + childrens values
566
  $unitedValues = array();
567
  {
568
  if ($value == '') {
589
  }
590
  $inputType = $attribute->getData('frontend_input');
591
  $isSearchable = $attribute->getIsSearchable();
592
+ $isVisibleInAdvancedSearch = $attribute->getIsVisibleInAdvancedSearch();
593
+ $usedForSortBy = $attribute->getUsedForSortBy();
594
  $attributeName = 'attribute_' . $attribute->getId();
595
  $attributeWeight = 0;
596
+ $isRequireAttribute = $useFullFeed || $isSearchable || $isVisibleInAdvancedSearch || $usedForSortBy;
597
 
598
  if (empty($unitedValues)) {
599
  // nothing
600
 
601
+ // <system_attributes>
602
+ } elseif ($attributeCode == 'price') {
603
+ // already defined in the '<cs:price>' field
604
+
605
+ } elseif ($attributeCode == 'status' || $attributeCode == 'visibility') {
606
+ $entry .= '<cs:attribute name="' . $attributeCode . '" type="text" text_search="N">';
607
+ $entry .= $value;
608
+ $entry .= '</cs:attribute>' . self::XML_END_LINE;
609
+
610
+ } elseif ($attributeCode == 'weight') {
611
+ $strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
612
+ if ($strTextValues != '') {
613
+ $entry .= '<cs:attribute name="' . $attributeCode . '" type="float" text_search="N">';
614
+ // fixme in the future
615
+ // need for fixed bug of Server
616
+ $entry .= ' ';
617
+ // end fixme
618
+ $entry .= $strTextValues;
619
+ $entry .= '</cs:attribute>' . self::XML_END_LINE;
620
+ }
621
+
622
+ // <dates>
623
+ } elseif ($attributeCode == 'created_at' || $attributeCode == 'updated_at') {
624
+ $dateTimestamp = Mage::getModel('core/date')->timestamp(strtotime($value));
625
+ $entry .= '<cs:attribute name="' . $attributeCode .'" type="int" text_search="N">';
626
+ $entry .= $dateTimestamp;
627
+ $entry .= '</cs:attribute>' . self::XML_END_LINE;
628
+ // </dates>
629
+
630
+ } elseif ($attributeCode == 'has_options') {
631
+ } elseif ($attributeCode == 'required_options') {
632
+ } elseif ($attributeCode == 'custom_layout_update') {
633
+ } elseif ($attributeCode == 'tier_price') { // quantity discount
634
+ } elseif ($attributeCode == 'image_label') {
635
+ } elseif ($attributeCode == 'small_image_label') {
636
+ } elseif ($attributeCode == 'thumbnail_label') {
637
+ } elseif ($attributeCode == 'url_key') { // seo name
638
+ // <system_attributes>
639
 
640
  } elseif ($attributeCode == 'group_price') {
641
  // nothing
648
  $attributeCode == 'meta_description' ||
649
  $attributeCode == 'meta_keyword') {
650
 
651
+ if ($isRequireAttribute) {
652
+ if ($isSearchable) {
653
+ // <descriptions>
654
+ if ($inputType == 'short_description') {
655
+ $attributeWeight = self::WEIGHT_SHORT_DESCRIPTION;
656
+ } elseif ($inputType == 'description') {
657
+ $attributeWeight = self::WEIGHT_DESCRIPTION;
658
+ // </descriptions>
659
+
660
+ // <meta_information>
661
+ } elseif ($inputType == 'meta_title') {
662
+ $attributeWeight = self::WEIGHT_META_TITLE;
663
+ } elseif ($inputType == 'meta_description') {
664
+ $attributeWeight = self::WEIGHT_META_DESCRIPTION;
665
+ } elseif ($inputType == 'meta_keyword') {
666
+ $attributeWeight = self::WEIGHT_META_KEYWORDS;
667
+ // </meta_information>
668
+ } else {
669
+ // Nothing.
670
+ }
671
  }
 
672
 
673
+ $strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
674
+ if ($strTextValues != '') {
675
+ $entry .= '<cs:attribute name="' . $attributeCode .'" type="text" text_search="Y" weight="' . $attributeWeight . '">';
676
+ // fixme in the future
677
+ // need for fixed bug of Server
678
+ $entry .= ' ';
679
+ // end fixme
680
+ $entry .= $strTextValues;
681
+ $entry .= '</cs:attribute>' . self::XML_END_LINE;
682
+ }
683
  }
684
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
685
  } elseif ($inputType == 'price') {
686
+ // Other attributes with type 'price'.
687
  $entry .= '<cs:attribute name="' . $attributeName .'" type="float">';
688
  $entry .= $value;
689
  $entry .= '</cs:attribute>' . self::XML_END_LINE;
703
  // </id_values>
704
 
705
  // <text_values>
706
+ if ($isRequireAttribute) {
 
 
707
  $strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
 
708
 
709
+ if ($strTextValues != '') {
710
+ if ($isSearchable) {
711
+ $attributeWeight = self::WEIGHT_SELECT_ATTRIBUTES;
712
+ }
713
+
714
+ $entry .= '<cs:attribute name="' . $attributeCode .'" type="text" text_search="Y" weight="' . $attributeWeight . '">';
715
+ // fixme in the future
716
+ // need for fixed bug of Server
717
+ $entry .= ' ';
718
+ // end fixme
719
+ $entry .= $strTextValues;
720
+ $entry .= '</cs:attribute>' . self::XML_END_LINE;
721
+ }
722
  }
723
+ // </text_values>
724
 
725
  } elseif ($inputType == 'text' || $inputType == 'textarea') {
726
+ if ($isRequireAttribute) {
727
+ $strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
728
+
729
+ if ($strTextValues != '') {
730
+ if ($isSearchable) {
731
+ if ($inputType == 'text') {
732
+ $attributeWeight = self::WEIGHT_TEXT_ATTRIBUTES;
733
+ } elseif ($inputType == 'textarea') {
734
+ $attributeWeight = self::WEIGHT_TEXT_AREA_ATTRIBUTES;
735
+ } else {
736
+ // Nothing.
737
+ }
738
+ }
739
+ $entry .= '<cs:attribute name="' . $attributeName .'" type="text" text_search="Y" weight="' . $attributeWeight . '">';
740
+ // fixme in the future
741
+ // need for fixed bug of Server
742
+ $entry .= ' ';
743
+ // end fixme
744
+ $entry .= $strTextValues;
745
+ $entry .= '</cs:attribute>' . self::XML_END_LINE;
746
  }
747
  }
748
+ } elseif ($inputType == 'date') {
749
+ if ($isRequireAttribute) {
750
+ $dateTimestamp = Mage::getModel('core/date')->timestamp(strtotime($value));
751
+ $entry .= '<cs:attribute name="' . $attributeCode .'" type="int" text_search="N">';
752
+ $entry .= $dateTimestamp;
 
 
 
753
  $entry .= '</cs:attribute>' . self::XML_END_LINE;
754
  }
755
+ } elseif ($inputType == 'media_image') {
756
+ // Nothing.
757
+ } elseif ($inputType == 'gallery') {
758
+ // Nothing.
759
  } else {
760
+ // Attribute not will use.
761
  }
762
  }
763
  }
766
 
767
  // <categories>
768
  {
769
+ $entry .= '<cs:attribute name="category_ids" type="text">';
770
+ // fixme in the future
771
+ // need for fixed bug of Server
772
  $entry .= ' ';
773
+ $nameCategories = ' ';
774
+ // end fixme
775
  $categoryIds = $product->getCategoryIds();
776
  if (!empty($categoryIds)) {
777
  foreach ($categoryIds as $catKey => $categoryId) {
778
  $entry .= '<value><![CDATA[' . $categoryId . ']]></value>';
779
+ $category = Mage::getModel('catalog/category')->load($categoryId);
780
+ if ($category) {
781
+ $nameCategories .= '<value><![CDATA[' . $category->getName() . ']]></value>';
782
+ }
783
  }
784
  }
785
  $entry .= '</cs:attribute>' . self::XML_END_LINE;
786
+
787
+ if ($nameCategories != ' ') {
788
+ $attributeWeight = 0;
789
+ $entry .= '<cs:attribute name="categories" type="text" text_search="N" weight="' . $attributeWeight . '">';
790
+ $entry .= $nameCategories;
791
+ $entry .= '</cs:attribute>' . self::XML_END_LINE;
792
+ }
793
  }
794
  // </categories>
795
+
 
 
 
 
 
 
 
 
796
  // <tags>
797
  {
798
  $strTagIds = '';
1158
 
1159
  public static function generateFacetXMLCategories()
1160
  {
1161
+ return self::generateFacetXMLFromCustom('Category', 0, 'category_ids', 'select');
1162
  }
1163
 
1164
  public static function generateFacetXMLPrices($store = null)
app/code/community/Simtech/Searchanise/Helper/Data.php CHANGED
@@ -359,9 +359,9 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
359
 
360
  if (!empty($arrCat)) {
361
  if (is_array($arrCat)) {
362
- $params['restrictBy']['categories'] = implode('|', $arrCat);
363
  } else {
364
- $params['restrictBy']['categories'] = $arrCat;
365
  }
366
  }
367
  }
@@ -384,7 +384,7 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
384
  if (!empty($requestParams)) {
385
  foreach ($requestParams as $name => $val) {
386
  $id = array_search($name, $arrAttributes);
387
- if (($name) && ($id)) {
388
  $labelAttribute = 'attribute_' . $id;
389
 
390
  if ($name == 'price') {
@@ -406,7 +406,7 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
406
  $val = Mage::helper('searchanise/ApiSe')->escapingCharacters($val);
407
 
408
  if ($val != '') {
409
- $params['queryBy'][$labelAttribute] = $val;
410
  }
411
  }
412
 
359
 
360
  if (!empty($arrCat)) {
361
  if (is_array($arrCat)) {
362
+ $params['restrictBy']['category_ids'] = implode('|', $arrCat);
363
  } else {
364
+ $params['restrictBy']['category_ids'] = $arrCat;
365
  }
366
  }
367
  }
384
  if (!empty($requestParams)) {
385
  foreach ($requestParams as $name => $val) {
386
  $id = array_search($name, $arrAttributes);
387
+ if ($name && $id) {
388
  $labelAttribute = 'attribute_' . $id;
389
 
390
  if ($name == 'price') {
406
  $val = Mage::helper('searchanise/ApiSe')->escapingCharacters($val);
407
 
408
  if ($val != '') {
409
+ $params['queryBy'][$arrAttributes[$id]] = $val;
410
  }
411
  }
412
 
app/code/community/Simtech/Searchanise/Model/Request.php CHANGED
@@ -330,6 +330,8 @@ class Simtech_Searchanise_Model_Request extends Mage_Core_Model_Abstract
330
  Mage::helper('searchanise/ApiSe')->queueImport($this->getStore(), false);
331
  } elseif ($result['error'] == 'NAVIGATION_DISABLED') {
332
  Mage::helper('searchanise/ApiSe')->setUseNavigation(false);
 
 
333
  }
334
 
335
  Mage::helper('searchanise/ApiSe')->log($result['error']);
@@ -540,7 +542,7 @@ class Simtech_Searchanise_Model_Request extends Mage_Core_Model_Abstract
540
  Mage::helper('searchanise/ApiSe')->getAllChildrenCategories($arr_cat, $category);
541
 
542
  foreach ($res['facets'] as $facet) {
543
- if ($facet['attribute'] == 'categories') {
544
  if (!empty($facet['buckets'])) {
545
  foreach ($facet['buckets'] as $bucket) {
546
  if (in_array($bucket['value'], $arr_cat)) {
330
  Mage::helper('searchanise/ApiSe')->queueImport($this->getStore(), false);
331
  } elseif ($result['error'] == 'NAVIGATION_DISABLED') {
332
  Mage::helper('searchanise/ApiSe')->setUseNavigation(false);
333
+ } elseif ($result['error'] == 'FULL_FEED_DISABLED') {
334
+ Mage::helper('searchanise/ApiSe')->setUseFullFeed(false);
335
  }
336
 
337
  Mage::helper('searchanise/ApiSe')->log($result['error']);
542
  Mage::helper('searchanise/ApiSe')->getAllChildrenCategories($arr_cat, $category);
543
 
544
  foreach ($res['facets'] as $facet) {
545
+ if ($facet['attribute'] == 'category_ids') {
546
  if (!empty($facet['buckets'])) {
547
  foreach ($facet['buckets'] as $bucket) {
548
  if (in_array($bucket['value'], $arr_cat)) {
app/code/community/Simtech/Searchanise/controllers/InfoController.php CHANGED
@@ -156,6 +156,8 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
156
  $options['ajax_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkAjaxAsync();
157
  $options['object_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkObjectAsync();
158
 
 
 
159
  $options['max_execution_time'] = ini_get('max_execution_time');
160
  @set_time_limit(0);
161
  $options['max_execution_time_after'] = ini_get('max_execution_time');
156
  $options['ajax_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkAjaxAsync();
157
  $options['object_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkObjectAsync();
158
 
159
+ $options['use_full_feed'] = Mage::helper('searchanise/ApiSe')->getUseFullFeed();
160
+
161
  $options['max_execution_time'] = ini_get('max_execution_time');
162
  @set_time_limit(0);
163
  $options['max_execution_time_after'] = ini_get('max_execution_time');
app/code/community/Simtech/Searchanise/controllers/OptionsController.php CHANGED
@@ -14,6 +14,7 @@
14
  class Simtech_Searchanise_OptionsController extends Mage_Adminhtml_Controller_Action
15
  {
16
  const PARAM_USE_NAVIGATION = 'snize_use_navigation';
 
17
 
18
  /*
19
  * options
@@ -21,8 +22,15 @@ class Simtech_Searchanise_OptionsController extends Mage_Adminhtml_Controller_Ac
21
  public function indexAction()
22
  {
23
  $useNavigation = $this->getRequest()->getParam(self::PARAM_USE_NAVIGATION);
24
- Mage::helper('searchanise/ApiSe')->setUseNavigation($useNavigation == 'true' ? true : false);
 
 
25
 
 
 
 
 
 
26
  exit;
27
  }
28
  }
14
  class Simtech_Searchanise_OptionsController extends Mage_Adminhtml_Controller_Action
15
  {
16
  const PARAM_USE_NAVIGATION = 'snize_use_navigation';
17
+ const PARAM_USE_FULL_FEED = 'snize_use_full_feed';
18
 
19
  /*
20
  * options
22
  public function indexAction()
23
  {
24
  $useNavigation = $this->getRequest()->getParam(self::PARAM_USE_NAVIGATION);
25
+ if ($useNavigation != '') {
26
+ Mage::helper('searchanise/ApiSe')->setUseNavigation($useNavigation == 'true' ? true : false);
27
+ }
28
 
29
+ $useFullFeed = $this->getRequest()->getParam(self::PARAM_USE_FULL_FEED);
30
+ if ($useFullFeed != '') {
31
+ Mage::helper('searchanise/ApiSe')->setUseFullFeed($useFullFeed == 'true' ? true : false);
32
+ }
33
+
34
  exit;
35
  }
36
  }
app/code/community/Simtech/Searchanise/etc/config.xml CHANGED
@@ -15,7 +15,7 @@
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
- <version>2.0.0</version>
19
  </Simtech_Searchanise>
20
  </modules>
21
  <frontend>
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
+ <version>2.0.1</version>
19
  </Simtech_Searchanise>
20
  </modules>
21
  <frontend>
app/code/community/Simtech/Searchanise/etc/config_without_search.xml CHANGED
@@ -15,7 +15,7 @@
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
- <version>2.0.0</version>
19
  </Simtech_Searchanise>
20
  </modules>
21
  <frontend>
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
+ <version>2.0.1</version>
19
  </Simtech_Searchanise>
20
  </modules>
21
  <frontend>
app/design/adminhtml/default/default/template/searchanise/dashboard.phtml CHANGED
@@ -64,12 +64,13 @@
64
  echo "LangCode: '{$store->getCode()}',";
65
  echo "ExportStatus: '{$exportStatus}',";
66
  echo 'PriceFormat: {';
67
- echo 'symbol: "' . addslashes($priceFormat['symbol']) . '",';
68
- echo "rate : '{$priceFormat['rate']}',";
69
- echo "decimals: '{$priceFormat['decimals']}',";
70
- echo "decimals_separator: '{$priceFormat['decimals_separator']}',";
71
- echo "thousands_separator: '{$priceFormat['thousands_separator']}',";
72
- echo "after: {$priceFormat['after']}";
 
73
  echo '}';
74
  echo '});';
75
  }
64
  echo "LangCode: '{$store->getCode()}',";
65
  echo "ExportStatus: '{$exportStatus}',";
66
  echo 'PriceFormat: {';
67
+ echo "decimals_separator: '" . addslashes($priceFormat['decimals_separator']) . "',";
68
+ echo "thousands_separator: '" . addslashes($priceFormat['thousands_separator']) . "',";
69
+ echo 'symbol: "' . addslashes($priceFormat['symbol']) . '",';
70
+
71
+ echo "decimals: '{$priceFormat['decimals']}',";
72
+ echo "rate: '{$priceFormat['rate']}',";
73
+ echo "after: {$priceFormat['after']}";
74
  echo '}';
75
  echo '});';
76
  }
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Simtech_Searchanise</name>
4
- <version>2.0.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://docs.searchanise.com/connector_addon/license_agreement.html">Commercial license: http://docs.searchanise.com/connector_addon/license_agreement.html</license>
7
  <channel>community</channel>
@@ -10,18 +10,14 @@
10
  <description>Searchanise is a free SaaS solution providing fast and smart search for online stores. It provides rapid search results and instant search suggestions presented in a fancy and customizable widget.&#xD;
11
  &#xD;
12
  With the help of Searchanise Connector Add-on you will be able to connect your store to the service and start using the search widget in no time. Power up your store right now!</description>
13
- <notes>New features:&lt;br /&gt;&#xD;
14
- - Improved configurated product support, child product attribute values are now taken into account for the parent product.&lt;br /&gt;&#xD;
15
- - Additional missing/invalid product check.&lt;br /&gt;&#xD;
16
- - Magento Enterprise support.&lt;br /&gt;&lt;br /&gt;&#xD;
17
- Improvements &amp; fixes:&lt;br /&gt;&#xD;
18
- - Products from a storefront could appear in another storefront search. Fixed.&lt;br /&gt;&#xD;
19
- - Searchanise admin panel could not work if the store title included the ' symbol. Fixed.&lt;br /&gt;&#xD;
20
- - Third-party extension compatibility improved (the file config_without_search.xml updated).</notes>
21
  <authors><author><name>Simbirsk Technologies, Ltd.</name><user>searchanise</user><email>sales@searchanise.com</email></author></authors>
22
- <date>2013-12-16</date>
23
- <time>13:02:47</time>
24
- <contents><target name="magecommunity"><dir name="Simtech"><dir name="Searchanise"><dir name="Block"><file name="Async.php" hash="bc97c98da15f5abbc1d8922ca477dc6d"/><file name="Autocomplete.php" hash="efc89ac3f897be3bc307fba6a36778f0"/><file name="Jsinit.php" hash="0cf9770f73064f571420283a0e4bdb8d"/><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="759854378cb8c35c37a8a7f44076194f"/></dir><file name="Result.php" hash="4e767e273ee21a38332ac226af878291"/></dir><file name="Result.php" hash="dec7b27ab9511c956680eb60eba9b95e"/></dir><dir name="Helper"><file name="ApiSe.php" hash="8aa645ebb27a884852c0dafc331d9cb7"/><file name="ApiXML.php" hash="3e4c73f3a3638fede64703fefaf860bd"/><file name="Data.php" hash="279067d8d4650b950ff5f8653577b925"/></dir><dir name="Model"><file name="Advanced.php" hash="2a22ebcf7ac75b54681ef8a27bad2e47"/><dir name="Config"><file name="Data.php" hash="ddc558d22208f0ebc1e4378c9d050022"/></dir><file name="Config.php" hash="00ca3c7955f3ff2283c636a2074b6f03"/><dir name="Import"><dir name="Entity"><file name="Product.php" hash="4997af528b36f0f576d1c01402e14b03"/></dir></dir><dir name="Layer"><dir name="Filter"><file name="Category.php" hash="e290ab29f2d50e1acbbbb37496150ea4"/><file name="Price.php" hash="743887b32bf012274ad8a371fff96411"/></dir></dir><file name="Layer.php" hash="3e8c975d649ae6e20fcc69d35779c97c"/><file name="LayerCatalogSearch.php" hash="42058e0552719902f3f40f91e816b460"/><dir name="Mysql4"><dir name="Advanced"><file name="Collection.php" hash="dd8c6f3cbb0621a5a7320f3104e68da6"/></dir><dir name="Config"><file name="Collection.php" hash="470218c1eb3f1cc1ca0e6d0e93e1b097"/></dir><file name="Config.php" hash="c95dc8ecd7ab4f955b6eaf4710ab960e"/><dir name="Fulltext"><file name="Collection.php" hash="5646955503a90020f87cfd861ac07e73"/></dir><dir name="Product"><file name="Collection.php" hash="28b478eb328502ce03e389404d9f54b5"/><file name="CollectionTag.php" hash="ea06ec75ee4d083f2b4232c5fe298f00"/></dir><dir name="Queue"><file name="Collection.php" hash="30ca0f8640bdc443deb94cd2e71010c8"/></dir><file name="Queue.php" hash="286351623e8f011a21519f8d9c3e3151"/><file name="Store.php" hash="0126a4291d7dad6641bf59abb0f64cc4"/></dir><file name="Observer.php" hash="5db27768e7d77ed7ddc63ae9f4c4308c"/><file name="Queue.php" hash="831f5ea7e57810f9c78d09659424e9a7"/><file name="Request.php" hash="af0f9a16a0dbc69ba76458eac802638b"/><dir name="Resource"><dir name="Advanced"><file name="Collection.php" hash="6744555254ba1c57f482504b5f16012a"/></dir><dir name="Eav"><dir name="Mysql4"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="05320757b9289edac4f15230cd06c0e1"/><file name="Price.php" hash="ed4e21a18c552e3a92b21ff6e8bc5d61"/></dir></dir><dir name="Product"><file name="Action.php" hash="006e3c8c775cf31a8b9c66fb934c9d2d"/></dir></dir></dir><dir name="Fulltext"><file name="Collection.php" hash="273467b2e39649fcd0a8eede59c5ab98"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="643a513735ac2a2ac9fba08ff1fa79a0"/><file name="Price.php" hash="15d7ab510b37655a148e077dcece13df"/></dir></dir><dir name="Product"><file name="Collection.php" hash="b7c9a1c2fc24ecf78a32fd0d9d46b120"/><file name="CollectionTag.php" hash="60f12d27d78426a8e04e01d2cbdadb48"/></dir><file name="Store.php" hash="dee8bb23b7fe48dc55e46e93f583699a"/></dir><file name="Searchanise.php" hash="0a03a35854470a310f075298c9a1abf2"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Searchanise"><file name="TypeAsync.php" hash="11d1aa481094ccbeab365b1fed33440d"/></dir></dir></dir></dir><dir name="Tag"><file name="Relation.php" hash="598f81fd8b2ac77baf24211c2ed03e55"/></dir></dir><dir name="controllers"><file name="AdvancedController.php" hash="5ea4f7fb3362d720462dc0a8e1f1497b"/><file name="AsyncController.php" hash="e1a7dd9debd00fb7df09804d99e56e9e"/><file name="CategoryController.php" hash="06eac1ad4730d42379f6bc6aae097427"/><file name="IndexController.php" hash="e3234ca51a7669741e29ff7c38789989"/><file name="InfoController.php" hash="cc27d668d8665468ae01e3017c806965"/><file name="OptionsController.php" hash="56785c8ea24472c2047268b2d9e8e878"/><file name="ProductController.php" hash="4cf4e991446a36ea34b7c1d350971e1a"/><file name="ResultController.php" hash="2c1d838a2897ffcbb8bc61743254e934"/><file name="ResyncController.php" hash="0612f929d375427326821dfc12186be8"/><file name="SignupController.php" hash="80f87a63d6272f98a068dde35f1d140e"/></dir><dir name="etc"><file name="config.xml" hash="7580ef477fd24172b069c5e9f21c09ce"/><file name="config_without_search.xml" hash="e47570f16d83339b3460a220f1e33997"/><file name="system.xml" hash="a006341e693571d11efaa9d289ebf7fa"/></dir><dir name="sql"><dir name="searchanise_setup"><file name="mysql4-install-0.1.0.php" hash="754324c8783e9cc24de86396e1587e73"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="searchanise"><file name="dashboard.phtml" hash="3401a5404ae62ba09d67bda091549fdd"/></dir></dir><dir name="layout"><file name="searchanise.xml" hash="68baa611d05db05f8816ea2a8260e961"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="searchanise.xml" hash="5e904fee02cbd42324a297d513b9f582"/></dir></dir></dir><dir name="default"><dir name="default"><dir name="template"><dir name="catalogsearch"><file name="form.mini.phtml" hash="fcf8e06e66801a36c96f20ca5d187123"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Simtech_Searchanise.xml" hash="04148681a6648bd370ab62140cbf2ad9"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Simtech_Searchanise.csv" hash="1bdb7fddc596dac1460bc3054c425187"/></dir></target></contents>
25
  <compatible/>
26
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
27
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Simtech_Searchanise</name>
4
+ <version>2.0.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://docs.searchanise.com/connector_addon/license_agreement.html">Commercial license: http://docs.searchanise.com/connector_addon/license_agreement.html</license>
7
  <channel>community</channel>
10
  <description>Searchanise is a free SaaS solution providing fast and smart search for online stores. It provides rapid search results and instant search suggestions presented in a fancy and customizable widget.&#xD;
11
  &#xD;
12
  With the help of Searchanise Connector Add-on you will be able to connect your store to the service and start using the search widget in no time. Power up your store right now!</description>
13
+ <notes>[+] More product attributes can be collected for better deal-aggregator export (e.g. Google Shopping).&lt;br /&gt;&#xD;
14
+ [*] Catalog data submitting speed improved.&lt;br /&gt;&#xD;
15
+ [!] Fixed an issue with currencies containing the "'" character, which could break the instant search widget and Searchanise admin panel.&lt;br /&gt;&#xD;
16
+ [*] Configured products support improved: extra data validation added.</notes>
 
 
 
 
17
  <authors><author><name>Simbirsk Technologies, Ltd.</name><user>searchanise</user><email>sales@searchanise.com</email></author></authors>
18
+ <date>2014-01-20</date>
19
+ <time>08:08:00</time>
20
+ <contents><target name="magecommunity"><dir name="Simtech"><dir name="Searchanise"><dir name="Block"><file name="Async.php" hash="bc97c98da15f5abbc1d8922ca477dc6d"/><file name="Autocomplete.php" hash="efc89ac3f897be3bc307fba6a36778f0"/><file name="Jsinit.php" hash="3cb0a3bd02858a6ce81d14dbc7b6042f"/><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="759854378cb8c35c37a8a7f44076194f"/></dir><file name="Result.php" hash="4e767e273ee21a38332ac226af878291"/></dir><file name="Result.php" hash="dec7b27ab9511c956680eb60eba9b95e"/></dir><dir name="Helper"><file name="ApiSe.php" hash="5f68ea5c944463c2bb7aac69c51f75cc"/><file name="ApiXML.php" hash="9f35543cb1edf6c8e13adae021abaf2e"/><file name="Data.php" hash="7c600b973ddaf87cd6a3d507bc6691c5"/></dir><dir name="Model"><file name="Advanced.php" hash="2a22ebcf7ac75b54681ef8a27bad2e47"/><dir name="Config"><file name="Data.php" hash="ddc558d22208f0ebc1e4378c9d050022"/></dir><file name="Config.php" hash="00ca3c7955f3ff2283c636a2074b6f03"/><dir name="Import"><dir name="Entity"><file name="Product.php" hash="4997af528b36f0f576d1c01402e14b03"/></dir></dir><dir name="Layer"><dir name="Filter"><file name="Category.php" hash="e290ab29f2d50e1acbbbb37496150ea4"/><file name="Price.php" hash="743887b32bf012274ad8a371fff96411"/></dir></dir><file name="Layer.php" hash="3e8c975d649ae6e20fcc69d35779c97c"/><file name="LayerCatalogSearch.php" hash="42058e0552719902f3f40f91e816b460"/><dir name="Mysql4"><dir name="Advanced"><file name="Collection.php" hash="dd8c6f3cbb0621a5a7320f3104e68da6"/></dir><dir name="Config"><file name="Collection.php" hash="470218c1eb3f1cc1ca0e6d0e93e1b097"/></dir><file name="Config.php" hash="c95dc8ecd7ab4f955b6eaf4710ab960e"/><dir name="Fulltext"><file name="Collection.php" hash="5646955503a90020f87cfd861ac07e73"/></dir><dir name="Product"><file name="Collection.php" hash="28b478eb328502ce03e389404d9f54b5"/><file name="CollectionTag.php" hash="ea06ec75ee4d083f2b4232c5fe298f00"/></dir><dir name="Queue"><file name="Collection.php" hash="30ca0f8640bdc443deb94cd2e71010c8"/></dir><file name="Queue.php" hash="286351623e8f011a21519f8d9c3e3151"/><file name="Store.php" hash="0126a4291d7dad6641bf59abb0f64cc4"/></dir><file name="Observer.php" hash="5db27768e7d77ed7ddc63ae9f4c4308c"/><file name="Queue.php" hash="831f5ea7e57810f9c78d09659424e9a7"/><file name="Request.php" hash="4bcc67cae33aa9d173e9c414a0367488"/><dir name="Resource"><dir name="Advanced"><file name="Collection.php" hash="6744555254ba1c57f482504b5f16012a"/></dir><dir name="Eav"><dir name="Mysql4"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="05320757b9289edac4f15230cd06c0e1"/><file name="Price.php" hash="ed4e21a18c552e3a92b21ff6e8bc5d61"/></dir></dir><dir name="Product"><file name="Action.php" hash="006e3c8c775cf31a8b9c66fb934c9d2d"/></dir></dir></dir><dir name="Fulltext"><file name="Collection.php" hash="273467b2e39649fcd0a8eede59c5ab98"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="643a513735ac2a2ac9fba08ff1fa79a0"/><file name="Price.php" hash="15d7ab510b37655a148e077dcece13df"/></dir></dir><dir name="Product"><file name="Collection.php" hash="b7c9a1c2fc24ecf78a32fd0d9d46b120"/><file name="CollectionTag.php" hash="60f12d27d78426a8e04e01d2cbdadb48"/></dir><file name="Store.php" hash="dee8bb23b7fe48dc55e46e93f583699a"/></dir><file name="Searchanise.php" hash="0a03a35854470a310f075298c9a1abf2"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Searchanise"><file name="TypeAsync.php" hash="11d1aa481094ccbeab365b1fed33440d"/></dir></dir></dir></dir><dir name="Tag"><file name="Relation.php" hash="598f81fd8b2ac77baf24211c2ed03e55"/></dir></dir><dir name="controllers"><file name="AdvancedController.php" hash="5ea4f7fb3362d720462dc0a8e1f1497b"/><file name="AsyncController.php" hash="e1a7dd9debd00fb7df09804d99e56e9e"/><file name="CategoryController.php" hash="06eac1ad4730d42379f6bc6aae097427"/><file name="IndexController.php" hash="e3234ca51a7669741e29ff7c38789989"/><file name="InfoController.php" hash="ab8556ae00d6b807994565acc237553b"/><file name="OptionsController.php" hash="46b8e49dd1026a5e07410b51d101d498"/><file name="ProductController.php" hash="4cf4e991446a36ea34b7c1d350971e1a"/><file name="ResultController.php" hash="2c1d838a2897ffcbb8bc61743254e934"/><file name="ResyncController.php" hash="0612f929d375427326821dfc12186be8"/><file name="SignupController.php" hash="80f87a63d6272f98a068dde35f1d140e"/></dir><dir name="etc"><file name="config.xml" hash="fcae27310305390a96f7fd2f7882091b"/><file name="config_without_search.xml" hash="48706176e1080dfab63f8a6102e70edf"/><file name="system.xml" hash="a006341e693571d11efaa9d289ebf7fa"/></dir><dir name="sql"><dir name="searchanise_setup"><file name="mysql4-install-0.1.0.php" hash="754324c8783e9cc24de86396e1587e73"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="searchanise"><file name="dashboard.phtml" hash="0ec8814b915e8594b019062c071cc485"/></dir></dir><dir name="layout"><file name="searchanise.xml" hash="68baa611d05db05f8816ea2a8260e961"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="searchanise.xml" hash="5e904fee02cbd42324a297d513b9f582"/></dir></dir></dir><dir name="default"><dir name="default"><dir name="template"><dir name="catalogsearch"><file name="form.mini.phtml" hash="fcf8e06e66801a36c96f20ca5d187123"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Simtech_Searchanise.xml" hash="04148681a6648bd370ab62140cbf2ad9"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Simtech_Searchanise.csv" hash="1bdb7fddc596dac1460bc3054c425187"/></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
23
  </package>