Version Notes
[+] Third-party module compatibility improved.
[+] Tax support for bundle products added.
[!] Fixed: server sync could interrupt if products tag contained the & character.
[!] Fixed: error occured when the group product prices was obtained.
[!] Fixed: incorrect global attribute values could be sent on data submission. Fixed.
[*] General improvement of the data submission routine.
Download this release
Release Info
| Developer | Simbirsk Technologies, Ltd. |
| Extension | Simtech_Searchanise |
| Version | 1.1.5 |
| Comparing to | |
| See all releases | |
Code changes from version 1.1.4 to 1.1.5
app/code/community/Simtech/Searchanise/Helper/ApiXML.php
CHANGED
|
@@ -207,30 +207,50 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 207 |
}
|
| 208 |
|
| 209 |
/**
|
| 210 |
-
* Get product
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 211 |
*
|
| 212 |
* @param Mage_Catalog_Model_Product $product
|
| 213 |
* @param Mage_Core_Model_Store $store
|
| 214 |
* @param bool $flagWithChildrenProducts
|
|
|
|
|
|
|
| 215 |
* @return float
|
| 216 |
*/
|
| 217 |
-
private static function getProductMinimalPrice($product, $store, $flagWithChildrenProducts = true, $customerGroupId = null)
|
| 218 |
{
|
| 219 |
$minimalPrice = '';
|
| 220 |
-
// The "getMinimalPrice" function gets price with "Tier Price" (quantity discount)
|
| 221 |
-
// $minimalPrice = $product->getMinimalPrice();
|
| 222 |
|
| 223 |
-
if ($
|
| 224 |
$minimalPrice = $product->getFinalPrice();
|
|
|
|
|
|
|
| 225 |
}
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
$showPricesTax = ($taxHelper->displayPriceIncludingTax() || $taxHelper->displayBothPrices());
|
| 230 |
-
$minimalPrice = $taxHelper->getPrice($product, $product->getFinalPrice(), $showPricesTax);
|
| 231 |
-
|
| 232 |
if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) {
|
| 233 |
-
$_priceModel
|
| 234 |
if ($_priceModel) {
|
| 235 |
// [1.5]
|
| 236 |
if (version_compare(Mage::getVersion(), '1.6', '<')) {
|
|
@@ -240,7 +260,8 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 240 |
} else {
|
| 241 |
$minimalPrice = $_priceModel->getTotalPrices($product, 'min', null, false);
|
| 242 |
}
|
| 243 |
-
// [/1.6] [/1.7]
|
|
|
|
| 244 |
}
|
| 245 |
|
| 246 |
} elseif ($flagWithChildrenProducts) {
|
|
@@ -301,40 +322,54 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 301 |
$productUrl = $product->getProductUrl(false);
|
| 302 |
$productUrl = Mage::helper('searchanise/ApiSe')->changeAmpersand($productUrl);
|
| 303 |
$entry .= '<link href="' . $productUrl . '" />' . self::XML_END_LINE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 304 |
|
| 305 |
-
|
| 306 |
-
|
| 307 |
-
|
| 308 |
-
|
| 309 |
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
|
|
|
|
|
|
|
| 313 |
|
| 314 |
-
|
| 315 |
-
|
| 316 |
-
foreach ($productsCustomerGroup as $productCustomerGroup) {
|
| 317 |
-
$price = self::getProductMinimalPrice($productCustomerGroup, $store, true, $customerGroup->getId());
|
| 318 |
-
break;
|
| 319 |
}
|
| 320 |
-
} else {
|
| 321 |
-
$price = self::getProductMinimalPrice($product, $store, true, $customerGroup->getId());
|
| 322 |
}
|
| 323 |
|
| 324 |
-
if
|
| 325 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 326 |
}
|
| 327 |
|
| 328 |
if ($customerGroup->getId() == Mage_Customer_Model_Group::NOT_LOGGED_IN_ID) {
|
| 329 |
$entry .= '<cs:price>' . $price . '</cs:price>'. self::XML_END_LINE;
|
| 330 |
-
$defaultPrice = $price; //
|
| 331 |
}
|
| 332 |
$label_ = Mage::helper('searchanise/ApiSe')->getLabelForPricesUsergroup() . $customerGroup->getId();
|
| 333 |
$entry .= '<cs:attribute name="' . $label_ . '" type="float">' . $price . '</cs:attribute>' . self::XML_END_LINE;
|
| 334 |
}
|
| 335 |
}
|
| 336 |
-
|
| 337 |
-
$entry .= '<cs:product_code><![CDATA[' . $product->getSku() . ']]></cs:product_code>' . self::XML_END_LINE;
|
| 338 |
|
| 339 |
// <quantity>
|
| 340 |
{
|
|
@@ -384,7 +419,7 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 384 |
$attributes = Mage::getResourceModel('catalog/product_attribute_collection');
|
| 385 |
$attributes
|
| 386 |
->setItemObjectClass('catalog/resource_eav_attribute')
|
| 387 |
-
// ->setOrder('position', 'ASC') // not need, because
|
| 388 |
->load();
|
| 389 |
|
| 390 |
if (!empty($attributes)) {
|
|
@@ -614,7 +649,7 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 614 |
foreach ($tags as $tag) {
|
| 615 |
if ($tag != '') {
|
| 616 |
$strTagIds .= '<value>' . $tag->getId() . '</value>';
|
| 617 |
-
$strTagNames .= '<value
|
| 618 |
}
|
| 619 |
}
|
| 620 |
}
|
|
@@ -743,7 +778,8 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 743 |
return $entry;
|
| 744 |
}
|
| 745 |
|
| 746 |
-
|
|
|
|
| 747 |
{
|
| 748 |
// Need for generate correct url and get right products.
|
| 749 |
if ($store) {
|
|
@@ -751,38 +787,92 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 751 |
} else {
|
| 752 |
Mage::app()->setCurrentStore(0);
|
| 753 |
}
|
| 754 |
-
|
| 755 |
-
$products = Mage::getModel('catalog/product')
|
| 756 |
-
->getCollection()
|
| 757 |
-
->addAttributeToSelect('*')
|
| 758 |
-
->addUrlRewrite();
|
| 759 |
|
| 760 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 761 |
if ($store) {
|
| 762 |
-
$
|
| 763 |
-
}
|
| 764 |
-
|
|
|
|
| 765 |
}
|
|
|
|
|
|
|
| 766 |
}
|
| 767 |
-
|
| 768 |
-
|
| 769 |
-
|
| 770 |
-
|
| 771 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 772 |
} else {
|
| 773 |
-
|
| 774 |
}
|
| 775 |
-
|
|
|
|
|
|
|
| 776 |
if (!empty($productIds)) {
|
| 777 |
-
|
| 778 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 779 |
}
|
| 780 |
|
| 781 |
-
if ($
|
| 782 |
-
$products
|
| 783 |
-
|
| 784 |
|
| 785 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 786 |
|
| 787 |
return $products;
|
| 788 |
}
|
|
@@ -793,21 +883,21 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 793 |
$ret = '';
|
| 794 |
|
| 795 |
$products = self::getProducts($productIds, $store, $flagAddMinimalPrice);
|
| 796 |
-
$arrProduct = $products->toArray();
|
| 797 |
|
| 798 |
// fixme, need delete
|
| 799 |
// additional check for products without minimal price
|
| 800 |
// deprecated, because use only $flagAddMinimalPrice = false in current module
|
| 801 |
if ($flagAddMinimalPrice === true) {
|
| 802 |
-
if (
|
| 803 |
return self::generateProductsXML($productIds, $store, false);
|
| 804 |
}
|
| 805 |
$products2 = self::getProducts($productIds, $store, false);
|
| 806 |
$arrProduct2 = $products2->toArray();
|
| 807 |
-
if (count($
|
| 808 |
$additionalProductsIds = array();
|
| 809 |
-
foreach ($
|
| 810 |
-
|
|
|
|
| 811 |
$additionalProductsIds[] = $productId;
|
| 812 |
}
|
| 813 |
}
|
|
@@ -824,7 +914,7 @@ class Simtech_Searchanise_Helper_ApiXML extends Mage_Core_Helper_Data
|
|
| 824 |
}
|
| 825 |
// end fixme
|
| 826 |
|
| 827 |
-
if (
|
| 828 |
foreach ($products as $product) {
|
| 829 |
$ret .= self::generateProductXML($product, $store);
|
| 830 |
}
|
| 207 |
}
|
| 208 |
|
| 209 |
/**
|
| 210 |
+
* Get product price with tax if it is need
|
| 211 |
+
*
|
| 212 |
+
* @param Mage_Catalog_Model_Product $product
|
| 213 |
+
* @param float $price
|
| 214 |
+
* @return float
|
| 215 |
+
*/
|
| 216 |
+
private static function getProductShowPrice($product, $price)
|
| 217 |
+
{
|
| 218 |
+
static $taxHelper;
|
| 219 |
+
static $showPricesTax;
|
| 220 |
+
|
| 221 |
+
if (!isset($taxHelper)) {
|
| 222 |
+
$taxHelper = Mage::helper('tax');
|
| 223 |
+
$showPricesTax = ($taxHelper->displayPriceIncludingTax() || $taxHelper->displayBothPrices());
|
| 224 |
+
}
|
| 225 |
+
|
| 226 |
+
$finalPrice = $taxHelper->getPrice($product, $price, $showPricesTax);
|
| 227 |
+
|
| 228 |
+
return $finalPrice;
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
/**
|
| 232 |
+
* Get product minimal price without "Tier Price" (quantity discount) and with tax (if it is need)
|
| 233 |
*
|
| 234 |
* @param Mage_Catalog_Model_Product $product
|
| 235 |
* @param Mage_Core_Model_Store $store
|
| 236 |
* @param bool $flagWithChildrenProducts
|
| 237 |
+
* @param int $customerGroupId
|
| 238 |
+
* @param float $groupPrice
|
| 239 |
* @return float
|
| 240 |
*/
|
| 241 |
+
private static function getProductMinimalPrice($product, $store, $flagWithChildrenProducts = true, $customerGroupId = null, $groupPrice = null)
|
| 242 |
{
|
| 243 |
$minimalPrice = '';
|
|
|
|
|
|
|
| 244 |
|
| 245 |
+
if ($groupPrice == null) {
|
| 246 |
$minimalPrice = $product->getFinalPrice();
|
| 247 |
+
} else {
|
| 248 |
+
$minimalPrice = $groupPrice;
|
| 249 |
}
|
| 250 |
+
$minimalPrice = self::getProductShowPrice($product, $minimalPrice);
|
| 251 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
| 252 |
if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) {
|
| 253 |
+
$_priceModel = $product->getPriceModel();
|
| 254 |
if ($_priceModel) {
|
| 255 |
// [1.5]
|
| 256 |
if (version_compare(Mage::getVersion(), '1.6', '<')) {
|
| 260 |
} else {
|
| 261 |
$minimalPrice = $_priceModel->getTotalPrices($product, 'min', null, false);
|
| 262 |
}
|
| 263 |
+
// [/1.6] [/1.7]
|
| 264 |
+
$minimalPrice = self::getProductShowPrice($product, $minimalPrice);
|
| 265 |
}
|
| 266 |
|
| 267 |
} elseif ($flagWithChildrenProducts) {
|
| 322 |
$productUrl = $product->getProductUrl(false);
|
| 323 |
$productUrl = Mage::helper('searchanise/ApiSe')->changeAmpersand($productUrl);
|
| 324 |
$entry .= '<link href="' . $productUrl . '" />' . self::XML_END_LINE;
|
| 325 |
+
$entry .= '<cs:product_code><![CDATA[' . $product->getSku() . ']]></cs:product_code>' . self::XML_END_LINE;
|
| 326 |
+
|
| 327 |
+
// <prices>
|
| 328 |
+
{
|
| 329 |
+
$defaultPrice = self::getProductMinimalPrice($product, $store, true);
|
| 330 |
+
if ($defaultPrice != '') {
|
| 331 |
+
$defaultPrice = round($defaultPrice, Mage::helper('searchanise/ApiSe')->getFloatPrecision());
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
$customerGroups = Mage::getModel('customer/group')->getCollection()->load();
|
| 335 |
+
// It is need for check run function getProductMinimalPrice for each customerGroup
|
| 336 |
+
$_groupPrices = $product->getData('group_price');
|
| 337 |
|
| 338 |
+
foreach ($customerGroups as $keCustomerGroup => $customerGroup) {
|
| 339 |
+
$customerGroupId = $customerGroup->getId();
|
| 340 |
+
$currentGroupPrice = null;
|
| 341 |
+
$price = $defaultPrice;
|
| 342 |
|
| 343 |
+
if ($_groupPrices) {
|
| 344 |
+
foreach ($_groupPrices as $keyGroupPrice => $groupPrice) {
|
| 345 |
+
if ($groupPrice['cust_group'] == $customerGroupId) {
|
| 346 |
+
$currentGroupPrice = $groupPrice['price'];
|
| 347 |
+
unset($_groupPrices[$keyGroupPrice]);
|
| 348 |
|
| 349 |
+
break;
|
| 350 |
+
}
|
|
|
|
|
|
|
|
|
|
| 351 |
}
|
|
|
|
|
|
|
| 352 |
}
|
| 353 |
|
| 354 |
+
// if CONFIGURABLE OR GROUPED OR BUNDLE - need because child product can have groupPrices
|
| 355 |
+
if (($product->getData('type_id') == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) ||
|
| 356 |
+
($product->isSuper()) ||
|
| 357 |
+
($currentGroupPrice != null)) {
|
| 358 |
+
$price = self::getProductMinimalPrice($product, $store, true, $customerGroupId, $currentGroupPrice);
|
| 359 |
+
if ($price != '') {
|
| 360 |
+
$price = round($price, Mage::helper('searchanise/ApiSe')->getFloatPrecision());
|
| 361 |
+
}
|
| 362 |
}
|
| 363 |
|
| 364 |
if ($customerGroup->getId() == Mage_Customer_Model_Group::NOT_LOGGED_IN_ID) {
|
| 365 |
$entry .= '<cs:price>' . $price . '</cs:price>'. self::XML_END_LINE;
|
| 366 |
+
$defaultPrice = $price; // default price get for not logged user
|
| 367 |
}
|
| 368 |
$label_ = Mage::helper('searchanise/ApiSe')->getLabelForPricesUsergroup() . $customerGroup->getId();
|
| 369 |
$entry .= '<cs:attribute name="' . $label_ . '" type="float">' . $price . '</cs:attribute>' . self::XML_END_LINE;
|
| 370 |
}
|
| 371 |
}
|
| 372 |
+
// </prices>
|
|
|
|
| 373 |
|
| 374 |
// <quantity>
|
| 375 |
{
|
| 419 |
$attributes = Mage::getResourceModel('catalog/product_attribute_collection');
|
| 420 |
$attributes
|
| 421 |
->setItemObjectClass('catalog/resource_eav_attribute')
|
| 422 |
+
// ->setOrder('position', 'ASC') // not need, because It will slow with "order"
|
| 423 |
->load();
|
| 424 |
|
| 425 |
if (!empty($attributes)) {
|
| 649 |
foreach ($tags as $tag) {
|
| 650 |
if ($tag != '') {
|
| 651 |
$strTagIds .= '<value>' . $tag->getId() . '</value>';
|
| 652 |
+
$strTagNames .= '<value><![CDATA[' . $tag->getName() . ']]></value>';
|
| 653 |
}
|
| 654 |
}
|
| 655 |
}
|
| 778 |
return $entry;
|
| 779 |
}
|
| 780 |
|
| 781 |
+
// public static function getProductsByItems($productIds, $store = null, $flagAddMinimalPrice = false, $customerGroupId = null)
|
| 782 |
+
public static function getProducts($productIds, $store = null, $flagAddMinimalPrice = false, $customerGroupId = null)
|
| 783 |
{
|
| 784 |
// Need for generate correct url and get right products.
|
| 785 |
if ($store) {
|
| 787 |
} else {
|
| 788 |
Mage::app()->setCurrentStore(0);
|
| 789 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 790 |
|
| 791 |
+
$products = array();
|
| 792 |
+
|
| 793 |
+
if (!is_array($productIds)) {
|
| 794 |
+
$productsIds = array($productIds);
|
| 795 |
+
}
|
| 796 |
+
|
| 797 |
+
foreach ($productIds as $key => $productId) {
|
| 798 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
| 799 |
+
|
| 800 |
if ($store) {
|
| 801 |
+
$product->setWebsiteId($store->getWebsiteId());
|
| 802 |
+
}
|
| 803 |
+
if ($customerGroupId != null) {
|
| 804 |
+
$product->setCustomerGroupId($customerGroupId);
|
| 805 |
}
|
| 806 |
+
|
| 807 |
+
$products[] = $product;
|
| 808 |
}
|
| 809 |
+
|
| 810 |
+
return $products;
|
| 811 |
+
}
|
| 812 |
+
|
| 813 |
+
public static function getProductsOld($productIds = null, $store = null, $flagAddMinimalPrice = false, $customerGroupId = null)
|
| 814 |
+
{
|
| 815 |
+
// Need for generate correct url and get right data.
|
| 816 |
+
if ($store) {
|
| 817 |
+
Mage::app()->setCurrentStore($store->getId());
|
| 818 |
} else {
|
| 819 |
+
Mage::app()->setCurrentStore(0);
|
| 820 |
}
|
| 821 |
+
|
| 822 |
+
$productId = 0;
|
| 823 |
+
|
| 824 |
if (!empty($productIds)) {
|
| 825 |
+
if (!is_array($productIds)) {
|
| 826 |
+
$productId = $productIds;
|
| 827 |
+
} elseif (is_array($productIds) && count($productIds) == 1){
|
| 828 |
+
$flGetOneProduct = true;
|
| 829 |
+
$productId = reset($productIds);
|
| 830 |
+
}
|
| 831 |
}
|
| 832 |
|
| 833 |
+
if (!empty($productId)) {
|
| 834 |
+
$products = array();
|
| 835 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
| 836 |
|
| 837 |
+
if ($customerGroupId != null) {
|
| 838 |
+
$product->setCustomerGroupId($customerGroupId);
|
| 839 |
+
}
|
| 840 |
+
|
| 841 |
+
$products[] = $product;
|
| 842 |
+
|
| 843 |
+
} else {
|
| 844 |
+
$products = Mage::getModel('catalog/product')
|
| 845 |
+
->getCollection()
|
| 846 |
+
->addAttributeToSelect('*')
|
| 847 |
+
->addUrlRewrite();
|
| 848 |
+
|
| 849 |
+
if ($customerGroupId != null) {
|
| 850 |
+
if ($store) {
|
| 851 |
+
$products->addPriceData($customerGroupId, $store->getWebsiteId());
|
| 852 |
+
} else {
|
| 853 |
+
$products->addPriceData($customerGroupId);
|
| 854 |
+
}
|
| 855 |
+
}
|
| 856 |
+
|
| 857 |
+
if (!empty($store)) {
|
| 858 |
+
$products
|
| 859 |
+
->setStoreId($store)
|
| 860 |
+
->addStoreFilter($store);
|
| 861 |
+
} else {
|
| 862 |
+
// nothing
|
| 863 |
+
}
|
| 864 |
+
|
| 865 |
+
if (!empty($productIds)) {
|
| 866 |
+
// Already exist automatic definition 'one value' or 'array'.
|
| 867 |
+
$products->addIdFilter($productIds);
|
| 868 |
+
}
|
| 869 |
+
|
| 870 |
+
if ($flagAddMinimalPrice == true) {
|
| 871 |
+
$products->addMinimalPrice();
|
| 872 |
+
}
|
| 873 |
+
|
| 874 |
+
$products->load();
|
| 875 |
+
}
|
| 876 |
|
| 877 |
return $products;
|
| 878 |
}
|
| 883 |
$ret = '';
|
| 884 |
|
| 885 |
$products = self::getProducts($productIds, $store, $flagAddMinimalPrice);
|
|
|
|
| 886 |
|
| 887 |
// fixme, need delete
|
| 888 |
// additional check for products without minimal price
|
| 889 |
// deprecated, because use only $flagAddMinimalPrice = false in current module
|
| 890 |
if ($flagAddMinimalPrice === true) {
|
| 891 |
+
if (!$products) {
|
| 892 |
return self::generateProductsXML($productIds, $store, false);
|
| 893 |
}
|
| 894 |
$products2 = self::getProducts($productIds, $store, false);
|
| 895 |
$arrProduct2 = $products2->toArray();
|
| 896 |
+
if (count($products2) > count($products)) {
|
| 897 |
$additionalProductsIds = array();
|
| 898 |
+
foreach ($products2 as $productId => $product) {
|
| 899 |
+
// fixme array_key_exists
|
| 900 |
+
if (!array_key_exists($productId, $products)) {
|
| 901 |
$additionalProductsIds[] = $productId;
|
| 902 |
}
|
| 903 |
}
|
| 914 |
}
|
| 915 |
// end fixme
|
| 916 |
|
| 917 |
+
if ($products) {
|
| 918 |
foreach ($products as $product) {
|
| 919 |
$ret .= self::generateProductXML($product, $store);
|
| 920 |
}
|
app/code/community/Simtech/Searchanise/controllers/InfoController.php
CHANGED
|
@@ -16,6 +16,7 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
|
|
| 16 |
{
|
| 17 |
const RESYNC = 'resync';
|
| 18 |
const OUTPUT = 'visual';
|
|
|
|
| 19 |
const STORE_ID = 'store_id';
|
| 20 |
const PRODUCT_ID = 'product_id';
|
| 21 |
const PRODUCT_IDS = 'product_ids';
|
|
@@ -28,7 +29,7 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
|
|
| 28 |
*/
|
| 29 |
public function preDispatch()
|
| 30 |
{
|
| 31 |
-
// It is need if
|
| 32 |
|
| 33 |
// Do not start standart session
|
| 34 |
$this->setFlag('', self::FLAG_NO_START_SESSION, 1);
|
|
@@ -48,6 +49,7 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
|
|
| 48 |
{
|
| 49 |
$resync = $this->getRequest()->getParam(self::RESYNC);
|
| 50 |
$visual = $this->getRequest()->getParam(self::OUTPUT);
|
|
|
|
| 51 |
$storeId = $this->getRequest()->getParam(self::STORE_ID);
|
| 52 |
$productId = $this->getRequest()->getParam(self::PRODUCT_ID);
|
| 53 |
$productIds = $this->getRequest()->getParam(self::PRODUCT_IDS);
|
|
@@ -55,6 +57,8 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
|
|
| 55 |
|
| 56 |
if ($productId) {
|
| 57 |
$productIds = array($productId);
|
|
|
|
|
|
|
| 58 |
}
|
| 59 |
|
| 60 |
if ((empty($parentPrivateKey)) ||
|
|
@@ -71,14 +75,48 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
|
|
| 71 |
echo Mage::helper('core')->jsonEncode($options);
|
| 72 |
}
|
| 73 |
} else {
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
Mage::helper('searchanise/ApiSe')->queueImport();
|
| 76 |
|
| 77 |
} elseif (!empty($productIds)) {
|
| 78 |
-
|
| 79 |
-
if (!empty($storeId)) {
|
| 80 |
-
$store = Mage::app()->getStore($storeId);
|
| 81 |
-
}
|
| 82 |
$productFeeds = Mage::helper('searchanise/ApiXML')->generateProductsXML($productIds, $store);
|
| 83 |
|
| 84 |
if ($visual) {
|
|
@@ -117,5 +155,49 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
|
|
| 117 |
}
|
| 118 |
|
| 119 |
die();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
}
|
| 121 |
}
|
| 16 |
{
|
| 17 |
const RESYNC = 'resync';
|
| 18 |
const OUTPUT = 'visual';
|
| 19 |
+
const PROFILER = 'profiler';
|
| 20 |
const STORE_ID = 'store_id';
|
| 21 |
const PRODUCT_ID = 'product_id';
|
| 22 |
const PRODUCT_IDS = 'product_ids';
|
| 29 |
*/
|
| 30 |
public function preDispatch()
|
| 31 |
{
|
| 32 |
+
// It is need if controller will used the "generateProductsXML" function
|
| 33 |
|
| 34 |
// Do not start standart session
|
| 35 |
$this->setFlag('', self::FLAG_NO_START_SESSION, 1);
|
| 49 |
{
|
| 50 |
$resync = $this->getRequest()->getParam(self::RESYNC);
|
| 51 |
$visual = $this->getRequest()->getParam(self::OUTPUT);
|
| 52 |
+
$profiler = $this->getRequest()->getParam(self::PROFILER);
|
| 53 |
$storeId = $this->getRequest()->getParam(self::STORE_ID);
|
| 54 |
$productId = $this->getRequest()->getParam(self::PRODUCT_ID);
|
| 55 |
$productIds = $this->getRequest()->getParam(self::PRODUCT_IDS);
|
| 57 |
|
| 58 |
if ($productId) {
|
| 59 |
$productIds = array($productId);
|
| 60 |
+
} elseif ($productIds) {
|
| 61 |
+
$productIds = explode(',', $productIds);
|
| 62 |
}
|
| 63 |
|
| 64 |
if ((empty($parentPrivateKey)) ||
|
| 75 |
echo Mage::helper('core')->jsonEncode($options);
|
| 76 |
}
|
| 77 |
} else {
|
| 78 |
+
$store = null;
|
| 79 |
+
if (!empty($storeId)) {
|
| 80 |
+
$store = Mage::app()->getStore($storeId);
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
if ($profiler) {
|
| 84 |
+
$numberIterations = 100;
|
| 85 |
+
$old = $this->getRequest()->getParam('old');
|
| 86 |
+
|
| 87 |
+
if (empty($productIds)) {
|
| 88 |
+
Mage::app()->setCurrentStore(0);
|
| 89 |
+
$allProductIds = Mage::getModel('catalog/product')->getCollection()->setPageSize($numberIterations)->load();
|
| 90 |
+
|
| 91 |
+
$productIds = array();
|
| 92 |
+
foreach ($allProductIds as $key => $value) {
|
| 93 |
+
$productIds [] = $value['entity_id'];
|
| 94 |
+
if (count($productIds) > $numberIterations) {
|
| 95 |
+
break;
|
| 96 |
+
}
|
| 97 |
+
}
|
| 98 |
+
$numberIterations = 1;
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
$n = 0;
|
| 102 |
+
while ($n < $numberIterations) {
|
| 103 |
+
if ($old == 'Y') {
|
| 104 |
+
$productFeeds = Mage::helper('searchanise/ApiXML')->generateProductsXML($productIds, $store);
|
| 105 |
+
// $products = Mage::helper('searchanise/ApiXML')->getProductsOld($productIds, $store);
|
| 106 |
+
} else {
|
| 107 |
+
$productFeeds = Mage::helper('searchanise/ApiXML')->generateProductsXML($productIds, $store);
|
| 108 |
+
// $products = Mage::helper('searchanise/ApiXML')->getProducts($productIds, $store);
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
$n++;
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
echo $this->_profiler();
|
| 115 |
+
} elseif ($resync) {
|
| 116 |
Mage::helper('searchanise/ApiSe')->queueImport();
|
| 117 |
|
| 118 |
} elseif (!empty($productIds)) {
|
| 119 |
+
|
|
|
|
|
|
|
|
|
|
| 120 |
$productFeeds = Mage::helper('searchanise/ApiXML')->generateProductsXML($productIds, $store);
|
| 121 |
|
| 122 |
if ($visual) {
|
| 155 |
}
|
| 156 |
|
| 157 |
die();
|
| 158 |
+
return $this;
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
protected function _profiler()
|
| 162 |
+
{
|
| 163 |
+
// if (!$this->_beforeToHtml()
|
| 164 |
+
// || !Mage::getStoreConfig('dev/debug/profiler')
|
| 165 |
+
// || !Mage::helper('core')->isDevAllowed()) {
|
| 166 |
+
// return '';
|
| 167 |
+
// }
|
| 168 |
+
|
| 169 |
+
$timers = Varien_Profiler::getTimers();
|
| 170 |
+
|
| 171 |
+
#$out = '<div style="position:fixed;bottom:5px;right:5px;opacity:.1;background:white" onmouseover="this.style.opacity=1" onmouseout="this.style.opacity=.1">';
|
| 172 |
+
#$out = '<div style="opacity:.1" onmouseover="this.style.opacity=1" onmouseout="this.style.opacity=.1">';
|
| 173 |
+
$out = "<a href=\"javascript:void(0)\" onclick=\"$('profiler_section').style.display=$('profiler_section').style.display==''?'none':''\">[profiler]</a>";
|
| 174 |
+
$out .= '<div id="profiler_section" style="background:white; display:block">';
|
| 175 |
+
$out .= '<pre>Memory usage: real: '.memory_get_usage(true).', emalloc: '.memory_get_usage().'</pre>';
|
| 176 |
+
$out .= '<table border="1" cellspacing="0" cellpadding="2" style="width:auto">';
|
| 177 |
+
$out .= '<tr><th>Code Profiler</th><th>Time</th><th>Cnt</th><th>Emalloc</th><th>RealMem</th></tr>';
|
| 178 |
+
foreach ($timers as $name=>$timer) {
|
| 179 |
+
$sum = Varien_Profiler::fetch($name,'sum');
|
| 180 |
+
$count = Varien_Profiler::fetch($name,'count');
|
| 181 |
+
$realmem = Varien_Profiler::fetch($name,'realmem');
|
| 182 |
+
$emalloc = Varien_Profiler::fetch($name,'emalloc');
|
| 183 |
+
if ($sum<.0010 && $count<10 && $emalloc<10000) {
|
| 184 |
+
continue;
|
| 185 |
+
}
|
| 186 |
+
$out .= '<tr>'
|
| 187 |
+
.'<td align="left">'.$name.'</td>'
|
| 188 |
+
.'<td>'.number_format($sum,4).'</td>'
|
| 189 |
+
.'<td align="right">'.$count.'</td>'
|
| 190 |
+
.'<td align="right">'.number_format($emalloc).'</td>'
|
| 191 |
+
.'<td align="right">'.number_format($realmem).'</td>'
|
| 192 |
+
.'</tr>'
|
| 193 |
+
;
|
| 194 |
+
}
|
| 195 |
+
$out .= '</table>';
|
| 196 |
+
$out .= '<pre>';
|
| 197 |
+
$out .= print_r(Varien_Profiler::getSqlProfiler(Mage::getSingleton('core/resource')->getConnection('core_write')), 1);
|
| 198 |
+
$out .= '</pre>';
|
| 199 |
+
$out .= '</div>';
|
| 200 |
+
|
| 201 |
+
return $out;
|
| 202 |
}
|
| 203 |
}
|
app/code/community/Simtech/Searchanise/etc/config.xml
CHANGED
|
@@ -15,12 +15,13 @@
|
|
| 15 |
<config>
|
| 16 |
<modules>
|
| 17 |
<Simtech_Searchanise>
|
| 18 |
-
<version>1.1.
|
| 19 |
</Simtech_Searchanise>
|
| 20 |
</modules>
|
| 21 |
<frontend>
|
| 22 |
<routers>
|
| 23 |
<!-- OVERRIDE CATALOG CONTOLLERS -->
|
|
|
|
| 24 |
<catalog>
|
| 25 |
<args>
|
| 26 |
<modules>
|
|
@@ -28,7 +29,9 @@
|
|
| 28 |
</modules>
|
| 29 |
</args>
|
| 30 |
</catalog>
|
|
|
|
| 31 |
<!-- OVERRIDE CATALOGSEARCH CONTOLLERS -->
|
|
|
|
| 32 |
<catalogsearch>
|
| 33 |
<args>
|
| 34 |
<modules>
|
|
@@ -36,7 +39,9 @@
|
|
| 36 |
</modules>
|
| 37 |
</args>
|
| 38 |
</catalogsearch>
|
|
|
|
| 39 |
<!-- OVERRIDE TAG CONTOLLERS -->
|
|
|
|
| 40 |
<tag>
|
| 41 |
<args>
|
| 42 |
<modules>
|
|
@@ -44,6 +49,7 @@
|
|
| 44 |
</modules>
|
| 45 |
</args>
|
| 46 |
</tag>
|
|
|
|
| 47 |
<!-- END -->
|
| 48 |
<searchanise>
|
| 49 |
<use>standard</use>
|
| 15 |
<config>
|
| 16 |
<modules>
|
| 17 |
<Simtech_Searchanise>
|
| 18 |
+
<version>1.1.5</version>
|
| 19 |
</Simtech_Searchanise>
|
| 20 |
</modules>
|
| 21 |
<frontend>
|
| 22 |
<routers>
|
| 23 |
<!-- OVERRIDE CATALOG CONTOLLERS -->
|
| 24 |
+
<!-- [disabled_searchanise_search] -->
|
| 25 |
<catalog>
|
| 26 |
<args>
|
| 27 |
<modules>
|
| 29 |
</modules>
|
| 30 |
</args>
|
| 31 |
</catalog>
|
| 32 |
+
<!-- [/disabled_searchanise_search] -->
|
| 33 |
<!-- OVERRIDE CATALOGSEARCH CONTOLLERS -->
|
| 34 |
+
<!-- [disabled_searchanise_search] -->
|
| 35 |
<catalogsearch>
|
| 36 |
<args>
|
| 37 |
<modules>
|
| 39 |
</modules>
|
| 40 |
</args>
|
| 41 |
</catalogsearch>
|
| 42 |
+
<!-- [/disabled_searchanise_search] -->
|
| 43 |
<!-- OVERRIDE TAG CONTOLLERS -->
|
| 44 |
+
<!-- [disabled_searchanise_search] -->
|
| 45 |
<tag>
|
| 46 |
<args>
|
| 47 |
<modules>
|
| 49 |
</modules>
|
| 50 |
</args>
|
| 51 |
</tag>
|
| 52 |
+
<!-- [/disabled_searchanise_search] -->
|
| 53 |
<!-- END -->
|
| 54 |
<searchanise>
|
| 55 |
<use>standard</use>
|
app/code/community/Simtech/Searchanise/etc/config_without_search.xml
CHANGED
|
@@ -15,35 +15,41 @@
|
|
| 15 |
<config>
|
| 16 |
<modules>
|
| 17 |
<Simtech_Searchanise>
|
| 18 |
-
<version>1.1.
|
| 19 |
</Simtech_Searchanise>
|
| 20 |
</modules>
|
| 21 |
<frontend>
|
| 22 |
<routers>
|
| 23 |
<!-- OVERRIDE CATALOG CONTOLLERS -->
|
| 24 |
-
|
|
|
|
| 25 |
<args>
|
| 26 |
<modules>
|
| 27 |
<Simtech_Searchanise before="Mage_Catalog">Simtech_Searchanise</Simtech_Searchanise>
|
| 28 |
</modules>
|
| 29 |
</args>
|
| 30 |
-
</catalog>
|
|
|
|
| 31 |
<!-- OVERRIDE CATALOGSEARCH CONTOLLERS -->
|
| 32 |
-
|
|
|
|
| 33 |
<args>
|
| 34 |
<modules>
|
| 35 |
<Simtech_Searchanise before="Mage_CatalogSearch">Simtech_Searchanise</Simtech_Searchanise>
|
| 36 |
</modules>
|
| 37 |
</args>
|
| 38 |
-
</catalogsearch>
|
|
|
|
| 39 |
<!-- OVERRIDE TAG CONTOLLERS -->
|
| 40 |
-
|
|
|
|
| 41 |
<args>
|
| 42 |
<modules>
|
| 43 |
<Simtech_Searchanise before="Mage_Tag">Simtech_Searchanise</Simtech_Searchanise>
|
| 44 |
</modules>
|
| 45 |
</args>
|
| 46 |
-
</tag>
|
|
|
|
| 47 |
<!-- END -->
|
| 48 |
<searchanise>
|
| 49 |
<use>standard</use>
|
| 15 |
<config>
|
| 16 |
<modules>
|
| 17 |
<Simtech_Searchanise>
|
| 18 |
+
<version>1.1.5</version>
|
| 19 |
</Simtech_Searchanise>
|
| 20 |
</modules>
|
| 21 |
<frontend>
|
| 22 |
<routers>
|
| 23 |
<!-- OVERRIDE CATALOG CONTOLLERS -->
|
| 24 |
+
<!-- [disabled_searchanise_search] -->
|
| 25 |
+
<!-- <catalog>
|
| 26 |
<args>
|
| 27 |
<modules>
|
| 28 |
<Simtech_Searchanise before="Mage_Catalog">Simtech_Searchanise</Simtech_Searchanise>
|
| 29 |
</modules>
|
| 30 |
</args>
|
| 31 |
+
</catalog> -->
|
| 32 |
+
<!-- [/disabled_searchanise_search] -->
|
| 33 |
<!-- OVERRIDE CATALOGSEARCH CONTOLLERS -->
|
| 34 |
+
<!-- [disabled_searchanise_search] -->
|
| 35 |
+
<!-- <catalogsearch>
|
| 36 |
<args>
|
| 37 |
<modules>
|
| 38 |
<Simtech_Searchanise before="Mage_CatalogSearch">Simtech_Searchanise</Simtech_Searchanise>
|
| 39 |
</modules>
|
| 40 |
</args>
|
| 41 |
+
</catalogsearch> -->
|
| 42 |
+
<!-- [/disabled_searchanise_search] -->
|
| 43 |
<!-- OVERRIDE TAG CONTOLLERS -->
|
| 44 |
+
<!-- [disabled_searchanise_search] -->
|
| 45 |
+
<!-- <tag>
|
| 46 |
<args>
|
| 47 |
<modules>
|
| 48 |
<Simtech_Searchanise before="Mage_Tag">Simtech_Searchanise</Simtech_Searchanise>
|
| 49 |
</modules>
|
| 50 |
</args>
|
| 51 |
+
</tag> -->
|
| 52 |
+
<!-- [/disabled_searchanise_search] -->
|
| 53 |
<!-- END -->
|
| 54 |
<searchanise>
|
| 55 |
<use>standard</use>
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Simtech_Searchanise</name>
|
| 4 |
-
<version>1.1.
|
| 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,25 +10,16 @@
|
|
| 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 |
-
[
|
| 18 |
-
[
|
| 19 |
-
<br />
|
| 20 |
-
Fixes:<br />
|
| 21 |
-
[!] Price filter step could be calculated incorrectly. Fixed.<br />
|
| 22 |
-
[!] Server sync could stop if a product image was missing in the filesystem. Fixed.<br />
|
| 23 |
-
[!] Server sync could stop if a product link contained the & character.<br />
|
| 24 |
-
<br />
|
| 25 |
-
Other:<br />
|
| 26 |
-
[-] The cron sync init method has been hidden from the Magento admin panel. It can only be enabled by manually editing the config file.<br />
|
| 27 |
-
[~] Cron namespace changed from <cronjob_name></cronjob_name> to <searchanise_indexer></searchanise_indexer></notes>
|
| 28 |
<authors><author><name>Simbirsk Technologies, Ltd.</name><user>searchanise</user><email>sales@searchanise.com</email></author></authors>
|
| 29 |
-
<date>2013-
|
| 30 |
-
<time>
|
| 31 |
-
<contents><target name="magecommunity"><dir name="Simtech"><dir name="Searchanise"><dir name="Block"><file name="Async.php" hash="e6b1951b34dbd7f158c7acb54b1d10dd"/><file name="Autocomplete.php" hash="efc89ac3f897be3bc307fba6a36778f0"/><file name="Jsinit.php" hash="44d40c5d699abc2ac75a6e172dedd84b"/><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="73c06dbe5c5ca8778bb2488ed2b5b5ed"/></dir><file name="Result.php" hash="4e767e273ee21a38332ac226af878291"/></dir><file name="Result.php" hash="dec7b27ab9511c956680eb60eba9b95e"/></dir><dir name="Helper"><file name="ApiSe.php" hash="48092aef60145974d096c55085469875"/><file name="ApiXML.php" hash="
|
| 32 |
<compatible/>
|
| 33 |
<dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
|
| 34 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Simtech_Searchanise</name>
|
| 4 |
+
<version>1.1.5</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>[+] Third-party module compatibility improved.<br />
|
| 14 |
+
[+] Tax support for bundle products added.<br />
|
| 15 |
+
[!] Fixed: server sync could interrupt if products tag contained the & character.<br />
|
| 16 |
+
[!] Fixed: error occured when the group product prices was obtained.<br />
|
| 17 |
+
[!] Fixed: incorrect global attribute values could be sent on data submission. Fixed.<br />
|
| 18 |
+
[*] General improvement of the data submission routine.<br /></notes>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
<authors><author><name>Simbirsk Technologies, Ltd.</name><user>searchanise</user><email>sales@searchanise.com</email></author></authors>
|
| 20 |
+
<date>2013-08-12</date>
|
| 21 |
+
<time>08:00:54</time>
|
| 22 |
+
<contents><target name="magecommunity"><dir name="Simtech"><dir name="Searchanise"><dir name="Block"><file name="Async.php" hash="e6b1951b34dbd7f158c7acb54b1d10dd"/><file name="Autocomplete.php" hash="efc89ac3f897be3bc307fba6a36778f0"/><file name="Jsinit.php" hash="44d40c5d699abc2ac75a6e172dedd84b"/><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="73c06dbe5c5ca8778bb2488ed2b5b5ed"/></dir><file name="Result.php" hash="4e767e273ee21a38332ac226af878291"/></dir><file name="Result.php" hash="dec7b27ab9511c956680eb60eba9b95e"/></dir><dir name="Helper"><file name="ApiSe.php" hash="48092aef60145974d096c55085469875"/><file name="ApiXML.php" hash="92d2847f967b6b02dabe882239264e80"/><file name="Data.php" hash="53bbede2bf74a83521ee64240739f898"/></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="61728092fdb9cf42490afacdc4e731fd"/><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="def509d1365374e6dede36be17e75bf3"/></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="8d24a27713e1db605ef0c14862df8bf0"/><file name="Queue.php" hash="831f5ea7e57810f9c78d09659424e9a7"/><file name="Request.php" hash="af0f9a16a0dbc69ba76458eac802638b"/><dir name="Resource"><dir name="Advanced"><file name="Collection.php" hash="12933839daa74d17ac82fca89071bc0a"/></dir><dir name="Eav"><dir name="Mysql4"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="982b1960bec58522f1bd8b82f86452b4"/><file name="Price.php" hash="fc1ec55d6c2aa97558e06691e690e466"/></dir></dir><dir name="Product"><file name="Action.php" hash="006e3c8c775cf31a8b9c66fb934c9d2d"/></dir></dir></dir><dir name="Fulltext"><file name="Collection.php" hash="b9e2e4884a7ecee0000e6a41c0e6d3e2"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="0bfecbdff2458785a287c3f1de23ed56"/><file name="Price.php" hash="38d1acaa4478d678d4bb20704a81b760"/></dir></dir><dir name="Product"><file name="Collection.php" hash="6072bf2a7a4713f3db2fa96014e7453a"/><file name="CollectionTag.php" hash="e89307da7c26ee153c3f9dead94dcd13"/></dir><file name="Store.php" hash="8dd81bf57d38af2b4640bbf14063d3f8"/></dir><file name="Searchanise.php" hash="507813e92908000315aabc4256c5a05c"/><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="7500f6075382cd8a14816e424da2348f"/><file name="AsyncController.php" hash="7230f285e302910b3d8387da10cbcf3a"/><file name="CategoryController.php" hash="909f99c5cf7f85405fc76ebe976c2c8e"/><file name="IndexController.php" hash="e3234ca51a7669741e29ff7c38789989"/><file name="InfoController.php" hash="dcd05c05477c8df8d612ac1c62912944"/><file name="OptionsController.php" hash="56785c8ea24472c2047268b2d9e8e878"/><file name="ProductController.php" hash="6633fde99f35ffeaa05884f0e0d98da7"/><file name="ResultController.php" hash="4b00515cc47593704ea1178d7b44d48e"/><file name="ResyncController.php" hash="0612f929d375427326821dfc12186be8"/><file name="SignupController.php" hash="80f87a63d6272f98a068dde35f1d140e"/></dir><dir name="etc"><file name="config.xml" hash="348a8d88c741b11b9788817dd12bc5e3"/><file name="config_without_search.xml" hash="005825346a47943ca95eebc6cc7f37c5"/><file name="system.xml" hash="a6b2e082fe45706b86b8da0fe02d4374"/></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="8b9793a009151951e1e1f8e4cecb4db2"/></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>
|
| 23 |
<compatible/>
|
| 24 |
<dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
|
| 25 |
</package>
|
