Simtech_Searchanise - Version 3.1.0

Version Notes

[+] Compatibility with magento SUPEE-6788 patch and version 1.9.2.2 was added.

[+] Compatibility with third-party addons that override 'catalogsearch' controllers was added.

[+] Support for product flat table was added.

[+] HHVM support added.

[+] Ability to hide categories from search was added.

[+] Ability to enable only some of the store views to be processed by Searchanise was added.



[*] Magento: Set search field ID: The setting caption updated.

[*] Redundant product attributes are now longer collected.

[*] Obsolete code with category navigation was removed.

[*] Addition cms pages was hidden from search by default.

[*] Speed of product export was increased.



[!] Due to inconsistency of Magento's standard "Category Products" index, not all products were searchable. Fixed.

[!] All categories were submitted for each store, even if it had its own default (parent) category. Fixed.

[!] If sorting by custom attribute was applied the search results were shown without using Searchanise. Fixed.

[!] Allow Qty Below 0 setting handing was fixed.

[!] Erroneous server requests were handled incorrectly, cramming store logs with notices. Fixed.

[!] Default autocomplete wasn't disabled in magento 1.9. Fixed.

Download this release

Release Info

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


Code changes from version 3.0.5 to 3.1.0

Files changed (33) hide show
  1. app/code/community/Simtech/Searchanise/Block/Async.php +2 -11
  2. app/code/community/Simtech/Searchanise/Block/Jsinit.php +29 -12
  3. app/code/community/Simtech/Searchanise/Block/Product/Result.php +0 -51
  4. app/code/community/Simtech/Searchanise/Helper/ApiCategories.php +13 -5
  5. app/code/community/Simtech/Searchanise/Helper/ApiPages.php +3 -0
  6. app/code/community/Simtech/Searchanise/Helper/ApiProducts.php +107 -96
  7. app/code/community/Simtech/Searchanise/Helper/ApiSe.php +20 -32
  8. app/code/community/Simtech/Searchanise/Helper/Data.php +89 -153
  9. app/code/community/Simtech/Searchanise/Model/Advanced.php +0 -33
  10. app/code/community/Simtech/Searchanise/Model/Layer.php +0 -52
  11. app/code/community/Simtech/Searchanise/Model/LayerCatalogSearch.php +0 -52
  12. app/code/community/Simtech/Searchanise/Model/Mysql4/Product/CollectionTag.php +0 -104
  13. app/code/community/Simtech/Searchanise/Model/Observer.php +68 -1
  14. app/code/community/Simtech/Searchanise/Model/Request.php +2 -4
  15. app/code/community/Simtech/Searchanise/Model/Resource/Advanced/Collection.php +12 -0
  16. app/code/community/Simtech/Searchanise/Model/Resource/Fulltext/Collection.php +21 -0
  17. app/code/community/Simtech/Searchanise/Model/Resource/Product/Collection.php +12 -0
  18. app/code/community/Simtech/Searchanise/Model/Resource/Product/CollectionTag.php +0 -104
  19. app/code/community/Simtech/Searchanise/controllers/{IndexController.php → Adminhtml/SearchaniseController.php} +52 -2
  20. app/code/community/Simtech/Searchanise/controllers/AdvancedController.php +0 -45
  21. app/code/community/Simtech/Searchanise/controllers/AsyncController.php +0 -4
  22. app/code/community/Simtech/Searchanise/controllers/CategoryController.php +0 -70
  23. app/code/community/Simtech/Searchanise/controllers/InfoController.php +49 -1
  24. app/code/community/Simtech/Searchanise/controllers/OptionsController.php +0 -36
  25. app/code/community/Simtech/Searchanise/controllers/ProductController.php +0 -39
  26. app/code/community/Simtech/Searchanise/controllers/ResultController.php +0 -66
  27. app/code/community/Simtech/Searchanise/controllers/ResyncController.php +0 -34
  28. app/code/community/Simtech/Searchanise/controllers/SignupController.php +0 -32
  29. app/code/community/Simtech/Searchanise/etc/config.xml +25 -64
  30. app/code/community/Simtech/Searchanise/etc/config_without_search.xml +25 -64
  31. app/code/community/Simtech/Searchanise/etc/system.xml +2 -2
  32. app/design/frontend/default/default/template/catalogsearch/form.mini.phtml +0 -41
  33. package.xml +23 -6
app/code/community/Simtech/Searchanise/Block/Async.php CHANGED
@@ -16,16 +16,8 @@ class Simtech_Searchanise_Block_Async extends Mage_Core_Block_Text
16
  {
17
  private function _startSignup()
18
  {
19
- // not used because notification will not show
20
- $autoInstallInBackground = false;
21
-
22
- if ($autoInstallInBackground) {
23
- $signupUrl = Mage::helper("adminhtml")->getUrl(Mage::helper('searchanise/ApiSe')->getConnectLink());
24
- $html .= "\n<object data=\"$signupUrl\" width=\"0\" height=\"0\" type=\"text/html\"></object>\n";
25
- } else {
26
- if (Mage::helper('searchanise/ApiSe')->signup(null, false) == true) {
27
- Mage::helper('searchanise/ApiSe')->queueImport(null, false);
28
- }
29
  }
30
 
31
  return true;
@@ -48,7 +40,6 @@ class Simtech_Searchanise_Block_Async extends Mage_Core_Block_Text
48
 
49
  if ($textNotification != '') {
50
  Mage::helper('searchanise/ApiSe')->setNotification('N', Mage::helper('searchanise')->__('Notice'), $textNotification);
51
- Mage::helper('searchanise/ApiSe')->showWarningFlatTables();
52
  $this->_startSignup();
53
 
54
  } else {
16
  {
17
  private function _startSignup()
18
  {
19
+ if (Mage::helper('searchanise/ApiSe')->signup(null, false) == true) {
20
+ Mage::helper('searchanise/ApiSe')->queueImport(null, false);
 
 
 
 
 
 
 
 
21
  }
22
 
23
  return true;
40
 
41
  if ($textNotification != '') {
42
  Mage::helper('searchanise/ApiSe')->setNotification('N', Mage::helper('searchanise')->__('Notice'), $textNotification);
 
43
  $this->_startSignup();
44
 
45
  } else {
app/code/community/Simtech/Searchanise/Block/Jsinit.php CHANGED
@@ -17,8 +17,32 @@ class Simtech_Searchanise_Block_Jsinit extends Mage_Core_Block_Text
17
  protected function _toHtml()
18
  {
19
  $html = '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  $store = Mage::app()->getStore();
21
-
22
  if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true, $store)) {
23
  return $html;
24
  }
@@ -28,15 +52,7 @@ class Simtech_Searchanise_Block_Jsinit extends Mage_Core_Block_Text
28
  if (empty($apiKey)) {
29
  return $html;
30
  }
31
-
32
- $inputId = Mage::helper('searchanise/ApiSe')->getInputIdSearch();
33
- if ($inputId == '') {
34
- // Uncomment the lines below if it is necessary to disable search widget in frontend
35
- //~ return '';
36
- }
37
- if (empty($inputId)) {
38
- $inputId = 'search';
39
- }
40
  $union = 'Searchanise.AutoCmpParams.union = {};';
41
  $restrictBy = '';
42
 
@@ -56,7 +72,7 @@ class Simtech_Searchanise_Block_Jsinit extends Mage_Core_Block_Text
56
  if ($showOutOfStock) {
57
  // nothing
58
  } else {
59
- $restrictBy .= "\nSearchanise.AutoCmpParams.restrictBy.is_in_stock = '1';";
60
  }
61
 
62
  $priceFormat['after'] = $priceFormat['after'] ? 'true' : 'false';
@@ -96,7 +112,8 @@ class Simtech_Searchanise_Block_Jsinit extends Mage_Core_Block_Text
96
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(__se, s);
97
  })();
98
  //]]>
99
- </script>";
 
100
 
101
  // Uncomment the lines below if it is necessary to hide price in search widget
102
  // $html .= '
17
  protected function _toHtml()
18
  {
19
  $html = '';
20
+
21
+ $inputId = Mage::helper('searchanise/ApiSe')->getInputIdSearch();
22
+ if (empty($inputId)) {
23
+ $inputId = 'search';
24
+ }
25
+
26
+ //
27
+ // Disable standart autocomplete
28
+ //
29
+ $html .=
30
+ " <script type=\"text/javascript\">
31
+ //<![CDATA[
32
+ try {
33
+ Prototype && Prototype.Version && Event && Event.observe && Event.observe(window, 'load', function()
34
+ {
35
+ if ($$('input#{$inputId}').length) {
36
+ $$('input#{$inputId}')[0].stopObserving('keydown');
37
+ }
38
+ });
39
+ } catch (e) {}
40
+ //]]>
41
+ </script>
42
+ ";
43
+
44
  $store = Mage::app()->getStore();
45
+
46
  if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true, $store)) {
47
  return $html;
48
  }
52
  if (empty($apiKey)) {
53
  return $html;
54
  }
55
+
 
 
 
 
 
 
 
 
56
  $union = 'Searchanise.AutoCmpParams.union = {};';
57
  $restrictBy = '';
58
 
72
  if ($showOutOfStock) {
73
  // nothing
74
  } else {
75
+ $restrictBy .= "Searchanise.AutoCmpParams.restrictBy.is_in_stock = '1';";
76
  }
77
 
78
  $priceFormat['after'] = $priceFormat['after'] ? 'true' : 'false';
112
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(__se, s);
113
  })();
114
  //]]>
115
+ </script>
116
+ ";
117
 
118
  // Uncomment the lines below if it is necessary to hide price in search widget
119
  // $html .= '
app/code/community/Simtech/Searchanise/Block/Product/Result.php DELETED
@@ -1,51 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
-
15
- class Simtech_Searchanise_Block_Product_Result extends Mage_Tag_Block_Product_Result
16
- {
17
- protected function _getProductCollection()
18
- {
19
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
20
- return parent::_getProductCollection();
21
- }
22
-
23
- if (is_null($this->_productCollection)) {
24
- $tagModel = Mage::getModel('tag/tag');
25
- $collection = $tagModel->getEntityCollection();
26
-
27
- if (method_exists($collection, 'setSearchaniseRequest')) {
28
- $collection->setSearchaniseRequest(Mage::helper('searchanise')->getSearchaniseRequest());
29
- }
30
-
31
- if ((!method_exists($collection, 'checkSearchaniseResult')) || (!$collection->checkSearchaniseResult())) {
32
- return parent::_getProductCollection();
33
- }
34
-
35
- $this->_productCollection = $collection;
36
- $this->_productCollection
37
- ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
38
- ->addSearchaniseFilter()
39
- ->addTagFilter($this->getTag()->getId())
40
- ->addStoreFilter(Mage::app()->getStore()->getId())
41
- ->addMinimalPrice()
42
- ->addUrlRewrite()
43
- ->setActiveFilter();
44
-
45
- Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_productCollection);
46
- Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($this->_productCollection);
47
- }
48
-
49
- return $this->_productCollection;
50
- }
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/Helper/ApiCategories.php CHANGED
@@ -14,6 +14,9 @@
14
 
15
  class Simtech_Searchanise_Helper_ApiCategories extends Mage_Core_Helper_Data
16
  {
 
 
 
17
  public static function generateCategoryFeed($category, $store = null, $checkData = true)
18
  {
19
  $item = array();
@@ -22,7 +25,8 @@ class Simtech_Searchanise_Helper_ApiCategories extends Mage_Core_Helper_Data
22
  if (!$category ||
23
  !$category->getId() ||
24
  !$category->getName() ||
25
- !$category->getIsActive()
 
26
  ) {
27
  return $item;
28
  }
@@ -30,9 +34,6 @@ class Simtech_Searchanise_Helper_ApiCategories extends Mage_Core_Helper_Data
30
  // Need for generate correct url.
31
  if ($store) {
32
  $category->getUrlInstance()->setStore($store->getId());
33
- Mage::app()->setCurrentStore($store->getId());
34
- } else {
35
- Mage::app()->setCurrentStore(0);
36
  }
37
 
38
  $item['id'] = $category->getId();
@@ -65,6 +66,12 @@ class Simtech_Searchanise_Helper_ApiCategories extends Mage_Core_Helper_Data
65
 
66
  public static function getCategories($categoryIds = Simtech_Searchanise_Model_Queue::NOT_DATA, $store = null)
67
  {
 
 
 
 
 
 
68
  static $arrCategories = array();
69
 
70
  $keyCategories = '';
@@ -77,6 +84,7 @@ class Simtech_Searchanise_Helper_ApiCategories extends Mage_Core_Helper_Data
77
  }
78
  $storeId = $store ? $store->getId() : 0;
79
  $keyCategories .= ':' . $storeId;
 
80
 
81
  if (isset($arrCategories[$keyCategories])) {
82
  // Nothing
@@ -86,7 +94,7 @@ class Simtech_Searchanise_Helper_ApiCategories extends Mage_Core_Helper_Data
86
  /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
87
  $collection
88
  ->addAttributeToSelect('*')
89
- ->setStoreId($storeId);
90
 
91
  if ($categoryIds !== Simtech_Searchanise_Model_Queue::NOT_DATA) {
92
  // Already exist automatic definition 'one value' or 'array'.
14
 
15
  class Simtech_Searchanise_Helper_ApiCategories extends Mage_Core_Helper_Data
16
  {
17
+ private static $_excludedCategories = array(// use id to hide categories
18
+ );
19
+
20
  public static function generateCategoryFeed($category, $store = null, $checkData = true)
21
  {
22
  $item = array();
25
  if (!$category ||
26
  !$category->getId() ||
27
  !$category->getName() ||
28
+ !$category->getIsActive() ||
29
+ in_array($category->getId(), self::$_excludedCategories)
30
  ) {
31
  return $item;
32
  }
34
  // Need for generate correct url.
35
  if ($store) {
36
  $category->getUrlInstance()->setStore($store->getId());
 
 
 
37
  }
38
 
39
  $item['id'] = $category->getId();
66
 
67
  public static function getCategories($categoryIds = Simtech_Searchanise_Model_Queue::NOT_DATA, $store = null)
68
  {
69
+ if ($store) {
70
+ Mage::app()->setCurrentStore($store->getId());
71
+ } else {
72
+ Mage::app()->setCurrentStore(0);
73
+ }
74
+
75
  static $arrCategories = array();
76
 
77
  $keyCategories = '';
84
  }
85
  $storeId = $store ? $store->getId() : 0;
86
  $keyCategories .= ':' . $storeId;
87
+ $rootCategoryId = Mage::app()->getStore($storeId)->getRootCategoryId();
88
 
89
  if (isset($arrCategories[$keyCategories])) {
90
  // Nothing
94
  /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
95
  $collection
96
  ->addAttributeToSelect('*')
97
+ ->addAttributeToFilter('path', array('like' => "1/{$rootCategoryId}/%"));
98
 
99
  if ($categoryIds !== Simtech_Searchanise_Model_Queue::NOT_DATA) {
100
  // Already exist automatic definition 'one value' or 'array'.
app/code/community/Simtech/Searchanise/Helper/ApiPages.php CHANGED
@@ -18,6 +18,9 @@ class Simtech_Searchanise_Helper_ApiPages extends Mage_Core_Helper_Data
18
  'no-route', // 404 page
19
  'enable-cookies', // Enable Cookies
20
  'privacy-policy-cookie-restriction-mode', // Privacy Policy
 
 
 
21
  );
22
 
23
  public static function generatePageFeed($page, $store = null, $checkData = true)
18
  'no-route', // 404 page
19
  'enable-cookies', // Enable Cookies
20
  'privacy-policy-cookie-restriction-mode', // Privacy Policy
21
+ 'service-unavailable', // 503 Service Unavailable
22
+ 'private-sales', // Welcome to our Exclusive Online Store
23
+ 'home', // Home
24
  );
25
 
26
  public static function generatePageFeed($page, $store = null, $checkData = true)
app/code/community/Simtech/Searchanise/Helper/ApiProducts.php CHANGED
@@ -14,7 +14,7 @@
14
 
15
  class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
16
  {
17
- const WEIGHT_SHORT_DESCRIPTION = 0; // not need because use in summary
18
  const WEIGHT_DESCRIPTION = 40;
19
  const WEIGHT_DESCRIPTION_GROUPED = 30;
20
 
@@ -185,6 +185,20 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
185
  } else {
186
  $quantity = $stockItem->getQty();
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  if ($unitedProducts) {
189
  $quantity = 0;
190
  foreach ($unitedProducts as $itemProductKey => $itemProduct) {
@@ -255,14 +269,13 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
255
  } elseif ($product->isGrouped() && $childrenProducts) {
256
  // fixme in the future
257
  // maybe exist better solution get `minimalPrice` for `Grouped` product
258
- $minimalPrice = '';
259
 
260
  foreach ($childrenProducts as $childrenProductsKey => $childrenProduct) {
261
  if ($childrenProduct) {
262
- $minimalPriceChildren = self::_getProductMinimalPrice($childrenProduct, $store, null, $customerGroupId);
263
 
264
- if (($minimalPriceChildren < $minimalPrice) ||
265
- ($minimalPrice == '')) {
266
  $minimalPrice = $minimalPriceChildren;
267
  }
268
  }
@@ -334,21 +347,34 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
334
 
335
  private static function _generateProductPrices(&$item, $product, $childrenProducts = null, $store = null)
336
  {
 
 
337
  if ($customerGroups = self::_getCustomerGroups()) {
338
- foreach ($customerGroups as $keyCustomerGroup => $customerGroup) {
339
  // It is needed because the 'setCustomerGroupId' function works only once.
340
  $productCurrentGroup = clone $product;
341
  $customerGroupId = $customerGroup->getId();
342
 
343
- $price = self::_getProductMinimalPrice($productCurrentGroup, $store, $childrenProducts, $customerGroupId);
344
- if ($price != '') {
345
- $price = round($price, Mage::helper('searchanise/ApiSe')->getFloatPrecision());
346
- }
347
 
348
- if ($customerGroupId == Mage_Customer_Model_Group::NOT_LOGGED_IN_ID) {
349
- $item['price'] = $price;
350
- $defaultPrice = $price; // default price get for not logged user
 
 
 
 
 
 
 
 
 
 
 
 
351
  }
 
352
  $label_ = Mage::helper('searchanise/ApiSe')->getLabelForPricesUsergroup() . $customerGroup->getId();
353
  $item[$label_] = $price;
354
  unset($productCurrentGroup);
@@ -458,13 +484,16 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
458
  private static function _getIdAttributesValues($products, $attributeCode)
459
  {
460
  $values = array();
461
-
462
  foreach ($products as $productKey => $product) {
463
  $value = $product->getData($attributeCode);
464
  if ($value == '') {
465
  // Nothing.
466
  } elseif (is_array($value) && empty($value)) {
467
  // Nothing.
 
 
 
 
468
  } else {
469
  if (!in_array($value, $values)) {
470
  $values[] = $value;
@@ -534,9 +563,11 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
534
  $isSearchable = $attribute->getIsSearchable();
535
  $isVisibleInAdvancedSearch = $attribute->getIsVisibleInAdvancedSearch();
536
  $usedForSortBy = $attribute->getUsedForSortBy();
 
 
537
  $attributeName = 'attribute_' . $attribute->getId();
538
 
539
- $isNecessaryAttribute = $useFullFeed || $isSearchable || $isVisibleInAdvancedSearch || $usedForSortBy || in_array($attributeCode, $requiredAttributes);
540
 
541
  if (!$isNecessaryAttribute) {
542
  continue;
@@ -546,43 +577,52 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
546
  // nothing
547
 
548
  // <system_attributes>
549
- } elseif ($attributeCode == 'price') {
550
- // already defined in the '<cs:price>' field
551
-
552
- } elseif ($attributeCode == 'status' || $attributeCode == 'visibility') {
553
- $item[$attributeCode] = $value;
554
-
555
- } elseif ($attributeCode == 'weight') {
556
- $item[$attributeCode] = $unitedValues;
557
-
558
- // <dates>
559
- } elseif ($attributeCode == 'created_at' || $attributeCode == 'updated_at') {
560
- $dateTimestamp = Mage::getModel('core/date')->timestamp(strtotime($value));
561
- $item[$attributeCode] = $dateTimestamp;
562
- // </dates>
563
-
564
- } elseif ($attributeCode == 'has_options') {
565
- } elseif ($attributeCode == 'required_options') {
566
- } elseif ($attributeCode == 'custom_layout_update') {
567
- } elseif ($attributeCode == 'tier_price') { // quantity discount
568
- } elseif ($attributeCode == 'image_label') {
569
- } elseif ($attributeCode == 'small_image_label') {
570
- } elseif ($attributeCode == 'thumbnail_label') {
571
- } elseif ($attributeCode == 'url_key') { // seo name
572
  // <system_attributes>
573
 
574
  } elseif ($attributeCode == 'group_price') {
575
  // nothing
576
  // fixme in the future if need
577
 
578
- } elseif ($attributeCode == 'description') {
579
- if ($value != '') {
580
- $item[$attributeCode] = $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
581
  }
582
- $item['se_grouped_' . $attributeCode] = $unitedValues;
583
 
584
  } elseif (
585
- $attributeCode == 'short_description' ||
586
  $attributeCode == 'meta_title' ||
587
  $attributeCode == 'meta_description' ||
588
  $attributeCode == 'meta_keyword') {
@@ -595,7 +635,9 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
595
 
596
  } elseif ($inputType == 'select' || $inputType == 'multiselect') {
597
  // <id_values>
598
- $item[$attributeName] = $unitedValues;
 
 
599
 
600
  // <text_values>
601
  $unitedTextValues = self::_getProductAttributeTextValues($unitedProducts, $attributeCode, $inputType, $store);
@@ -648,10 +690,11 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
648
  $item['title'] = $product->getName();
649
 
650
  $summary = $product->getData('short_description');
651
-
652
- if ($summary == '') {
653
  $summary = $product->getData('description');
654
  }
 
655
  $item['summary'] = $summary;
656
 
657
  $productUrl = $product->getProductUrl(false);
@@ -689,15 +732,6 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
689
  }
690
  // </image_link>
691
 
692
- // <attributes_position>
693
- {
694
- // Fixme in the feature:
695
- // products could have different position in different categories, sort by "position" disabled.
696
- $item['position'] = $product->getData('position');
697
- // end
698
- }
699
- // </attributes_position>
700
-
701
  self::_generateProductAttributes($item, $product, $childrenProducts, $unitedProducts, $store);
702
 
703
  // <categories>
@@ -780,10 +814,7 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
780
 
781
  public static function isFacet($attribute)
782
  {
783
- $isFilterable = $attribute->getIsFilterable();
784
- $isFilterableInSearch = $attribute->getIsFilterableInSearch();
785
-
786
- return $isFilterable || $isFilterableInSearch;
787
  }
788
 
789
  private static function _generateFacetFromFilter($attribute, $store = null)
@@ -999,6 +1030,11 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
999
  {
1000
  $items = array();
1001
 
 
 
 
 
 
1002
  $products = self::getProducts($productIds, $store, null);
1003
 
1004
  if ($products) {
@@ -1074,15 +1110,13 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1074
  }
1075
 
1076
  if ($isOnlyActive) {
1077
- Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
1078
- // Fixme in the future
1079
  // It may require to disable "product visibility" filter if "is full feed".
1080
- if (Mage::helper('searchanise/ApiSe')->getUseFullFeed() || Mage::helper('searchanise/ApiSe')->getUseNavigation()) {
1081
- Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($products);
1082
  } else {
1083
- Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($products);
1084
  }
1085
- // end fixme
1086
  }
1087
 
1088
  $products->load();
@@ -1108,9 +1142,6 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1108
  'status',
1109
  'visibility',
1110
  'price',
1111
- 'weight',
1112
- 'created_at',
1113
- 'updated_at',
1114
  );
1115
  }
1116
 
@@ -1129,9 +1160,10 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1129
  $isSearchable = $attribute->getIsSearchable();
1130
  $isVisibleInAdvancedSearch = $attribute->getIsVisibleInAdvancedSearch();
1131
  $usedForSortBy = $attribute->getUsedForSortBy();
 
1132
  $attributeName = 'attribute_' . $attribute->getId();
1133
 
1134
- $isNecessaryAttribute = $useFullFeed || $isSearchable || $isVisibleInAdvancedSearch || $usedForSortBy || in_array($attributeCode, $requiredAttributes);
1135
 
1136
  if (!$isNecessaryAttribute) {
1137
  return $items;
@@ -1140,6 +1172,7 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1140
  $name = $attribute->getAttributeCode();
1141
  $title = $attribute->getData('frontend_label');
1142
  $type = '';
 
1143
  $textSearch = $isSearchable ? 'Y' : 'N';
1144
  $attributeWeight = 0;
1145
 
@@ -1151,19 +1184,6 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1151
  } elseif ($attributeCode == 'status' || $attributeCode == 'visibility') {
1152
  $type = 'text';
1153
  $textSearch = 'N';
1154
- } elseif ($attributeCode == 'weight') {
1155
- $type = 'float';
1156
- $textSearch = 'N';
1157
- // <dates>
1158
- } elseif ($attributeCode == 'created_at' || $attributeCode == 'updated_at') {
1159
- $type = 'int';
1160
- $textSearch = 'N';
1161
- if ($attributeCode == 'created_at'){
1162
- $title = Mage::helper('searchanise')->__('Date Created');
1163
- } elseif ($attributeCode == 'updated_at') {
1164
- $title = Mage::helper('searchanise')->__('Date Updated');
1165
- }
1166
- // </dates>
1167
  } elseif ($attributeCode == 'has_options') {
1168
  } elseif ($attributeCode == 'required_options') {
1169
  } elseif ($attributeCode == 'custom_layout_update') {
@@ -1171,6 +1191,7 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1171
  } elseif ($attributeCode == 'image_label') {
1172
  } elseif ($attributeCode == 'small_image_label') {
1173
  } elseif ($attributeCode == 'thumbnail_label') {
 
1174
  } elseif ($attributeCode == 'url_key') { // seo name
1175
  // <system_attributes>
1176
 
@@ -1201,6 +1222,7 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1201
  }
1202
  $type = 'text';
1203
  if ($attributeCode == 'description') {
 
1204
  $items[] = array(
1205
  'name' => 'se_grouped_' . $attributeCode,
1206
  'title' => $attribute->getData('frontend_label') . ' - Grouped',
@@ -1219,11 +1241,13 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1219
  'name' => $name,
1220
  'title' => $title,
1221
  'type' => $type,
 
1222
  'weight' => $isSearchable ? self::WEIGHT_SELECT_ATTRIBUTES : 0,
1223
  'text_search' => $textSearch,
1224
  );
1225
  $name = $attributeName;
1226
  $title = $title . ' - IDs';
 
1227
  $textSearch = 'N';
1228
 
1229
  } elseif ($inputType == 'text' || $inputType == 'textarea') {
@@ -1253,6 +1277,7 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1253
  'name' => $name,
1254
  'title' => $title,
1255
  'type' => $type,
 
1256
  'weight' => $attributeWeight,
1257
  'text_search' => $textSearch,
1258
  );
@@ -1377,20 +1402,6 @@ class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
1377
  'weight' => 0,
1378
  'text_search' => 'N',
1379
  );
1380
- $schema[] = array(
1381
- 'name' => 'created_at',
1382
- 'title' => 'Created Date',
1383
- 'type' => 'text',
1384
- 'weight' => 0,
1385
- 'text_search' => 'N',
1386
- );
1387
- $schema[] = array(
1388
- 'name' => 'position',
1389
- 'title' => 'Position',
1390
- 'type' => 'text',
1391
- 'weight' => 0,
1392
- 'text_search' => 'N',
1393
- );
1394
  }
1395
 
1396
  if ($attributes = self::getProductAttributes($attributeIds, $store, $isPrice)) {
14
 
15
  class Simtech_Searchanise_Helper_ApiProducts extends Mage_Core_Helper_Data
16
  {
17
+ const WEIGHT_SHORT_DESCRIPTION = 40;
18
  const WEIGHT_DESCRIPTION = 40;
19
  const WEIGHT_DESCRIPTION_GROUPED = 30;
20
 
185
  } else {
186
  $quantity = $stockItem->getQty();
187
 
188
+ if ($quantity <= 0) {
189
+
190
+ $backorders = 0;
191
+ if ($stockItem->getData('use_config_backorders') == 1) {
192
+ $backorders = Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_BACKORDERS);
193
+ } else {
194
+ $backorders = $stockItem->getData('backorders');
195
+ }
196
+
197
+ if ($backorders == 1 || $backorders == 2) {
198
+ $quantity = 1;
199
+ }
200
+ }
201
+
202
  if ($unitedProducts) {
203
  $quantity = 0;
204
  foreach ($unitedProducts as $itemProductKey => $itemProduct) {
269
  } elseif ($product->isGrouped() && $childrenProducts) {
270
  // fixme in the future
271
  // maybe exist better solution get `minimalPrice` for `Grouped` product
272
+ $minimalPrice = false;
273
 
274
  foreach ($childrenProducts as $childrenProductsKey => $childrenProduct) {
275
  if ($childrenProduct) {
276
+ $minimalPriceChildren = self::_getProductMinimalPrice(clone $childrenProduct, $store, null, $customerGroupId);
277
 
278
+ if (($minimalPriceChildren < $minimalPrice) || ($minimalPrice === false)) {
 
279
  $minimalPrice = $minimalPriceChildren;
280
  }
281
  }
347
 
348
  private static function _generateProductPrices(&$item, $product, $childrenProducts = null, $store = null)
349
  {
350
+ $product->getGroupPrice();//preload group_price attribute
351
+
352
  if ($customerGroups = self::_getCustomerGroups()) {
353
+ foreach ($customerGroups as $customerGroup) {
354
  // It is needed because the 'setCustomerGroupId' function works only once.
355
  $productCurrentGroup = clone $product;
356
  $customerGroupId = $customerGroup->getId();
357
 
358
+ if ($customerGroupId == Mage_Customer_Model_Group::NOT_LOGGED_IN_ID || !isset($equalPriceForAllGroups)) {
359
+ $price = self::_getProductMinimalPrice($productCurrentGroup, $store, $childrenProducts, $customerGroupId);
 
 
360
 
361
+ if ($price !== false) {
362
+ $price = round($price, Mage::helper('searchanise/ApiSe')->getFloatPrecision());
363
+ }
364
+
365
+ if ($customerGroupId == Mage_Customer_Model_Group::NOT_LOGGED_IN_ID) {
366
+ $item['price'] = $price;
367
+
368
+ $groupPrices = $product->getData('group_price');
369
+ if (empty($groupPrices)) {
370
+ $equalPriceForAllGroups = $price;
371
+ }
372
+ }
373
+
374
+ } else {
375
+ $price = $equalPriceForAllGroups;
376
  }
377
+
378
  $label_ = Mage::helper('searchanise/ApiSe')->getLabelForPricesUsergroup() . $customerGroup->getId();
379
  $item[$label_] = $price;
380
  unset($productCurrentGroup);
484
  private static function _getIdAttributesValues($products, $attributeCode)
485
  {
486
  $values = array();
 
487
  foreach ($products as $productKey => $product) {
488
  $value = $product->getData($attributeCode);
489
  if ($value == '') {
490
  // Nothing.
491
  } elseif (is_array($value) && empty($value)) {
492
  // Nothing.
493
+
494
+ } elseif ($productKey == 0 && ($attributeCode == 'name' || $attributeCode == 'sku')) {// $productKey=0 - parent product
495
+ // Nothing. Prevent dublicate.
496
+
497
  } else {
498
  if (!in_array($value, $values)) {
499
  $values[] = $value;
563
  $isSearchable = $attribute->getIsSearchable();
564
  $isVisibleInAdvancedSearch = $attribute->getIsVisibleInAdvancedSearch();
565
  $usedForSortBy = $attribute->getUsedForSortBy();
566
+ $isFilterableInSearch = $attribute->getIsFilterableInSearch();
567
+
568
  $attributeName = 'attribute_' . $attribute->getId();
569
 
570
+ $isNecessaryAttribute = $useFullFeed || $isSearchable || $isVisibleInAdvancedSearch || $usedForSortBy || $isFilterableInSearch || in_array($attributeCode, $requiredAttributes);
571
 
572
  if (!$isNecessaryAttribute) {
573
  continue;
577
  // nothing
578
 
579
  // <system_attributes>
580
+ } elseif ($attributeCode == 'price') {
581
+ // already defined in the '<cs:price>' field
582
+
583
+ } elseif ($attributeCode == 'status' || $attributeCode == 'visibility') {
584
+ $item[$attributeCode] = $value;
585
+
586
+ } elseif ($attributeCode == 'has_options') {
587
+ } elseif ($attributeCode == 'required_options') {
588
+ } elseif ($attributeCode == 'custom_layout_update') {
589
+ } elseif ($attributeCode == 'tier_price') { // quantity discount
590
+ } elseif ($attributeCode == 'image_label') {
591
+ } elseif ($attributeCode == 'small_image_label') {
592
+ } elseif ($attributeCode == 'thumbnail_label') {
593
+ } elseif ($attributeCode == 'tax_class_id') {
594
+ } elseif ($attributeCode == 'url_key') { // seo name
 
 
 
 
 
 
 
 
595
  // <system_attributes>
596
 
597
  } elseif ($attributeCode == 'group_price') {
598
  // nothing
599
  // fixme in the future if need
600
 
601
+ } elseif ($attributeCode == 'short_description') {
602
+ if (!empty($value)) {// if not empty value already sent in summary
603
+ if (count($unitedValues) > 1) {
604
+ $item[$attributeCode] = array_slice($unitedValues, 1);
605
+ }
606
+
607
+ } elseif (!empty($unitedValues)) {
608
+ $item[$attributeCode] = $unitedValues;
609
+
610
+ } else {
611
+ // nothing
612
+ }
613
+
614
+ } elseif ($attributeCode == 'description') {//$product->getData('short_description')
615
+ $short_description = $product->getData('short_description');
616
+
617
+ if (!empty($short_description)) {
618
+ $item['full_description'] = $value;
619
+ }
620
+
621
+ if (count($unitedValues) > 1) {
622
+ $item['se_grouped_' . $attributeCode] = array_slice($unitedValues, 1);
623
  }
 
624
 
625
  } elseif (
 
626
  $attributeCode == 'meta_title' ||
627
  $attributeCode == 'meta_description' ||
628
  $attributeCode == 'meta_keyword') {
635
 
636
  } elseif ($inputType == 'select' || $inputType == 'multiselect') {
637
  // <id_values>
638
+ if ($useFullFeed || $isVisibleInAdvancedSearch || $usedForSortBy || $isFilterableInSearch) {
639
+ $item[$attributeName] = $unitedValues;
640
+ }
641
 
642
  // <text_values>
643
  $unitedTextValues = self::_getProductAttributeTextValues($unitedProducts, $attributeCode, $inputType, $store);
690
  $item['title'] = $product->getName();
691
 
692
  $summary = $product->getData('short_description');
693
+
694
+ if ($summary == '') {
695
  $summary = $product->getData('description');
696
  }
697
+
698
  $item['summary'] = $summary;
699
 
700
  $productUrl = $product->getProductUrl(false);
732
  }
733
  // </image_link>
734
 
 
 
 
 
 
 
 
 
 
735
  self::_generateProductAttributes($item, $product, $childrenProducts, $unitedProducts, $store);
736
 
737
  // <categories>
814
 
815
  public static function isFacet($attribute)
816
  {
817
+ return $attribute->getIsFilterableInSearch();
 
 
 
818
  }
819
 
820
  private static function _generateFacetFromFilter($attribute, $store = null)
1030
  {
1031
  $items = array();
1032
 
1033
+ if (Mage::helper('catalog/product_flat')->isEnabled()) {
1034
+ Mage::helper('searchanise/ApiProducts')->setIsGetProductsByItems(true);//workaround for get all attributes
1035
+ Mage::getResourceModel('catalog/product_collection')->setStore($store->getId());//workaround for magento flat products table bug
1036
+ }
1037
+
1038
  $products = self::getProducts($productIds, $store, null);
1039
 
1040
  if ($products) {
1110
  }
1111
 
1112
  if ($isOnlyActive) {
1113
+ $products->addAttributeToFilter('status', array('in'=> Mage::getSingleton('catalog/product_status')->getVisibleStatusIds()));
 
1114
  // It may require to disable "product visibility" filter if "is full feed".
1115
+ if (Mage::helper('searchanise/ApiSe')->getUseFullFeed()) {
1116
+ $products->addAttributeToFilter('visibility', array('in' => Mage::getSingleton('catalog/product_visibility')->getVisibleInSiteIds()));
1117
  } else {
1118
+ $products->addAttributeToFilter('visibility', array('in' => Mage::getSingleton('catalog/product_visibility')->getVisibleInSearchIds()));
1119
  }
 
1120
  }
1121
 
1122
  $products->load();
1142
  'status',
1143
  'visibility',
1144
  'price',
 
 
 
1145
  );
1146
  }
1147
 
1160
  $isSearchable = $attribute->getIsSearchable();
1161
  $isVisibleInAdvancedSearch = $attribute->getIsVisibleInAdvancedSearch();
1162
  $usedForSortBy = $attribute->getUsedForSortBy();
1163
+ $isFilterableInSearch = $attribute->getIsFilterableInSearch();
1164
  $attributeName = 'attribute_' . $attribute->getId();
1165
 
1166
+ $isNecessaryAttribute = $useFullFeed || $isSearchable || $isVisibleInAdvancedSearch || $usedForSortBy || $isFilterableInSearch || in_array($attributeCode, $requiredAttributes);
1167
 
1168
  if (!$isNecessaryAttribute) {
1169
  return $items;
1172
  $name = $attribute->getAttributeCode();
1173
  $title = $attribute->getData('frontend_label');
1174
  $type = '';
1175
+ $sorting = $usedForSortBy ? 'Y' : 'N';
1176
  $textSearch = $isSearchable ? 'Y' : 'N';
1177
  $attributeWeight = 0;
1178
 
1184
  } elseif ($attributeCode == 'status' || $attributeCode == 'visibility') {
1185
  $type = 'text';
1186
  $textSearch = 'N';
 
 
 
 
 
 
 
 
 
 
 
 
 
1187
  } elseif ($attributeCode == 'has_options') {
1188
  } elseif ($attributeCode == 'required_options') {
1189
  } elseif ($attributeCode == 'custom_layout_update') {
1191
  } elseif ($attributeCode == 'image_label') {
1192
  } elseif ($attributeCode == 'small_image_label') {
1193
  } elseif ($attributeCode == 'thumbnail_label') {
1194
+ } elseif ($attributeCode == 'tax_class_id') {
1195
  } elseif ($attributeCode == 'url_key') { // seo name
1196
  // <system_attributes>
1197
 
1222
  }
1223
  $type = 'text';
1224
  if ($attributeCode == 'description') {
1225
+ $name = 'full_description';
1226
  $items[] = array(
1227
  'name' => 'se_grouped_' . $attributeCode,
1228
  'title' => $attribute->getData('frontend_label') . ' - Grouped',
1241
  'name' => $name,
1242
  'title' => $title,
1243
  'type' => $type,
1244
+ 'sorting' => $sorting,
1245
  'weight' => $isSearchable ? self::WEIGHT_SELECT_ATTRIBUTES : 0,
1246
  'text_search' => $textSearch,
1247
  );
1248
  $name = $attributeName;
1249
  $title = $title . ' - IDs';
1250
+ $sorting = 'N';
1251
  $textSearch = 'N';
1252
 
1253
  } elseif ($inputType == 'text' || $inputType == 'textarea') {
1277
  'name' => $name,
1278
  'title' => $title,
1279
  'type' => $type,
1280
+ 'sorting' => $sorting,
1281
  'weight' => $attributeWeight,
1282
  'text_search' => $textSearch,
1283
  );
1402
  'weight' => 0,
1403
  'text_search' => 'N',
1404
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1405
  }
1406
 
1407
  if ($attributes = self::getProductAttributes($attributeIds, $store, $isPrice)) {
app/code/community/Simtech/Searchanise/Helper/ApiSe.php CHANGED
@@ -57,6 +57,8 @@ class Simtech_Searchanise_Helper_ApiSe
57
  const FL_SHOW_STATUS_ASYNC = 'show_status';
58
  const FL_SHOW_STATUS_ASYNC_KEY = 'Y';
59
 
 
 
60
  public static function getParamNotUseHttpRequest()
61
  {
62
  return self::NOT_USE_HTTP_REQUEST . '=' . self::NOT_USE_HTTP_REQUEST_KEY;
@@ -192,18 +194,6 @@ class Simtech_Searchanise_Helper_ApiSe
192
  {
193
  return self::getStatusModule($store, $moduleName) == 'Y';
194
  }
195
-
196
- public static function setUseNavigation($value = null)
197
- {
198
- self::setSetting('use_navigation', $value, self::CONFIG_PREFIX);
199
-
200
- return true;
201
- }
202
-
203
- public static function getUseNavigation($value = null)
204
- {
205
- return self::getSetting('use_navigation', self::CONFIG_PREFIX);
206
- }
207
 
208
  public static function setUseFullFeed($value = null)
209
  {
@@ -243,7 +233,7 @@ class Simtech_Searchanise_Helper_ApiSe
243
 
244
  public static function getSearchaniseLink()
245
  {
246
- return 'searchanise/index';
247
  }
248
 
249
  public static function getAsyncLink($flNotUserHttpRequest = false)
@@ -264,17 +254,17 @@ class Simtech_Searchanise_Helper_ApiSe
264
 
265
  public static function getReSyncLink()
266
  {
267
- return 'searchanise/resync';
268
  }
269
 
270
  public static function getOptionsLink()
271
  {
272
- return 'searchanise/options';
273
  }
274
 
275
  public static function getModuleLink()
276
  {
277
- return 'searchanise/index/index';
278
  }
279
 
280
  public static function getModuleUrl()
@@ -284,7 +274,7 @@ class Simtech_Searchanise_Helper_ApiSe
284
 
285
  public static function getConnectLink()
286
  {
287
- return 'searchanise/signup';
288
  }
289
 
290
  public static function getConnectUrl($flNotUserHttpRequest = false, $storeId = '', $flCheckSecure = true)
@@ -630,6 +620,14 @@ class Simtech_Searchanise_Helper_ApiSe
630
  } else {
631
  $stores = Mage::app()->getStores();
632
  }
 
 
 
 
 
 
 
 
633
 
634
  return $stores;
635
  }
@@ -638,8 +636,6 @@ class Simtech_Searchanise_Helper_ApiSe
638
  {
639
  if (self::checkImportIsDone()) {
640
  if (self::checkNotificationAsyncComleted()) {
641
- Mage::helper('searchanise/ApiSe')->showWarningFlatTables();
642
-
643
  $textNotification = Mage::helper('searchanise')->__('Catalog indexation is complete. Configure Searchanise via the <a href="%s">Admin Panel</a>.', Mage::helper('searchanise/ApiSe')->getModuleUrl());
644
 
645
  Mage::helper('searchanise/ApiSe')->setNotification('N', Mage::helper('searchanise')->__('Searchanise'), $textNotification);
@@ -650,15 +646,6 @@ class Simtech_Searchanise_Helper_ApiSe
650
  return true;
651
  }
652
 
653
- public static function showWarningFlatTables()
654
- {
655
- if (Mage::getStoreConfigFlag(Mage_Catalog_Helper_Product_Flat::XML_PATH_USE_PRODUCT_FLAT) && count(self::getStores()) > 1) {
656
- Mage::helper('searchanise/ApiSe')->setNotification('W', Mage::helper('searchanise')->__('Searchanise'), Mage::helper('searchanise')->__("Please disable the Use Flat Catalog Product (Configuration -> Catalog -> Frontend) setting if you have multiple store views. Otherwise, Searchanise may work incorrectly."));
657
- }
658
-
659
- return true;
660
- }
661
-
662
  /**
663
  * Set notification message
664
  *
@@ -705,6 +692,7 @@ class Simtech_Searchanise_Helper_ApiSe
705
  $client->setUri($url);
706
 
707
  $client->setConfig(array(
 
708
  'maxredirects' => $maxredirects,
709
  'timeout' => $timeout,
710
  ));
@@ -1282,7 +1270,8 @@ class Simtech_Searchanise_Helper_ApiSe
1282
 
1283
  return $ret;
1284
  }
1285
- private static function _addTaskByChunk($store, $action = Simtech_Searchanise_Model_Queue::ACT_UPDATE_PRODUCTS, $isOnlyActive = false)
 
1286
  {
1287
  $i = 0;
1288
  $step = 50;
@@ -1655,11 +1644,10 @@ class Simtech_Searchanise_Helper_ApiSe
1655
  } elseif (is_array($data) && !empty($data['errors'])) {
1656
  foreach ($data['errors'] as $e) {
1657
  if ($showNotification == true) {
1658
- self::setNotification('E', Mage::helper('searchanise')->__('Error'), 'Searchanise: parseResponse: ' . $e->getMessage());
1659
  }
1660
- self::log('parseResponse : ' . $e->getMessage());
1661
  }
1662
-
1663
  $result = false;
1664
  } elseif ($data === 'ok') {
1665
  $result = true;
57
  const FL_SHOW_STATUS_ASYNC = 'show_status';
58
  const FL_SHOW_STATUS_ASYNC_KEY = 'Y';
59
 
60
+ public static $seStoreIds = array();
61
+
62
  public static function getParamNotUseHttpRequest()
63
  {
64
  return self::NOT_USE_HTTP_REQUEST . '=' . self::NOT_USE_HTTP_REQUEST_KEY;
194
  {
195
  return self::getStatusModule($store, $moduleName) == 'Y';
196
  }
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
  public static function setUseFullFeed($value = null)
199
  {
233
 
234
  public static function getSearchaniseLink()
235
  {
236
+ return 'adminhtml/searchanise/index';
237
  }
238
 
239
  public static function getAsyncLink($flNotUserHttpRequest = false)
254
 
255
  public static function getReSyncLink()
256
  {
257
+ return 'adminhtml/searchanise/resync';
258
  }
259
 
260
  public static function getOptionsLink()
261
  {
262
+ return 'adminhtml/searchanise/options';
263
  }
264
 
265
  public static function getModuleLink()
266
  {
267
+ return 'adminhtml/searchanise/index';
268
  }
269
 
270
  public static function getModuleUrl()
274
 
275
  public static function getConnectLink()
276
  {
277
+ return 'adminhtml/searchanise/signup';
278
  }
279
 
280
  public static function getConnectUrl($flNotUserHttpRequest = false, $storeId = '', $flCheckSecure = true)
620
  } else {
621
  $stores = Mage::app()->getStores();
622
  }
623
+
624
+ if (!empty(self::$seStoreIds)) {
625
+ foreach ($stores as $key => $store) {
626
+ if (!in_array($store->getId(), self::$seStoreIds)) {
627
+ unset($stores[$key]);
628
+ }
629
+ }
630
+ }
631
 
632
  return $stores;
633
  }
636
  {
637
  if (self::checkImportIsDone()) {
638
  if (self::checkNotificationAsyncComleted()) {
 
 
639
  $textNotification = Mage::helper('searchanise')->__('Catalog indexation is complete. Configure Searchanise via the <a href="%s">Admin Panel</a>.', Mage::helper('searchanise/ApiSe')->getModuleUrl());
640
 
641
  Mage::helper('searchanise/ApiSe')->setNotification('N', Mage::helper('searchanise')->__('Searchanise'), $textNotification);
646
  return true;
647
  }
648
 
 
 
 
 
 
 
 
 
 
649
  /**
650
  * Set notification message
651
  *
692
  $client->setUri($url);
693
 
694
  $client->setConfig(array(
695
+ 'httpversion' => Zend_Http_Client::HTTP_0,
696
  'maxredirects' => $maxredirects,
697
  'timeout' => $timeout,
698
  ));
1270
 
1271
  return $ret;
1272
  }
1273
+
1274
+ public static function _addTaskByChunk($store, $action = Simtech_Searchanise_Model_Queue::ACT_UPDATE_PRODUCTS, $isOnlyActive = false)
1275
  {
1276
  $i = 0;
1277
  $step = 50;
1644
  } elseif (is_array($data) && !empty($data['errors'])) {
1645
  foreach ($data['errors'] as $e) {
1646
  if ($showNotification == true) {
1647
+ self::setNotification('E', Mage::helper('searchanise')->__('Error'), 'Searchanise: ' . $e);
1648
  }
 
1649
  }
1650
+
1651
  $result = false;
1652
  } elseif ($data === 'ok') {
1653
  $result = true;
app/code/community/Simtech/Searchanise/Helper/Data.php CHANGED
@@ -24,8 +24,6 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
24
 
25
  const TEXT_FIND = 'TEXT_FIND';
26
  const TEXT_ADVANCED_FIND = 'TEXT_ADVANCED_FIND';
27
- const VIEW_CATEGORY = 'VIEW_CATEGORY';
28
- const VIEW_TAG = 'VIEW_TAG';
29
 
30
  protected $_disableText;
31
  protected $_debugText;
@@ -33,8 +31,6 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
33
  protected static $_searchaniseTypes = array(
34
  self::TEXT_FIND,
35
  self::TEXT_ADVANCED_FIND,
36
- self::VIEW_CATEGORY,
37
- self::VIEW_TAG,
38
  );
39
 
40
  /**
@@ -136,33 +132,25 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
136
  $params = array();
137
  }
138
 
139
- if (in_array($type, self::$_searchaniseTypes)) {
140
- if ($type == self::TEXT_FIND) {
141
- $params['sortBy'] = 'relevance';
142
- $params['sortOrder'] = 'desc';
143
 
144
- } elseif ($type == self::TEXT_ADVANCED_FIND) {
145
- $params['sortBy'] = 'name';
146
- $params['sortOrder'] = 'asc';
 
147
 
148
- } elseif ($type == self::VIEW_CATEGORY) {
149
- $params['sortBy'] = 'name';
150
- $params['sortOrder'] = 'asc';
151
 
152
- } elseif ($type == self::VIEW_TAG) {
153
- $params['sortBy'] = 'name';
154
- $params['sortOrder'] = 'asc';
155
- }
156
 
157
- if (empty($params['restrictBy'])) {
158
- $params['restrictBy'] = array();
159
- }
160
- if (empty($params['queryBy'])) {
161
- $params['queryBy'] = array();
162
- }
163
- if (empty($params['union'])) {
164
- $params['union'] = array();
165
- }
166
  }
167
 
168
  return $this;
@@ -188,15 +176,8 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
188
  $check = false;
189
 
190
  $type = $this->getSearchaniseCurentType();
191
-
192
  if ($type) {
193
- if (Mage::helper('searchanise/ApiSe')->getUseNavigation()) {
194
- $check = true;
195
- } else {
196
- if (($type == self::TEXT_FIND) || ($type == self::TEXT_ADVANCED_FIND)) {
197
- $check = true;
198
- }
199
- }
200
  }
201
 
202
  return $check;
@@ -208,12 +189,7 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
208
  if ((!$this->checkEnabled()) || (!Mage::helper('searchanise/ApiSe')->getEnabledSearchaniseSearch())) {
209
  return;
210
  }
211
-
212
- if (!Mage::helper('searchanise/ApiSe')->getUseNavigation()) {
213
- if (($type != self::TEXT_FIND) && ($type != self::TEXT_ADVANCED_FIND)) {
214
- return;
215
- }
216
- }
217
  $this->setSearchaniseCurentType($type);
218
  if (empty($params)) {
219
  $params = array();
@@ -232,89 +208,63 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
232
  $params['restrictBy']['is_in_stock'] = '1';
233
  }
234
 
235
- if (in_array($type, self::$_searchaniseTypes)) {
236
- if ($type == self::TEXT_FIND) {
237
- $params['q'] = Mage::helper('catalogsearch')->getQueryText();
238
- if ($params['q'] != '') {
239
- $params['q'] = strtolower(trim($params['q']));
240
- }
241
 
242
- $params['facets'] = 'true';
243
- $params['suggestions'] = 'true';
244
- $params['query_correction'] = 'false';
245
- $params['suggestionsMaxResults'] = Mage::helper('searchanise/ApiSe')->getSuggestionsMaxResults();
246
-
247
- $params['restrictBy']['visibility'] = '3|4';
248
- $minQuantityDecimals = Mage::helper('searchanise/ApiSe')->getMinQuantityDecimals();
249
- if (!empty($minQuantityDecimals)) {
250
- $params['restrictBy']['quantity_decimals'] = $minQuantityDecimals . ',';
251
- }
252
 
253
- } elseif ($type == self::TEXT_ADVANCED_FIND) {
254
- $params['facets'] = 'false';
255
- $params['suggestions'] = 'false';
256
- $params['query_correction'] = 'false';
257
-
258
- $params['restrictBy']['visibility'] = '3|4';
259
- $minQuantityDecimals = Mage::helper('searchanise/ApiSe')->getMinQuantityDecimals();
260
- if (!empty($minQuantityDecimals)) {
261
- $params['restrictBy']['quantity_decimals'] = $minQuantityDecimals . ',';
262
- }
263
-
264
- } elseif ($type == self::VIEW_CATEGORY) {
265
- // fixme in the future
266
- // need to add check to display block "Layered Navigation"
267
- if (true) {
268
- $params['facets'] = 'true';
269
-
270
- } else {
271
- $params['facets'] = 'false';
272
- }
273
-
274
- $params['suggestions'] = 'false';
275
- $params['restrictBy']['visibility'] = '2|4';
276
 
277
- } elseif ($type == self::VIEW_TAG) {
278
- $params['facets'] = 'false';
279
- $params['suggestions'] = 'false';
280
-
281
- $params['restrictBy']['visibility'] = '3|2|4';
 
 
 
 
282
  }
283
  }
284
 
285
  if ((!empty($controller)) && (!empty($blockToolbar))) {
286
  if ($availableOrders = $blockToolbar->getAvailableOrders()) {
287
- if (in_array($type, self::$_searchaniseTypes)) {
288
- $fl_change_orders = false;
289
- // Fixme in the feature:
290
- // products could have different position in different categories, sort by "position" disabled.
291
- if (isset($availableOrders['position'])) {
 
 
 
 
 
 
292
  $fl_change_orders = true;
293
- unset($availableOrders['position']);
294
- }
295
- // end
296
-
297
- if ($type == self::TEXT_FIND) {
298
- if (!isset($availableOrders['relevance'])) {
299
- $fl_change_orders = true;
300
- $availableOrders = array_merge(
301
- array('relevance' => $controller->__('Relevance')),
302
- $availableOrders
303
- );
304
- }
305
- } elseif ($type == self::TEXT_ADVANCED_FIND) {
306
- // Nothing.
307
- } elseif ($type == self::VIEW_CATEGORY) {
308
- // Nothing.
309
- } elseif ($type == self::VIEW_TAG) {
310
- // Nothing.
311
- }
312
- if ($fl_change_orders) {
313
- $blockToolbar->setAvailableOrders($availableOrders);
314
- // If it changed orders then necessary set new default order and default direction.
315
- $blockToolbar->setDefaultOrder($params['sortBy']);
316
- $blockToolbar->setDefaultDirection($params['sortOrder']);
317
  }
 
 
 
 
 
 
 
 
 
318
  }
319
  }
320
 
@@ -325,18 +275,19 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
325
  $startIndex = 0;
326
  $curPage = (int) $blockToolbar->getCurrentPage();
327
  $startIndex = $curPage > 1 ? ($curPage - 1) * $maxResults : 0;
328
-
329
  if ($maxResults) {
330
  $params['maxResults'] = $maxResults;
331
  }
 
332
  if ($startIndex) {
333
  $params['startIndex'] = $startIndex;
334
  }
335
-
336
  if ($sortBy) {
337
  $params['sortBy'] = $sortBy;
338
  }
339
-
340
  if ($sortOrder) {
341
  $params['sortOrder'] = $sortOrder;
342
  }
@@ -344,7 +295,7 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
344
  // Fixme in the future
345
  // Need add check the 'sort By' parameter on the existence of Server.
346
  // $params['sortBy']
347
-
348
  //ADD FACETS
349
  $arrAttributes = array();
350
  $arrInputType = array(); // need for save type $arrAttributes
@@ -352,33 +303,27 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
352
  // CATEGORIES
353
  {
354
  $arrCat = null;
355
-
356
- if ((in_array($type, self::$_searchaniseTypes)) && ($type != self::VIEW_TAG)) {
357
- $cat_id = (int) $controller->getRequest()->getParam('cat');
358
- if (!empty($cat_id)) {
359
- $arrCat = array();
360
- $arrCat[] = $cat_id; // need if not exist children categories
 
 
 
 
 
361
 
362
- $categories = Mage::getModel('catalog/category')
363
- ->getCollection()
364
- ->setStoreId(Mage::app()->getStore()->getId())
365
- ->addFieldToFilter('entity_id', $cat_id)
366
- ->load()
367
- ;
368
-
369
- if (!empty($categories)) {
370
- foreach ($categories as $cat) {
371
- if (!empty($cat)) {
372
- $arrCat = $cat->getAllChildren(true);
373
- }
374
  }
375
  }
376
- } elseif (($type == self::VIEW_CATEGORY) && (!empty($data))) {
377
- // data = category
378
- $arrCat = $data->getAllChildren(true);
379
  }
380
  }
381
-
382
  if (!empty($arrCat)) {
383
  if (is_array($arrCat)) {
384
  $params['restrictBy']['category_ids'] = implode('|', $arrCat);
@@ -452,21 +397,12 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
452
  }
453
  }
454
  }
455
- // TAGS
456
- if ((in_array($type, self::$_searchaniseTypes)) && ($type == self::VIEW_TAG)) {
457
- if ($data) {
458
- // data = tag
459
- $params['restrictBy']['tag_ids'] = $data->getId();
460
- }
461
- }
462
  }
463
 
464
- if (!Mage::helper('searchanise/ApiSe')->getUseNavigation()) {
465
- if (empty($params['queryBy']) && (!isset($params['q']) || $params['q'] == '')) {
466
- return;
467
- }
468
  }
469
-
470
  Mage::helper('searchanise')
471
  ->initSearchaniseRequest()
472
  ->getSearchaniseRequest()
@@ -477,7 +413,7 @@ class Simtech_Searchanise_Helper_Data extends Mage_Core_Helper_Abstract
477
 
478
  //add suggestions
479
  $suggestionsMaxResults = Mage::helper('searchanise/ApiSe')->getSuggestionsMaxResults();
480
- if ((!empty($suggestionsMaxResults)) && (in_array($type, self::$_searchaniseTypes)) && ($type == self::TEXT_FIND)) {
481
  $res = Mage::helper('searchanise')->getSearchaniseRequest();
482
 
483
  if ($res->getTotalProduct() == 0) {
24
 
25
  const TEXT_FIND = 'TEXT_FIND';
26
  const TEXT_ADVANCED_FIND = 'TEXT_ADVANCED_FIND';
 
 
27
 
28
  protected $_disableText;
29
  protected $_debugText;
31
  protected static $_searchaniseTypes = array(
32
  self::TEXT_FIND,
33
  self::TEXT_ADVANCED_FIND,
 
 
34
  );
35
 
36
  /**
132
  $params = array();
133
  }
134
 
135
+ if ($type == self::TEXT_FIND) {
136
+ $params['sortBy'] = 'relevance';
137
+ $params['sortOrder'] = 'desc';
 
138
 
139
+ } elseif ($type == self::TEXT_ADVANCED_FIND) {
140
+ $params['sortBy'] = 'name';
141
+ $params['sortOrder'] = 'asc';
142
+ }
143
 
144
+ if (empty($params['restrictBy'])) {
145
+ $params['restrictBy'] = array();
146
+ }
147
 
148
+ if (empty($params['queryBy'])) {
149
+ $params['queryBy'] = array();
150
+ }
 
151
 
152
+ if (empty($params['union'])) {
153
+ $params['union'] = array();
 
 
 
 
 
 
 
154
  }
155
 
156
  return $this;
176
  $check = false;
177
 
178
  $type = $this->getSearchaniseCurentType();
 
179
  if ($type) {
180
+ $check = true;
 
 
 
 
 
 
181
  }
182
 
183
  return $check;
189
  if ((!$this->checkEnabled()) || (!Mage::helper('searchanise/ApiSe')->getEnabledSearchaniseSearch())) {
190
  return;
191
  }
192
+
 
 
 
 
 
193
  $this->setSearchaniseCurentType($type);
194
  if (empty($params)) {
195
  $params = array();
208
  $params['restrictBy']['is_in_stock'] = '1';
209
  }
210
 
211
+ if ($type == self::TEXT_FIND) {
212
+ $params['q'] = Mage::helper('catalogsearch')->getQueryText();
213
+ if ($params['q'] != '') {
214
+ $params['q'] = strtolower(trim($params['q']));
215
+ }
 
216
 
217
+ $params['facets'] = 'true';
218
+ $params['suggestions'] = 'true';
219
+ $params['query_correction'] = 'false';
220
+ $params['suggestionsMaxResults'] = Mage::helper('searchanise/ApiSe')->getSuggestionsMaxResults();
 
 
 
 
 
 
221
 
222
+ $params['restrictBy']['visibility'] = '3|4';
223
+ $minQuantityDecimals = Mage::helper('searchanise/ApiSe')->getMinQuantityDecimals();
224
+ if (!empty($minQuantityDecimals)) {
225
+ $params['restrictBy']['quantity_decimals'] = $minQuantityDecimals . ',';
226
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
228
+ } elseif ($type == self::TEXT_ADVANCED_FIND) {
229
+ $params['facets'] = 'false';
230
+ $params['suggestions'] = 'false';
231
+ $params['query_correction'] = 'false';
232
+
233
+ $params['restrictBy']['visibility'] = '3|4';
234
+ $minQuantityDecimals = Mage::helper('searchanise/ApiSe')->getMinQuantityDecimals();
235
+ if (!empty($minQuantityDecimals)) {
236
+ $params['restrictBy']['quantity_decimals'] = $minQuantityDecimals . ',';
237
  }
238
  }
239
 
240
  if ((!empty($controller)) && (!empty($blockToolbar))) {
241
  if ($availableOrders = $blockToolbar->getAvailableOrders()) {
242
+ $fl_change_orders = false;
243
+ // Fixme in the feature:
244
+ // products could have different position in different categories, sort by "position" disabled.
245
+ if (isset($availableOrders['position'])) {
246
+ $fl_change_orders = true;
247
+ unset($availableOrders['position']);
248
+ }
249
+ // end
250
+
251
+ if ($type == self::TEXT_FIND) {
252
+ if (!isset($availableOrders['relevance'])) {
253
  $fl_change_orders = true;
254
+ $availableOrders = array_merge(
255
+ array('relevance' => $controller->__('Relevance')),
256
+ $availableOrders
257
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  }
259
+ } elseif ($type == self::TEXT_ADVANCED_FIND) {
260
+ // Nothing.
261
+ }
262
+
263
+ if ($fl_change_orders) {
264
+ $blockToolbar->setAvailableOrders($availableOrders);
265
+ // If it changed orders then necessary set new default order and default direction.
266
+ $blockToolbar->setDefaultOrder($params['sortBy']);
267
+ $blockToolbar->setDefaultDirection($params['sortOrder']);
268
  }
269
  }
270
 
275
  $startIndex = 0;
276
  $curPage = (int) $blockToolbar->getCurrentPage();
277
  $startIndex = $curPage > 1 ? ($curPage - 1) * $maxResults : 0;
278
+
279
  if ($maxResults) {
280
  $params['maxResults'] = $maxResults;
281
  }
282
+
283
  if ($startIndex) {
284
  $params['startIndex'] = $startIndex;
285
  }
286
+
287
  if ($sortBy) {
288
  $params['sortBy'] = $sortBy;
289
  }
290
+
291
  if ($sortOrder) {
292
  $params['sortOrder'] = $sortOrder;
293
  }
295
  // Fixme in the future
296
  // Need add check the 'sort By' parameter on the existence of Server.
297
  // $params['sortBy']
298
+
299
  //ADD FACETS
300
  $arrAttributes = array();
301
  $arrInputType = array(); // need for save type $arrAttributes
303
  // CATEGORIES
304
  {
305
  $arrCat = null;
306
+ $cat_id = (int) $controller->getRequest()->getParam('cat');
307
+ if (!empty($cat_id)) {
308
+ $arrCat = array();
309
+ $arrCat[] = $cat_id; // need if not exist children categories
310
+
311
+ $categories = Mage::getModel('catalog/category')
312
+ ->getCollection()
313
+ ->setStoreId(Mage::app()->getStore()->getId())
314
+ ->addFieldToFilter('entity_id', $cat_id)
315
+ ->load()
316
+ ;
317
 
318
+ if (!empty($categories)) {
319
+ foreach ($categories as $cat) {
320
+ if (!empty($cat)) {
321
+ $arrCat = $cat->getAllChildren(true);
 
 
 
 
 
 
 
 
322
  }
323
  }
 
 
 
324
  }
325
  }
326
+
327
  if (!empty($arrCat)) {
328
  if (is_array($arrCat)) {
329
  $params['restrictBy']['category_ids'] = implode('|', $arrCat);
397
  }
398
  }
399
  }
 
 
 
 
 
 
 
400
  }
401
 
402
+ if (empty($params['queryBy']) && (!isset($params['q']) || $params['q'] == '')) {
403
+ return;
 
 
404
  }
405
+
406
  Mage::helper('searchanise')
407
  ->initSearchaniseRequest()
408
  ->getSearchaniseRequest()
413
 
414
  //add suggestions
415
  $suggestionsMaxResults = Mage::helper('searchanise/ApiSe')->getSuggestionsMaxResults();
416
+ if (!empty($suggestionsMaxResults) && $type == self::TEXT_FIND) {
417
  $res = Mage::helper('searchanise')->getSearchaniseRequest();
418
 
419
  if ($res->getTotalProduct() == 0) {
app/code/community/Simtech/Searchanise/Model/Advanced.php CHANGED
@@ -34,37 +34,4 @@ class Simtech_Searchanise_Model_Advanced extends Mage_CatalogSearch_Model_Advanc
34
 
35
  return $this;
36
  }
37
-
38
- /**
39
- * Prepare product collection
40
- *
41
- * @param Mage_CatalogSearch_Model_Resource_Advanced_Collection $collection
42
- * @return Mage_Catalog_Model_Layer
43
- */
44
- public function prepareProductCollection($collection)
45
- {
46
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
47
- return parent::prepareProductCollection($collection);
48
- }
49
-
50
- if (method_exists($collection, 'setSearchaniseRequest')) {
51
- $collection->setSearchaniseRequest(Mage::helper('searchanise')->getSearchaniseRequest());
52
- }
53
-
54
- if (!$collection && !method_exists($collection, 'checkSearchaniseResult') || !$collection->checkSearchaniseResult()) {
55
- return parent::prepareProductCollection($collection);
56
- }
57
-
58
- $collection->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
59
- ->addSearchaniseFilter()
60
- ->setStore(Mage::app()->getStore())
61
- ->addMinimalPrice()
62
- ->addTaxPercents()
63
- ->addStoreFilter();
64
-
65
- Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
66
- Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
67
-
68
- return $this;
69
- }
70
  }
34
 
35
  return $this;
36
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
app/code/community/Simtech/Searchanise/Model/Layer.php DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
-
15
- class Simtech_Searchanise_Model_Layer extends Mage_Catalog_Model_Layer
16
- {
17
- /**
18
- * Prepare product collection
19
- *
20
- * @param Mage_Catalog_Model_Resource_Eav_Resource_Product_Collection $collection
21
- * @return Mage_Catalog_Model_Layer
22
- */
23
- public function prepareProductCollection($collection)
24
- {
25
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
26
- return parent::prepareProductCollection($collection);
27
- }
28
-
29
- if (method_exists($collection, 'setSearchaniseRequest')) {
30
- $collection->setSearchaniseRequest(Mage::helper('searchanise')->getSearchaniseRequest());
31
- }
32
-
33
- if ((!method_exists($collection, 'checkSearchaniseResult')) || (!$collection->checkSearchaniseResult())) {
34
- return parent::prepareProductCollection($collection);
35
- }
36
-
37
- $collection
38
- ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
39
- ->addSearchaniseFilter()
40
- ->addMinimalPrice()
41
- ->addFinalPrice()
42
- ->addTaxPercents()
43
- //->addStoreFilter()
44
- ->addUrlRewrite($this->getCurrentCategory()->getId());
45
-
46
- Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
47
- Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
48
-
49
- return $this;
50
- }
51
- }
52
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/Model/LayerCatalogSearch.php DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
-
15
- class Simtech_Searchanise_Model_LayerCatalogSearch extends Mage_CatalogSearch_Model_Layer
16
- {
17
- /**
18
- * Prepare product collection
19
- *
20
- * @param Mage_Catalog_Model_Resource_Product_Collection [v1.6] [v1.7] [v1.8] [v1.9], Mage_Catalog_Model_Mysql4_Product_Collection [v1.5] $collection
21
- * @return Mage_Catalog_Model_Layer
22
- */
23
- public function prepareProductCollection($collection)
24
- {
25
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
26
- return parent::prepareProductCollection($collection);
27
- }
28
-
29
- if (method_exists($collection, 'setSearchaniseRequest')) {
30
- $collection->setSearchaniseRequest(Mage::helper('searchanise')->getSearchaniseRequest());
31
- }
32
-
33
- if ((!method_exists($collection, 'checkSearchaniseResult')) || (!$collection->checkSearchaniseResult())) {
34
- return parent::prepareProductCollection($collection);
35
- }
36
-
37
- $collection
38
- ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
39
- ->addSearchaniseFilter()
40
- ->setStore(Mage::app()->getStore())
41
- ->addMinimalPrice()
42
- ->addFinalPrice()
43
- ->addTaxPercents()
44
- ->addStoreFilter()
45
- ->addUrlRewrite();
46
-
47
- Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
48
- Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
49
-
50
- return $this;
51
- }
52
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/Model/Mysql4/Product/CollectionTag.php DELETED
@@ -1,104 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
-
15
- // [v1.5]
16
- class Simtech_Searchanise_Model_Mysql4_Product_CollectionTag extends Mage_Tag_Model_Mysql4_Product_Collection
17
- {
18
- /**
19
- * Product Collection
20
- *
21
- * @var Mage_Catalog_Model_Resource_Collection [v1.6] [v1.7] [v1.8] [v1.9], Mage_Catalog_Model_Mysql4_Collection [v1.5]
22
- */
23
- protected $_searchaniseCollection = null;
24
-
25
- /**
26
- * Initialize resource
27
- * @return Simtech_Searchanise_Model_Mysql4_Product_CollectionSearhanise
28
- */
29
- protected function _construct()
30
- {
31
- parent::_construct();
32
- $this->_searchaniseCollection = Mage::getModel('searchanise/searchanise');
33
- $this->_searchaniseCollection->setCollection($this);
34
- }
35
-
36
- public function initSearchaniseRequest()
37
- {
38
- return $this->_searchaniseCollection->initSearchaniseRequest();
39
- }
40
-
41
- public function checkSearchaniseResult()
42
- {
43
- return $this->_searchaniseCollection->checkSearchaniseResult();
44
- }
45
-
46
- public function setSearchaniseRequest($request)
47
- {
48
- return $this->_searchaniseCollection->setSearchaniseRequest($request);
49
- }
50
-
51
- public function getSearchaniseRequest()
52
- {
53
- return $this->_searchaniseCollection->getSearchaniseRequest();
54
- }
55
-
56
- public function addSearchaniseFilter()
57
- {
58
- return $this->_searchaniseCollection->addSearchaniseFilter();
59
- }
60
-
61
- /**
62
- * Set Order field
63
- *
64
- * @param string $attribute
65
- * @param string $dir
66
- * @return Mage_Catalog_Model_Resource_Collection [v1.6] [v1.7] [v1.8] [v1.9], Mage_Catalog_Model_Mysql4_Collection [v1.5]
67
- */
68
- public function setOrder($attribute, $dir = 'desc')
69
- {
70
- return $this->_searchaniseCollection->setOrder($attribute, $dir);
71
- }
72
-
73
- /**
74
- * Set Order field
75
- *
76
- * @param string $attribute
77
- * @param string $dir
78
- * @return Mage_Catalog_Model_Resource_Collection [v1.6] [v1.7] [v1.8] [v1.9], Mage_Catalog_Model_Mysql4_Collection [v1.5]
79
- */
80
- public function setOrderParent($attribute, $dir = 'desc')
81
- {
82
- return parent::setOrder($attribute, $dir);
83
- }
84
-
85
- /**
86
- * Retrieve collection last page number
87
- *
88
- * @return int
89
- */
90
- public function getLastPageNumber()
91
- {
92
- return $this->_searchaniseCollection->getLastPageNumber();
93
- }
94
-
95
- /**
96
- * Retrieve collection last page number
97
- *
98
- * @return int
99
- */
100
- public function getLastPageNumberParent()
101
- {
102
- return parent::getLastPageNumber();
103
- }
104
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/Model/Observer.php CHANGED
@@ -736,4 +736,71 @@ class Simtech_Searchanise_Model_Observer
736
 
737
  return $this;
738
  }
739
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
736
 
737
  return $this;
738
  }
739
+
740
+ /**
741
+ * Before catalogSearchResultIndex dispatch
742
+ *
743
+ * @param Varien_Event_Observer $observer
744
+ * @return Mage_CatalogIndex_Model_Observer
745
+ */
746
+ public function controllerActionPredispatchCatalogSearchResultIndex(Varien_Event_Observer $observer)
747
+ {
748
+ $data = $observer->getData();
749
+ $controller = $data['controller_action'];
750
+
751
+ $defaultToolbarBlock = 'catalog/product_list_toolbar';
752
+
753
+ if (Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
754
+
755
+ $query = Mage::helper('catalogsearch')->getQuery();
756
+
757
+ $query->setStoreId(Mage::app()->getStore()->getId());
758
+
759
+ if ($query->getQueryText() != '') {
760
+ if (Mage::helper('searchanise')->checkEnabled()) {
761
+ $blockToolbar = $controller->getLayout()->getBlock('product_list_toolbar');
762
+ if (!$blockToolbar) {
763
+ $blockToolbar = $controller->getLayout()->createBlock($defaultToolbarBlock, microtime());
764
+ }
765
+
766
+ Mage::helper('searchanise')->execute(Simtech_Searchanise_Helper_Data::TEXT_FIND, $controller, $blockToolbar, $query);
767
+ }
768
+ }
769
+ }
770
+
771
+ return $this;
772
+ }
773
+
774
+ /**
775
+ * Before catalogSerachAdvancedResult dispatch
776
+ *
777
+ * @param Varien_Event_Observer $observer
778
+ * @return Mage_CatalogIndex_Model_Observer
779
+ */
780
+ public function controllerActionPredispatchCatalogSearchAdvancedResult(Varien_Event_Observer $observer)
781
+ {
782
+ $data = $observer->getData();
783
+ $controller = $data['controller_action'];
784
+
785
+ $default_toolbar_block = 'catalog/product_list_toolbar';
786
+
787
+ if (Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
788
+
789
+ try {
790
+ $query = $controller->getRequest()->getQuery();
791
+ } catch (Mage_Core_Exception $e) {
792
+ return $this;
793
+ }
794
+
795
+ if ($query) {
796
+ if (Mage::helper('searchanise')->checkEnabled()) {
797
+ $block_toolbar = $controller->getLayout()->createBlock($default_toolbar_block, microtime());
798
+
799
+ Mage::helper('searchanise')->execute(Simtech_Searchanise_Helper_Data::TEXT_ADVANCED_FIND, $controller, $block_toolbar, $query);
800
+ }
801
+ }
802
+ }
803
+
804
+ return $this;
805
+ }
806
+ }
app/code/community/Simtech/Searchanise/Model/Request.php CHANGED
@@ -275,7 +275,7 @@ class Simtech_Searchanise_Model_Request extends Mage_Core_Model_Abstract
275
  $query = Mage::helper('searchanise/ApiSe')->buildQuery($this->getSearchParams());
276
  $this->setSearchParam('api_key', $this->getApiKey());
277
  if (Mage::helper('searchanise')->checkDebug()) {
278
- Mage::helper('searchanise/ApiSe')->printR($this->getSearchParamsStr());
279
  Mage::helper('searchanise/ApiSe')->printR($this->getSearchParams());
280
  }
281
 
@@ -334,8 +334,6 @@ class Simtech_Searchanise_Model_Request extends Mage_Core_Model_Abstract
334
  // nothing
335
  } elseif ($result['error'] == 'NEED_RESYNC_YOUR_CATALOG') {
336
  Mage::helper('searchanise/ApiSe')->queueImport($this->getStore(), false);
337
- } elseif ($result['error'] == 'NAVIGATION_DISABLED') {
338
- Mage::helper('searchanise/ApiSe')->setUseNavigation(false);
339
  } elseif ($result['error'] == 'FULL_FEED_DISABLED') {
340
  Mage::helper('searchanise/ApiSe')->setUseFullFeed(false);
341
  }
@@ -350,7 +348,7 @@ class Simtech_Searchanise_Model_Request extends Mage_Core_Model_Abstract
350
  }
351
 
352
  $this->setSearchResult($result);
353
-
354
  return $this;
355
  }
356
 
275
  $query = Mage::helper('searchanise/ApiSe')->buildQuery($this->getSearchParams());
276
  $this->setSearchParam('api_key', $this->getApiKey());
277
  if (Mage::helper('searchanise')->checkDebug()) {
278
+ Mage::helper('searchanise/ApiSe')->printR(Mage::helper('searchanise/ApiSe')->getServiceUrl() . '/search?api_key=' . $this->getApiKey() . $this->getSearchParamsStr());
279
  Mage::helper('searchanise/ApiSe')->printR($this->getSearchParams());
280
  }
281
 
334
  // nothing
335
  } elseif ($result['error'] == 'NEED_RESYNC_YOUR_CATALOG') {
336
  Mage::helper('searchanise/ApiSe')->queueImport($this->getStore(), false);
 
 
337
  } elseif ($result['error'] == 'FULL_FEED_DISABLED') {
338
  Mage::helper('searchanise/ApiSe')->setUseFullFeed(false);
339
  }
348
  }
349
 
350
  $this->setSearchResult($result);
351
+
352
  return $this;
353
  }
354
 
app/code/community/Simtech/Searchanise/Model/Resource/Advanced/Collection.php CHANGED
@@ -33,6 +33,18 @@ class Simtech_Searchanise_Model_Resource_Advanced_Collection extends Mage_Catalo
33
  $this->_searchaniseCollection->setCollection($this);
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  public function initSearchaniseRequest()
37
  {
38
  return $this->_searchaniseCollection->initSearchaniseRequest();
33
  $this->_searchaniseCollection->setCollection($this);
34
  }
35
 
36
+ public function __construct($resource = null, array $args = array())
37
+ {
38
+ parent::__construct($resource, $args);
39
+
40
+ if (Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
41
+ $this->setSearchaniseRequest(Mage::helper('searchanise')->getSearchaniseRequest());
42
+ if ($this->checkSearchaniseResult()) {
43
+ $this->addSearchaniseFilter();
44
+ }
45
+ }
46
+ }
47
+
48
  public function initSearchaniseRequest()
49
  {
50
  return $this->_searchaniseCollection->initSearchaniseRequest();
app/code/community/Simtech/Searchanise/Model/Resource/Fulltext/Collection.php CHANGED
@@ -33,6 +33,18 @@ class Simtech_Searchanise_Model_Resource_Fulltext_Collection extends Mage_Catalo
33
  $this->_searchaniseCollection->setCollection($this);
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  public function initSearchaniseRequest()
37
  {
38
  return $this->_searchaniseCollection->initSearchaniseRequest();
@@ -52,6 +64,15 @@ class Simtech_Searchanise_Model_Resource_Fulltext_Collection extends Mage_Catalo
52
  {
53
  return $this->_searchaniseCollection->getSearchaniseRequest();
54
  }
 
 
 
 
 
 
 
 
 
55
 
56
  public function addSearchaniseFilter()
57
  {
33
  $this->_searchaniseCollection->setCollection($this);
34
  }
35
 
36
+ public function __construct($resource = null, array $args = array())
37
+ {
38
+ parent::__construct($resource, $args);
39
+
40
+ if (Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
41
+ $this->setSearchaniseRequest(Mage::helper('searchanise')->getSearchaniseRequest());
42
+ if ($this->checkSearchaniseResult()) {
43
+ $this->addSearchaniseFilter();
44
+ }
45
+ }
46
+ }
47
+
48
  public function initSearchaniseRequest()
49
  {
50
  return $this->_searchaniseCollection->initSearchaniseRequest();
64
  {
65
  return $this->_searchaniseCollection->getSearchaniseRequest();
66
  }
67
+
68
+ public function addSearchFilter($query)
69
+ {
70
+ if ($this->checkSearchaniseResult()) {
71
+ return $this;
72
+ }
73
+
74
+ return parent::addSearchFilter($query);
75
+ }
76
 
77
  public function addSearchaniseFilter()
78
  {
app/code/community/Simtech/Searchanise/Model/Resource/Product/Collection.php CHANGED
@@ -33,6 +33,18 @@ class Simtech_Searchanise_Model_Resource_Product_Collection extends Mage_Catalog
33
  $this->_searchaniseCollection->setCollection($this);
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  public function initSearchaniseRequest()
37
  {
38
  return $this->_searchaniseCollection->initSearchaniseRequest();
33
  $this->_searchaniseCollection->setCollection($this);
34
  }
35
 
36
+ public function __construct($resource = null, array $args = array())
37
+ {
38
+ parent::__construct($resource, $args);
39
+
40
+ if (Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
41
+ $this->setSearchaniseRequest(Mage::helper('searchanise')->getSearchaniseRequest());
42
+ if ($this->checkSearchaniseResult()) {
43
+ $this->addSearchaniseFilter();
44
+ }
45
+ }
46
+ }
47
+
48
  public function initSearchaniseRequest()
49
  {
50
  return $this->_searchaniseCollection->initSearchaniseRequest();
app/code/community/Simtech/Searchanise/Model/Resource/Product/CollectionTag.php DELETED
@@ -1,104 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
-
15
- // [v1.6] [v1.7] [v1.8] [v1.9]
16
- class Simtech_Searchanise_Model_Resource_Product_CollectionTag extends Mage_Tag_Model_Resource_Product_Collection
17
- {
18
- /**
19
- * Searchanise Collection Product
20
- *
21
- * @var Simtech_Searchanise_Model_Searchanise
22
- */
23
- protected $_searchaniseCollection = null;
24
-
25
- /**
26
- * Initialize resource
27
- * @return Simtech_Searchanise_Model_Mysql4_Product_CollectionSearhanise
28
- */
29
- protected function _construct()
30
- {
31
- parent::_construct();
32
- $this->_searchaniseCollection = Mage::getModel('searchanise/searchanise');
33
- $this->_searchaniseCollection->setCollection($this);
34
- }
35
-
36
- public function initSearchaniseRequest()
37
- {
38
- return $this->_searchaniseCollection->initSearchaniseRequest();
39
- }
40
-
41
- public function checkSearchaniseResult()
42
- {
43
- return $this->_searchaniseCollection->checkSearchaniseResult();
44
- }
45
-
46
- public function setSearchaniseRequest($request)
47
- {
48
- return $this->_searchaniseCollection->setSearchaniseRequest($request);
49
- }
50
-
51
- public function getSearchaniseRequest()
52
- {
53
- return $this->_searchaniseCollection->getSearchaniseRequest();
54
- }
55
-
56
- public function addSearchaniseFilter()
57
- {
58
- return $this->_searchaniseCollection->addSearchaniseFilter();
59
- }
60
-
61
- /**
62
- * Set Order field
63
- *
64
- * @param string $attribute
65
- * @param string $dir
66
- * @return Mage_CatalogSearch_Model_Mysql4_Fulltext_Collection
67
- */
68
- public function setOrder($attribute, $dir = 'desc')
69
- {
70
- return $this->_searchaniseCollection->setOrder($attribute, $dir);
71
- }
72
-
73
- /**
74
- * Set Order field
75
- *
76
- * @param string $attribute
77
- * @param string $dir
78
- * @return Mage_CatalogSearch_Model_Mysql4_Fulltext_Collection
79
- */
80
- public function setOrderParent($attribute, $dir = 'desc')
81
- {
82
- return parent::setOrder($attribute, $dir);
83
- }
84
-
85
- /**
86
- * Retrieve collection last page number
87
- *
88
- * @return int
89
- */
90
- public function getLastPageNumber()
91
- {
92
- return $this->_searchaniseCollection->getLastPageNumber();
93
- }
94
-
95
- /**
96
- * Retrieve collection last page number
97
- *
98
- * @return int
99
- */
100
- public function getLastPageNumberParent()
101
- {
102
- return parent::getLastPageNumber();
103
- }
104
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/controllers/{IndexController.php → Adminhtml/SearchaniseController.php} RENAMED
@@ -11,8 +11,11 @@
11
  * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
  * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
  ****************************************************************************/
14
- class Simtech_Searchanise_IndexController extends Mage_Adminhtml_Controller_Action
15
  {
 
 
 
16
  protected function _initAction()
17
  {
18
  $this->_setActiveMenu('searchanise/index/index');
@@ -44,4 +47,51 @@ class Simtech_Searchanise_IndexController extends Mage_Adminhtml_Controller_Acti
44
  print $this->getLayout()->createBlock("searchanise/Adminhtml_Index_Terms")->toHtml();
45
  exit();
46
  }
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
  * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
  ****************************************************************************/
14
+ class Simtech_Searchanise_Adminhtml_SearchaniseController extends Mage_Adminhtml_Controller_Action
15
  {
16
+
17
+ const PARAM_USE_FULL_FEED = 'snize_use_full_feed';
18
+
19
  protected function _initAction()
20
  {
21
  $this->_setActiveMenu('searchanise/index/index');
47
  print $this->getLayout()->createBlock("searchanise/Adminhtml_Index_Terms")->toHtml();
48
  exit();
49
  }
50
+
51
+ /*
52
+ * options
53
+ */
54
+ public function optionsAction()
55
+ {
56
+ $useFullFeed = $this->getRequest()->getParam(self::PARAM_USE_FULL_FEED);
57
+ if ($useFullFeed != '') {
58
+ Mage::helper('searchanise/ApiSe')->setUseFullFeed($useFullFeed == 'true' ? true : false);
59
+ }
60
+
61
+ exit;
62
+ }
63
+
64
+ /*
65
+ * resync
66
+ */
67
+ public function resyncAction()
68
+ {
69
+ if (Mage::helper('searchanise/ApiSe')->getStatusModule() == 'Y') {
70
+ if (Mage::helper('searchanise/ApiSe')->signup() != true) {
71
+
72
+ $this->_redirect(Mage::helper('searchanise/ApiSe')->getSearchaniseLink());
73
+ }
74
+ Mage::helper('searchanise/ApiSe')->queueImport();
75
+
76
+ $this->_redirect(Mage::helper('searchanise/ApiSe')->getSearchaniseLink());
77
+ }
78
+
79
+ return $this;
80
+ }
81
+
82
+ /*
83
+ * Signup
84
+ */
85
+ public function signupAction()
86
+ {
87
+ if (Mage::helper('searchanise/ApiSe')->getStatusModule() == 'Y') {
88
+ if (Mage::helper('searchanise/ApiSe')->signup() == true) {
89
+ Mage::helper('searchanise/ApiSe')->queueImport();
90
+ }
91
+
92
+ $this->_redirect(Mage::helper('searchanise/ApiSe')->getSearchaniseLink());
93
+ }
94
+
95
+ return $this;
96
+ }
97
+ }
app/code/community/Simtech/Searchanise/controllers/AdvancedController.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
- require_once("Mage/CatalogSearch/controllers/AdvancedController.php");
15
-
16
- class Simtech_Searchanise_AdvancedController extends Mage_CatalogSearch_AdvancedController
17
- {
18
- protected $_defaultToolbarBlock = 'catalog/product_list_toolbar';
19
-
20
- /**
21
- * Display search result
22
- */
23
- public function resultAction()
24
- {
25
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
26
- return parent::resultAction();
27
- }
28
-
29
- try {
30
- $query = $this->getRequest()->getQuery();
31
- } catch (Mage_Core_Exception $e) {
32
- return parent::resultAction();
33
- }
34
-
35
- if ($query) {
36
- if (Mage::helper('searchanise')->checkEnabled()) {
37
- $block_toolbar = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
38
-
39
- Mage::helper('searchanise')->execute(Simtech_Searchanise_Helper_Data::TEXT_ADVANCED_FIND, $this, $block_toolbar, $query);
40
- }
41
- }
42
-
43
- return parent::resultAction();
44
- }
45
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/controllers/AsyncController.php CHANGED
@@ -100,10 +100,6 @@ class Simtech_Searchanise_AsyncController extends Mage_Core_Controller_Front_Act
100
  $flIgnoreProcessing = true;
101
  }
102
 
103
- if (Mage::helper('catalog/product_flat')->isEnabled()) {
104
- Mage::helper('searchanise/ApiProducts')->setIsGetProductsByItems(true);
105
- }
106
-
107
  $result = Mage::helper('searchanise/ApiSe')->async($flIgnoreProcessing);
108
 
109
  if ($this->checkShowSatusAsync()) {
100
  $flIgnoreProcessing = true;
101
  }
102
 
 
 
 
 
103
  $result = Mage::helper('searchanise/ApiSe')->async($flIgnoreProcessing);
104
 
105
  if ($this->checkShowSatusAsync()) {
app/code/community/Simtech/Searchanise/controllers/CategoryController.php DELETED
@@ -1,70 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
- require_once("Mage/Catalog/controllers/CategoryController.php");
15
-
16
- class Simtech_Searchanise_CategoryController extends Mage_Catalog_CategoryController
17
- {
18
- protected $_defaultToolbarBlock = 'catalog/product_list_toolbar';
19
-
20
- protected function _getCurCategory()
21
- {
22
- $categoryId = (int) $this->getRequest()->getParam('id', false);
23
-
24
- if (!$categoryId) {
25
- return null;
26
- }
27
-
28
- $category = Mage::getModel('catalog/category')
29
- ->setStoreId(Mage::app()->getStore()->getId())
30
- ->load($categoryId);
31
-
32
- if (!Mage::helper('catalog/category')->canShow($category)) {
33
- return null;
34
- }
35
-
36
- return $category;
37
- }
38
-
39
- /**
40
- * Category view action
41
- */
42
- public function viewAction()
43
- {
44
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
45
- return parent::viewAction();
46
- }
47
-
48
- if ($category = $this->_getCurCategory()) {
49
- // If you need a this check, please, uncomment
50
- //~ $is_anchor = $category->getData('is_anchor');
51
- //~
52
- //~ if ($is_anchor == 'Y')
53
- {
54
- $display_mode = $category->getData('display_mode');
55
-
56
- // This check not need
57
- // if (($display_mode == 'PRODUCTS') || ($display_mode == 'PRODUCTS_AND_PAGE'))
58
- {
59
- if (Mage::helper('searchanise')->checkEnabled()) {
60
- $block_toolbar = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
61
-
62
- Mage::helper('searchanise')->execute(Simtech_Searchanise_Helper_Data::VIEW_CATEGORY, $this, $block_toolbar, $category);
63
- }
64
- }
65
- }
66
- }
67
-
68
- return parent::viewAction();
69
- }
70
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/controllers/InfoController.php CHANGED
@@ -179,7 +179,9 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
179
  $options['ajax_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkAjaxAsync();
180
  $options['object_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkObjectAsync();
181
 
182
- $options['use_navigation'] = Mage::helper('searchanise/ApiSe')->getUseNavigation();
 
 
183
  $options['use_full_feed'] = Mage::helper('searchanise/ApiSe')->getUseFullFeed();
184
 
185
  $options['max_execution_time'] = ini_get('max_execution_time');
@@ -197,6 +199,52 @@ class Simtech_Searchanise_InfoController extends Mage_Core_Controller_Front_Acti
197
  }
198
  $options['memory_limit_after'] = ini_get('memory_limit');
199
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  if ($visual) {
201
  Mage::helper('searchanise/ApiSe')->printR($options);
202
  } else {
179
  $options['ajax_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkAjaxAsync();
180
  $options['object_async_enabled'] = Mage::helper('searchanise/ApiSe')->checkObjectAsync();
181
 
182
+ $options['input_id'] = Mage::helper('searchanise/ApiSe')->getInputIdSearch();
183
+ $options['search_enabled'] = Mage::helper('searchanise/ApiSe')->getEnabledSearchaniseSearch();
184
+
185
  $options['use_full_feed'] = Mage::helper('searchanise/ApiSe')->getUseFullFeed();
186
 
187
  $options['max_execution_time'] = ini_get('max_execution_time');
199
  }
200
  $options['memory_limit_after'] = ini_get('memory_limit');
201
 
202
+ $models = array(
203
+ 'catalog/layer_filter_category' => 'Simtech_Searchanise_Model_Layer_Filter_Category',
204
+ 'catalog/layer_filter_price' => 'Simtech_Searchanise_Model_Layer_Filter_Price',
205
+ 'catalog_resource/product_collection' => 'Simtech_Searchanise_Model_Resource_Product_Collection',
206
+ 'catalog_resource/layer_filter_attribute' => 'Simtech_Searchanise_Model_Resource_Layer_Filter_Attribute',
207
+ 'catalog_resource/layer_filter_price' => 'Simtech_Searchanise_Model_Resource_Layer_Filter_Price',
208
+ 'catalog_resource_eav_mysql4/layer_filter_attribute' => 'Simtech_Searchanise_Model_Resource_Eav_Mysql4_Layer_Filter_Attribute',
209
+ 'catalog_resource_eav_mysql4/layer_filter_price' => 'Simtech_Searchanise_Model_Resource_Eav_Mysql4_Layer_Filter_Price',
210
+ 'catalog_resource_eav_mysql4/product_action' => 'Simtech_Searchanise_Model_Resource_Eav_Mysql4_Product_Action',
211
+ 'catalogsearch/advanced' => 'Simtech_Searchanise_Model_Advanced',
212
+ 'catalogsearch_resource/fulltext_collection' => 'Simtech_Searchanise_Model_Resource_Fulltext_Collection',
213
+ 'catalogsearch_resource/advanced_collection' => 'Simtech_Searchanise_Model_Resource_Advanced_Collection',
214
+ 'tag/tag_relation' => 'Simtech_Searchanise_Model_Tag_Relation',
215
+ 'importexport/import_entity_product' => 'Simtech_Searchanise_Model_Import_Entity_Product',
216
+ 'core_resource/store' => 'Simtech_Searchanise_Model_Resource_Store',
217
+ 'core_mysql4/store' => 'Simtech_Searchanise_Model_Mysql4_Store',
218
+ 'adminhtml/config_data' => 'Simtech_Searchanise_Model_Config_Data',
219
+ 'adminhtml/layer_filter_category' => 'Simtech_Searchanise_Model_Layer_Filter_Category',
220
+ );
221
+
222
+ foreach($models as $patch => $needed) {
223
+ $used = get_class(Mage::getModel($patch));
224
+ if ($used != $needed) {
225
+ $options['wrong_models'][$patch] = array(
226
+ 'needed' => $needed,
227
+ 'used' => $used,
228
+ );
229
+ }
230
+ }
231
+
232
+ $blocks = array(
233
+ 'global/blocks/catalog/rewrite/product_list_toolbar' => 'Simtech_Searchanise_Block_Product_List_Toolbar',
234
+ 'global/blocks/catalogsearch/rewrite/result' => 'Simtech_Searchanise_Block_Result',
235
+ 'global/blocks/catalogsearch/rewrite/autocomplete' => 'Simtech_Searchanise_Block_Autocomplete',
236
+ );
237
+
238
+ foreach($blocks as $patch => $needed) {
239
+ $used = Mage::getConfig()->getNode($patch)->__toString();
240
+ if ($used != $needed) {
241
+ $options['wrong_blocks'][$patch] = array(
242
+ 'needed' => $needed,
243
+ 'used' => $used,
244
+ );
245
+ }
246
+ }
247
+
248
  if ($visual) {
249
  Mage::helper('searchanise/ApiSe')->printR($options);
250
  } else {
app/code/community/Simtech/Searchanise/controllers/OptionsController.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
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
21
- */
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/controllers/ProductController.php DELETED
@@ -1,39 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
- require_once("Mage/Tag/controllers/ProductController.php");
15
-
16
- class Simtech_Searchanise_ProductController extends Mage_Tag_ProductController
17
- {
18
- protected $_defaultToolbarBlock = 'catalog/product_list_toolbar';
19
-
20
- public function listAction()
21
- {
22
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
23
- return parent::listAction();
24
- }
25
-
26
- $tagId = $this->getRequest()->getParam('tagId');
27
- $tag = Mage::getModel('tag/tag')->load($tagId);
28
-
29
- if ($tag->getId() && $tag->isAvailableInStore()) {
30
- if (Mage::helper('searchanise')->checkEnabled()) {
31
- $block_toolbar = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
32
-
33
- Mage::helper('searchanise')->execute(Simtech_Searchanise_Helper_Data::VIEW_TAG, $this, $block_toolbar, $tag);
34
- }
35
- }
36
-
37
- return parent::listAction();
38
- }
39
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/controllers/ResultController.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
- require_once("Mage/CatalogSearch/controllers/ResultController.php");
15
-
16
- class Simtech_Searchanise_ResultController extends Mage_CatalogSearch_ResultController
17
- {
18
- /**
19
- * Default toolbar block name
20
- *
21
- * @var string
22
- */
23
- protected $_defaultToolbarBlock = 'catalog/product_list_toolbar';
24
-
25
- /**
26
- * Retrieve Toolbar block
27
- *
28
- * @return Mage_Catalog_Block_Product_List_Toolbar
29
- */
30
- protected function _getToolbarBlock()
31
- {
32
- $blockName = 'product_list_toolbar';
33
- if ($blockName) {
34
- if ($block = $this->getLayout()->getBlock($blockName)) {
35
- return $block;
36
- }
37
- }
38
- $block = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
39
- return $block;
40
- }
41
-
42
- /**
43
- * Display search result
44
- */
45
- public function indexAction()
46
- {
47
- if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
48
- return parent::indexAction();
49
- }
50
-
51
- $query = Mage::helper('catalogsearch')->getQuery();
52
- /* @var $query Mage_CatalogSearch_Model_Query */
53
-
54
- $query->setStoreId(Mage::app()->getStore()->getId());
55
-
56
- if ($query->getQueryText() != '') {
57
- if (Mage::helper('searchanise')->checkEnabled()) {
58
- $blockToolbar = $this->_getToolbarBlock();
59
-
60
- Mage::helper('searchanise')->execute(Simtech_Searchanise_Helper_Data::TEXT_FIND, $this, $blockToolbar, $query);
61
- }
62
- }
63
-
64
- return parent::indexAction();
65
- }
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/controllers/ResyncController.php DELETED
@@ -1,34 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
-
15
- class Simtech_Searchanise_ResyncController extends Mage_Adminhtml_Controller_Action
16
- {
17
- /*
18
- * resync
19
- */
20
- public function indexAction()
21
- {
22
- if (Mage::helper('searchanise/ApiSe')->getStatusModule() == 'Y') {
23
- if (Mage::helper('searchanise/ApiSe')->signup() != true) {
24
-
25
- $this->_redirect(Mage::helper('searchanise/ApiSe')->getSearchaniseLink());
26
- }
27
- Mage::helper('searchanise/ApiSe')->queueImport();
28
-
29
- $this->_redirect(Mage::helper('searchanise/ApiSe')->getSearchaniseLink());
30
- }
31
-
32
- return $this;
33
- }
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/controllers/SignupController.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/
14
-
15
- class Simtech_Searchanise_SignupController extends Mage_Adminhtml_Controller_Action
16
- {
17
- /*
18
- * Signup
19
- */
20
- public function indexAction()
21
- {
22
- if (Mage::helper('searchanise/ApiSe')->getStatusModule() == 'Y') {
23
- if (Mage::helper('searchanise/ApiSe')->signup() == true) {
24
- Mage::helper('searchanise/ApiSe')->queueImport();
25
- }
26
-
27
- $this->_redirect(Mage::helper('searchanise/ApiSe')->getSearchaniseLink());
28
- }
29
-
30
- return $this;
31
- }
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Simtech/Searchanise/etc/config.xml CHANGED
@@ -15,42 +15,11 @@
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
- <version>3.0.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>
56
  <args>
@@ -75,16 +44,34 @@
75
  </searchanise>
76
  </updates>
77
  </layout>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  </frontend>
79
  <admin>
80
  <routers>
81
- <searchanise>
82
- <use>admin</use>
83
  <args>
84
- <module>Simtech_Searchanise</module>
85
- <frontName>searchanise</frontName>
 
86
  </args>
87
- </searchanise>
88
  </routers>
89
  </admin>
90
  <adminhtml>
@@ -93,7 +80,7 @@
93
  <children>
94
  <searchanise translate="title" module="searchanise">
95
  <title>Searchanise</title>
96
- <action>searchanise/index/index</action>
97
  </searchanise>
98
  </children>
99
  </catalog>
@@ -147,7 +134,6 @@
147
  <!-- [disabled_searchanise_search] -->
148
  <catalog>
149
  <rewrite>
150
- <layer>Simtech_Searchanise_Model_Layer</layer>
151
  <layer_filter_category>Simtech_Searchanise_Model_Layer_Filter_Category</layer_filter_category>
152
  <layer_filter_price>Simtech_Searchanise_Model_Layer_Filter_Price</layer_filter_price>
153
  </rewrite>
@@ -188,7 +174,6 @@
188
  <!-- [disabled_searchanise_search] -->
189
  <catalogsearch>
190
  <rewrite>
191
- <layer>Simtech_Searchanise_Model_LayerCatalogSearch</layer>
192
  <advanced>Simtech_Searchanise_Model_Advanced</advanced>
193
  </rewrite>
194
  </catalogsearch>
@@ -224,23 +209,6 @@
224
  </tag>
225
  <!-- END -->
226
 
227
- <!-- OVERRIDE TAG RESOURCE -->
228
- <!-- [v1.6] [v1.7] [v1.8] [v1.9] -->
229
- <tag_resource>
230
- <rewrite>
231
- <product_collection>Simtech_Searchanise_Model_Resource_Product_CollectionTag</product_collection>
232
- </rewrite>
233
- </tag_resource>
234
- <!-- [/v1.6] [/v1.7] [/v1.8] [/v1.9] -->
235
- <!-- [v1.5]-->
236
- <tag_mysql4>
237
- <rewrite>
238
- <product_collection>Simtech_Searchanise_Model_Mysql4_Product_CollectionTag</product_collection>
239
- </rewrite>
240
- </tag_mysql4>
241
- <!-- [/v1.5]-->
242
- <!-- END -->
243
-
244
  <!-- OVERRIDE IMPORTEXPORT MODEL -->
245
  <importexport>
246
  <rewrite>
@@ -583,13 +551,6 @@
583
  </rewrite>
584
  </catalogsearch>
585
  <!-- END -->
586
- <!-- OVERRIDE BLOCK TAG -->
587
- <tag>
588
- <rewrite>
589
- <product_result>Simtech_Searchanise_Block_Product_Result</product_result>
590
- </rewrite>
591
- </tag>
592
- <!-- END -->
593
  <!-- [/disabled_searchanise_search] -->
594
  </blocks>
595
  </global>
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
+ <version>3.1.0</version>
19
  </Simtech_Searchanise>
20
  </modules>
21
  <frontend>
22
  <routers>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  <searchanise>
24
  <use>standard</use>
25
  <args>
44
  </searchanise>
45
  </updates>
46
  </layout>
47
+ <events>
48
+ <controller_action_predispatch_catalogsearch_result_index>
49
+ <observers>
50
+ <rating>
51
+ <class>searchanise/observer</class>
52
+ <method>controllerActionPredispatchCatalogSearchResultIndex</method>
53
+ </rating>
54
+ </observers>
55
+ </controller_action_predispatch_catalogsearch_result_index>
56
+ <controller_action_predispatch_catalogsearch_advanced_result>
57
+ <observers>
58
+ <rating>
59
+ <class>searchanise/observer</class>
60
+ <method>controllerActionPredispatchCatalogSearchAdvancedResult</method>
61
+ </rating>
62
+ </observers>
63
+ </controller_action_predispatch_catalogsearch_advanced_result>
64
+ </events>
65
  </frontend>
66
  <admin>
67
  <routers>
68
+ <adminhtml>
 
69
  <args>
70
+ <modules>
71
+ <searchanise before="Mage_Adminhtml">Simtech_Searchanise_Adminhtml</searchanise>
72
+ </modules>
73
  </args>
74
+ </adminhtml>
75
  </routers>
76
  </admin>
77
  <adminhtml>
80
  <children>
81
  <searchanise translate="title" module="searchanise">
82
  <title>Searchanise</title>
83
+ <action>adminhtml/searchanise/index</action>
84
  </searchanise>
85
  </children>
86
  </catalog>
134
  <!-- [disabled_searchanise_search] -->
135
  <catalog>
136
  <rewrite>
 
137
  <layer_filter_category>Simtech_Searchanise_Model_Layer_Filter_Category</layer_filter_category>
138
  <layer_filter_price>Simtech_Searchanise_Model_Layer_Filter_Price</layer_filter_price>
139
  </rewrite>
174
  <!-- [disabled_searchanise_search] -->
175
  <catalogsearch>
176
  <rewrite>
 
177
  <advanced>Simtech_Searchanise_Model_Advanced</advanced>
178
  </rewrite>
179
  </catalogsearch>
209
  </tag>
210
  <!-- END -->
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  <!-- OVERRIDE IMPORTEXPORT MODEL -->
213
  <importexport>
214
  <rewrite>
551
  </rewrite>
552
  </catalogsearch>
553
  <!-- END -->
 
 
 
 
 
 
 
554
  <!-- [/disabled_searchanise_search] -->
555
  </blocks>
556
  </global>
app/code/community/Simtech/Searchanise/etc/config_without_search.xml CHANGED
@@ -15,42 +15,11 @@
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
- <version>3.0.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>
56
  <args>
@@ -75,16 +44,34 @@
75
  </searchanise>
76
  </updates>
77
  </layout>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  </frontend>
79
  <admin>
80
  <routers>
81
- <searchanise>
82
- <use>admin</use>
83
  <args>
84
- <module>Simtech_Searchanise</module>
85
- <frontName>searchanise</frontName>
 
86
  </args>
87
- </searchanise>
88
  </routers>
89
  </admin>
90
  <adminhtml>
@@ -93,7 +80,7 @@
93
  <children>
94
  <searchanise translate="title" module="searchanise">
95
  <title>Searchanise</title>
96
- <action>searchanise/index/index</action>
97
  </searchanise>
98
  </children>
99
  </catalog>
@@ -147,7 +134,6 @@
147
  <!-- [disabled_searchanise_search] -->
148
  <!-- <catalog>
149
  <rewrite>
150
- <layer>Simtech_Searchanise_Model_Layer</layer>
151
  <layer_filter_category>Simtech_Searchanise_Model_Layer_Filter_Category</layer_filter_category>
152
  <layer_filter_price>Simtech_Searchanise_Model_Layer_Filter_Price</layer_filter_price>
153
  </rewrite>
@@ -188,7 +174,6 @@
188
  <!-- [disabled_searchanise_search] -->
189
  <!-- <catalogsearch>
190
  <rewrite>
191
- <layer>Simtech_Searchanise_Model_LayerCatalogSearch</layer>
192
  <advanced>Simtech_Searchanise_Model_Advanced</advanced>
193
  </rewrite>
194
  </catalogsearch> -->
@@ -224,23 +209,6 @@
224
  </tag>
225
  <!-- END -->
226
 
227
- <!-- OVERRIDE TAG RESOURCE -->
228
- <!-- [v1.6] [v1.7] [v1.8] [v1.9] -->
229
- <tag_resource>
230
- <rewrite>
231
- <product_collection>Simtech_Searchanise_Model_Resource_Product_CollectionTag</product_collection>
232
- </rewrite>
233
- </tag_resource>
234
- <!-- [/v1.6] [/v1.7] [/v1.8] [/v1.9] -->
235
- <!-- [v1.5]-->
236
- <tag_mysql4>
237
- <rewrite>
238
- <product_collection>Simtech_Searchanise_Model_Mysql4_Product_CollectionTag</product_collection>
239
- </rewrite>
240
- </tag_mysql4>
241
- <!-- [/v1.5]-->
242
- <!-- END -->
243
-
244
  <!-- OVERRIDE IMPORTEXPORT MODEL -->
245
  <importexport>
246
  <rewrite>
@@ -583,13 +551,6 @@
583
  </rewrite>
584
  </catalogsearch> -->
585
  <!-- END -->
586
- <!-- OVERRIDE BLOCK TAG -->
587
- <!-- <tag>
588
- <rewrite>
589
- <product_result>Simtech_Searchanise_Block_Product_Result</product_result>
590
- </rewrite>
591
- </tag> -->
592
- <!-- END -->
593
  <!-- [/disabled_searchanise_search] -->
594
  </blocks>
595
  </global>
15
  <config>
16
  <modules>
17
  <Simtech_Searchanise>
18
+ <version>3.0.6</version>
19
  </Simtech_Searchanise>
20
  </modules>
21
  <frontend>
22
  <routers>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  <searchanise>
24
  <use>standard</use>
25
  <args>
44
  </searchanise>
45
  </updates>
46
  </layout>
47
+ <!--<events>
48
+ <controller_action_predispatch_catalogsearch_result_index>
49
+ <observers>
50
+ <rating>
51
+ <class>searchanise/observer</class>
52
+ <method>controllerActionPredispatchCatalogSearchResultIndex</method>
53
+ </rating>
54
+ </observers>
55
+ </controller_action_predispatch_catalogsearch_result_index>
56
+ <controller_action_predispatch_catalogsearch_advanced_result>
57
+ <observers>
58
+ <rating>
59
+ <class>searchanise/observer</class>
60
+ <method>controllerActionPredispatchCatalogSearchAdvancedResult</method>
61
+ </rating>
62
+ </observers>
63
+ </controller_action_predispatch_catalogsearch_advanced_result>
64
+ </events>-->
65
  </frontend>
66
  <admin>
67
  <routers>
68
+ <adminhtml>
 
69
  <args>
70
+ <modules>
71
+ <searchanise before="Mage_Adminhtml">Simtech_Searchanise_Adminhtml</searchanise>
72
+ </modules>
73
  </args>
74
+ </adminhtml>
75
  </routers>
76
  </admin>
77
  <adminhtml>
80
  <children>
81
  <searchanise translate="title" module="searchanise">
82
  <title>Searchanise</title>
83
+ <action>adminhtml/searchanise/index</action>
84
  </searchanise>
85
  </children>
86
  </catalog>
134
  <!-- [disabled_searchanise_search] -->
135
  <!-- <catalog>
136
  <rewrite>
 
137
  <layer_filter_category>Simtech_Searchanise_Model_Layer_Filter_Category</layer_filter_category>
138
  <layer_filter_price>Simtech_Searchanise_Model_Layer_Filter_Price</layer_filter_price>
139
  </rewrite>
174
  <!-- [disabled_searchanise_search] -->
175
  <!-- <catalogsearch>
176
  <rewrite>
 
177
  <advanced>Simtech_Searchanise_Model_Advanced</advanced>
178
  </rewrite>
179
  </catalogsearch> -->
209
  </tag>
210
  <!-- END -->
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  <!-- OVERRIDE IMPORTEXPORT MODEL -->
213
  <importexport>
214
  <rewrite>
551
  </rewrite>
552
  </catalogsearch> -->
553
  <!-- END -->
 
 
 
 
 
 
 
554
  <!-- [/disabled_searchanise_search] -->
555
  </blocks>
556
  </global>
app/code/community/Simtech/Searchanise/etc/system.xml CHANGED
@@ -37,8 +37,8 @@
37
  <show_in_store>1</show_in_store>
38
  <fields>
39
  <input_id_search translate="labe commentl">
40
- <label><![CDATA[Search field ID]]></label>
41
- <comment><![CDATA[ID of the search field in the customer area]]></comment>
42
  <frontend_type>text</frontend_type>
43
  <validate></validate>
44
  <sort_order>1</sort_order>
37
  <show_in_store>1</show_in_store>
38
  <fields>
39
  <input_id_search translate="labe commentl">
40
+ <label><![CDATA[Search input HTML DOM ID]]></label>
41
+ <comment><![CDATA[Important: Edit only if your custom theme changes the default search input ID!]]></comment>
42
  <frontend_type>text</frontend_type>
43
  <validate></validate>
44
  <sort_order>1</sort_order>
app/design/frontend/default/default/template/catalogsearch/form.mini.phtml DELETED
@@ -1,41 +0,0 @@
1
- <?php
2
- /***************************************************************************
3
- * *
4
- * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev *
5
- * *
6
- * This is commercial software, only users who have purchased a valid *
7
- * license and accept to the terms of the License Agreement can install *
8
- * and use this program. *
9
- * *
10
- ****************************************************************************
11
- * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
12
- * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
13
- ****************************************************************************/?>
14
-
15
- <form id="search_mini_form" action="<?php echo $this->helper('catalogsearch')->getResultUrl() ?>" method="get">
16
- <div class="form-search">
17
- <label for="search"><?php echo $this->__('Search:') ?></label>
18
- <input id="search" type="text" name="<?php echo $this->helper('catalogsearch')->getQueryParamName() ?>" value="<?php echo $this->helper('catalogsearch')->getEscapedQueryText() ?>" class="input-text" />
19
- <button type="submit" title="<?php echo $this->__('Search') ?>" class="button"><span><span><?php echo $this->__('Search') ?></span></span></button>
20
- <div id="search_autocomplete" class="search-autocomplete"></div>
21
- <?php
22
- $showDefaultAutocomplete = true;
23
- $searchaniseDisabled = Mage::getStoreConfigFlag('advanced/modules_disable_output/Simtech_Searchanise');
24
- if (!$searchaniseDisabled) {
25
- $store = Mage::app()->getStore();
26
- $showDefaultAutocomplete = !Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true, $store);
27
- }
28
-
29
- if ($showDefaultAutocomplete) {
30
- ?>
31
- <script type="text/javascript">
32
- //<![CDATA[
33
- var searchForm = new Varien.searchForm('search_mini_form', 'search', '<?php echo $this->__('Search entire store here...') ?>');
34
- searchForm.initAutocomplete('<?php echo $this->helper('catalogsearch')->getSuggestUrl() ?>', 'search_autocomplete');
35
- //]]>
36
- </script>
37
- <?php
38
- }
39
- ?>
40
- </div>
41
- </form>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Simtech_Searchanise</name>
4
- <version>3.0.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,12 +10,29 @@
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>[*] Magento 1.9 support added.&lt;br&gt;&#xD;
14
- [!] Catalog indexation would freeze for some stores. Fixed.</notes>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  <authors><author><name>Simbirsk Technologies, Ltd.</name><user>searchanise</user><email>sales@searchanise.com</email></author></authors>
16
- <date>2015-03-24</date>
17
- <time>10:01:37</time>
18
- <contents><target name="magecommunity"><dir name="Simtech"><dir name="Searchanise"><dir name="Block"><file name="Async.php" hash="143d28fa63be046b295bb7eb4783fb15"/><file name="Autocomplete.php" hash="efc89ac3f897be3bc307fba6a36778f0"/><file name="Jsinit.php" hash="dfe317297c918e1cf7d551877904121e"/><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="ApiCategories.php" hash="7e1853b1b91712de4aa4f57beb9198f9"/><file name="ApiPages.php" hash="973c5346e0ebd4ac0f4688626a19aca8"/><file name="ApiProducts.php" hash="25161f78e58ac3c5de200a071b22c738"/><file name="ApiSe.php" hash="aa2ab9e35986365b2ea9152fe2b913a4"/><file name="Data.php" hash="d4925c397d8b821b47be87a4d377930a"/></dir><dir name="Model"><file name="Advanced.php" hash="deb3ae5193e0aee50b94360b1833ac82"/><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="699179ce1fa119daf6a98bac01b9d9fe"/><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="eb0690a8cdbd11d6a26d23994157126b"/></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="e347d2e770c809aed137dcb7dc4df480"/><file name="Queue.php" hash="f862b207d2dc9bb7f56c829b8a1480fe"/><file name="Request.php" hash="e032bca52490ebb1813c443b002b5f49"/><dir name="Resource"><dir name="Advanced"><file name="Collection.php" hash="79160b9b7c205ee99d97870a076dfd11"/></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="f7e85d5050208cc0e0ba6e652be62f7f"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e61907b6fbe825511ea3dc590cd9009f"/><file name="Price.php" hash="57d56f6841c0e2b89c21947aa2a23e86"/></dir></dir><dir name="Product"><file name="Collection.php" hash="8ebf563ee0c188cf0b226c6ef9408043"/><file name="CollectionTag.php" hash="42efdd1b9b79e42b1d59f0452266bd42"/></dir><file name="Store.php" hash="6a337d4b6561aa96b96236d66cc9aa30"/></dir><file name="Searchanise.php" hash="d38d587354466e3a36e9c0a4f078d5fd"/><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="0b89778497643fff6027fb47eceda82e"/><file name="CategoryController.php" hash="06eac1ad4730d42379f6bc6aae097427"/><file name="IndexController.php" hash="e3234ca51a7669741e29ff7c38789989"/><file name="InfoController.php" hash="9dc96775d093c25bc151a3ad8a50cdb6"/><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="36a873409e9800ca08bc36563d788ac4"/><file name="config_without_search.xml" hash="1b41812cf4fd2f14e7409916ac6ecb67"/><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="955cdb2011b7abf04227aae37db5bb0b"/></dir></target></contents>
19
  <compatible/>
20
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
21
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Simtech_Searchanise</name>
4
+ <version>3.1.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
  <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>[+] Compatibility with magento SUPEE-6788 patch and version 1.9.2.2 was added.&lt;br&gt;&#xD;
14
+ [+] Compatibility with third-party addons that override 'catalogsearch' controllers was added.&lt;br&gt;&#xD;
15
+ [+] Support for product flat table was added.&lt;br&gt;&#xD;
16
+ [+] HHVM support added.&lt;br&gt;&#xD;
17
+ [+] Ability to hide categories from search was added.&lt;br&gt;&#xD;
18
+ [+] Ability to enable only some of the store views to be processed by Searchanise was added.&lt;br&gt;&#xD;
19
+ &lt;br&gt;&#xD;
20
+ [*] Magento: Set search field ID: The setting caption updated.&lt;br&gt;&#xD;
21
+ [*] Redundant product attributes are now longer collected.&lt;br&gt;&#xD;
22
+ [*] Obsolete code with category navigation was removed.&lt;br&gt;&#xD;
23
+ [*] Addition cms pages was hidden from search by default.&lt;br&gt;&#xD;
24
+ [*] Speed of product export was increased.&lt;br&gt;&#xD;
25
+ &lt;br&gt;&#xD;
26
+ [!] Due to inconsistency of Magento's standard "Category Products" index, not all products were searchable. Fixed.&lt;br&gt;&#xD;
27
+ [!] All categories were submitted for each store, even if it had its own default (parent) category. Fixed.&lt;br&gt;&#xD;
28
+ [!] If sorting by custom attribute was applied the search results were shown without using Searchanise. Fixed.&lt;br&gt;&#xD;
29
+ [!] Allow Qty Below 0 setting handing was fixed.&lt;br&gt;&#xD;
30
+ [!] Erroneous server requests were handled incorrectly, cramming store logs with notices. Fixed.&lt;br&gt;&#xD;
31
+ [!] Default autocomplete wasn't disabled in magento 1.9. Fixed.&lt;br&gt;</notes>
32
  <authors><author><name>Simbirsk Technologies, Ltd.</name><user>searchanise</user><email>sales@searchanise.com</email></author></authors>
33
+ <date>2015-11-10</date>
34
+ <time>08:50:13</time>
35
+ <contents><target name="magecommunity"><dir name="Simtech"><dir name="Searchanise"><dir name="Block"><file name="Async.php" hash="7fb3859416e0d468235082ca41c5a96b"/><file name="Autocomplete.php" hash="efc89ac3f897be3bc307fba6a36778f0"/><file name="Jsinit.php" hash="3411676a466ce1d4023f1be831a8ed12"/><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="759854378cb8c35c37a8a7f44076194f"/></dir></dir><file name="Result.php" hash="dec7b27ab9511c956680eb60eba9b95e"/></dir><dir name="Helper"><file name="ApiCategories.php" hash="693fb12e14eccb273bd9a775134df5c6"/><file name="ApiPages.php" hash="40b2c244bb969d3d1a3202e34059e14e"/><file name="ApiProducts.php" hash="1c937aeff0059a416c362f10fd679181"/><file name="ApiSe.php" hash="e1f78439586c184d93cd0e815eaa5326"/><file name="Data.php" hash="7cc7514c9a23bd084baaed1f97a5b3c7"/></dir><dir name="Model"><file name="Advanced.php" hash="e0c92b53cec8fbbfdd79690612c7ee84"/><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><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"/></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="a478dac639df52979587b01043f7eb97"/><file name="Queue.php" hash="f862b207d2dc9bb7f56c829b8a1480fe"/><file name="Request.php" hash="236d321c6f32fdc664923e000f9f2e71"/><dir name="Resource"><dir name="Advanced"><file name="Collection.php" hash="41256fb10dff7e97d0c9136dc0500bf3"/></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="54aca41551e47b62570e9071340b8edb"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e61907b6fbe825511ea3dc590cd9009f"/><file name="Price.php" hash="57d56f6841c0e2b89c21947aa2a23e86"/></dir></dir><dir name="Product"><file name="Collection.php" hash="ad006af84576dab614a08beec5200964"/></dir><file name="Store.php" hash="6a337d4b6561aa96b96236d66cc9aa30"/></dir><file name="Searchanise.php" hash="d38d587354466e3a36e9c0a4f078d5fd"/><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"><dir name="Adminhtml"><file name="SearchaniseController.php" hash="b05fe6f1b3d318a7186ec60b15e0fb04"/></dir><file name="AsyncController.php" hash="1fcec63f99231fc260995ae98aaaf86f"/><file name="InfoController.php" hash="212aa6e66052e3e1f62431367422be24"/></dir><dir name="etc"><file name="config.xml" hash="b26051acd6d6d7f9585d248abeba355e"/><file name="config_without_search.xml" hash="f68b16f43d5437847fbc393615b41c6f"/><file name="system.xml" hash="9d6e139bc5ba5c1bdc789bb8fab01d1c"/></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></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="955cdb2011b7abf04227aae37db5bb0b"/></dir></target></contents>
36
  <compatible/>
37
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
38
  </package>