Simtech_Searchanise - Version 1.1.5

Version Notes

[+] Third-party module compatibility improved.

[+] Tax support for bundle products added.

[!] Fixed: server sync could interrupt if products tag contained the & character.

[!] Fixed: error occured when the group product prices was obtained.

[!] Fixed: incorrect global attribute values could be sent on data submission. Fixed.

[*] General improvement of the data submission routine.

Download this release

Release Info

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


Code changes from version 1.1.4 to 1.1.5

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