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 +7 -6
- app/code/community/Simtech/Searchanise/Helper/ApiSe.php +12 -3
- app/code/community/Simtech/Searchanise/Helper/ApiXML.php +185 -106
- app/code/community/Simtech/Searchanise/Helper/Data.php +4 -4
- app/code/community/Simtech/Searchanise/Model/Request.php +3 -1
- app/code/community/Simtech/Searchanise/controllers/InfoController.php +2 -0
- app/code/community/Simtech/Searchanise/controllers/OptionsController.php +9 -1
- app/code/community/Simtech/Searchanise/etc/config.xml +1 -1
- app/code/community/Simtech/Searchanise/etc/config_without_search.xml +1 -1
- app/design/adminhtml/default/default/template/searchanise/dashboard.phtml +7 -6
- package.xml +8 -12
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 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
|
|
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
|
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 -
|
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 |
-
|
554 |
-
|
555 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 ($
|
569 |
-
|
570 |
-
|
571 |
-
$
|
572 |
-
|
573 |
-
$
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
$
|
579 |
-
|
580 |
-
$
|
581 |
-
|
582 |
-
$
|
583 |
-
|
584 |
-
|
585 |
-
|
|
|
|
|
586 |
}
|
587 |
-
}
|
588 |
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
|
|
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 |
-
$
|
649 |
-
if ($isSearchable) {
|
650 |
-
$attributeWeight = self::WEIGHT_SELECT_ATTRIBUTES;
|
651 |
$strTextValues = self::getTextAttributesValuesXML($unitedProducts, $attributeCode);
|
652 |
-
}
|
653 |
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
|
|
|
|
|
|
|
|
|
|
662 |
}
|
663 |
-
//
|
664 |
|
665 |
} elseif ($inputType == 'text' || $inputType == 'textarea') {
|
666 |
-
if ($
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
$
|
671 |
-
|
672 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
673 |
}
|
674 |
}
|
675 |
-
|
676 |
-
if ($
|
677 |
-
$
|
678 |
-
|
679 |
-
|
680 |
-
$entry .= ' ';
|
681 |
-
// end fixme
|
682 |
-
$entry .= $strTextValues;
|
683 |
$entry .= '</cs:attribute>' . self::XML_END_LINE;
|
684 |
}
|
685 |
-
|
|
|
|
|
|
|
686 |
} else {
|
687 |
-
//
|
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="
|
697 |
-
//
|
|
|
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, '
|
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']['
|
363 |
} else {
|
364 |
-
$params['restrictBy']['
|
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 (
|
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'][$
|
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'] == '
|
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 |
-
|
|
|
|
|
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.
|
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.
|
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 '
|
68 |
-
echo "
|
69 |
-
echo "
|
70 |
-
|
71 |
-
echo "
|
72 |
-
echo "
|
|
|
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.
|
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.
|
11 |

|
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>
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
Improvements & fixes:<br />
|
18 |
-
- Products from a storefront could appear in another storefront search. Fixed.<br />
|
19 |
-
- Searchanise admin panel could not work if the store title included the ' symbol. Fixed.<br />
|
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>
|
23 |
-
<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="
|
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.
|
11 |

|
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).<br />
|
14 |
+
[*] Catalog data submitting speed improved.<br />
|
15 |
+
[!] Fixed an issue with currencies containing the "'" character, which could break the instant search widget and Searchanise admin panel.<br />
|
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>
|