Antidot_Antidot - Version 1.1.3

Version Notes

Fix facet with ampersand configuration for search engine > facets
Replace "-" with "&afs:feed" to separate feeds in url (compatibility with AFS 7.7)
Fix empty facet id sent when performing an empty query to afs to get facets list
Add description node for variants
Add cdata for variant name
Prevent to export empty categories node
Add cdata for variant name
Add variant details for grouped products

Download this release

Release Info

Developer Antidot
Extension Antidot_Antidot
Version 1.1.3
Comparing to
See all releases


Code changes from version 1.1.2 to 1.1.3

Files changed (58) hide show
  1. app/code/community/MDN/Antidot/Block/Catalogsearch/Result.php +0 -2
  2. app/code/community/MDN/Antidot/Block/System/Config/Fieldset/Notice.php +56 -0
  3. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Additional.php +1 -1
  4. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/AdditionalFeed.php +1 -1
  5. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/DefaultSort.php +2 -2
  6. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Facet.php +7 -6
  7. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Identifier.php +1 -1
  8. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/ProductAdditionalFacet.php +1 -1
  9. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Sort.php +1 -1
  10. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/CategoryAttribute.php +1 -1
  11. app/code/community/MDN/Antidot/Block/System/Config/Form/Field/ProductAttribute.php +1 -1
  12. app/code/community/MDN/Antidot/Block/System/Config/Html/Export.php +1 -1
  13. app/code/community/MDN/Antidot/Helper/Compress.php +1 -1
  14. app/code/community/MDN/Antidot/Helper/Data.php +41 -3
  15. app/code/community/MDN/Antidot/Helper/XmlWriter.php +1 -1
  16. app/code/community/MDN/Antidot/Model/Catalog/Layer/Filter/Category.php +1 -1
  17. app/code/community/MDN/Antidot/Model/Catalog/Layer/Filter/Item.php +1 -1
  18. app/code/community/MDN/Antidot/Model/Export/Abstract.php +127 -2
  19. app/code/community/MDN/Antidot/Model/Export/Article.php +1 -1
  20. app/code/community/MDN/Antidot/Model/Export/Product.php +117 -35
  21. app/code/community/MDN/Antidot/Model/Observer.php +22 -50
  22. app/code/community/MDN/Antidot/Model/Resource/Engine/Abstract.php +6 -6
  23. app/code/community/MDN/Antidot/Model/Resource/Engine/Antidot.php +2 -3
  24. app/code/community/MDN/Antidot/Model/Search/Search.php +17 -6
  25. app/code/community/MDN/Antidot/Model/System/Config/Facet.php +3 -2
  26. app/code/community/MDN/Antidot/Model/Transport.php +1 -1
  27. app/code/community/MDN/Antidot/Test/Helper/Data.php +36 -0
  28. app/code/community/MDN/Antidot/Test/Model/Export/Abstract.php +34 -0
  29. app/code/community/MDN/Antidot/Test/Model/Export/Abstract/fixtures/testGarbageCollection.yaml +3 -0
  30. app/code/community/MDN/Antidot/Test/Model/Export/Category.php +13 -4
  31. app/code/community/MDN/Antidot/Test/Model/Export/Category/fixtures/testEmptyFile.yaml +19 -0
  32. app/code/community/MDN/Antidot/Test/Model/Export/Product.php +33 -0
  33. app/code/community/MDN/Antidot/Test/Model/Export/Product/fixtures/testGetProductCategories.yaml +101 -0
  34. app/code/community/MDN/Antidot/Test/Model/System/Config/Facet.php +45 -2
  35. app/code/community/MDN/Antidot/controllers/Admin/PushController.php +2 -2
  36. app/code/community/MDN/Antidot/etc/config.xml +24 -1
  37. app/code/community/MDN/Antidot/etc/system.xml +9 -2
  38. app/design/frontend/{default → base}/default/layout/antidot.xml +1 -0
  39. app/design/frontend/{default → base}/default/template/antidot/catalogsearch/result/category.phtml +0 -0
  40. app/locale/de_AT/MDN_Antidot.csv +6 -1
  41. app/locale/de_CH/MDN_Antidot.csv +6 -1
  42. app/locale/de_DE/MDN_Antidot.csv +6 -1
  43. app/locale/es_AR/MDN_Antidot.csv +7 -2
  44. app/locale/es_CL/MDN_Antidot.csv +7 -2
  45. app/locale/es_CO/MDN_Antidot.csv +7 -2
  46. app/locale/es_CR/MDN_Antidot.csv +7 -2
  47. app/locale/es_ES/MDN_Antidot.csv +7 -2
  48. app/locale/es_MX/MDN_Antidot.csv +7 -2
  49. app/locale/es_PA/MDN_Antidot.csv +7 -2
  50. app/locale/es_PE/MDN_Antidot.csv +7 -2
  51. app/locale/es_VE/MDN_Antidot.csv +7 -2
  52. app/locale/fr_CA/MDN_Antidot.csv +6 -1
  53. app/locale/fr_FR/MDN_Antidot.csv +6 -1
  54. package.xml +4 -4
  55. shell/antidotExport.php +3 -1
  56. shell/antidotExportCategory.php +3 -1
  57. shell/antidotExportInc.php +3 -1
  58. shell/antidotExportProduct.php +5 -3
app/code/community/MDN/Antidot/Block/Catalogsearch/Result.php CHANGED
@@ -85,8 +85,6 @@ class MDN_Antidot_Block_CatalogSearch_Result extends Mage_CatalogSearch_Block_Re
85
  */
86
  public function _toHtml()
87
  {
88
- $this->setTemplate('antidot/catalogsearch/result.phtml');
89
-
90
  return parent::_toHtml();
91
  }
92
  }
85
  */
86
  public function _toHtml()
87
  {
 
 
88
  return parent::_toHtml();
89
  }
90
  }
app/code/community/MDN/Antidot/Block/System/Config/Fieldset/Notice.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ *
12
+ * @copyright Copyright (c) 2015 Antidot (http://www.antidot.net)
13
+ * @author : Antidot devmagento@antidot.net
14
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
15
+ */
16
+ class MDN_Antidot_Block_System_Config_Fieldset_Notice
17
+ extends Mage_Adminhtml_Block_Abstract
18
+ implements Varien_Data_Form_Element_Renderer_Interface
19
+ {
20
+
21
+ /**
22
+ * Render fieldset html
23
+ *
24
+ * @param Varien_Data_Form_Element_Abstract $element
25
+ * @return string
26
+ */
27
+ public function render(Varien_Data_Form_Element_Abstract $element)
28
+ {
29
+ $helper = Mage::helper('Antidot');
30
+ $html = '<div class="be2bill-api-notice">';
31
+ $html .= '<ul style="margin:10px;color:red">';
32
+ if (!class_exists('DOMDocument')) {
33
+ $html .= "<li><strong>" . $helper->__("DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither") . "</strong></li>";
34
+ }
35
+ if (!class_exists('XSLTProcessor')) {
36
+ $html .= "<li><strong>" . $helper->__("XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly") . "</strong></li>";
37
+ }
38
+ if (!class_exists('ZipArchive')) {
39
+ $html .= "<li><strong>" . $helper->__("ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly") . "</strong></li>";
40
+ }
41
+ $extensions = get_loaded_extensions();
42
+ if (!in_array('curl', $extensions)) {
43
+ $html .= "<li><strong>" . $helper->__("The curl php extension is not installed, it's required to upload export files") . "</strong></li>";
44
+ } else {
45
+ $curl_version = curl_version();
46
+ if (!isset($curl_version['protocols']) || !in_array("sftp", $curl_version['protocols'])) {
47
+ $html .= "<li><strong>" . $helper->__("The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded") . "</strong></li>";
48
+ }
49
+ }
50
+
51
+ $html .= '</ul>';
52
+ $html .= '</div>';
53
+ return $html;
54
+ }
55
+
56
+ }
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Additional.php CHANGED
@@ -46,7 +46,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_Additional extends Mage_A
46
  {
47
  if (!$this->_valueRenderer) {
48
  $this->_valueRenderer = $this->getLayout()
49
- ->createBlock('Antidot/Html_Select')
50
  ->setIsRenderToJsTemplate(true);
51
  }
52
  return $this->_valueRenderer;
46
  {
47
  if (!$this->_valueRenderer) {
48
  $this->_valueRenderer = $this->getLayout()
49
+ ->createBlock('Antidot/html_select')
50
  ->setIsRenderToJsTemplate(true);
51
  }
52
  return $this->_valueRenderer;
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/AdditionalFeed.php CHANGED
@@ -46,7 +46,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_AdditionalFeed extends Ma
46
  {
47
  if (!$this->_valueRenderer) {
48
  $this->_valueRenderer = $this->getLayout()
49
- ->createBlock('Antidot/Html_Select')
50
  ->setIsRenderToJsTemplate(true);
51
  }
52
  return $this->_valueRenderer;
46
  {
47
  if (!$this->_valueRenderer) {
48
  $this->_valueRenderer = $this->getLayout()
49
+ ->createBlock('Antidot/html_select')
50
  ->setIsRenderToJsTemplate(true);
51
  }
52
  return $this->_valueRenderer;
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/DefaultSort.php CHANGED
@@ -64,7 +64,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_DefaultSort extends Mage_
64
  {
65
  if (!$this->_fieldRenderer) {
66
  $this->_fieldRenderer = $this->getLayout()
67
- ->createBlock('Antidot/Html_Select')
68
  ->setIsRenderToJsTemplate(true);
69
  }
70
  return $this->_fieldRenderer;
@@ -77,7 +77,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_DefaultSort extends Mage_
77
  {
78
  if (!$this->_dirRenderer) {
79
  $this->_dirRenderer = $this->getLayout()
80
- ->createBlock('Antidot/Html_Select')
81
  ->setIsRenderToJsTemplate(true);
82
  }
83
  return $this->_dirRenderer;
64
  {
65
  if (!$this->_fieldRenderer) {
66
  $this->_fieldRenderer = $this->getLayout()
67
+ ->createBlock('Antidot/html_select')
68
  ->setIsRenderToJsTemplate(true);
69
  }
70
  return $this->_fieldRenderer;
77
  {
78
  if (!$this->_dirRenderer) {
79
  $this->_dirRenderer = $this->getLayout()
80
+ ->createBlock('Antidot/html_select')
81
  ->setIsRenderToJsTemplate(true);
82
  }
83
  return $this->_dirRenderer;
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Facet.php CHANGED
@@ -76,7 +76,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_Facet extends Mage_Adminh
76
  {
77
  if (!$this->_facetRenderer) {
78
  $this->_facetRenderer = $this->getLayout()
79
- ->createBlock('Antidot/Html_Select')
80
  ->setIsRenderToJsTemplate(true);
81
  }
82
  return $this->_facetRenderer;
@@ -89,7 +89,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_Facet extends Mage_Adminh
89
  {
90
  if (!$this->_orderRenderer) {
91
  $this->_orderRenderer = $this->getLayout()
92
- ->createBlock('Antidot/Html_Select')
93
  ->setIsRenderToJsTemplate(true);
94
  }
95
  return $this->_orderRenderer;
@@ -102,7 +102,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_Facet extends Mage_Adminh
102
  {
103
  if (!$this->_multipleRenderer) {
104
  $this->_multipleRenderer = $this->getLayout()
105
- ->createBlock('Antidot/Html_Select')
106
  ->setIsRenderToJsTemplate(true);
107
  }
108
  return $this->_multipleRenderer;
@@ -147,9 +147,10 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_Facet extends Mage_Adminh
147
  $element = $this->getElement();
148
  if ($element->getValue() && is_array($element->getValue())) {
149
  foreach ($element->getValue() as $rowId => $row) {
150
- //foreach ($row as $key => $value) {
151
- // $row[$key] = $this->escapeHtml($value);
152
- //}
 
153
  $row['_id'] = $rowId;
154
  $result[$rowId] = new Varien_Object($row);
155
  $this->_prepareArrayRow($result[$rowId]);
76
  {
77
  if (!$this->_facetRenderer) {
78
  $this->_facetRenderer = $this->getLayout()
79
+ ->createBlock('Antidot/html_select')
80
  ->setIsRenderToJsTemplate(true);
81
  }
82
  return $this->_facetRenderer;
89
  {
90
  if (!$this->_orderRenderer) {
91
  $this->_orderRenderer = $this->getLayout()
92
+ ->createBlock('Antidot/html_select')
93
  ->setIsRenderToJsTemplate(true);
94
  }
95
  return $this->_orderRenderer;
102
  {
103
  if (!$this->_multipleRenderer) {
104
  $this->_multipleRenderer = $this->getLayout()
105
+ ->createBlock('Antidot/html_select')
106
  ->setIsRenderToJsTemplate(true);
107
  }
108
  return $this->_multipleRenderer;
147
  $element = $this->getElement();
148
  if ($element->getValue() && is_array($element->getValue())) {
149
  foreach ($element->getValue() as $rowId => $row) {
150
+ //MCNX-232 : escape single quote for javascript, it cause error in javascript facet editor in BO
151
+ foreach ($row as $key => $value) {
152
+ $row[$key] = $this->jsQuoteEscape($value);
153
+ }
154
  $row['_id'] = $rowId;
155
  $result[$rowId] = new Varien_Object($row);
156
  $this->_prepareArrayRow($result[$rowId]);
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Identifier.php CHANGED
@@ -48,7 +48,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_Identifier extends Mage_A
48
  {
49
  if (!$this->_valueRenderer) {
50
  $this->_valueRenderer = $this->getLayout()
51
- ->createBlock('Antidot/Html_Select')
52
  ->setIsRenderToJsTemplate(true);
53
  }
54
  return $this->_valueRenderer;
48
  {
49
  if (!$this->_valueRenderer) {
50
  $this->_valueRenderer = $this->getLayout()
51
+ ->createBlock('Antidot/html_select')
52
  ->setIsRenderToJsTemplate(true);
53
  }
54
  return $this->_valueRenderer;
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/ProductAdditionalFacet.php CHANGED
@@ -58,7 +58,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_ProductAdditionalFacet ex
58
  {
59
  if (!$this->_autocompleteRenderer) {
60
  $this->_autocompleteRenderer = $this->getLayout()
61
- ->createBlock('Antidot/Html_Select')
62
  ->setIsRenderToJsTemplate(true);
63
  }
64
  return $this->_autocompleteRenderer;
58
  {
59
  if (!$this->_autocompleteRenderer) {
60
  $this->_autocompleteRenderer = $this->getLayout()
61
+ ->createBlock('Antidot/html_select')
62
  ->setIsRenderToJsTemplate(true);
63
  }
64
  return $this->_autocompleteRenderer;
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/Array/Sort.php CHANGED
@@ -57,7 +57,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_Array_Sort extends Mage_Adminht
57
  {
58
  if (!$this->_sortRenderer) {
59
  $this->_sortRenderer = $this->getLayout()
60
- ->createBlock('Antidot/Html_Select')
61
  ->setIsRenderToJsTemplate(true);
62
  }
63
  return $this->_sortRenderer;
57
  {
58
  if (!$this->_sortRenderer) {
59
  $this->_sortRenderer = $this->getLayout()
60
+ ->createBlock('Antidot/html_select')
61
  ->setIsRenderToJsTemplate(true);
62
  }
63
  return $this->_sortRenderer;
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/CategoryAttribute.php CHANGED
@@ -31,7 +31,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_CategoryAttribute extends Mage_
31
  protected function _getRenderer()
32
  {
33
  return $this->getLayout()
34
- ->createBlock('Antidot/Html_Select')
35
  ->setIsRenderToJsTemplate(true);
36
  }
37
  }
31
  protected function _getRenderer()
32
  {
33
  return $this->getLayout()
34
+ ->createBlock('Antidot/html_select')
35
  ->setIsRenderToJsTemplate(true);
36
  }
37
  }
app/code/community/MDN/Antidot/Block/System/Config/Form/Field/ProductAttribute.php CHANGED
@@ -31,7 +31,7 @@ class MDN_Antidot_Block_System_Config_Form_Field_ProductAttribute extends Mage_A
31
  protected function _getRenderer()
32
  {
33
  return $this->getLayout()
34
- ->createBlock('Antidot/Html_Select')
35
  ->setIsRenderToJsTemplate(true);
36
  }
37
  }
31
  protected function _getRenderer()
32
  {
33
  return $this->getLayout()
34
+ ->createBlock('Antidot/html_select')
35
  ->setIsRenderToJsTemplate(true);
36
  }
37
  }
app/code/community/MDN/Antidot/Block/System/Config/Html/Export.php CHANGED
@@ -43,7 +43,7 @@ class MDN_Antidot_Block_System_Config_Html_Export extends Mage_Adminhtml_Block_S
43
 
44
  $rows = '';
45
  $rowExport = '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>';
46
- foreach(Mage::helper('Antidot/LogExport')->getAllLastGeneration() as $export) {
47
  $rows.= sprintf(
48
  $rowExport,
49
  $export['begin_at'],
43
 
44
  $rows = '';
45
  $rowExport = '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>';
46
+ foreach(Mage::helper('Antidot/logExport')->getAllLastGeneration() as $export) {
47
  $rows.= sprintf(
48
  $rowExport,
49
  $export['begin_at'],
app/code/community/MDN/Antidot/Helper/Compress.php CHANGED
@@ -39,7 +39,7 @@ class MDN_Antidot_Helper_Compress extends Mage_Core_Helper_Abstract {
39
  Mage::log('Add '.$file.' to archive', null, 'antidot.log');
40
  $zip->addFile($file, basename($file));
41
  }
42
- $zip->close($zip);
43
  }
44
  else
45
  {
39
  Mage::log('Add '.$file.' to archive', null, 'antidot.log');
40
  $zip->addFile($file, basename($file));
41
  }
42
+ $zip->close();
43
  }
44
  else
45
  {
app/code/community/MDN/Antidot/Helper/Data.php CHANGED
@@ -212,11 +212,12 @@ class MDN_Antidot_Helper_Data extends Mage_Core_Helper_Abstract
212
  */
213
  public function translateFacetName($facetcode, $defaultValue)
214
  {
215
- $model = Mage::getModel('Antidot/Search_Search');
216
 
217
  $label = $defaultValue;
218
- if (isset($model::$lastSearchTranslations[$facetcode]))
219
- $label = $model::$lastSearchTranslations[$facetcode];
 
220
  return $label;
221
  }
222
 
@@ -247,4 +248,41 @@ class MDN_Antidot_Helper_Data extends Mage_Core_Helper_Abstract
247
  return $number;
248
  }
249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  }
212
  */
213
  public function translateFacetName($facetcode, $defaultValue)
214
  {
215
+ $model = Mage::getModel('Antidot/search_search');
216
 
217
  $label = $defaultValue;
218
+ $translations = $model->getLastSearchTranslations();
219
+ if (isset($translations[$facetcode]))
220
+ $label = $translations[$facetcode];
221
  return $label;
222
  }
223
 
248
  return $number;
249
  }
250
 
251
+ /**
252
+ * Gives the value in bytes
253
+ * used for ini_get('memory_limit')
254
+ */
255
+ public function returnBytes ($val)
256
+ {
257
+ if(empty($val))return 0;
258
+
259
+ $val = trim($val);
260
+
261
+ preg_match('#([0-9]+)[\s]*([a-z]+)#i', $val, $matches);
262
+
263
+ $last = '';
264
+ if(isset($matches[2])){
265
+ $last = $matches[2];
266
+ }
267
+
268
+ if(isset($matches[1])){
269
+ $val = (int) $matches[1];
270
+ }
271
+
272
+ switch (strtolower($last))
273
+ {
274
+ case 'g':
275
+ case 'gb':
276
+ $val *= 1024;
277
+ case 'm':
278
+ case 'mb':
279
+ $val *= 1024;
280
+ case 'k':
281
+ case 'kb':
282
+ $val *= 1024;
283
+ }
284
+
285
+ return (int) $val;
286
+ }
287
+
288
  }
app/code/community/MDN/Antidot/Helper/XmlWriter.php CHANGED
@@ -82,7 +82,7 @@ class MDN_Antidot_Helper_XmlWriter extends Mage_Core_Helper_Abstract
82
  }
83
  }
84
 
85
- $content = Mage::helper('Antidot/Url')->isUtf8($content) === false ? mb_convert_encoding($content, "UTF-8") : $content;
86
  $this->xml.= '>' . ($content) . '</' . $element . '>' . $this->cr;
87
  }
88
 
82
  }
83
  }
84
 
85
+ $content = Mage::helper('Antidot/url')->isUtf8($content) === false ? mb_convert_encoding($content, "UTF-8") : $content;
86
  $this->xml.= '>' . ($content) . '</' . $element . '>' . $this->cr;
87
  }
88
 
app/code/community/MDN/Antidot/Model/Catalog/Layer/Filter/Category.php CHANGED
@@ -75,7 +75,7 @@ class MDN_Antidot_Model_Catalog_Layer_Filter_Category extends Mage_Catalog_Model
75
  }
76
 
77
  if (!$filter) {
78
- $this->addCategoryFilter($category, null);
79
  return $this;
80
  }
81
 
75
  }
76
 
77
  if (!$filter) {
78
+ $this->addCategoryFilter($category);
79
  return $this;
80
  }
81
 
app/code/community/MDN/Antidot/Model/Catalog/Layer/Filter/Item.php CHANGED
@@ -159,7 +159,7 @@ class MDN_Antidot_Model_Catalog_Layer_Filter_Item extends Mage_Catalog_Model_Lay
159
  $selected = Mage::getSingleton('core/app')->getRequest()->getParam($filter);
160
 
161
  if ($selected) {
162
- $antidotEngine = Mage::getResourceSingleton('Antidot/engine_Antidot');
163
  return $antidotEngine->extractMultiSelectValues($selected);
164
  } else {
165
  return array();
159
  $selected = Mage::getSingleton('core/app')->getRequest()->getParam($filter);
160
 
161
  if ($selected) {
162
+ $antidotEngine = Mage::getResourceSingleton('Antidot/engine_antidot');
163
  return $antidotEngine->extractMultiSelectValues($selected);
164
  } else {
165
  return array();
app/code/community/MDN/Antidot/Model/Export/Abstract.php CHANGED
@@ -44,14 +44,14 @@ class MDN_Antidot_Model_Export_Abstract extends Mage_Core_Model_Abstract
44
  'identifier',
45
  'description'
46
  );
47
-
48
  /**
49
  * Init the xml writer
50
  */
51
  protected function initXml()
52
  {
53
  if($this->xml === null) {
54
- $this->xml = Mage::helper('Antidot/XmlWriter');
55
  $this->xml->init();
56
  }
57
  }
@@ -160,4 +160,129 @@ class MDN_Antidot_Model_Export_Abstract extends Mage_Core_Model_Abstract
160
  return strtolower($this::TYPE) . ' ' . $context['run'] . ' v' . Mage::getConfig()->getNode()->modules->MDN_Antidot->version;
161
  }
162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  }
44
  'identifier',
45
  'description'
46
  );
47
+
48
  /**
49
  * Init the xml writer
50
  */
51
  protected function initXml()
52
  {
53
  if($this->xml === null) {
54
+ $this->xml = Mage::helper('Antidot/xmlWriter');
55
  $this->xml->init();
56
  }
57
  }
160
  return strtolower($this::TYPE) . ' ' . $context['run'] . ' v' . Mage::getConfig()->getNode()->modules->MDN_Antidot->version;
161
  }
162
 
163
+ /**
164
+ * Free some memory if the memory used is higher than 80% of the
165
+ * memory limit, and if garbage collection if configured .
166
+ *
167
+ * @return boolean (true if garbage collection has been done, for tests)
168
+ */
169
+ protected function garbageCollection() {
170
+
171
+ $gc_enabled = Mage::getStoreConfig('antidot/export/gc_enabled');
172
+ $gc_percentage_limit = Mage::getStoreConfig('antidot/export/gc_percentage_limit');
173
+ if ($gc_enabled) {
174
+ $memoryUsed = memory_get_usage(true);
175
+
176
+ $memoryLimit = Mage::helper('Antidot')->returnBytes(ini_get('memory_limit'));
177
+ if ($memoryUsed > ($gc_percentage_limit * $memoryLimit / 100)) {
178
+ gc_collect_cycles();
179
+ Mage::log("Garbage Collection : memory used : $memoryUsed, memory limit : $memoryLimit, memory after gc_collect_cylces : ".memory_get_usage(true), null, 'antidot.log');
180
+ return true;
181
+ }
182
+ }
183
+ return false;
184
+ }
185
+
186
+ /**
187
+ * Log profiler informations :
188
+ *
189
+ * SQL : number of queries, time consumed, average, top slower queries
190
+ *
191
+ * Varien_Profiler most time consuming items
192
+ *
193
+ */
194
+ protected function profile() {
195
+
196
+ $profiler = Mage::getStoreConfig('antidot/export/profiler_enable');
197
+ if ($profiler) {
198
+
199
+ Mage::log('################### ', null, 'antidot.log');
200
+ Mage::log('#### STATS DB ##### ', null, 'antidot.log');
201
+ Mage::log('################### ', null, 'antidot.log');
202
+ $_profiler = Mage::getSingleton('core/resource')->getConnection('core_read')->getProfiler();
203
+ $_queries = $_profiler->getQueryProfiles();
204
+ uasort($_queries, array('self', 'compareElapsedSecs'));
205
+
206
+
207
+ Mage::log(
208
+ sprintf(
209
+ 'Executed: %s queries in %s seconds',
210
+ $_profiler->getTotalNumQueries(),
211
+ $_profiler->getTotalElapsedSecs()
212
+ ),
213
+ null,
214
+ 'antidot.log'
215
+ );
216
+ Mage::log(
217
+ sprintf(
218
+ 'Average query length: %s seconds',
219
+ $_profiler->getTotalNumQueries() && $_profiler->getTotalElapsedSecs(
220
+ ) ? $_profiler->getTotalElapsedSecs() / $_profiler->getTotalNumQueries() : 0
221
+ ),
222
+ null,
223
+ 'antidot.log'
224
+ );
225
+ Mage::log(
226
+ sprintf(
227
+ 'Queries per second: %s ',
228
+ ($_profiler->getTotalNumQueries() && $_profiler->getTotalElapsedSecs(
229
+ ) ? $_profiler->getTotalNumQueries() / $_profiler->getTotalElapsedSecs() : 0)
230
+ ),
231
+ null,
232
+ 'antidot.log'
233
+ );
234
+
235
+ $profiler_nb_queries = Mage::getStoreConfig('antidot/export/profiler_nb_lowest_queries');
236
+ Mage::log("TOP $profiler_nb_queries lowest queries : ", null, 'antidot.log');
237
+ $i=0;
238
+ foreach ($_queries as $_query) {
239
+ if ($i<$profiler_nb_queries) {
240
+ Mage::log($_query->getElapsedSecs().' '.$_query->getQuery(), null, 'antidot.log');
241
+ $i++;
242
+ }
243
+ }
244
+
245
+ Mage::log('################### ', null, 'antidot.log');
246
+ Mage::log('#### PROFILER ##### ', null, 'antidot.log');
247
+ Mage::log('###########################################', null, 'antidot.log');
248
+ Mage::log("# durée # nbs # emalloc #", null, 'antidot.log');
249
+ Mage::log('###########################################', null, 'antidot.log');
250
+
251
+ $timers = Varien_Profiler::getTimers();
252
+ $totalTime = 0;
253
+ foreach ($timers as $key => $value) {
254
+ $timers[$key]['sum'] = Varien_Profiler::fetch($key,'sum');
255
+ $totalTime += $timers[$key]['sum'];
256
+ }
257
+ uasort($timers, array('self', 'compareTimers'));
258
+
259
+ $profiler_varien_quota = Mage::getStoreConfig('antidot/export/profiler_varien_quota');
260
+ foreach ($timers as $timerName => $timerData) {
261
+ if ($timerData['sum'] > $totalTime * $profiler_varien_quota) {
262
+ Mage::log("# "
263
+ . str_pad(number_format($timerData['sum'], 6), 12, ' ', STR_PAD_LEFT ) . 's # '
264
+ . str_pad($timerData['count'], 6, ' ', STR_PAD_LEFT ) . ' # '
265
+ . str_pad(number_format($timerData['emalloc']), 14, ' ', STR_PAD_LEFT ) . ' # '
266
+ . $timerName,
267
+ null,
268
+ 'antidot.log'
269
+ );
270
+ }
271
+ }
272
+
273
+
274
+ }
275
+
276
+ }
277
+
278
+ static public function compareTimers(array $timerA, array $timerB)
279
+ {
280
+ return $timerA['sum'] < $timerB['sum'];
281
+ }
282
+
283
+ static public function compareElapsedSecs(array $queryA, array $queryB)
284
+ {
285
+ return $queryA->getElapsedSecs() < $queryB->getElapsedSecs();
286
+ }
287
+
288
  }
app/code/community/MDN/Antidot/Model/Export/Article.php CHANGED
@@ -92,7 +92,7 @@ class MDN_Antidot_Model_Export_Article extends MDN_Antidot_Model_Export_Product
92
  {
93
  if ($manufacturer = $this->getField($article, 'manufacturer')) {
94
  $this->xml->push('brands');
95
- $brandUrl = Mage::getModel('Antidot/Export_Brand')->getUrl($article->getAttributeText('manufacturer'));
96
  $this->xml->element('brand', $this->xml->encloseCData($article->getAttributeText('manufacturer')), array('id' => $manufacturer, 'url' => $brandUrl));
97
  $this->xml->pop();
98
  }
92
  {
93
  if ($manufacturer = $this->getField($article, 'manufacturer')) {
94
  $this->xml->push('brands');
95
+ $brandUrl = Mage::getModel('Antidot/export_brand')->getUrl($article->getAttributeText('manufacturer'));
96
  $this->xml->element('brand', $this->xml->encloseCData($article->getAttributeText('manufacturer')), array('id' => $manufacturer, 'url' => $brandUrl));
97
  $this->xml->pop();
98
  }
app/code/community/MDN/Antidot/Model/Export/Product.php CHANGED
@@ -73,7 +73,14 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
73
  Mage::log('Starting product XML export, filename = '.$filename, null, 'antidot.log');
74
 
75
  $db = Mage::getSingleton('core/resource')->getConnection('core_read');
76
- $db->getProfiler()->setEnabled(false);
 
 
 
 
 
 
 
77
 
78
  $this->onlyProductsWithStock = !(boolean)Mage::getStoreConfig('antidot/fields_product/in_stock_only');
79
  $this->autoCompleteProducts = Mage::getStoreConfig('antidot/suggest/enable') === 'Antidot/engine_antidot' ? 'on' : 'off';
@@ -94,16 +101,26 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
94
 
95
  if ($type === MDN_Antidot_Model_Observer::GENERATE_INC) {
96
  if($this->lastGeneration === null) {
97
- $this->lastGeneration = Mage::helper('Antidot/LogExport')->getLastGeneration(self::TYPE);
98
  }
99
  $collection->addAttributeToFilter('updated_at', array('gteq' => $this->lastGeneration));
100
  }
101
- $collection->setPageSize(500);
 
 
 
 
 
102
 
103
  $productsCount = $collection->getSize();
104
  Mage::log('Products to export : '.$productsCount, null, 'antidot.log');
105
  $chunkCount = $collection->getLastPageNumber();
106
 
 
 
 
 
 
107
  if ($productsCount > 0) {
108
 
109
  $this->initXml();
@@ -142,7 +159,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
142
  $product->clearInstance(); //memory flush
143
  $product = null;
144
  unset($product);
145
- gc_collect_cycles();
146
  }
147
 
148
  }
@@ -151,7 +168,9 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
151
  $collection->clear();
152
 
153
  Mage::log('Process chunk # '.$chunkId .' / '.$chunkCount. ' - memory usage = '.memory_get_usage().' - took '.(time() - $lastExecutionTime).' sec', null, 'antidot.log');
154
- $lastExecutionTime = time();
 
 
155
 
156
  }
157
  $this->xml->pop();
@@ -161,6 +180,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
161
  Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); //in order to stay on the admin and not be redirected to the last indexed frontend store
162
  Mage::log('Products parsing complete', null, 'antidot.log');
163
 
 
 
164
  return $productsCount;
165
  }
166
 
@@ -186,7 +207,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
186
  foreach($attributes as $att) {
187
  $k = $att->getAttributeCode();
188
  $this->propertyLabel[$k] = array();
189
- $this->propertyLabel[$k]['default'] = $att->getfrontend_label();
190
  $this->propertyLabel[$k]['per_store'] = $att->getStoreLabels();
191
 
192
  $this->propertyLabel[$k]['options'] = array();
@@ -197,14 +218,19 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
197
  }
198
 
199
  $this->propertyLabel[$k]['options'][$option['value']] = array();
 
200
  $this->propertyLabel[$k]['options'][$option['value']]['per_store'] = array();
201
- $query = 'SELECT store_id, value FROM '
202
- . Mage::getConfig()->getTablePrefix().'eav_attribute_option_value '
203
- . 'WHERE option_id = "'.$option['value'].'"';
204
-
205
- $valuesCollection = mage::getResourceModel('sales/order_item_collection')->getConnection()->fetchAll($query);
206
- foreach($valuesCollection as $item) {
207
- $this->propertyLabel[$k]['options'][$option['value']]['per_store'][$item['store_id']] = $item['value'];
 
 
 
 
208
  }
209
  }
210
  }
@@ -218,6 +244,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
218
  */
219
  protected function writeProduct($product, $stores)
220
  {
 
221
 
222
  //skip product if no websites
223
  if (count($stores) == 0)
@@ -268,8 +295,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
268
  }
269
  $this->xml->pop();
270
 
271
- //$this->xml->element('created_at', $product->getCreated_at()); AFM-83
272
- //$this->xml->element('last_updated_at', $product->getUpdated_at()); AFM-92
273
 
274
  $this->xml->element('name', $this->xml->encloseCData($this->utf8CharacterValidation($this->getField($product, 'name'))));
275
  if($shortName = $this->getField($product, 'short_name')) {
@@ -291,6 +318,9 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
291
  $this->writeVariants($product, $variantProducts, $stores);
292
 
293
  $this->xml->pop();
 
 
 
294
  }
295
 
296
  /**
@@ -301,6 +331,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
301
  */
302
  protected function writeStore($product, $stores, $variantProduct)
303
  {
 
 
304
  $this->xml->push('stores');
305
 
306
  /* Qty is the same for all stores, better compute it outside the loop: */
@@ -345,28 +377,17 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
345
  $reloadedVariantProduct->clearInstance(); //memory flush
346
  $reloadedVariantProduct = null;
347
  unset($reloadedVariantProduct);
348
- gc_collect_cycles();
349
  }
350
 
351
 
352
  }
353
  $this->xml->pop();
354
- }
355
-
356
- /**
357
- * Get catalog/product model
358
- *
359
- * @return Model
360
- */
361
- protected function getCatalogProduct()
362
- {
363
- if(!$this->catalogProduct) {
364
- $this->catalogProduct = Mage::getModel('catalog/product');
365
- }
366
 
367
- return $this->catalogProduct;
368
- }
369
 
 
 
370
  /**
371
  * Get product stores
372
  *
@@ -393,6 +414,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
393
  */
394
  protected function writeDescriptions($product)
395
  {
 
 
396
  if(!empty($this->fields['description'])) {
397
  $this->xml->push('descriptions');
398
  foreach($this->fields['description'] as $description) {
@@ -403,6 +426,9 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
403
  }
404
  $this->xml->pop();
405
  }
 
 
 
406
  }
407
 
408
  /**
@@ -435,6 +461,9 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
435
  */
436
  protected function writeIdentifiers($product)
437
  {
 
 
 
438
  if($gtin = $this->getField($product, 'gtin')) {
439
  if(!preg_match('/^[0-9]{12,14}$/', $gtin)) {
440
  $gtin = false;
@@ -464,6 +493,9 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
464
 
465
  $this->xml->pop();
466
  }
 
 
 
467
  }
468
 
469
  /**
@@ -473,6 +505,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
473
  */
474
  protected function writeBrand($product)
475
  {
 
 
476
  if ($manufacturer = $this->getField($product, 'manufacturer')) {
477
  if(!empty($manufacturer)) {
478
  $field = empty($this->fields['manufacturer']) ? 'manufacturer' : $this->fields['manufacturer'];
@@ -485,6 +519,9 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
485
  }
486
  }
487
  }
 
 
 
488
  }
489
 
490
  /**
@@ -495,7 +532,10 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
495
  */
496
  protected function writeProductUrl($product)
497
  {
 
498
  $this->xml->element('url', $this->xml->encloseCData($product->getProductUrl(false)));
 
 
499
  }
500
 
501
 
@@ -507,8 +547,10 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
507
  */
508
  protected function writeImageUrl($product, $urlImg = true)
509
  {
510
-
511
- //Set the current store to generate correct URls (even in unit tests)
 
 
512
  Mage::app()->setCurrentStore($product->getStoreId());
513
 
514
  try {
@@ -516,7 +558,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
516
  $this->xml->element('url_thumbnail', $this->xml->encloseCData(Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail())));
517
  }
518
  } catch(Exception $e) {
519
- Mage::log($e, Zend_Log::ERR, 'antidot.log');
520
  }
521
 
522
  try {
@@ -524,8 +566,11 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
524
  $this->xml->element('url_image', $this->xml->encloseCData(Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getImage())));
525
  }
526
  } catch(Exception $e) {
527
- Mage::log($e, Zend_Log::ERR, 'antidot.log');
528
  }
 
 
 
529
  }
530
 
531
  /**
@@ -535,6 +580,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
535
  */
536
  protected function writeClassification($product, $rootCategoriesIds)
537
  {
 
538
  $categories = $this->getProductCategories($product, $rootCategoriesIds);
539
  if(count($categories) > 0) {
540
  $this->xml->push('classification');
@@ -543,6 +589,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
543
  }
544
  $this->xml->pop();
545
  }
 
 
546
  }
547
 
548
  /**
@@ -628,6 +676,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
628
  $rootCategoryCondition[] = array('like' => '1/'.$rootCategoryId.'/%');
629
  }
630
  $categories->addAttributeToFilter('path', $rootCategoryCondition);
 
631
 
632
  //Mage::log($categories->getSelect()->__toString(), null, 'antidot.log');
633
 
@@ -663,11 +712,13 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
663
  */
664
  protected function writeMaterials($product)
665
  {
 
666
  if(!empty($this->fields['materials']) && $materials = $product->getAttributeText($this->fields['materials'])) {
667
  $this->xml->push('materials');
668
  $this->xml->element('material', $this->xml->encloseCData($materials));
669
  $this->xml->pop();
670
  }
 
671
  }
672
 
673
  /**
@@ -677,11 +728,13 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
677
  */
678
  protected function writeColors($product)
679
  {
 
680
  if(!empty($this->fields['colors']) && $color = $product->getAttributeText($this->fields['colors'])) {
681
  $this->xml->push('colors');
682
  $this->xml->element('color', $this->xml->encloseCData($color));
683
  $this->xml->pop();
684
  }
 
685
  }
686
 
687
  /**
@@ -691,11 +744,13 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
691
  */
692
  protected function writeModels($product)
693
  {
 
694
  if(!empty($this->fields['models']) && $models = $this->getField($product, $this->fields['models'])) {
695
  $this->xml->push('models', array('autocomplete' => 'off'));
696
  $this->xml->element('model', $this->xml->encloseCData(substr($models, 0, 40)));
697
  $this->xml->pop();
698
  }
 
699
  }
700
 
701
  /**
@@ -705,11 +760,13 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
705
  */
706
  protected function writeSizes($product)
707
  {
 
708
  if(!empty($this->fields['sizes']) && $size = $product->getAttributeText($this->fields['sizes'])) {
709
  $this->xml->push('sizes');
710
  $this->xml->element('size', $this->xml->encloseCData($size));
711
  $this->xml->pop();
712
  }
 
713
  }
714
 
715
  /**
@@ -719,6 +776,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
719
  */
720
  protected function writeGenders($product)
721
  {
 
722
  if(!empty($this->fields['gender']) && $gender = $product->getAttributeText($this->fields['gender'])) {
723
  $this->xml->push('audience');
724
  $this->xml->push('genders');
@@ -726,6 +784,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
726
  $this->xml->pop();
727
  $this->xml->pop();
728
  }
 
729
  }
730
 
731
  /**
@@ -735,6 +794,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
735
  */
736
  protected function writeProperties($product)
737
  {
 
738
  $properties = array();
739
  if(!empty($this->fields['properties'])) {
740
  foreach($this->fields['properties'] as $property) {
@@ -803,6 +863,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
803
  }
804
  $this->xml->pop();
805
  }
 
 
806
  }
807
 
808
  /**
@@ -812,6 +874,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
812
  */
813
  protected function writePrices($product, $parentProduct, $context, $store)
814
  {
 
815
 
816
  /**
817
  * MCNX-222 : Add Fixed Taxs to prices
@@ -863,6 +926,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
863
  }
864
 
865
  $this->xml->pop();
 
 
866
  }
867
 
868
  /**
@@ -938,7 +1003,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
938
  $product->clearInstance(); //memory flush
939
  $product = null;
940
  unset($product);
941
- gc_collect_cycles();
942
  }
943
 
944
  return $result;
@@ -952,6 +1017,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
952
  */
953
  protected function writeMarketing($product, $operations)
954
  {
 
 
955
  $this->xml->push('marketing');
956
  $this->xml->element('is_new', ($this->getField($product, 'is_new') ? 1 : 0));
957
  $this->xml->element('is_best_sale', ($this->getField($product, 'is_best_sale') ? 1 : 0));
@@ -968,6 +1035,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
968
  $this->xml->element('is_promotional', (int)$isPromotional);
969
 
970
  $this->xml->pop();
 
971
  }
972
 
973
  /**
@@ -1018,6 +1086,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1018
  */
1019
  protected function writeMisc($product)
1020
  {
 
1021
  $this->xml->push('misc');
1022
  $this->xml->element('product_type', $this->xml->encloseCData($product->getTypeID()));
1023
  if(!empty($this->fields['misc'])) {
@@ -1026,6 +1095,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1026
  }
1027
  }
1028
  $this->xml->pop();
 
1029
  }
1030
 
1031
  /**
@@ -1037,6 +1107,7 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1037
  */
1038
  protected function writeVariants($product, $variantProducts, $stores)
1039
  {
 
1040
  $this->xml->push('variants');
1041
 
1042
  $this->xml->push('variant', array('id' => 'fake'));
@@ -1051,6 +1122,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1051
  }
1052
 
1053
  $this->xml->pop();
 
 
1054
  }
1055
 
1056
  /**
@@ -1062,6 +1135,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1062
  */
1063
  protected function writeVariant($variantProduct, $product, $stores)
1064
  {
 
 
1065
  $this->xml->element('name', $this->xml->encloseCData($this->utf8CharacterValidation($variantProduct->getName())));
1066
  $this->writeDescriptions($variantProduct);
1067
  $this->writeStore($product, $stores, $variantProduct);
@@ -1073,6 +1148,9 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1073
  $this->writeSizes($variantProduct);
1074
  $this->writeGenders($product);
1075
  $this->writeMisc($variantProduct);
 
 
 
1076
  }
1077
 
1078
  /**
@@ -1083,6 +1161,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1083
  */
1084
  protected function writePart($xml, $close = false)
1085
  {
 
 
1086
  $filename = $this->getFilename();
1087
  if ($this->file === null) {
1088
  $this->file = fopen($filename, 'a+');
@@ -1098,6 +1178,8 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
1098
  fclose($this->file);
1099
  $this->file = null;
1100
  }
 
 
1101
  }
1102
 
1103
  /**
73
  Mage::log('Starting product XML export, filename = '.$filename, null, 'antidot.log');
74
 
75
  $db = Mage::getSingleton('core/resource')->getConnection('core_read');
76
+ if (Mage::getStoreConfig('antidot/export/profiler_enable')) {
77
+ $db->getProfiler()->setEnabled(true);
78
+ Varien_Profiler::enable();
79
+ } else {
80
+ $db->getProfiler()->setEnabled(false);
81
+ }
82
+
83
+ Varien_Profiler::start("export_product_writeXml");
84
 
85
  $this->onlyProductsWithStock = !(boolean)Mage::getStoreConfig('antidot/fields_product/in_stock_only');
86
  $this->autoCompleteProducts = Mage::getStoreConfig('antidot/suggest/enable') === 'Antidot/engine_antidot' ? 'on' : 'off';
101
 
102
  if ($type === MDN_Antidot_Model_Observer::GENERATE_INC) {
103
  if($this->lastGeneration === null) {
104
+ $this->lastGeneration = Mage::helper('Antidot/logExport')->getLastGeneration(self::TYPE);
105
  }
106
  $collection->addAttributeToFilter('updated_at', array('gteq' => $this->lastGeneration));
107
  }
108
+
109
+ $chunkSize = Mage::getStoreConfig('antidot/export/chunk_size');
110
+ if (!$chunkSize) {
111
+ $chunkSize = 500;
112
+ }
113
+ $collection->setPageSize($chunkSize);
114
 
115
  $productsCount = $collection->getSize();
116
  Mage::log('Products to export : '.$productsCount, null, 'antidot.log');
117
  $chunkCount = $collection->getLastPageNumber();
118
 
119
+ /** if profiling is enabled process only one chunk */
120
+ if (Mage::getStoreConfig('antidot/export/profiler_enable')) {
121
+ $chunkCount = 1;
122
+ }
123
+
124
  if ($productsCount > 0) {
125
 
126
  $this->initXml();
159
  $product->clearInstance(); //memory flush
160
  $product = null;
161
  unset($product);
162
+ $this->garbageCollection();
163
  }
164
 
165
  }
168
  $collection->clear();
169
 
170
  Mage::log('Process chunk # '.$chunkId .' / '.$chunkCount. ' - memory usage = '.memory_get_usage().' - took '.(time() - $lastExecutionTime).' sec', null, 'antidot.log');
171
+ $lastExecutionTime = time();
172
+
173
+ $this->profile();
174
 
175
  }
176
  $this->xml->pop();
180
  Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); //in order to stay on the admin and not be redirected to the last indexed frontend store
181
  Mage::log('Products parsing complete', null, 'antidot.log');
182
 
183
+ Varien_Profiler::stop("export_product_writeXml");
184
+
185
  return $productsCount;
186
  }
187
 
207
  foreach($attributes as $att) {
208
  $k = $att->getAttributeCode();
209
  $this->propertyLabel[$k] = array();
210
+ $this->propertyLabel[$k]['default'] = $att->getFrontendLabel();
211
  $this->propertyLabel[$k]['per_store'] = $att->getStoreLabels();
212
 
213
  $this->propertyLabel[$k]['options'] = array();
218
  }
219
 
220
  $this->propertyLabel[$k]['options'][$option['value']] = array();
221
+ $this->propertyLabel[$k]['options'][$option['value']]['default'] = $option['label'];
222
  $this->propertyLabel[$k]['options'][$option['value']]['per_store'] = array();
223
+ if ($att->getSourceModel()=='eav/entity_attribute_source_table') {
224
+ $query = 'SELECT store_id, value FROM '
225
+ .Mage::getConfig()->getTablePrefix().'eav_attribute_option_value '
226
+ .'WHERE option_id = "'.$option['value'].'"';
227
+
228
+ $valuesCollection = Mage::getSingleton('core/resource')->getConnection('core_read')->fetchAll(
229
+ $query
230
+ );
231
+ foreach ($valuesCollection as $item) {
232
+ $this->propertyLabel[$k]['options'][$option['value']]['per_store'][$item['store_id']] = $item['value'];
233
+ }
234
  }
235
  }
236
  }
244
  */
245
  protected function writeProduct($product, $stores)
246
  {
247
+ Varien_Profiler::start("export_product_writeProduct");
248
 
249
  //skip product if no websites
250
  if (count($stores) == 0)
295
  }
296
  $this->xml->pop();
297
 
298
+ //$this->xml->writeElement('created_at', $product->getCreated_at()); AFM-83
299
+ //$this->xml->writeElement('last_updated_at', $product->getUpdated_at()); AFM-92
300
 
301
  $this->xml->element('name', $this->xml->encloseCData($this->utf8CharacterValidation($this->getField($product, 'name'))));
302
  if($shortName = $this->getField($product, 'short_name')) {
318
  $this->writeVariants($product, $variantProducts, $stores);
319
 
320
  $this->xml->pop();
321
+
322
+ Varien_Profiler::stop("export_product_writeProduct");
323
+
324
  }
325
 
326
  /**
331
  */
332
  protected function writeStore($product, $stores, $variantProduct)
333
  {
334
+ Varien_Profiler::start("export_product_writeStore");
335
+
336
  $this->xml->push('stores');
337
 
338
  /* Qty is the same for all stores, better compute it outside the loop: */
377
  $reloadedVariantProduct->clearInstance(); //memory flush
378
  $reloadedVariantProduct = null;
379
  unset($reloadedVariantProduct);
380
+ $this->garbageCollection();
381
  }
382
 
383
 
384
  }
385
  $this->xml->pop();
 
 
 
 
 
 
 
 
 
 
 
 
386
 
387
+ Varien_Profiler::stop("export_product_writeStore");
 
388
 
389
+ }
390
+
391
  /**
392
  * Get product stores
393
  *
414
  */
415
  protected function writeDescriptions($product)
416
  {
417
+ Varien_Profiler::start("export_product_writeDescriptions");
418
+
419
  if(!empty($this->fields['description'])) {
420
  $this->xml->push('descriptions');
421
  foreach($this->fields['description'] as $description) {
426
  }
427
  $this->xml->pop();
428
  }
429
+
430
+ Varien_Profiler::stop("export_product_writeDescriptions");
431
+
432
  }
433
 
434
  /**
461
  */
462
  protected function writeIdentifiers($product)
463
  {
464
+
465
+ Varien_Profiler::start("export_product_writeIdentifiers");
466
+
467
  if($gtin = $this->getField($product, 'gtin')) {
468
  if(!preg_match('/^[0-9]{12,14}$/', $gtin)) {
469
  $gtin = false;
493
 
494
  $this->xml->pop();
495
  }
496
+
497
+ Varien_Profiler::stop("export_product_writeIdentifiers");
498
+
499
  }
500
 
501
  /**
505
  */
506
  protected function writeBrand($product)
507
  {
508
+ Varien_Profiler::start("export_product_writeBrand");
509
+
510
  if ($manufacturer = $this->getField($product, 'manufacturer')) {
511
  if(!empty($manufacturer)) {
512
  $field = empty($this->fields['manufacturer']) ? 'manufacturer' : $this->fields['manufacturer'];
519
  }
520
  }
521
  }
522
+
523
+ Varien_Profiler::stop("export_product_writeBrand");
524
+
525
  }
526
 
527
  /**
532
  */
533
  protected function writeProductUrl($product)
534
  {
535
+ Varien_Profiler::start("export_product_writeProductUrl");
536
  $this->xml->element('url', $this->xml->encloseCData($product->getProductUrl(false)));
537
+ Varien_Profiler::stop("export_product_writeProductUrl");
538
+
539
  }
540
 
541
 
547
  */
548
  protected function writeImageUrl($product, $urlImg = true)
549
  {
550
+
551
+ Varien_Profiler::start("export_product_writeImageUrl");
552
+
553
+ //Set the current store to generate correct URls (even in unit tests)
554
  Mage::app()->setCurrentStore($product->getStoreId());
555
 
556
  try {
558
  $this->xml->element('url_thumbnail', $this->xml->encloseCData(Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail())));
559
  }
560
  } catch(Exception $e) {
561
+ Mage::log("writeImageUrl Exception : " . $e->getMessage(), Zend_Log::ERR, 'antidot.log');
562
  }
563
 
564
  try {
566
  $this->xml->element('url_image', $this->xml->encloseCData(Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getImage())));
567
  }
568
  } catch(Exception $e) {
569
+ Mage::log("writeImageUrl Exception : " .$e->getMessage(), Zend_Log::ERR, 'antidot.log');
570
  }
571
+
572
+ Varien_Profiler::stop("export_product_writeImageUrl");
573
+
574
  }
575
 
576
  /**
580
  */
581
  protected function writeClassification($product, $rootCategoriesIds)
582
  {
583
+ Varien_Profiler::start("export_product_writeClassification");
584
  $categories = $this->getProductCategories($product, $rootCategoriesIds);
585
  if(count($categories) > 0) {
586
  $this->xml->push('classification');
589
  }
590
  $this->xml->pop();
591
  }
592
+ Varien_Profiler::stop("export_product_writeClassification");
593
+
594
  }
595
 
596
  /**
676
  $rootCategoryCondition[] = array('like' => '1/'.$rootCategoryId.'/%');
677
  }
678
  $categories->addAttributeToFilter('path', $rootCategoryCondition);
679
+ $categories->addAttributeToFilter('is_active', 1); //MCNX-236
680
 
681
  //Mage::log($categories->getSelect()->__toString(), null, 'antidot.log');
682
 
712
  */
713
  protected function writeMaterials($product)
714
  {
715
+ Varien_Profiler::start("export_product_writeMaterials");
716
  if(!empty($this->fields['materials']) && $materials = $product->getAttributeText($this->fields['materials'])) {
717
  $this->xml->push('materials');
718
  $this->xml->element('material', $this->xml->encloseCData($materials));
719
  $this->xml->pop();
720
  }
721
+ Varien_Profiler::stop("export_product_writeMaterials");
722
  }
723
 
724
  /**
728
  */
729
  protected function writeColors($product)
730
  {
731
+ Varien_Profiler::start("export_product_writeColors");
732
  if(!empty($this->fields['colors']) && $color = $product->getAttributeText($this->fields['colors'])) {
733
  $this->xml->push('colors');
734
  $this->xml->element('color', $this->xml->encloseCData($color));
735
  $this->xml->pop();
736
  }
737
+ Varien_Profiler::stop("export_product_writeColors");
738
  }
739
 
740
  /**
744
  */
745
  protected function writeModels($product)
746
  {
747
+ Varien_Profiler::start("export_product_writeModels");
748
  if(!empty($this->fields['models']) && $models = $this->getField($product, $this->fields['models'])) {
749
  $this->xml->push('models', array('autocomplete' => 'off'));
750
  $this->xml->element('model', $this->xml->encloseCData(substr($models, 0, 40)));
751
  $this->xml->pop();
752
  }
753
+ Varien_Profiler::stop("export_product_writeModels");
754
  }
755
 
756
  /**
760
  */
761
  protected function writeSizes($product)
762
  {
763
+ Varien_Profiler::start("export_product_writeSizes");
764
  if(!empty($this->fields['sizes']) && $size = $product->getAttributeText($this->fields['sizes'])) {
765
  $this->xml->push('sizes');
766
  $this->xml->element('size', $this->xml->encloseCData($size));
767
  $this->xml->pop();
768
  }
769
+ Varien_Profiler::stop("export_product_writeSizes");
770
  }
771
 
772
  /**
776
  */
777
  protected function writeGenders($product)
778
  {
779
+ Varien_Profiler::start("export_product_writeGenders");
780
  if(!empty($this->fields['gender']) && $gender = $product->getAttributeText($this->fields['gender'])) {
781
  $this->xml->push('audience');
782
  $this->xml->push('genders');
784
  $this->xml->pop();
785
  $this->xml->pop();
786
  }
787
+ Varien_Profiler::stop("export_product_writeGenders");
788
  }
789
 
790
  /**
794
  */
795
  protected function writeProperties($product)
796
  {
797
+ Varien_Profiler::start("export_product_writeProperties");
798
  $properties = array();
799
  if(!empty($this->fields['properties'])) {
800
  foreach($this->fields['properties'] as $property) {
863
  }
864
  $this->xml->pop();
865
  }
866
+ Varien_Profiler::stop("export_product_writeProperties");
867
+
868
  }
869
 
870
  /**
874
  */
875
  protected function writePrices($product, $parentProduct, $context, $store)
876
  {
877
+ Varien_Profiler::start("export_product_writePrices");
878
 
879
  /**
880
  * MCNX-222 : Add Fixed Taxs to prices
926
  }
927
 
928
  $this->xml->pop();
929
+ Varien_Profiler::stop("export_product_writePrices");
930
+
931
  }
932
 
933
  /**
1003
  $product->clearInstance(); //memory flush
1004
  $product = null;
1005
  unset($product);
1006
+ $this->garbageCollection();
1007
  }
1008
 
1009
  return $result;
1017
  */
1018
  protected function writeMarketing($product, $operations)
1019
  {
1020
+ Varien_Profiler::start("export_product_writeMarketing");
1021
+
1022
  $this->xml->push('marketing');
1023
  $this->xml->element('is_new', ($this->getField($product, 'is_new') ? 1 : 0));
1024
  $this->xml->element('is_best_sale', ($this->getField($product, 'is_best_sale') ? 1 : 0));
1035
  $this->xml->element('is_promotional', (int)$isPromotional);
1036
 
1037
  $this->xml->pop();
1038
+ Varien_Profiler::stop("export_product_writeMarketing");
1039
  }
1040
 
1041
  /**
1086
  */
1087
  protected function writeMisc($product)
1088
  {
1089
+ Varien_Profiler::start("export_product_writeMisc");
1090
  $this->xml->push('misc');
1091
  $this->xml->element('product_type', $this->xml->encloseCData($product->getTypeID()));
1092
  if(!empty($this->fields['misc'])) {
1095
  }
1096
  }
1097
  $this->xml->pop();
1098
+ Varien_Profiler::stop("export_product_writeMisc");
1099
  }
1100
 
1101
  /**
1107
  */
1108
  protected function writeVariants($product, $variantProducts, $stores)
1109
  {
1110
+ Varien_Profiler::start("export_product_writeVariants");
1111
  $this->xml->push('variants');
1112
 
1113
  $this->xml->push('variant', array('id' => 'fake'));
1122
  }
1123
 
1124
  $this->xml->pop();
1125
+ Varien_Profiler::stop("export_product_writeVariants");
1126
+
1127
  }
1128
 
1129
  /**
1135
  */
1136
  protected function writeVariant($variantProduct, $product, $stores)
1137
  {
1138
+ Varien_Profiler::start("export_product_writeVariant");
1139
+
1140
  $this->xml->element('name', $this->xml->encloseCData($this->utf8CharacterValidation($variantProduct->getName())));
1141
  $this->writeDescriptions($variantProduct);
1142
  $this->writeStore($product, $stores, $variantProduct);
1148
  $this->writeSizes($variantProduct);
1149
  $this->writeGenders($product);
1150
  $this->writeMisc($variantProduct);
1151
+
1152
+ Varien_Profiler::stop("export_product_writeVariant");
1153
+
1154
  }
1155
 
1156
  /**
1161
  */
1162
  protected function writePart($xml, $close = false)
1163
  {
1164
+ Varien_Profiler::start("export_product_writePart");
1165
+
1166
  $filename = $this->getFilename();
1167
  if ($this->file === null) {
1168
  $this->file = fopen($filename, 'a+');
1178
  fclose($this->file);
1179
  $this->file = null;
1180
  }
1181
+ Varien_Profiler::stop("export_product_writePart");
1182
+
1183
  }
1184
 
1185
  /**
app/code/community/MDN/Antidot/Model/Observer.php CHANGED
@@ -49,52 +49,23 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
49
  $this->begin = microtime(true);
50
  $this->initTmpDirectory();
51
 
52
- /*
53
  * If the default memory limit is below 2048M set it to 2048M
54
  * else if it is above 2048M let it as it is
 
 
55
  */
56
- if ($this->return_bytes(ini_get('memory_limit')) < $this->return_bytes(self::MINIMUM_MEMORY_LIMIT)) {
57
- ini_set('memory_limit', self::MINIMUM_MEMORY_LIMIT);
 
 
 
 
 
58
  }
59
 
60
  }
61
 
62
- /**
63
- * Gives the value in bytes
64
- */
65
- protected function return_bytes ($val)
66
- {
67
- if(empty($val))return 0;
68
-
69
- $val = trim($val);
70
-
71
- preg_match('#([0-9]+)[\s]*([a-z]+)#i', $val, $matches);
72
-
73
- $last = '';
74
- if(isset($matches[2])){
75
- $last = $matches[2];
76
- }
77
-
78
- if(isset($matches[1])){
79
- $val = (int) $matches[1];
80
- }
81
-
82
- switch (strtolower($last))
83
- {
84
- case 'g':
85
- case 'gb':
86
- $val *= 1024;
87
- case 'm':
88
- case 'mb':
89
- $val *= 1024;
90
- case 'k':
91
- case 'kb':
92
- $val *= 1024;
93
- }
94
-
95
- return (int) $val;
96
- }
97
-
98
  /**
99
  * Init the tmp directory
100
  */
@@ -124,7 +95,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
124
  public function catalogFullExport($runContext = 'cron')
125
  {
126
  $this->log('FULL EXPORT');
127
- return $this->generate(Mage::getModel('Antidot/Export_Product'), self::GENERATE_FULL, $runContext);
128
  }
129
 
130
  /**
@@ -132,7 +103,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
132
  */
133
  public function catalogIncExport($runContext = 'cron')
134
  {
135
- return $this->generate(Mage::getModel('Antidot/Export_Product'), self::GENERATE_INC, $runContext);
136
  }
137
 
138
  /**
@@ -140,7 +111,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
140
  */
141
  public function categoriesFullExport($runContext = 'cron')
142
  {
143
- return $this->generate(Mage::getModel('Antidot/Export_Category'), self::GENERATE_FULL, $runContext);
144
  }
145
 
146
  /**
@@ -208,7 +179,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
208
  $log['status'] = 'SUCCESS';
209
  } else {
210
  $log['status'] = 'FAILED';
211
- $lastError = current(Mage::helper('Antidot/XmlWriter')->getErrors());
212
  if ($lastError) {
213
  $log['error'][] = $lastError;
214
  } else {
@@ -232,7 +203,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
232
  $this->log('generate '.$exportModel::TYPE.' '.$context['owner']);
233
  $this->log('end');
234
 
235
- Mage::helper('Antidot/LogExport')->add($log['reference'], $type, $exportModel::TYPE, $log['begin'], $log['end'], $log['items'], $log['status'], implode(',', $log['error']));
236
 
237
  if ( count($log['error']) ) {
238
  //send error alert mail
@@ -282,7 +253,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
282
  $this->log('compress the file');
283
 
284
  $compressFile = dirname(current($files)).'/'.$compressFile;
285
- Mage::helper('Antidot/Compress')->zip($files, $compressFile);
286
 
287
  return $compressFile;
288
  }
@@ -297,7 +268,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
297
  {
298
  $this->log('send the file');
299
 
300
- $transport = Mage::getModel('Antidot/Transport');
301
 
302
  return $transport->send($filename, $transport::TRANS_FTP);
303
  }
@@ -315,9 +286,10 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
315
  $errors = array();
316
 
317
  //disable schema validation
318
- if (Mage::getStoreConfig('antidot/xsd_verification/disable') == 1)
319
- {
320
- $this->log('schema validation is DISABLED');
 
321
  } else {
322
 
323
  libxml_use_internal_errors(true);
@@ -332,7 +304,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
332
  $this->log('Schema validated');
333
  } else {
334
 
335
- $errors = Mage::helper('Antidot/XmlWriter')->getErrors();
336
 
337
  $match = array();
338
  if (preg_match('#Warning 1549: failed to load external entity "(.*)\.xsd"#', $errors[0], $match)) {
49
  $this->begin = microtime(true);
50
  $this->initTmpDirectory();
51
 
52
+ /**
53
  * If the default memory limit is below 2048M set it to 2048M
54
  * else if it is above 2048M let it as it is
55
+ *
56
+ * @var $antidotHelper MDN_Antidot_Helper_Data
57
  */
58
+ $antidotHelper = Mage::helper('Antidot');
59
+ $memoryLimit = Mage::getStoreConfig('antidot/export/memory_limit');
60
+ if (!$memoryLimit) {
61
+ $memoryLimit = self::MINIMUM_MEMORY_LIMIT;
62
+ }
63
+ if ($antidotHelper->returnBytes(ini_get('memory_limit')) < $antidotHelper->returnBytes($memoryLimit)) {
64
+ ini_set('memory_limit', $memoryLimit);
65
  }
66
 
67
  }
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  /**
70
  * Init the tmp directory
71
  */
95
  public function catalogFullExport($runContext = 'cron')
96
  {
97
  $this->log('FULL EXPORT');
98
+ return $this->generate(Mage::getModel('Antidot/export_product'), self::GENERATE_FULL, $runContext);
99
  }
100
 
101
  /**
103
  */
104
  public function catalogIncExport($runContext = 'cron')
105
  {
106
+ return $this->generate(Mage::getModel('Antidot/export_product'), self::GENERATE_INC, $runContext);
107
  }
108
 
109
  /**
111
  */
112
  public function categoriesFullExport($runContext = 'cron')
113
  {
114
+ return $this->generate(Mage::getModel('Antidot/export_category'), self::GENERATE_FULL, $runContext);
115
  }
116
 
117
  /**
179
  $log['status'] = 'SUCCESS';
180
  } else {
181
  $log['status'] = 'FAILED';
182
+ $lastError = current(Mage::helper('Antidot/xmlWriter')->getErrors());
183
  if ($lastError) {
184
  $log['error'][] = $lastError;
185
  } else {
203
  $this->log('generate '.$exportModel::TYPE.' '.$context['owner']);
204
  $this->log('end');
205
 
206
+ Mage::helper('Antidot/logExport')->add($log['reference'], $type, $exportModel::TYPE, $log['begin'], $log['end'], $log['items'], $log['status'], implode(',', $log['error']));
207
 
208
  if ( count($log['error']) ) {
209
  //send error alert mail
253
  $this->log('compress the file');
254
 
255
  $compressFile = dirname(current($files)).'/'.$compressFile;
256
+ Mage::helper('Antidot/compress')->zip($files, $compressFile);
257
 
258
  return $compressFile;
259
  }
268
  {
269
  $this->log('send the file');
270
 
271
+ $transport = Mage::getModel('Antidot/transport');
272
 
273
  return $transport->send($filename, $transport::TRANS_FTP);
274
  }
286
  $errors = array();
287
 
288
  //disable schema validation
289
+ if (Mage::getStoreConfig('antidot/export/xsd_validation_disable') == 1) {
290
+ $this->log('schema validation is DISABLED due to configuration');
291
+ } elseif (!class_exists('DOMDocument')) {
292
+ $this->log('schema validation is DISABLED due to lack of libxml DOMDocument Class');
293
  } else {
294
 
295
  libxml_use_internal_errors(true);
304
  $this->log('Schema validated');
305
  } else {
306
 
307
+ $errors = Mage::helper('Antidot/xmlWriter')->getErrors();
308
 
309
  $match = array();
310
  if (preg_match('#Warning 1549: failed to load external entity "(.*)\.xsd"#', $errors[0], $match)) {
app/code/community/MDN/Antidot/Model/Resource/Engine/Abstract.php CHANGED
@@ -86,12 +86,12 @@ abstract class MDN_Antidot_Model_Resource_Engine_Abstract
86
  * @param string $type
87
  * @return array
88
  */
89
- public function getIdsByQuery($query, $params = array(), $type = 'product')
90
  {
91
  $paramsHash = md5(json_encode($params));
92
  if (!isset($this->_idsByQuery[$paramsHash])) {
93
  $ids = array();
94
- $resultTmp = $this->search($query, $params, $type);
95
  if (!empty($resultTmp['ids'])) {
96
  foreach ($resultTmp['ids'] as $id) {
97
  $ids[] = $id['id'];
@@ -149,7 +149,7 @@ abstract class MDN_Antidot_Model_Resource_Engine_Abstract
149
  */
150
  public function getStats($query, $params = array(), $type = 'product')
151
  {
152
- return $this->_search($query, $params, $type);
153
  }
154
 
155
  /**
@@ -180,16 +180,16 @@ abstract class MDN_Antidot_Model_Resource_Engine_Abstract
180
  * @param string $type
181
  * @return array
182
  */
183
- public function search($query, $params = array(), $type = 'product')
184
  {
185
  $result = array();
186
  try {
187
  Varien_Profiler::start('Antidot');
188
- $result = $this->_search($query, $params, $type);
189
  Varien_Profiler::stop('Antidot');
190
 
191
  } catch (Exception $e) {
192
- Mage::logException($e, null, 'antidot.log');
193
  }
194
 
195
  return $result;
86
  * @param string $type
87
  * @return array
88
  */
89
+ public function getIdsByQuery($query, $params = array())
90
  {
91
  $paramsHash = md5(json_encode($params));
92
  if (!isset($this->_idsByQuery[$paramsHash])) {
93
  $ids = array();
94
+ $resultTmp = $this->search($query, $params);
95
  if (!empty($resultTmp['ids'])) {
96
  foreach ($resultTmp['ids'] as $id) {
97
  $ids[] = $id['id'];
149
  */
150
  public function getStats($query, $params = array(), $type = 'product')
151
  {
152
+ return $this->_search($query, $params);
153
  }
154
 
155
  /**
180
  * @param string $type
181
  * @return array
182
  */
183
+ public function search($query, $params = array())
184
  {
185
  $result = array();
186
  try {
187
  Varien_Profiler::start('Antidot');
188
+ $result = $this->_search($query, $params);
189
  Varien_Profiler::stop('Antidot');
190
 
191
  } catch (Exception $e) {
192
+ Mage::log($e->getMessage(), null, 'antidot.log');
193
  }
194
 
195
  return $result;
app/code/community/MDN/Antidot/Model/Resource/Engine/Antidot.php CHANGED
@@ -27,7 +27,7 @@ class MDN_Antidot_Model_Resource_Engine_Antidot extends MDN_Antidot_Model_Resour
27
  */
28
  public function __construct()
29
  {
30
- $this->client = Mage::getModel('Antidot/Search_Search');
31
  }
32
 
33
  /**
@@ -37,7 +37,7 @@ class MDN_Antidot_Model_Resource_Engine_Antidot extends MDN_Antidot_Model_Resour
37
  */
38
  protected function _getHelper()
39
  {
40
- return Mage::helper('Antidot/Antidot');
41
  }
42
 
43
  /**
@@ -291,7 +291,6 @@ class MDN_Antidot_Model_Resource_Engine_Antidot extends MDN_Antidot_Model_Resour
291
  *
292
  * @param string $query
293
  * @param array $params
294
- * @param string $type
295
  * @return array
296
  */
297
  protected function _search($query, $params = array())
27
  */
28
  public function __construct()
29
  {
30
+ $this->client = Mage::getModel('Antidot/search_search');
31
  }
32
 
33
  /**
37
  */
38
  protected function _getHelper()
39
  {
40
+ return Mage::helper('Antidot/antidot');
41
  }
42
 
43
  /**
291
  *
292
  * @param string $query
293
  * @param array $params
 
294
  * @return array
295
  */
296
  protected function _search($query, $params = array())
app/code/community/MDN/Antidot/Model/Search/Search.php CHANGED
@@ -32,6 +32,11 @@ class MDN_Antidot_Model_Search_Search extends MDN_Antidot_Model_Search_Abstract
32
  */
33
  protected $afsSearch;
34
 
 
 
 
 
 
35
  /**
36
  * {@inherit}
37
  */
@@ -54,6 +59,10 @@ class MDN_Antidot_Model_Search_Search extends MDN_Antidot_Model_Search_Abstract
54
  }
55
  }
56
 
 
 
 
 
57
  /**
58
  * Get the suggest list
59
  *
@@ -167,16 +176,18 @@ class MDN_Antidot_Model_Search_Search extends MDN_Antidot_Model_Search_Abstract
167
  */
168
  public function getFacets()
169
  {
170
- $facets = array();
 
171
 
172
- $resultAntidot = $this->search(null, array('limit' => 1), true);
173
- if (isset($resultAntidot->replyset) && $resultAntidot->replyset) {
174
- foreach ($resultAntidot->replyset->facets as $facet) {
175
- $facets[$facet->id] = $facet;
 
176
  }
177
  }
178
 
179
- return $facets;
180
  }
181
 
182
  /**
32
  */
33
  protected $afsSearch;
34
 
35
+ /**
36
+ * @var array facets
37
+ */
38
+ protected $facets;
39
+
40
  /**
41
  * {@inherit}
42
  */
59
  }
60
  }
61
 
62
+ public function getLastSearchTranslations() {
63
+ return self::$lastSearchTranslations;
64
+ }
65
+
66
  /**
67
  * Get the suggest list
68
  *
176
  */
177
  public function getFacets()
178
  {
179
+ if (!$this->facets) {
180
+ $this->facets = array();
181
 
182
+ $resultAntidot = $this->search(null, array('limit' => 1), true);
183
+ if (isset($resultAntidot->replyset) && $resultAntidot->replyset) {
184
+ foreach ($resultAntidot->replyset->facets as $facet) {
185
+ $this->facets[$facet->id] = $facet;
186
+ }
187
  }
188
  }
189
 
190
+ return $this->facets;
191
  }
192
 
193
  /**
app/code/community/MDN/Antidot/Model/System/Config/Facet.php CHANGED
@@ -25,7 +25,7 @@ class MDN_Antidot_Model_System_Config_Facet
25
  {
26
  if (!$this->options) {
27
  try {
28
- $search = Mage::getModel('Antidot/Search_Search');
29
 
30
  $this->options = array();
31
  if (count($search->getFacets()) > 0) {
@@ -46,8 +46,9 @@ class MDN_Antidot_Model_System_Config_Facet
46
 
47
  foreach ($search->getFacets() as $facetId => $facet) {
48
  if ($typeExclude === null || $facet->get_type() !== $typeExclude) {
 
49
  $this->options[] = array(
50
- 'value' => $facetId.'|'.$facet->get_label(),
51
  'label' => $facetId.' ('.$facet->get_type().')'
52
  );
53
 
25
  {
26
  if (!$this->options) {
27
  try {
28
+ $search = Mage::getSingleton('Antidot/search_search');
29
 
30
  $this->options = array();
31
  if (count($search->getFacets()) > 0) {
46
 
47
  foreach ($search->getFacets() as $facetId => $facet) {
48
  if ($typeExclude === null || $facet->get_type() !== $typeExclude) {
49
+ //MCNX-235 : escape single quote for javascript, it cause error in javascript facet editor in BO
50
  $this->options[] = array(
51
+ 'value' => $facetId.'|'.Mage::helper('core')->jsQuoteEscape($facet->get_label()),
52
  'label' => $facetId.' ('.$facet->get_type().')'
53
  );
54
 
app/code/community/MDN/Antidot/Model/Transport.php CHANGED
@@ -28,7 +28,7 @@ class MDN_Antidot_Model_Transport extends Mage_Core_Model_Abstract
28
  */
29
  public function send($file, $type = self::TRANS_FILE)
30
  {
31
- if($transport = Mage::getModel('Antidot/Transport_'.ucfirst($type))) {
32
  return $transport->send($file);
33
  }
34
 
28
  */
29
  public function send($file, $type = self::TRANS_FILE)
30
  {
31
+ if($transport = Mage::getModel('Antidot/transport_'.ucfirst($type))) {
32
  return $transport->send($file);
33
  }
34
 
app/code/community/MDN/Antidot/Test/Helper/Data.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://opensource.org/licenses/osl-3.0.php
10
+ *
11
+ * @copyright Copyright (c) 2015 Antidot (http://www.antidot.net)
12
+ * @author : Antidot devmagento@antidot.net
13
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
+ */
15
+ class MDN_Antidot_Test_Helper_Data extends EcomDev_PHPUnit_Test_Case
16
+ {
17
+
18
+ /**
19
+ * Test method MDN_Antidot_Model_Observer returnBytes
20
+ */
21
+ function testReturnBytes()
22
+ {
23
+ /** @var $observer MDN_Antidot_Model_Observer */
24
+ $helper = Mage::helper('Antidot');
25
+
26
+ foreach (array("2048M" => "2147483648", "512M" => "536870912", "4G" => "4294967296") as $value => $expected) {
27
+ $result = $helper->returnBytes($value);
28
+ $this->assertEquals(
29
+ $result,
30
+ $expected
31
+ );
32
+ }
33
+
34
+ }
35
+
36
+ }
app/code/community/MDN/Antidot/Test/Model/Export/Abstract.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class MDN_Antidot_Test_Model_Export_Abstract extends EcomDev_PHPUnit_Test_Case
5
+ {
6
+
7
+ /**
8
+ * test Garbage Collection
9
+ *
10
+ * gc is enabled in fixture
11
+ * percentage is set to 10% in fixture
12
+ *
13
+ * @loadFixture
14
+ */
15
+ public function testGarbageCollection() {
16
+
17
+ $export = Mage::getModel('Antidot/export_product');
18
+ /* store the default limit */
19
+ $initialLimit = ini_get('memory_limit');
20
+
21
+ //set memory limit to 5x the used memory : then the used memory will be more than 10% of the limit
22
+ ini_set('memory_limit', memory_get_usage(true) * 5);
23
+ $done = MDN_Antidot_Test_PHPUnitUtil::callPrivateMethod($export, 'garbageCollection', array());
24
+ $this->assertTrue($done);
25
+
26
+ //set memory limit to 10x the used memory : then the used memory will be less than 10% of the limit
27
+ ini_set('memory_limit', memory_get_usage(true) * 10);
28
+ $done = MDN_Antidot_Test_PHPUnitUtil::callPrivateMethod($export, 'garbageCollection', array());
29
+ $this->assertFalse($done);
30
+
31
+ ini_set('memory_limit', $initialLimit);
32
+ }
33
+
34
+ }
app/code/community/MDN/Antidot/Test/Model/Export/Abstract/fixtures/testGarbageCollection.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ config:
2
+ default/antidot/export/gc_enabled: 1
3
+ default/antidot/export/gc_percentage_limit: 10
app/code/community/MDN/Antidot/Test/Model/Export/Category.php CHANGED
@@ -4,6 +4,11 @@
4
  class MDN_Antidot_Test_Model_Export_Category extends EcomDev_PHPUnit_Test_Case
5
  {
6
 
 
 
 
 
 
7
  /*
8
  * MCNX-56 add version number and run context in the feed tag
9
  */
@@ -23,15 +28,19 @@ class MDN_Antidot_Test_Model_Export_Category extends EcomDev_PHPUnit_Test_Case
23
  /*
24
  * MCNX-170 don't generate file if there's no categories to export
25
  * test the XmlWriter has not been initialised if there's no categories to export
 
26
  */
27
  public function testEmptyFile() {
28
 
29
  $export = Mage::getModel('Antidot/export_category');
30
 
31
  $context = array();
32
- $context['store_id'] = array(1);
33
- $context['website_ids'] = array(1);
34
- $context['stores'] = array(Mage::getModel('core/store')->load(1));
 
 
 
35
  $nbItem = $export->writeXml($context, 'categories-magento_jetpulp_FULL-en.xml', MDN_Antidot_Model_Observer::GENERATE_FULL);
36
 
37
  $this->assertEquals($nbItem, 0);
@@ -43,4 +52,4 @@ class MDN_Antidot_Test_Model_Export_Category extends EcomDev_PHPUnit_Test_Case
43
 
44
  }
45
 
46
- }
4
  class MDN_Antidot_Test_Model_Export_Category extends EcomDev_PHPUnit_Test_Case
5
  {
6
 
7
+ public static function setUpBeforeClass()
8
+ {
9
+ //avoid errors when session_start is called during the test
10
+ @session_start();
11
+ }
12
  /*
13
  * MCNX-56 add version number and run context in the feed tag
14
  */
28
  /*
29
  * MCNX-170 don't generate file if there's no categories to export
30
  * test the XmlWriter has not been initialised if there's no categories to export
31
+ * @loadFixture
32
  */
33
  public function testEmptyFile() {
34
 
35
  $export = Mage::getModel('Antidot/export_category');
36
 
37
  $context = array();
38
+ $context['store_id'] = array(2);
39
+ $context['website_ids'] = array(2);
40
+ $context['stores'] = array(Mage::getModel('core/store')->load(2));
41
+ $context['owner'] = 'JETPULP';
42
+ $context['run'] = 'phpunit';
43
+ $context['lang'] = 'en';
44
  $nbItem = $export->writeXml($context, 'categories-magento_jetpulp_FULL-en.xml', MDN_Antidot_Model_Observer::GENERATE_FULL);
45
 
46
  $this->assertEquals($nbItem, 0);
52
 
53
  }
54
 
55
+ }
app/code/community/MDN/Antidot/Test/Model/Export/Category/fixtures/testEmptyFile.yaml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ scope:
2
+ website: # Initialize websites
3
+ - website_id: 2
4
+ code: usa_website
5
+ name: USA Website
6
+ default_group_id: 2
7
+ group: # Initializes store groups
8
+ - group_id: 2
9
+ website_id: 2
10
+ name: USA Store Group
11
+ default_store_id: 2
12
+ root_category_id: 99 # Default Category
13
+ store: # Initializes store views
14
+ - store_id: 2
15
+ website_id: 2
16
+ group_id: 2
17
+ code: usa
18
+ name: USA Store
19
+ is_active: 1
app/code/community/MDN/Antidot/Test/Model/Export/Product.php CHANGED
@@ -453,8 +453,41 @@ class MDN_Antidot_Test_Model_Export_Product extends EcomDev_PHPUnit_Test_Case
453
  $expected='<prices><price currency="EUR" type="PRICE_FINAL" vat_included="true" country="FR">15.99</price></prices>';
454
  $this->assertEquals($expected, $xmlWriter->getXml());
455
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
456
 
457
  }
 
458
  /**
459
  *
460
  * @param $productId
453
  $expected='<prices><price currency="EUR" type="PRICE_FINAL" vat_included="true" country="FR">15.99</price></prices>';
454
  $this->assertEquals($expected, $xmlWriter->getXml());
455
 
456
+ }
457
+
458
+ /**
459
+ * MCNX-236 : test getProductCategories
460
+ * @loadFixture
461
+ */
462
+ public function testGetProductCategories()
463
+ {
464
+
465
+ /* @var $export \MDN_Antidot_Model_Export_Product */
466
+ $export = Mage::getModel('Antidot/export_product');
467
+
468
+ /**
469
+ * create mock product to simulate getCategoryCollection returning list of the to category of the product
470
+ * beacause fixture doesn't simulate it...
471
+ */
472
+ $mockModel = $this->getModelMock('catalog/product', array('getCategoryCollection', 'getStoreId'));
473
+ $mockModel->expects($this->any())
474
+ ->method('getCategoryCollection')
475
+ ->will($this->returnValue(Mage::getResourceModel('catalog/category_collection')->addAttributeToFilter('entity_id', array(10,11))));
476
+ $mockModel->expects($this->any())
477
+ ->method('getStoreId')
478
+ ->will($this->returnValue(3));
479
+
480
+ /**
481
+ * Categories 10 and 11 are affected to the product in fixtures
482
+ * Category 11 is not active.
483
+ * We expect one category associated to the product
484
+ */
485
+ $categories = MDN_Antidot_Test_PHPUnitUtil::callPrivateMethod($export,'getProductCategories', array($mockModel, array(2)));
486
+
487
+ $this->assertEquals(1, count($categories));
488
 
489
  }
490
+
491
  /**
492
  *
493
  * @param $productId
app/code/community/MDN/Antidot/Test/Model/Export/Product/fixtures/testGetProductCategories.yaml ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ scope:
2
+ website: # Initialize websites
3
+ - website_id: 2
4
+ code: usa_website
5
+ name: USA Website
6
+ default_group_id: 2
7
+ - website_id: 3
8
+ code: french_website
9
+ name: French Website
10
+ default_group_id: 3
11
+ - website_id: 4
12
+ code: german_website
13
+ name: German Website
14
+ default_group_id: 4
15
+ group: # Initializes store groups
16
+ - group_id: 2
17
+ website_id: 2
18
+ name: USA Store Group
19
+ default_store_id: 2
20
+ root_category_id: 2 # Default Category
21
+ - group_id: 3
22
+ website_id: 3
23
+ name: French Store Group
24
+ default_store_id: 3
25
+ root_category_id: 2 # Default Category
26
+ - group_id: 4
27
+ website_id: 4
28
+ name: German Store Group
29
+ default_store_id: 4
30
+ root_category_id: 2 # Default Category
31
+ store: # Initializes store views
32
+ - store_id: 2
33
+ website_id: 2
34
+ group_id: 2
35
+ code: usa
36
+ name: USA Store
37
+ is_active: 1
38
+ - store_id: 3
39
+ website_id: 3
40
+ group_id: 3
41
+ code: france
42
+ name: France Store
43
+ is_active: 1
44
+ - store_id: 4
45
+ website_id: 4
46
+ group_id: 4
47
+ code: germany
48
+ name: Germany Store
49
+ is_active: 1
50
+ config:
51
+ default/web/secure/base_url: http://www.mywebsite.com/
52
+ default/web/unsecure/base_url: http://www.mywebsite.com/
53
+ stores/usa/web/secure/base_url: http://www.mywebsite.com/
54
+ stores/france/web/secure/base_url: http://www.monsiteweb.fr/
55
+ stores/germany/web/secure/base_url: http://www.meinwebseite.de/
56
+ stores/usa/web/unsecure/base_url: http://www.mywebsite.com/
57
+ stores/france/web/unsecure/base_url: http://www.monsiteweb.fr/
58
+ stores/germany/web/unsecure/base_url: http://www.meinwebseite.de/
59
+ eav:
60
+ catalog_product:
61
+ - entity_id: 1
62
+ type_id: simple
63
+ attribute_set_id: 4 # Default
64
+ sku: book
65
+ name: Book
66
+ short_description: Book
67
+ description: Book
68
+ url_key: book
69
+ image: b/o/book.jpg
70
+ thumbnail: b/o/book_small.jpg
71
+ stock:
72
+ qty: 100.00
73
+ is_in_stock: 1
74
+ website_ids:
75
+ - usa_website
76
+ - french_website
77
+ - german_website
78
+ category_ids:
79
+ - 10,11
80
+ price: 12.99
81
+ tax_class_id: 2 # Taxable Goods
82
+ status: 1 # Enabled
83
+ visibility: 4 # Visible in Catalog & Search
84
+ /websites: # Set different prices per website
85
+ usa_website:
86
+ special_price: 9.99
87
+ german_website:
88
+ price: 9.99
89
+ special_price: 5.99
90
+ eav:
91
+ catalog_category:
92
+ - entity_id: 10
93
+ path: 1/2/10
94
+ name: Categorie active
95
+ is_active: 1
96
+ parent_id: 2
97
+ - entity_id: 11
98
+ path: 1/2/11
99
+ name: Categorie inactive
100
+ is_active: 0
101
+ parent_id: 2
app/code/community/MDN/Antidot/Test/Model/System/Config/Facet.php CHANGED
@@ -28,11 +28,11 @@ class MDN_Antidot_Test_Model_System_Config_Facet extends EcomDev_PHPUnit_Test_Ca
28
  ->method('get_labels')
29
  ->will($this->returnValue(array('de'=>'Verfügbarkeit', 'fr' => 'Disponibilité', 'en' => 'Availability')));
30
 
31
- $mockSearch = $this->getModelMock('Antidot/Search_Search', array('getFacets'));
32
  $mockSearch->expects($this->any())
33
  ->method('getFacets')
34
  ->will($this->returnValue(array('is_available'=> $mockAFSHelper )));
35
- $this->replaceByMock('model', 'Antidot/Search_Search', $mockSearch);
36
 
37
 
38
  Mage::app()->setCurrentStore(0);
@@ -76,6 +76,49 @@ class MDN_Antidot_Test_Model_System_Config_Facet extends EcomDev_PHPUnit_Test_Ca
76
 
77
  }
78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  }
80
  class MDN_Antidot_Test_Model_System_Config_Facet_MockAFSHelper
81
  {
28
  ->method('get_labels')
29
  ->will($this->returnValue(array('de'=>'Verfügbarkeit', 'fr' => 'Disponibilité', 'en' => 'Availability')));
30
 
31
+ $mockSearch = $this->getModelMock('Antidot/search_search', array('getFacets'));
32
  $mockSearch->expects($this->any())
33
  ->method('getFacets')
34
  ->will($this->returnValue(array('is_available'=> $mockAFSHelper )));
35
+ $this->replaceByMock('model', 'Antidot/search_search', $mockSearch);
36
 
37
 
38
  Mage::app()->setCurrentStore(0);
76
 
77
  }
78
 
79
+ /**
80
+ * Test toOptionArray method
81
+ *
82
+ * MCNX-235 : escape single quote in label
83
+ */
84
+ public function testToOptionArrayEscapeQuote()
85
+ {
86
+
87
+ /*
88
+ *
89
+ */
90
+ $mockAFSHelper = $this->getMock('MDN_Antidot_Test_Model_System_Config_Facet_MockAFSHelper');
91
+ $mockAFSHelper->expects($this->any())
92
+ ->method('get_type')
93
+ ->will($this->returnValue('boolean'));
94
+ $mockAFSHelper->expects($this->any())
95
+ ->method('get_label')
96
+ ->will($this->returnValue("Type d'accessoire"));
97
+ $mockAFSHelper->expects($this->any())
98
+ ->method('get_labels')
99
+ ->will($this->returnValue(array("fr"=>"Type d'accessoire")));
100
+
101
+ $mockSearch = $this->getModelMock('Antidot/search_search', array('getFacets'));
102
+ $mockSearch->expects($this->any())
103
+ ->method('getFacets')
104
+ ->will($this->returnValue(array('type_accessoire'=> $mockAFSHelper )));
105
+ $this->replaceByMock('model', 'Antidot/search_search', $mockSearch);
106
+
107
+
108
+ Mage::app()->setCurrentStore(0);
109
+ /** @var $configSort MDN_Antidot_Model_System_Config_Facet */
110
+ $configFacet = Mage::getModel('Antidot/system_config_facet');
111
+
112
+ $values = $configFacet->toOptionArray('STRING');
113
+
114
+ $this->assertEquals(
115
+ array(array("value"=>"type_accessoire|Type d\'accessoire", 'label' => 'type_accessoire (boolean)')),
116
+ $values
117
+ );
118
+
119
+
120
+ }
121
+
122
  }
123
  class MDN_Antidot_Test_Model_System_Config_Facet_MockAFSHelper
124
  {
app/code/community/MDN/Antidot/controllers/Admin/PushController.php CHANGED
@@ -23,7 +23,7 @@ class MDN_Antidot_Admin_PushController extends Mage_Adminhtml_Controller_Action
23
  {
24
  try
25
  {
26
- if (Mage::getModel('Antidot/Observer')->categoriesFullExport('UI')) {
27
  Mage::getSingleton('adminhtml/session')->addSuccess(
28
  Mage::helper('Antidot')->__('Categories exported')
29
  );
@@ -47,7 +47,7 @@ class MDN_Antidot_Admin_PushController extends Mage_Adminhtml_Controller_Action
47
  public function ProductAction()
48
  {
49
  try {
50
- if (Mage::getModel('Antidot/Observer')->catalogFullExport('UI')) {
51
  Mage::getSingleton('adminhtml/session')->addSuccess(
52
  Mage::helper('Antidot')->__('Catalog exported')
53
  );
23
  {
24
  try
25
  {
26
+ if (Mage::getModel('Antidot/observer')->categoriesFullExport('UI')) {
27
  Mage::getSingleton('adminhtml/session')->addSuccess(
28
  Mage::helper('Antidot')->__('Categories exported')
29
  );
47
  public function ProductAction()
48
  {
49
  try {
50
+ if (Mage::getModel('Antidot/observer')->catalogFullExport('UI')) {
51
  Mage::getSingleton('adminhtml/session')->addSuccess(
52
  Mage::helper('Antidot')->__('Catalog exported')
53
  );
app/code/community/MDN/Antidot/etc/config.xml CHANGED
@@ -18,7 +18,7 @@
18
  </crontab>
19
  <modules>
20
  <MDN_Antidot>
21
- <version>1.1.2</version>
22
  </MDN_Antidot>
23
  </modules>
24
  <global>
@@ -605,6 +605,29 @@
605
  <promote>
606
  <redirect>no_result</redirect>
607
  </promote>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
608
  </antidot>
609
  </default>
610
  <phpunit>
18
  </crontab>
19
  <modules>
20
  <MDN_Antidot>
21
+ <version>1.1.3</version>
22
  </MDN_Antidot>
23
  </modules>
24
  <global>
605
  <promote>
606
  <redirect>no_result</redirect>
607
  </promote>
608
+ <!-- Export Parameters :-->
609
+ <!-- For developpers : these parameters are set with default values which fit most of systems, but they can be tweak here : -->
610
+ <!-- (Flush magento config cache after modifiying them) -->
611
+ <export>
612
+ <!-- Memory Limit : this value is set as memory_limit if default one is below, you can increase it if you run into out of memory error -->
613
+ <memory_limit>2048M</memory_limit>
614
+ <!-- If you run into out of memory error, but can't increase memory limit, you can set gc_enabled to 1, -->
615
+ <!-- it will trigger some gc_collect_cycles to free some memory, however it will slow down process -->
616
+ <gc_enabled>0</gc_enabled>
617
+ <!-- if garbage collection is enabled, the gc_collect_cycles will be trigger when memory used exceeds gc_percentage_limit of memory_limit -->
618
+ <gc_percentage_limit>80</gc_percentage_limit>
619
+ <!-- number of product processed before flush xml in file -->
620
+ <chunk_size>500</chunk_size>
621
+ <!-- disable xsd validation -->
622
+ <xsd_validation_disable>0</xsd_validation_disable>
623
+ <!-- enable profiler and debug mode -->
624
+ <!-- it collect mysql queries, methods timers and limit to 1 chunk the process -->
625
+ <profiler_enable>0</profiler_enable>
626
+ <!-- number of slowest mysql queries logged -->
627
+ <profiler_nb_lowest_queries>10</profiler_nb_lowest_queries>
628
+ <!-- varien_profiler items time consuming quota of total time logged -->
629
+ <profiler_varien_quota>0.001</profiler_varien_quota>
630
+ </export>
631
  </antidot>
632
  </default>
633
  <phpunit>
app/code/community/MDN/Antidot/etc/system.xml CHANGED
@@ -18,10 +18,17 @@
18
  <show_in_website>1</show_in_website>
19
  <show_in_store>1</show_in_store>
20
  <fields>
 
 
 
 
 
 
 
21
  <afsstore translate="label">
22
  <label>AFS@Store Back-Office</label>
23
  <frontend_model>Antidot/System_Config_Button_AfsStore</frontend_model>
24
- <sort_order>1</sort_order>
25
  <show_in_default>1</show_in_default>
26
  <show_in_website>0</show_in_website>
27
  <show_in_store>0</show_in_store>
@@ -29,7 +36,7 @@
29
  <version translate="label">
30
  <label>AFS@Store Extension Version</label>
31
  <frontend_model>Antidot/System_Config_Html_Version</frontend_model>
32
- <sort_order>2</sort_order>
33
  <show_in_default>1</show_in_default>
34
  <show_in_website>0</show_in_website>
35
  <show_in_store>0</show_in_store>
18
  <show_in_website>1</show_in_website>
19
  <show_in_store>1</show_in_store>
20
  <fields>
21
+ <notice>
22
+ <frontend_model>Antidot/System_Config_Fieldset_Notice</frontend_model>
23
+ <sort_order>1</sort_order>
24
+ <show_in_default>1</show_in_default>
25
+ <show_in_website>0</show_in_website>
26
+ <show_in_store>0</show_in_store>
27
+ </notice>
28
  <afsstore translate="label">
29
  <label>AFS@Store Back-Office</label>
30
  <frontend_model>Antidot/System_Config_Button_AfsStore</frontend_model>
31
+ <sort_order>2</sort_order>
32
  <show_in_default>1</show_in_default>
33
  <show_in_website>0</show_in_website>
34
  <show_in_store>0</show_in_store>
36
  <version translate="label">
37
  <label>AFS@Store Extension Version</label>
38
  <frontend_model>Antidot/System_Config_Html_Version</frontend_model>
39
+ <sort_order>3</sort_order>
40
  <show_in_default>1</show_in_default>
41
  <show_in_website>0</show_in_website>
42
  <show_in_store>0</show_in_store>
app/design/frontend/{default → base}/default/layout/antidot.xml RENAMED
@@ -4,6 +4,7 @@
4
 
5
  <catalogsearch_result_index>
6
  <reference name="search.result">
 
7
  <block type="Antidot/Catalogsearch_Category" name="search_result_category" as="search_result_category" template="antidot/catalogsearch/result/category.phtml" />
8
  </reference>
9
  </catalogsearch_result_index>
4
 
5
  <catalogsearch_result_index>
6
  <reference name="search.result">
7
+ <action method="setTemplate"><template>antidot/catalogsearch/result.phtml</template></action>
8
  <block type="Antidot/Catalogsearch_Category" name="search_result_category" as="search_result_category" template="antidot/catalogsearch/result/category.phtml" />
9
  </reference>
10
  </catalogsearch_result_index>
app/design/frontend/{default → base}/default/template/antidot/catalogsearch/result/category.phtml RENAMED
File without changes
app/locale/de_AT/MDN_Antidot.csv CHANGED
@@ -139,4 +139,9 @@ Price,Preis
139
  "Feed ID","Futter ID"
140
  "Add a feed","fügen Sie ein Futter"
141
  "Additionnal feed","Additionnal Futter"
142
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Fügen Sie eine zusätzliche Einspeisung in den AKP- Reaktion , typicaly einer Hitparade oder andere Futtermittel in AFSStore Back-Office konfiguriert ist."
 
 
 
 
 
139
  "Feed ID","Futter ID"
140
  "Add a feed","fügen Sie ein Futter"
141
  "Additionnal feed","Additionnal Futter"
142
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Fügen Sie eine zusätzliche Einspeisung in den AKP- Reaktion , typicaly einer Hitparade oder andere Futtermittel in AFSStore Back-Office konfiguriert ist."
143
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","XSLTProcessor Klasse nicht vorhanden ist, müssen Sie php xsl extension zu installieren, da sonst die Autovervollständigung werden nicht ordnungsgemäß ausgeführt"
144
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","ZipArchive Klasse nicht vorhanden ist, müssen Sie php zip extension zu installieren, sonst wird die Zip-Betrieb während der Export möglicherweise nicht korrekt ausgeführt"
145
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","DOMDocument Klasse nicht vorhanden ist, müssen Sie php libxml extension zu installieren, da sonst die XSD-Validierung während des Exports wird nicht ausgeführt und weder Autovervollständigung"
146
+ "The curl php extension is not installed, it's required to upload export files","Die php curl extension nicht installiert ist, es ist erforderlich , um den Export Dateien hochladen"
147
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","Die php curl extension nicht SFTP-Protokoll unterstützen, müssen libcurl auf Ihrem System aktualisiert werden , sonst werden die Exportdateien werden nicht hochgeladen werden"
app/locale/de_CH/MDN_Antidot.csv CHANGED
@@ -139,4 +139,9 @@ Price,Preis
139
  "Feed ID","Futter ID"
140
  "Add a feed","fügen Sie ein Futter"
141
  "Additionnal feed","Additionnal Futter"
142
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Fügen Sie eine zusätzliche Einspeisung in den AKP- Reaktion , typicaly einer Hitparade oder andere Futtermittel in AFSStore Back-Office konfiguriert ist."
 
 
 
 
 
139
  "Feed ID","Futter ID"
140
  "Add a feed","fügen Sie ein Futter"
141
  "Additionnal feed","Additionnal Futter"
142
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Fügen Sie eine zusätzliche Einspeisung in den AKP- Reaktion , typicaly einer Hitparade oder andere Futtermittel in AFSStore Back-Office konfiguriert ist."
143
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","XSLTProcessor Klasse nicht vorhanden ist, müssen Sie php xsl extension zu installieren, da sonst die Autovervollständigung werden nicht ordnungsgemäß ausgeführt"
144
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","ZipArchive Klasse nicht vorhanden ist, müssen Sie php zip extension zu installieren, sonst wird die Zip-Betrieb während der Export möglicherweise nicht korrekt ausgeführt"
145
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","DOMDocument Klasse nicht vorhanden ist, müssen Sie php libxml extension zu installieren, da sonst die XSD-Validierung während des Exports wird nicht ausgeführt und weder Autovervollständigung"
146
+ "The curl php extension is not installed, it's required to upload export files","Die php curl extension nicht installiert ist, es ist erforderlich , um den Export Dateien hochladen"
147
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","Die php curl extension nicht SFTP-Protokoll unterstützen, müssen libcurl auf Ihrem System aktualisiert werden , sonst werden die Exportdateien werden nicht hochgeladen werden"
app/locale/de_DE/MDN_Antidot.csv CHANGED
@@ -139,4 +139,9 @@ Price,Preis
139
  "Feed ID","Futter ID"
140
  "Add a feed","fügen Sie ein Futter"
141
  "Additionnal feed","Additionnal Futter"
142
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Fügen Sie eine zusätzliche Einspeisung in den AKP- Reaktion , typicaly einer Hitparade oder andere Futtermittel in AFSStore Back-Office konfiguriert ist."
 
 
 
 
 
139
  "Feed ID","Futter ID"
140
  "Add a feed","fügen Sie ein Futter"
141
  "Additionnal feed","Additionnal Futter"
142
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Fügen Sie eine zusätzliche Einspeisung in den AKP- Reaktion , typicaly einer Hitparade oder andere Futtermittel in AFSStore Back-Office konfiguriert ist."
143
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","XSLTProcessor Klasse nicht vorhanden ist, müssen Sie php xsl extension zu installieren, da sonst die Autovervollständigung werden nicht ordnungsgemäß ausgeführt"
144
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","ZipArchive Klasse nicht vorhanden ist, müssen Sie php zip extension zu installieren, sonst wird die Zip-Betrieb während der Export möglicherweise nicht korrekt ausgeführt"
145
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","DOMDocument Klasse nicht vorhanden ist, müssen Sie php libxml extension zu installieren, da sonst die XSD-Validierung während des Exports wird nicht ausgeführt und weder Autovervollständigung"
146
+ "The curl php extension is not installed, it's required to upload export files","Die php curl extension nicht installiert ist, es ist erforderlich , um den Export Dateien hochladen"
147
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","Die php curl extension nicht SFTP-Protokoll unterstützen, müssen libcurl auf Ihrem System aktualisiert werden , sonst werden die Exportdateien werden nicht hochgeladen werden"
app/locale/es_AR/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_CL/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_CO/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_CR/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_ES/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_MX/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_PA/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_PE/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/es_VE/MDN_Antidot.csv CHANGED
@@ -23,7 +23,7 @@ Term,"Palabra clave"
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
- "Useful for support team","�?til para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
@@ -138,4 +138,9 @@ Price,Precio
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
 
 
 
 
 
23
  "AFS@Store Extension Version","Versión de la extensión AFS@Store"
24
  "Communicate this version to the support team if you need help","Si es necesario, comunique esta versión al equipo del soporte"
25
  "Organization name","Nombre de la organización"
26
+ "Useful for support team","Útil para el equipo del soporte"
27
  E-mail,"Correo electrónico"
28
  "Used to send alert when an error occured","Utilizado para enviar una alerta cuando ocurre un error"
29
  "Data upload parameters","Parámetros de carga de datos"
138
  "Feed ID","Flujo ID"
139
  "Add a feed","Añadir flujo"
140
  "Additionnal feed","flujo adicional"
141
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Agregar una fuente adicional para la respuesta ACP , Typicaly un hit -parade o cualquier otro alimento configurado en AFSStore Back-office."
142
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","Clase XSLTProcessor no existe, debe instalar el extensión php xsl, de lo contrario el autocompletado no funcionará correctamente"
143
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","Clase ZipArchive no existe, debe instalar el extensión php postal, de lo contrario la operación postal durante la exportación puede no funcionará correctamente"
144
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","Clase DOMDocument no existe, debe instalar el extensión php libxml, de lo contrario la validación xsd durante la exportación no se ejecutará y autocompletar ni"
145
+ "The curl php extension is not installed, it's required to upload export files","La extensión php curl no está instalado, se requiere para subir archivos de exportación"
146
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","La extensión php curl no soporta el protocolo sftp , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
app/locale/fr_CA/MDN_Antidot.csv CHANGED
@@ -139,4 +139,9 @@ Price,Prix
139
  "Feed ID","Identifiant du flux"
140
  "Add a feed","Ajouter un flux"
141
  "Additionnal feed","Flux additionnel"
142
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office","Ajoute un flux additionnel à la réponse de l'ACP, typiquement un hit-parade ou bien tout autre flux configuré dans le Back-Office AFSStore"
 
 
 
 
 
139
  "Feed ID","Identifiant du flux"
140
  "Add a feed","Ajouter un flux"
141
  "Additionnal feed","Flux additionnel"
142
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Ajoute un flux additionnel à la réponse de l'ACP, typiquement un hit-parade ou bien tout autre flux configuré dans le Back-Office AFSStore."
143
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","La classe XSLTProcessor n'existe pas, vous devez installer le extension php xsl, sinon l'auto-complétion ne fonctionnera pas correctement"
144
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","La classe ZipArchive n'existe pas, vous devez installer le extension php zip, sinon l'opération de zip lors de l'export pourrait ne pas fonctionner correctement"
145
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","La classe DOMDocument n'existe pas, vous devez installer le extension php libxml, sinon la validation xsd lors de l'export ne fonctionnera pas et l'auto-complétion non plus"
146
+ "The curl php extension is not installed, it's required to upload export files","L'extension php curl n'est pas installée, elle est nécéssaire à l'upload des fichiers d'export"
147
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","L'extension php curl ne supporte pas le protocol sftp, libcurl doit être mis à jour sur le système, sinon l'upload des fichiers d'export ne se fera pas"
app/locale/fr_FR/MDN_Antidot.csv CHANGED
@@ -139,4 +139,9 @@ Price,Prix
139
  "Feed ID","Identifiant du flux"
140
  "Add a feed","Ajouter un flux"
141
  "Additionnal feed","Flux additionnel"
142
- "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Ajoute un flux additionnel à la réponse de l'ACP, typiquement un hit-parade ou bien tout autre flux configuré dans le Back-Office AFSStore."
 
 
 
 
 
139
  "Feed ID","Identifiant du flux"
140
  "Add a feed","Ajouter un flux"
141
  "Additionnal feed","Flux additionnel"
142
+ "Add an additional feed to the ACP response, typicaly an hit-parade or any other feed configured in AFSStore Back-office.","Ajoute un flux additionnel à la réponse de l'ACP, typiquement un hit-parade ou bien tout autre flux configuré dans le Back-Office AFSStore."
143
+ "XSLTProcessor class doesn't exist, you must install php xsl extension, otherwise the autocomplete will not run correctly","La classe XSLTProcessor n'existe pas, vous devez installer le extension php xsl, sinon l'auto-complétion ne fonctionnera pas correctement"
144
+ "ZipArchive class doesn't exist, you must install php zip extension, otherwise the zip operation during export may not run correctly","La classe ZipArchive n'existe pas, vous devez installer le extension php zip, sinon l'opération de zip lors de l'export pourrait ne pas fonctionner correctement"
145
+ "DOMDocument class doesn't exist, you must install php libxml extension, otherwise the xsd validation during export will not run and autocomplete neither","La classe DOMDocument n'existe pas, vous devez installer le extension php libxml, sinon la validation xsd lors de l'export ne fonctionnera pas et l'auto-complétion non plus"
146
+ "The curl php extension is not installed, it's required to upload export files","L'extension php curl n'est pas installée, elle est nécéssaire à l'upload des fichiers d'export"
147
+ "The curl php extension doesn't support sftp protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","L'extension php curl ne supporte pas le protocol sftp, libcurl doit être mis à jour sur le système, sinon l'upload des fichiers d'export ne se fera pas"
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Antidot_Antidot</name>
4
- <version>1.1.2</version>
5
  <stability>stable</stability>
6
  <license>LGPL</license>
7
  <channel>community</channel>
@@ -17,9 +17,9 @@ Prevent to export empty categories node&amp;#xD;
17
  Add cdata for variant name&amp;#xD;
18
  Add variant details for grouped products</notes>
19
  <authors><author><name>Antidot</name><user>antidot</user><email>contact@antidot.net</email></author><author><name>Antidot</name><user>antidot</user><email>contact@antidot.net</email></author></authors>
20
- <date>2015-06-08</date>
21
- <time>14:55:21</time>
22
- <contents><target name="mage"><dir name="shell"><file name="antidotExport.php" hash="84b760a0cab3cc225ff8b50d6d25ed61"/><file name="antidotExportCategory.php" hash="87ebde88a80a1eb1f919aca67a69984b"/><file name="antidotExportInc.php" hash="437d19933543a58c8becd250613e5c26"/><file name="antidotExportProduct.php" hash="62c1fda71a6929d6e19864df9654c8a9"/></dir><dir name="i18n"><file name="de_DE" hash="f166a5ff29213a44fca77277b053897e"/><file name="en_US" hash="63c821044fda6f7c2a26dc84670b25bd"/><file name="es_ES" hash="f9319039054998955d63d51ed0930f3f"/><file name="fr_FR" hash="632367797f2fa9fef06e0b0c69377e01"/><file name="i18n.php" hash="0780b44563432f6e70de78f7a9d60f54"/></dir></target><target name="magecommunity"><dir name="MDN"><dir name="Antidot"><dir name="Block"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2158b991ccdf394c8cd47cab00829e4d"/><file name="Boolean.php" hash="d17b08e1ec9047cf4050442ababd0808"/><file name="Category.php" hash="78cb53233ad74a2b5496d6f7857d8837"/><file name="Decimal.php" hash="75b31617bca2a8f20ee7fe113e3534f2"/><file name="Price.php" hash="244068a33e8ba64423c126baf883d2b5"/></dir><file name="View.php" hash="bbdd9bb31663415001ab3751c6737cde"/></dir></dir><dir name="Catalogsearch"><file name="Category.php" hash="e9605415ba85929115a443b1b4f00ab0"/><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2b274bf7d8f8dbd915bdf73f65e694fc"/></dir></dir><file name="Layer.php" hash="a4ba017431be528922bbebe5b9da1542"/><file name="Result.php" hash="77394f05e3a99f820bcfcd597b856446"/></dir><dir name="Html"><file name="Select.php" hash="fc7fb19df1dd378d4e9e0860d2d47d07"/></dir><dir name="System"><dir name="Config"><dir name="Button"><file name="AfsStore.php" hash="4f00570d46d27d1cf89785e8db42a332"/><file name="PushArticles.php" hash="a0cae65b4aba9b539421c0a6d06fb406"/><file name="PushCategories.php" hash="50e4b74388e1c5a65249c71dfae69400"/><file name="PushProducts.php" hash="bac543e1b17f91a558adef5da3012e28"/><file name="RestoreTemplate.php" hash="ffbbb0a73ff1ede611262a6a4da1a188"/><file name="ShowXml.php" hash="417ba0c9c62d8070b63f90397887dcc0"/></dir><dir name="Form"><dir name="Field"><dir name="Array"><file name="Additional.php" hash="acbde0308213fa976f55934fb45aba60"/><file name="AdditionalFeed.php" hash="b4489921424513278869ece9bbcd09be"/><file name="ArticleAdditional.php" hash="38c62d610f585c460151841f7350348b"/><file name="ArticleIdentifier.php" hash="ec9479fd1ca087a1fe924795cc9ff5f6"/><file name="DefaultSort.php" hash="61dec4828212e7a145b6eeda5c476858"/><file name="Facet.php" hash="dab308e0ac79a89be8d72e487739031e"/><file name="Identifier.php" hash="294c5d3bda7dae5637eabfdfdb08afc7"/><file name="ProductAdditionalFacet.php" hash="208e01078409951327f1794e17e11e89"/><file name="ProductAdditionalField.php" hash="9c9f9c9c1c940963e1a24c039a392cc4"/><file name="ProductIdentifier.php" hash="d30809119cb35018697533075f7ee485"/><file name="Sort.php" hash="6ece671c902cf6f5db66652a2c51e79f"/></dir><file name="CategoryAttribute.php" hash="1ba0dd22410eb27d18ac77b51f78ac49"/><file name="ProductAttribute.php" hash="3acbdaee390ce50e18d0ede1d641255d"/></dir></dir><dir name="Html"><file name="Export.php" hash="7cb82e5f21c769e5b39efc0be7b76473"/><file name="ShowXml.php" hash="7b70f39937aa9d24336edde6bdbdf97c"/><file name="Version.php" hash="34c624c382f3061cf322cfed52c416ac"/></dir></dir></dir></dir><dir name="Helper"><file name="Antidot.php" hash="7bbd2866c65a847e1415badb1ef0d015"/><dir name="CatalogSearch"><file name="Data.php" hash="81cc908609e68035d5714488f913e688"/></dir><file name="Compress.php" hash="9c057cf9d594b07e6d36c1142b9ceae6"/><file name="Data.php" hash="1314ee9767341e6654de90c0ccfdced9"/><dir name="Enterprise"><dir name="Search"><file name="Data.php" hash="8bfe0146c64511f86cb796638b65112f"/></dir></dir><file name="LogExport.php" hash="6d6b262327bf1d920fc2b5b112edfef6"/><dir name="ManaFilters"><file name="Data.php" hash="e5dd65e6e52c03427aa68528cc1f140a"/></dir><file name="Url.php" hash="1d2ee02a8e135bfc4b866f5219f62acd"/><file name="XmlWriter.php" hash="77addcc2f245646c50c3da4bcee16774"/></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="3cd18414abccea60c5497931bc95e21e"/><file name="Boolean.php" hash="dd0414e0d96833bec6e32aac321c2763"/><file name="Category.php" hash="9224a05ffa914bfcaded1c6c52bd92f9"/><file name="Decimal.php" hash="b9b1e2cff1d0332fab77d101dca4c3d2"/><file name="Item.php" hash="f7cd6f73001c61046277a4807c37c73b"/><file name="Price.php" hash="7529be0313a19896993f92eeb9dfc8a9"/></dir></dir><file name="Layer.php" hash="706000dd944a45f30826eccba2942862"/></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="a83d6761a949c8196cba33948a48c8bf"/></dir></dir><file name="Layer.php" hash="b5aa8e2cc24f1b1362749049f1cdec32"/><dir name="Resource"><file name="Attribute.php" hash="80d2a34d746f307109b6bf910b0f2958"/></dir></dir><dir name="Export"><file name="Abstract.php" hash="38d6d6dbb68872d0c46e26c61c38c30e"/><file name="Article.php" hash="91ea6e7acae1519413711abfc076ad0c"/><file name="Category.php" hash="a326b576f9a5f0f90cb5f57f3f155b26"/><file name="Product.php" hash="4163be5219a5ba37afad555047f921b1"/></dir><file name="Observer.php" hash="8d7d35c1362b1597a773a749377f9b28"/><dir name="Resource"><file name="Advanced.php" hash="f4810c1af8d5a15f7a424d7baf5fc777"/><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="144dd8688830992c9300d420ed203a23"/></dir></dir><dir name="Engine"><file name="Abstract.php" hash="6ad534401be39ac25229b11fea341804"/><file name="Antidot.php" hash="8b9b768bb91471260e927d33879b85c0"/></dir></dir><dir name="Search"><file name="Abstract.php" hash="fd71154b987b16f8d13bc3e10a3faeac"/><file name="Search.php" hash="aeef203f9a3794e9ae1e35a825f0eca3"/><file name="Suggest.php" hash="6caac0bb7683b1d330049ed0d606f36f"/></dir><dir name="System"><dir name="Config"><file name="ArticleAttribute.php" hash="f3a9596d45f275299f16530a56845c96"/><dir name="Backend"><file name="Engine.php" hash="68c93651655a77c74fd79d1de6d19be3"/></dir><file name="CategoryAttribute.php" hash="9f19b99e16c99b0e8052b1e31d2a6317"/><file name="Dir.php" hash="c80d83280ebc5ab91fd45d246ec47ba3"/><file name="DisableEnable.php" hash="6d08f33a1580b2fd1d58d87248104166"/><file name="Engine.php" hash="a3703b427ee777ce4ea58c8b31604158"/><file name="Facet.php" hash="b769f0d5c27cdad0ca3c9371977060fd"/><file name="Number.php" hash="7985ea6c495a35173d68291389319f93"/><file name="Options.php" hash="06930da994dec4bb05ebc3f3e8c8abb8"/><file name="ProductAttribute.php" hash="c74ad00177c3a12b03c8684928d12c40"/><file name="PromoteRedirect.php" hash="c167973ea7a0ef09f0e5fa0fd0a08926"/><file name="Sort.php" hash="e0d2c1e72f56894b75baebcb6c4b8609"/><dir name="Suggest"><file name="Type.php" hash="cef491efdb9fcef86d0df75030206a78"/></dir><file name="WSStatus.php" hash="ff4954e15d75dd3139290d96773d0abf"/></dir></dir><dir name="Transport"><file name="Abstract.php" hash="3272c44b08523a9836aa15c835e2ed25"/><file name="File.php" hash="0941fd452279605a2ea6a5d40f857000"/><file name="Ftp.php" hash="8d1aa862bb8f3656bd199d5ce592e0b1"/><file name="Http.php" hash="fb80d47a6d991b9f706418061a2cbd7e"/><file name="Interface.php" hash="32d1d3958e0cd726bc34cae482464ef8"/></dir><file name="Transport.php" hash="de133bf273352bcafead75745fb347ba"/></dir><dir name="Test"><dir name="Block"><dir name="Catalogsearch"><file name="Layer.php" hash="49725570e661d72db50daab46e0e18af"/></dir><dir name="System"><dir name="Config"><dir name="Button"><file name="AfsStore.php" hash="dcbfefb440b8512b1298b624a3582076"/></dir></dir></dir></dir><dir name="Helper"><dir name="CatalogSearch"><file name="Data.php" hash="a40c1e58b5000432763aa07dd49d4b5d"/></dir></dir><dir name="Model"><dir name="Export"><file name="Article.php" hash="c2d43ccf7c9b6648b633d122c657f27d"/><file name="Category.php" hash="c29dbe5ffb63eae4d51e57f7ff298bd3"/><dir name="Product"><dir name="fixtures"><file name="testWriteImageUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWritePricesFixedtax.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWriteProductNoVariant.yaml" hash="626a27b35977e5a52b02f85011c5e216"/><file name="testWriteProductUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWriteProperties.yaml" hash="d434749b80908bbceefd5781e2d0e998"/><file name="testWriteXml.yaml" hash="790c0ecc8aaf15cc1d6b80a2328f2280"/></dir><dir name="providers"><file name="testWriteImageUrl.yaml" hash="666c33585c611bcc0b0ebe6e87dce1fc"/><file name="testWriteProductUrl.yaml" hash="18f511460efea04586fc888f5c85b3ea"/></dir></dir><file name="Product.php" hash="9dc6adb78d5d9fb1d9b43b39a9766208"/></dir><dir name="Observer"><dir name="fixtures"><file name="testGetDefaultContext.yaml" hash="5b3998808a9667ba79e8138104e24b00"/></dir><dir name="providers"><file name="testGetOwnerForFilename.yaml" hash="c5c07e73f536f9ffacc0c3ff6b5a13d1"/></dir></dir><file name="Observer.php" hash="86536c523b1249b9d100a5dc40ea7793"/><dir name="Resource"><dir name="Engine"><file name="Antidot.php" hash="7e59165d905a8679fe282a9dd8d0e285"/></dir></dir><dir name="Search"><dir name="Suggest"><dir name="fixtures"><file name="testSuggest.yaml" hash="e845f0311d93608e3221fb0678f429cc"/></dir></dir><file name="Suggest.php" hash="d97172c8ec094146f953a9704f8e1936"/></dir><dir name="System"><dir name="Config"><dir name="Facet"><dir name="fixtures"><file name="testToOptionArray.yaml" hash="b76143bd57f68be024a31d905da9cabe"/></dir></dir><file name="Facet.php" hash="79a25eeeccdb23589e4564cbadc734fc"/><dir name="Sort"><dir name="expectations"><file name="testToOptionArray.yaml" hash="13fc5b4c17962fb267f443d03a2219b2"/></dir><dir name="fixtures"><file name="testToOptionArray1.yaml" hash="3160d541123737644dfea5c70db35f41"/><file name="testToOptionArray2.yaml" hash="74fd97f93892920908ab7eab0124eeb6"/><file name="testToOptionArray3.yaml" hash="fe9c8a5da75f3c0d66304a39c473a3bb"/></dir></dir><file name="Sort.php" hash="3435402ae9aa30d18c8265433d643d21"/></dir></dir></dir><file name="PHPUnitUtil.php" hash="2a128a7c19f4c37cb9dd7fc60e679693"/></dir><dir name="controllers"><dir name="Admin"><file name="PushController.php" hash="fb131afc3d26e5e591968e8fa3ed5375"/></dir><dir name="Front"><file name="SearchController.php" hash="d220bd4628830ea238775ed9788e0674"/></dir></dir><dir name="etc"><file name="config.xml" hash="922c99e6a2d43da46ba02853fd1e5675"/><file name="system.xml" hash="f6e7ac229fe171ef4896ea9c97643aef"/></dir><dir name="sql"><dir name="Antidot_setup"><file name="mysql4-install-0.9.php" hash="62672bc47ea92dbd46966fb76e4251e0"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="antidot"><dir name="catalog"><dir name="layer"><file name="category.phtml" hash="3ec81f7b3e3b947317da8664c8e15927"/><file name="filter.phtml" hash="2304baebff9b798e0ebd977fbc891346"/></dir></dir><dir name="catalogsearch"><file name="result.phtml" hash="12c082ddff0e6c4fef74630b8253face"/></dir></dir></dir></dir></dir><dir name="default"><dir name="default"><dir name="layout"><file name="antidot.xml" hash="654b0cbb9d7c3f7a0a506e3f6adf164b"/></dir><dir name="template"><dir name="antidot"><dir name="catalogsearch"><dir name="result"><file name="category.phtml" hash="7413580b825508f2cfc08566d62369ae"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="MDN_Antidot.xml" hash="988c6b7e9da4e50f1727956833ab1696"/></dir></target><target name="magelocale"><dir name="de_AT"><file name="MDN_Antidot.csv" hash="e8934b63a9f0d668f07ae95287637e28"/></dir><dir name="de_CH"><file name="MDN_Antidot.csv" hash="e8934b63a9f0d668f07ae95287637e28"/></dir><dir name="de_DE"><file name="MDN_Antidot.csv" hash="e8934b63a9f0d668f07ae95287637e28"/></dir><dir name="es_AR"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_CL"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_CO"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_CR"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_ES"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_MX"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_PA"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_PE"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="es_VE"><file name="MDN_Antidot.csv" hash="7a6a749b1da8b3fca7823e8b08f53add"/></dir><dir name="fr_CA"><file name="MDN_Antidot.csv" hash="5a408d02979b224a1387c1be415caa37"/></dir><dir name="fr_FR"><file name="MDN_Antidot.csv" hash="aed12e90a30b556952e5c33dd904867a"/></dir></target><target name="mageweb"><dir name="js"><dir name="mdn"><dir name="antidot"><file name="CollapsibleLists.js" hash="86792ecde0c2759ba85e0d863dd147ce"/></dir></dir></dir></target><target name="magelib"><dir name="antidot"><dir name="AFS"><dir name="ACP"><file name="Makefile" hash="0f76232bfabc275a3dac973666fb5dae"/><dir name="TEST"><file name="Makefile" hash="ce56cc786e1df50148e1d3222c05e5f8"/><file name="acpConnectorTest.php" hash="25a8194f3dc8895640df4f4bba895d8e"/><file name="acpQueryTest.php" hash="74ad65a4af639a409ee72a75a2a043d6"/><file name="acpReplysetHelperTest.php" hash="4f0a0d471a06e139cd11c715b67ebe81"/><file name="acpResponseHelperTest.php" hash="6d30f99108db0d9956aef9ba5e1d88df"/><file name="acpTest.php" hash="d6119d150543e7943ba4e9907901ae5d"/></dir><file name="afs_acp.php" hash="78dbfbc92f68469c92898f1da4263e68"/><file name="afs_acp_configuration.php" hash="2d644cc6c5bf2cdaeca5780576c4bf0e"/><file name="afs_acp_connector.php" hash="b72439562b02024e0b9629c18394985d"/><file name="afs_acp_exception.php" hash="f610d2cc37a15d4b981d7b43939414ad"/><file name="afs_acp_query.php" hash="ced0629355f5d4fc1c219d1adb03297d"/><file name="afs_acp_query_manager.php" hash="b3348972a850c904fc664b4e27671439"/><file name="afs_acp_reply_helper.php" hash="b0259f24f10d2e92ed6e3b8cdaaacc44"/><file name="afs_acp_replyset_helper.php" hash="07e7fdb88a42a399c96261c47ffb0231"/><file name="afs_acp_response_helper.php" hash="33a66106fd3a94194514a0d8d39af1cd"/></dir><file name="Makefile" hash="7bb31592939024f74745d6b6cb7fec0b"/><dir name="SEARCH"><dir name="FILTER"><file name="Makefile" hash="d42338199c6857ded179af2117b9f571"/><dir name="TEST"><file name="Makefile" hash="ab37090c6c5e7af1b260376237737700"/><file name="filterBuilderTest.php" hash="161ff5c8e73914eef884d17456afa133"/><file name="filterCombinationTest.php" hash="2162288d5255d3b24fe94d75b939aa51"/><file name="filterTest.php" hash="1682c0a4d50158a8d2c9369d30e45a18"/><file name="groupFilterTest.php" hash="1ebe8ce7344ed64b93cf94632d3b0184"/></dir><file name="afs_combinable_filter.php" hash="336e6c6bc9ebae3f58602d23ef734182"/><file name="afs_combinator_filter.php" hash="e2fc560b9c0c31f20c73f2057a8b7b69"/><file name="afs_filter.php" hash="6dbfc8c668cd48510cc9a9243d1bf4c3"/><file name="afs_filter_exception.php" hash="ccce583c63a4a65f7f0a27fc4a487505"/><file name="afs_filter_wrapper.php" hash="30dec104456abc037019ad93922b5afd"/><file name="afs_group_filter.php" hash="b95fa3bc0e26bc39dfc53a6010bce32f"/><file name="afs_native_function_filter.php" hash="37176bdbc66cc3dca18149132921f0a5"/><file name="afs_operator_filter.php" hash="c7ea43c8d64eedbe33397f61737e0226"/><file name="afs_valued_filter.php" hash="483653071734f77972c9b9771e187d82"/></dir><file name="Makefile" hash="0f76232bfabc275a3dac973666fb5dae"/><dir name="TEST"><file name="Makefile" hash="ce56cc786e1df50148e1d3222c05e5f8"/><file name="clientDataHelperTest.php" hash="1556ab047e1df23447586d529768befd"/><file name="clusterHelperTest.php" hash="e112e7c756f63c8e8ceb554281b418c9"/><file name="conceptHelperTest.php" hash="b44e39b62d0537bf1f7b7feb23f8111f"/><file name="facetDefaultTest.php" hash="382e4ea35e1c7173371b4a84046a38e5"/><file name="facetHelperTest.php" hash="d51a714bc116e77f5f115c26e9640f10"/><file name="facetManagerTest.php" hash="bbef8e207c387dbe6a26142fd55264d5"/><file name="facetTest.php" hash="26123aa75cb2597a3ededfa9d778095d"/><file name="facetValuesSortOrderTest.php" hash="b650080bf9b2cce2ac42a245cb84c911"/><file name="feedCoderTest.php" hash="f2b5dfdd4fa3c4e5d14c790d15235146"/><file name="filterCoderTest.php" hash="46249fa13edccf1e5d5000daf2573b77"/><file name="headerHelperTest.php" hash="8eb9450972ce082c35d7b66be7735d79"/><file name="helperConfigurationTest.php" hash="be3f74e53e27744e8214f3c341172796"/><file name="intervalTest.php" hash="912389dad049853f6bf0b4eab2af5034"/><file name="metaHelperTest.php" hash="080f160b54636c4eee743544a6a12bee"/><file name="pagerHelperTest.php" hash="d96a9891523e453647493f3219e86357"/><file name="promoteBannerReplyHelper.php" hash="94c3c14517536437e9800eaa706fbe29"/><file name="promoteRedirectReplyHelper.php" hash="ed00c66be5127d8b374f6416abf328ef"/><file name="promoteReplyHelperTest.php" hash="7cbb68a7f50c2bd2ef11a085ac94deb2"/><file name="promoteReplysetHelperTest.php" hash="ac2f1e3073015143dc7b2b705711c845"/><file name="queryCoderTest.php" hash="03983a114c6697464f8bf016822ff4a3"/><file name="queryTest.php" hash="338264d8e6dbbc09e88bd9a8179e8be4"/><file name="replyHelperTest.php" hash="4d86f19ea7de2aece5d7fd9c143c3dbc"/><file name="replysetHelperTest.php" hash="897f074b8382c6853f51b06a5ee50b0a"/><file name="responseHelperTest.php" hash="ebb167e1c330af6aa0e6a2b917431040"/><file name="searchConnectorTest.php" hash="9201de573884b643041b6c32bc535e7e"/><file name="searchQueryManagerTest.php" hash="2188b262a1c11422bcc8133f68fa6dd9"/><file name="searchTest.php" hash="fa47a7819b5c7c71172d6b1f1e7a02f7"/><file name="spellcheckHelperTest.php" hash="49960fb90055dcf265ef41e491c11325"/><file name="spellcheckTextVisitorTest.php" hash="203f0d08f548a39135517a41f6e9e43a"/><file name="textVisitorTest.php" hash="b722845dd0f5f953574cb51284ad025b"/></dir><file name="afs_base_reply_helper.php" hash="57abe4828b7ed7126db963764faa718a"/><file name="afs_base_replyset_helper.php" hash="096b124a3ebdc6e8d6beb359bd8bb7c5"/><file name="afs_client_data_exception.php" hash="899957af974d04aa7eaca44903a7f86c"/><file name="afs_client_data_helper.php" hash="4700218e2400350014fde428bc86806b"/><file name="afs_cluster_exception.php" hash="86d97623db7aebaa28a20857ce2cf17f"/><file name="afs_cluster_helper.php" hash="60b7fbcc869a672929ef9fc6d840d2b2"/><file name="afs_cluster_parameter.php" hash="20ed527d3ed1a6cf2bc80e032ecd2c7e"/><file name="afs_coder_base.php" hash="fb87fbea43d12695154b3b6102e2a019"/><file name="afs_coder_interface.php" hash="3b179b2513e215751ee4edd190b2a719"/><file name="afs_concept_helper.php" hash="982cf3d2063c565cf19cc6136b049066"/><file name="afs_count.php" hash="9f83f3baa3cf4462c0db786f4eea479a"/><file name="afs_facet.php" hash="1b4d7d35ebe8ed4894fda4881d0b168f"/><file name="afs_facet_combination.php" hash="005e9742ee032194b86856195dd59f7d"/><file name="afs_facet_default.php" hash="cbcb5d28b7b00815ce5248017065e84b"/><file name="afs_facet_exception.php" hash="f1f0afdbf9a727b53c4731e5a40ac417"/><file name="afs_facet_helper.php" hash="fe1ca1e7242c319bac96488b1f5e2063"/><file name="afs_facet_helper_retriever.php" hash="5628cc41c50ab25fd3336df302d903f4"/><file name="afs_facet_layout.php" hash="c83f6fef1c13ba3cda667c611841ff87"/><file name="afs_facet_manager.php" hash="a3fabb34d56a9614d4a0a2917f6fea0c"/><file name="afs_facet_mode.php" hash="8dcac389a37f8267a367400377631dba"/><file name="afs_facet_sort.php" hash="0d7ba4059b10da9981b9c801355cb874"/><file name="afs_facet_type.php" hash="6df82cbfa627629f9523437994d1fbb1"/><file name="afs_facet_value_formatter.php" hash="d6580281f9ef5c0820615ac385aae863"/><file name="afs_facet_values_sort_mode.php" hash="17def98365132c810515f8cf3c6fb006"/><file name="afs_facet_values_sort_order.php" hash="f95f77cb5dd7015e4f2e6094ddba49a6"/><file name="afs_feed_coder.php" hash="ed7b40e872a7ed5aa30adbcffc05de56"/><file name="afs_filter_coder.php" hash="4edbdcf6760d80465e5d2533014ba307"/><file name="afs_filter_parameter.php" hash="2b03c2c83ffe2e2968aaf50ad4903921"/><file name="afs_fts_mode.php" hash="edbd9342cd9625183e1e01ed81b79fc3"/><file name="afs_header_helper.php" hash="3b30d839efe9128773c82d47cbd591b8"/><file name="afs_helper_configuration.php" hash="dbd0378574fbc5729babfbddfef0fd67"/><file name="afs_interval.php" hash="dbf9749881be0a2b063f8a33dff214f3"/><file name="afs_interval_exception.php" hash="40f223de231df03aae59596c1a493065"/><file name="afs_meta_helper.php" hash="8403689868c98db725ebd11748508c8b"/><file name="afs_pager_helper.php" hash="077052931e0cffb1e589c21b57156b38"/><file name="afs_producer.php" hash="7c8c515ccb8126523fa0d09a7f759dd5"/><file name="afs_promote_banner_reply_helper.php" hash="418702b3c053029b3aa8fcb2775c65bd"/><file name="afs_promote_redirect_reply_helper.php" hash="be17eda6f8b4552b9ec21183362171a2"/><file name="afs_promote_reply_helper.php" hash="0e2a4f67cd307f74e8b64cd3b158235c"/><file name="afs_promote_replyset_helper.php" hash="fdefc6f8a686addb31ea9b6c0a3fa5ad"/><file name="afs_query.php" hash="bd969a62cd4bbbcb5b9996eaa19353f7"/><file name="afs_query_coder.php" hash="ca0bfad66b8d8549ab3f33380d716732"/><file name="afs_query_coder_interface.php" hash="dd16f17b3606a7418c1c714475b19b51"/><file name="afs_query_object_interface.php" hash="a9af13e2c856e4136ccadfff60f72d36"/><file name="afs_raw_text_visitor.php" hash="fd574583c4c9110165c1cadc67b832de"/><file name="afs_reply_helper.php" hash="3919f9e83cba62be9bc67117b1087b03"/><file name="afs_reply_helper_factory.php" hash="f159f7d0ef7e5a209fb872a970d0d582"/><file name="afs_replyset_helper.php" hash="cb8f81391d9a59904dcb0c3d6ae31999"/><file name="afs_response_exception.php" hash="0a865bb92fb700ae555dcb5ae675f644"/><file name="afs_response_helper.php" hash="2fec8d101712087660dc6aba5119e3c2"/><file name="afs_search.php" hash="3f2e3ef447515a2fa05b270654ef2969"/><file name="afs_search_connector.php" hash="17242fb6536f4596b2c0198a16986310"/><file name="afs_search_query_manager.php" hash="77e30683ee4ba9e004e9c7c12d9c811d"/><file name="afs_sort_builtins.php" hash="0cc1617a62f1a834a28d7d2ac249b081"/><file name="afs_sort_coder.php" hash="1dfe2d32278383d8465df67535cb91dd"/><file name="afs_sort_order.php" hash="7755deb99386650c9974871474168cda"/><file name="afs_sort_parameter.php" hash="bfb8c59c1560ec8a3b597dc45aa8ecd5"/><file name="afs_spellcheck_helper.php" hash="bb5465848ada7a9df9875f2565fb9686"/><file name="afs_spellcheck_text_helper.php" hash="3ca5c3118660aa600aadb504ceff6c4c"/><file name="afs_spellcheck_text_visitor.php" hash="c44c23ae21f61b065e457911bbc45ed2"/><file name="afs_text_helper.php" hash="59c4ae24560948c3af0f4adbf6bd1803"/><file name="afs_text_visitor.php" hash="867b44a280403cd4567358ec6d59588a"/></dir><file name="afs_configuration_base.php" hash="f26dd9efda4923cc2c71057f21be97d9"/><file name="afs_connector.php" hash="aa04a21163b57ef338bf96bd55e95882"/><file name="afs_exception.php" hash="c1840fe279f9cb313cec151012ed4513"/><file name="afs_feed.php" hash="005305cace79a3aa7719a3c942df9da7"/><file name="afs_multiple_values_parameter.php" hash="96dc30f1fbf137cbfd73c2b195d9f9ef"/><file name="afs_origin.php" hash="a6b7e39a687210572c116afcbea0e7cb"/><file name="afs_query_base.php" hash="7209115a714d9b7de209a0af691c1d22"/><file name="afs_query_parameter.php" hash="6552428d955d0a48c015e1f98ba62815"/><file name="afs_response_helper_base.php" hash="b087f7bdad35ed0526566042ef9afc8c"/><file name="afs_single_value_parameter.php" hash="65d002d7ac6b6e8dd6170309b4c84649"/></dir><dir name="AIF"><file name="Makefile" hash="2d232abf9913fcabb44033d5e5d1ebfd"/><dir name="TEST"><file name="Makefile" hash="24d3030d27e88732028d14fb1d81c203"/><file name="afsMultipartResponseTest.php" hash="70a64d0d599ea01806fac2126fb3680a"/><file name="authenticationTest.php" hash="2e476e9ab15ee221ddd63bb555262a28"/><file name="bowsInformationTest.php" hash="3bbfe71f431a35f0285afdca40906874"/><file name="documentManagerTest.php" hash="ad90a6146f5aeee383355bb05425b3dd"/><file name="documentTest.php" hash="59b204b10b90cd764b259ad4c2bc043a"/><file name="pafConnectorTest.php" hash="ac2928b501d9ea167af43dbf3adafa7d"/><file name="pafLiveTest.php" hash="92862c31d151c34b2caf44bff9d0fb80"/></dir><file name="afs_about_connector.php" hash="8972264a9b7cce237ad1a4b47852b529"/><file name="afs_authentication.php" hash="4285035550c9681a047b85abbca64936"/><file name="afs_bows_connector.php" hash="47a6bcafd5eba2361d2cea409f60d3f7"/><file name="afs_bows_connector_interface.php" hash="8fdf9749f0500a39741d696feb55af14"/><file name="afs_bows_exception.php" hash="1bd8657a37b8b4a9e08bfc4eb6b7e416"/><file name="afs_bows_information.php" hash="1f96a4cd84b2332f1186f9e0cea8542d"/><file name="afs_bows_information_cache.php" hash="1ae9a9243342c4e58a52e70473b68472"/><file name="afs_document.php" hash="c0003ec962a79b9d3f642b17bade0fff"/><file name="afs_document_manager.php" hash="8c5c0105d9337b7ae6a9f041f643ea88"/><file name="afs_multipart_response.php" hash="f2077c9eaf121fabdb2fc26c23b2e256"/><file name="afs_paf_connector.php" hash="96111b0536c83874b7c06ada5577106b"/><file name="afs_paf_live_connector.php" hash="9efeb2716f6d95e666f9c37726869fe7"/><file name="afs_paf_upload_reply.php" hash="0cb4905d1c894637d5e6acbd2cffc112"/><file name="afs_token_authentication.php" hash="1f003310f156f0a71db1d273375172d8"/><file name="afs_user_authentication.php" hash="03deeead93ee32753f2f7f80cfc011f4"/></dir><dir name="COMMON"><file name="Makefile" hash="7bb31592939024f74745d6b6cb7fec0b"/><dir name="TEST"><file name="Makefile" hash="d568cfe3683543f363312aa4b6d2bbad"/><file name="languageTest.php" hash="ad0f75b1c2f320c81eba32cade86191c"/><file name="toolsTest.php" hash="9276cb1a275d697f8e8365f2ac340cdf"/><file name="userSessionManagerTest.php" hash="b2b78d6fa156f1a61065f8ee5bfc6e0b"/></dir><file name="afs_connector_base.php" hash="b6b1f091ec71e5b92e4a1e5ca958255f"/><file name="afs_connector_interface.php" hash="68ad5e20a861b85dbf198f79cd2afd4c"/><file name="afs_exception.php" hash="b8eed4376088ae3003d0b77cc523e732"/><file name="afs_helper_base.php" hash="839cca78a663c3a22b4a8e35d1460129"/><file name="afs_helper_format.php" hash="30a3f6e945db7412ef95e83e7b0b5898"/><file name="afs_language.php" hash="277acb15b86089b37c812c47f2141d3c"/><file name="afs_service.php" hash="12c00c906e130860120552c40fa9dbc2"/><file name="afs_service_status.php" hash="1dee172850a76b46987534df89013878"/><file name="afs_tools.php" hash="26f6c01c5a61987925385e7a35260399"/><file name="afs_user_session_manager.php" hash="abd625f6b7b5cecf386dac9d82887764"/><file name="afs_versions.php" hash="556c912ff7f19f5083c4fb44d4d40ac6"/><dir name="lib"><dir name="JsonPath"><file name="JsonPath.php" hash="baa12e1baa9f8a20a095463042e96ad3"/><file name="JsonStore.php" hash="a9632aeb2126e98db9a49403a8f2ff77"/></dir></dir><dir name="php-SAI"><file name="README.md" hash="63ab581c83fe44918e6d074e20f08f95"/><dir name="lib"><dir name="Curl"><file name="Handle.php" hash="0fc7132737da7cee7df6b974447864ac"/></dir><file name="Curl.php" hash="358e4d3afca2035ee4d3f99f372ed15a"/><file name="CurlInterface.php" hash="714fa045dd4546d0c92cd022efb09422"/><file name="CurlStub.php" hash="fbdc0ece6321c5b5a1e27a65449f4a1f"/><dir name="rb_temp"><file name="HttpClient.php" hash="091b91c98acf9f1cd6c3d6d75cddfb88"/><file name="MultiCurl.php" hash="916e85d73bae6e136f889166ebc6db17"/><file name="SimpleCurl.php" hash="c296966a8bda96e03b464a1d3a9c8e06"/></dir></dir><dir name="tests"><file name="SAI_CurlStubTest.php" hash="bce69cbb17a40bd4eeba6bad1133216e"/></dir><file name=".gitignore" hash="09e625dea07b4d4098b19ec998d266f9"/></dir></dir><file name="COPYING" hash="b234ee4d69f5fce4486a80fdaf4a4263"/><file name="COPYING.LESSER" hash="4fbd65380cdd255951079008b364516c"/><file name="FAQ.md" hash="7d7c886674d70a0047303c5d93de6165"/><file name="Makefile" hash="225475a5a4a0204cecbb77621ff38bb2"/><file name="README.md" hash="7ecfd33825a0e6bc50cca099c1c0e50e"/><file name="afs_lib.doxygen" hash="8128d53d894cc57e08142377d13c72f4"/><file name="afs_lib.php" hash="946834742cd313e818f79bb96b6dfb52"/><file name="afs_version.php" hash="d2d295f9758c29cb26173f9095ff1400"/><file name="composer.json" hash="39190df70fafa99d7eb5ab566e8edf3f"/><dir name="doc"><file name="afs_filter_documentation.dox" hash="3bf4b96e25d95ce5953b822038c6f135"/><file name="afs_paf_upload.dox" hash="d36893db0234f171e6cfb43f6e13d47c"/><file name="afs_search.dox" hash="b1c5ab8728703822f910852cd17561f4"/><file name="afs_search_coder.dox" hash="77709e1bc691301017f0982e0348a9b9"/><file name="afs_search_query.dox" hash="21dcd1734a165a4cb3b4f62c42a6a0be"/><file name="afs_search_reply.dox" hash="cdb1d42447671f4352927b40b3f8f37d"/><dir name="data"><file name="acp_helper_example.php" hash="2815890e7afbae78e7eb4e6fc5c88f6f"/><file name="full_example.php" hash="e152a964d06e55de460c596070c714d8"/><file name="full_lightweight_example.php" hash="eac3bb2d251052f547a9f737e5cd0461"/><file name="raw_example.php" hash="703356b9284e7fe904cf1334abbe08c9"/><dir name="templates"><file name="error_template.html" hash="70f44bd0f45470d379a11d0a2fe507e4"/><file name="facet_template.html" hash="6836005a7dae45e9415273f1eb6b78e2"/><file name="facet_values_template.html" hash="9b41f2b55a1cecae5724b4fcd4a46cfb"/><file name="meta_template.html" hash="e664a3bb222d272ce2451fb10bf46de4"/><file name="pager_template.html" hash="2700ab5b60a1f9553b1c39374fda63d4"/><file name="result_template.html" hash="1572a4ef4e8dda0b3db1ea77bbed4a98"/><file name="spellcheck_template.html" hash="8042054a1f5a271b47c77f81436c4791"/></dir></dir><file name="detailled_integration_example_with_template.dox" hash="26ef377a6ef546b636a0e254d11d01f5"/><file name="lightweight_integration_example_with_template.dox" hash="5a388d2dbfad63ad6ec353407b79a6bb"/><file name="logo-antidot-long-200x41.png" hash="1ceac3fff767fb5e395bd767344a3d13"/><file name="main.dox" hash="ca3e97f95deead927fb3298ecafbad5e"/><file name="raw_integration_example.dox" hash="56a7126d008c2e49abdf9bf0b5ec9717"/><file name="template_prerequisites.dox" hash="baa24a943e19ff3654227850bd316abb"/><file name="templates_in_details.dox" hash="5e8db94382f1fbd6c4e0b424a9edc9a3"/></dir><file name="rules.mk" hash="ff48aa6a5c40e31b3f38aba1267e9a71"/><dir name="scripts"><file name="gen_doc.sh" hash="0f6fc60aca94da563397d3c710bd9d33"/><file name="increment_version.sh" hash="431db9c60d2f94d251be07957787fcb0"/><file name="print_version.sh" hash="a05ddc19cd27ff185721fe2bd0cffc25"/><file name="version_management.sh" hash="3d5ecd39f45ba081144b3033dbd14330"/></dir><file name=".gitignore" hash="0292f51c0906b2092255872c69603f29"/><file name=".travis.yml" hash="4330b9c449e9cd0e97829f679c2a2786"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="mdn"><dir name="antidot"><file name="CollapsibleLists.css" hash="c956d83facc41a97bf14726dcb953edb"/></dir></dir></dir><dir name="images"><dir name="mdn"><dir name="antidot"><file name="base.gif" hash="1f71b021e061a4948d69adc4ff10ccad"/><file name="button-closed.png" hash="563b78324e0712c0902cb4f77cb9eb86"/><file name="button-open.png" hash="c710849a0d2b61ad1f0fc36c0e59d131"/><file name="button.png" hash="97f3055c5046c851eea2dad7e5227508"/><file name="cd.gif" hash="f41037663522fab5c5c31530c7fa43d8"/><file name="empty.gif" hash="df22aff6e941ff1cc577333d1712b584"/><file name="folder.gif" hash="ea16980ab437fa6ba4aba3d480e83e9e"/><file name="folderopen.gif" hash="18aa3d75315bf95bf080357733437fcc"/><file name="globe.gif" hash="d6b48614cf8dc9553e077c19197637d2"/><file name="imgfolder.gif" hash="1d488d377762e65ab4e8b691ba01e5a4"/><file name="join.gif" hash="4d5d614e0da056df815a4306d6368692"/><file name="joinbottom.gif" hash="4b3daa7f2cc584f1aac0d142275d7cba"/><file name="line.gif" hash="63ab38a6203262f15ca46c631232ea2c"/><file name="list-item-contents.png" hash="00ae24d5bc76df9eedaea597859963e4"/><file name="list-item-last-open.png" hash="615ddd71f81b240e9ed7d4e383b2c01a"/><file name="list-item-last.png" hash="e2bfb790f46855c378e50f3c0a82ea01"/><file name="list-item-open.png" hash="732d1cc59f3a488c89c624eb434eac98"/><file name="list-item-root.png" hash="5529d21e7ec68e9cb750a4895ff0b480"/><file name="list-item.png" hash="e03ec1bf3d9e16bb3005ccf8d26eaa6c"/><file name="minus.gif" hash="d647fbbd0ec410b8f3bb3357b62eedcf"/><file name="minusbottom.gif" hash="b09d684cca7135ef728141aaf2464baa"/><file name="musicfolder.gif" hash="21ece951734f23adb2f75befe1f31fc1"/><file name="nolines_minus.gif" hash="eb2243a354ffcfac93ba0fe948f7167d"/><file name="nolines_plus.gif" hash="ec92b634b63608fb4b0dbf114e3b89e1"/><file name="page.gif" hash="c25b136c1cb3bb145495c25b35d93754"/><file name="plus.gif" hash="5c55d798909c553deca31d610bd18fac"/><file name="plusbottom.gif" hash="1924ce363c38a992f888a4df48c0b274"/><file name="question.gif" hash="ea0ca196ce0ebfd625cc1210abfdec6c"/><file name="trash.gif" hash="6cbfd3ed29531044aed9b4edb3cca9ad"/></dir></dir></dir></dir></dir></dir></target></contents>
23
  <compatible/>
24
  <dependencies><required><php><min>5.2.0</min><max>5.6.0</max></php><extension><name>curl</name><min/><max/></extension></required></dependencies>
25
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Antidot_Antidot</name>
4
+ <version>1.1.3</version>
5
  <stability>stable</stability>
6
  <license>LGPL</license>
7
  <channel>community</channel>
17
  Add cdata for variant name&amp;#xD;
18
  Add variant details for grouped products</notes>
19
  <authors><author><name>Antidot</name><user>antidot</user><email>contact@antidot.net</email></author><author><name>Antidot</name><user>antidot</user><email>contact@antidot.net</email></author></authors>
20
+ <date>2015-06-16</date>
21
+ <time>07:30:10</time>
22
+ <contents><target name="mage"><dir name="shell"><file name="antidotExport.php" hash="a4e184cdf1add5d42484e6997ea6f59c"/><file name="antidotExportCategory.php" hash="10de34988223fc8ca26e6f30c4070733"/><file name="antidotExportInc.php" hash="18f1b60b93245e2daf423c614dcd7efa"/><file name="antidotExportProduct.php" hash="9ddd7f0ba8e54b24665a32d26e5231b4"/></dir><dir name="i18n"><file name="de_DE" hash="f166a5ff29213a44fca77277b053897e"/><file name="en_US" hash="63c821044fda6f7c2a26dc84670b25bd"/><file name="es_ES" hash="f9319039054998955d63d51ed0930f3f"/><file name="fr_FR" hash="632367797f2fa9fef06e0b0c69377e01"/><file name="i18n.php" hash="0780b44563432f6e70de78f7a9d60f54"/></dir></target><target name="magecommunity"><dir name="MDN"><dir name="Antidot"><dir name="Block"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2158b991ccdf394c8cd47cab00829e4d"/><file name="Boolean.php" hash="d17b08e1ec9047cf4050442ababd0808"/><file name="Category.php" hash="78cb53233ad74a2b5496d6f7857d8837"/><file name="Decimal.php" hash="75b31617bca2a8f20ee7fe113e3534f2"/><file name="Price.php" hash="244068a33e8ba64423c126baf883d2b5"/></dir><file name="View.php" hash="bbdd9bb31663415001ab3751c6737cde"/></dir></dir><dir name="Catalogsearch"><file name="Category.php" hash="e9605415ba85929115a443b1b4f00ab0"/><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2b274bf7d8f8dbd915bdf73f65e694fc"/></dir></dir><file name="Layer.php" hash="a4ba017431be528922bbebe5b9da1542"/><file name="Result.php" hash="82e928664d7f1e0688f377cfbb5700bb"/></dir><dir name="Html"><file name="Select.php" hash="fc7fb19df1dd378d4e9e0860d2d47d07"/></dir><dir name="System"><dir name="Config"><dir name="Button"><file name="AfsStore.php" hash="4f00570d46d27d1cf89785e8db42a332"/><file name="PushArticles.php" hash="a0cae65b4aba9b539421c0a6d06fb406"/><file name="PushCategories.php" hash="50e4b74388e1c5a65249c71dfae69400"/><file name="PushProducts.php" hash="bac543e1b17f91a558adef5da3012e28"/><file name="RestoreTemplate.php" hash="ffbbb0a73ff1ede611262a6a4da1a188"/><file name="ShowXml.php" hash="417ba0c9c62d8070b63f90397887dcc0"/></dir><dir name="Fieldset"><file name="Notice.php" hash="c9bc2155889cd1cfa573f625a8baf59b"/></dir><dir name="Form"><dir name="Field"><dir name="Array"><file name="Additional.php" hash="d62316e3631c1c2b6a0119134c8002a8"/><file name="AdditionalFeed.php" hash="dcfb6d37d765a10e4a07465e70133dda"/><file name="ArticleAdditional.php" hash="38c62d610f585c460151841f7350348b"/><file name="ArticleIdentifier.php" hash="ec9479fd1ca087a1fe924795cc9ff5f6"/><file name="DefaultSort.php" hash="4989d99a73f57bed1fb994060cc38a72"/><file name="Facet.php" hash="7217f2296afaf11f514e4212a7a82cb9"/><file name="Identifier.php" hash="a9fa99227182bd72e59c9a315d580247"/><file name="ProductAdditionalFacet.php" hash="8d46e427d9efbac7e6ba04fdc88d4728"/><file name="ProductAdditionalField.php" hash="9c9f9c9c1c940963e1a24c039a392cc4"/><file name="ProductIdentifier.php" hash="d30809119cb35018697533075f7ee485"/><file name="Sort.php" hash="f986fbb048bf3f6aec813cdc1c70ec15"/></dir><file name="CategoryAttribute.php" hash="c119ca65f23950e7abb1f0d60e8b4755"/><file name="ProductAttribute.php" hash="6a61b98a9f6ac883a5e162e3edab300d"/></dir></dir><dir name="Html"><file name="Export.php" hash="f36beeca11c51e1a2e9678955d8cf1b8"/><file name="ShowXml.php" hash="7b70f39937aa9d24336edde6bdbdf97c"/><file name="Version.php" hash="34c624c382f3061cf322cfed52c416ac"/></dir></dir></dir></dir><dir name="Helper"><file name="Antidot.php" hash="7bbd2866c65a847e1415badb1ef0d015"/><dir name="CatalogSearch"><file name="Data.php" hash="81cc908609e68035d5714488f913e688"/></dir><file name="Compress.php" hash="5dc3c4024386a5ec288cd598efe8853b"/><file name="Data.php" hash="ef571e1089eb0166ba463e2a564636c7"/><dir name="Enterprise"><dir name="Search"><file name="Data.php" hash="8bfe0146c64511f86cb796638b65112f"/></dir></dir><file name="LogExport.php" hash="6d6b262327bf1d920fc2b5b112edfef6"/><dir name="ManaFilters"><file name="Data.php" hash="e5dd65e6e52c03427aa68528cc1f140a"/></dir><file name="Url.php" hash="1d2ee02a8e135bfc4b866f5219f62acd"/><file name="XmlWriter.php" hash="66cf65d950caddf895c823c5575a1912"/></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="3cd18414abccea60c5497931bc95e21e"/><file name="Boolean.php" hash="dd0414e0d96833bec6e32aac321c2763"/><file name="Category.php" hash="4dea470cb36708e0ae4b95bd0a24a85f"/><file name="Decimal.php" hash="b9b1e2cff1d0332fab77d101dca4c3d2"/><file name="Item.php" hash="c89bbca267af18a0447e0daf3e7cc8eb"/><file name="Price.php" hash="7529be0313a19896993f92eeb9dfc8a9"/></dir></dir><file name="Layer.php" hash="706000dd944a45f30826eccba2942862"/></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="a83d6761a949c8196cba33948a48c8bf"/></dir></dir><file name="Layer.php" hash="b5aa8e2cc24f1b1362749049f1cdec32"/><dir name="Resource"><file name="Attribute.php" hash="80d2a34d746f307109b6bf910b0f2958"/></dir></dir><dir name="Export"><file name="Abstract.php" hash="8c180f1d84dc88771885115348cc5dde"/><file name="Article.php" hash="b723ff65293cd517d247757ad43040d8"/><file name="Category.php" hash="a326b576f9a5f0f90cb5f57f3f155b26"/><file name="Product.php" hash="7171a405d23f2b8ee401ec5d7465f451"/></dir><file name="Observer.php" hash="e03106bc6632ca063ccbb60e55cd2d66"/><dir name="Resource"><file name="Advanced.php" hash="f4810c1af8d5a15f7a424d7baf5fc777"/><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="144dd8688830992c9300d420ed203a23"/></dir></dir><dir name="Engine"><file name="Abstract.php" hash="3af987c91cd85c2e5d93e009187963d7"/><file name="Antidot.php" hash="8f152b420a4a14a6a3944348cf36bbe1"/></dir></dir><dir name="Search"><file name="Abstract.php" hash="fd71154b987b16f8d13bc3e10a3faeac"/><file name="Search.php" hash="aed2de6c2d73b4a7336f689287f0659a"/><file name="Suggest.php" hash="6caac0bb7683b1d330049ed0d606f36f"/></dir><dir name="System"><dir name="Config"><file name="ArticleAttribute.php" hash="f3a9596d45f275299f16530a56845c96"/><dir name="Backend"><file name="Engine.php" hash="68c93651655a77c74fd79d1de6d19be3"/></dir><file name="CategoryAttribute.php" hash="9f19b99e16c99b0e8052b1e31d2a6317"/><file name="Dir.php" hash="c80d83280ebc5ab91fd45d246ec47ba3"/><file name="DisableEnable.php" hash="6d08f33a1580b2fd1d58d87248104166"/><file name="Engine.php" hash="a3703b427ee777ce4ea58c8b31604158"/><file name="Facet.php" hash="8b771072a32f32e81a087581ace7fd72"/><file name="Number.php" hash="7985ea6c495a35173d68291389319f93"/><file name="Options.php" hash="06930da994dec4bb05ebc3f3e8c8abb8"/><file name="ProductAttribute.php" hash="c74ad00177c3a12b03c8684928d12c40"/><file name="PromoteRedirect.php" hash="c167973ea7a0ef09f0e5fa0fd0a08926"/><file name="Sort.php" hash="e0d2c1e72f56894b75baebcb6c4b8609"/><dir name="Suggest"><file name="Type.php" hash="cef491efdb9fcef86d0df75030206a78"/></dir><file name="WSStatus.php" hash="ff4954e15d75dd3139290d96773d0abf"/></dir></dir><dir name="Transport"><file name="Abstract.php" hash="3272c44b08523a9836aa15c835e2ed25"/><file name="File.php" hash="0941fd452279605a2ea6a5d40f857000"/><file name="Ftp.php" hash="8d1aa862bb8f3656bd199d5ce592e0b1"/><file name="Http.php" hash="fb80d47a6d991b9f706418061a2cbd7e"/><file name="Interface.php" hash="32d1d3958e0cd726bc34cae482464ef8"/></dir><file name="Transport.php" hash="96c10d2ff359849de991d8a045cc9353"/></dir><dir name="Test"><dir name="Block"><dir name="Catalogsearch"><file name="Layer.php" hash="49725570e661d72db50daab46e0e18af"/></dir><dir name="System"><dir name="Config"><dir name="Button"><file name="AfsStore.php" hash="dcbfefb440b8512b1298b624a3582076"/></dir></dir></dir></dir><dir name="Helper"><dir name="CatalogSearch"><file name="Data.php" hash="a40c1e58b5000432763aa07dd49d4b5d"/></dir><file name="Data.php" hash="9c21bd8bfa43dab48d95a886812587e6"/></dir><dir name="Model"><dir name="Export"><dir name="Abstract"><dir name="fixtures"><file name="testGarbageCollection.yaml" hash="de6c8672be0c24a102ebfed004f2361b"/></dir></dir><file name="Abstract.php" hash="f9ed7f39ba478e9e8e81b93684a8ffbe"/><file name="Article.php" hash="c2d43ccf7c9b6648b633d122c657f27d"/><dir name="Category"><dir name="fixtures"><file name="testEmptyFile.yaml" hash="9573e620466cfe8260f8a87e274c8261"/></dir></dir><file name="Category.php" hash="4f3e57931e5cffca23648acab82cf08e"/><dir name="Product"><dir name="fixtures"><file name="testGetProductCategories.yaml" hash="4c9aa76866c740bcd44bdbbdf98ac2f5"/><file name="testWriteImageUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWritePricesFixedtax.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWriteProductNoVariant.yaml" hash="626a27b35977e5a52b02f85011c5e216"/><file name="testWriteProductUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWriteProperties.yaml" hash="d434749b80908bbceefd5781e2d0e998"/><file name="testWriteXml.yaml" hash="790c0ecc8aaf15cc1d6b80a2328f2280"/></dir><dir name="providers"><file name="testWriteImageUrl.yaml" hash="666c33585c611bcc0b0ebe6e87dce1fc"/><file name="testWriteProductUrl.yaml" hash="18f511460efea04586fc888f5c85b3ea"/></dir></dir><file name="Product.php" hash="d9a3d373a8d87303af091bcd00dc74c9"/></dir><dir name="Observer"><dir name="fixtures"><file name="testGetDefaultContext.yaml" hash="5b3998808a9667ba79e8138104e24b00"/></dir><dir name="providers"><file name="testGetOwnerForFilename.yaml" hash="c5c07e73f536f9ffacc0c3ff6b5a13d1"/></dir></dir><file name="Observer.php" hash="86536c523b1249b9d100a5dc40ea7793"/><dir name="Resource"><dir name="Engine"><file name="Antidot.php" hash="7e59165d905a8679fe282a9dd8d0e285"/></dir></dir><dir name="Search"><dir name="Suggest"><dir name="fixtures"><file name="testSuggest.yaml" hash="e845f0311d93608e3221fb0678f429cc"/></dir></dir><file name="Suggest.php" hash="d97172c8ec094146f953a9704f8e1936"/></dir><dir name="System"><dir name="Config"><dir name="Facet"><dir name="fixtures"><file name="testToOptionArray.yaml" hash="b76143bd57f68be024a31d905da9cabe"/></dir></dir><file name="Facet.php" hash="3e3ef7aa45b4226df9eaf177ed69326f"/><dir name="Sort"><dir name="expectations"><file name="testToOptionArray.yaml" hash="13fc5b4c17962fb267f443d03a2219b2"/></dir><dir name="fixtures"><file name="testToOptionArray1.yaml" hash="3160d541123737644dfea5c70db35f41"/><file name="testToOptionArray2.yaml" hash="74fd97f93892920908ab7eab0124eeb6"/><file name="testToOptionArray3.yaml" hash="fe9c8a5da75f3c0d66304a39c473a3bb"/></dir></dir><file name="Sort.php" hash="3435402ae9aa30d18c8265433d643d21"/></dir></dir></dir><file name="PHPUnitUtil.php" hash="2a128a7c19f4c37cb9dd7fc60e679693"/></dir><dir name="controllers"><dir name="Admin"><file name="PushController.php" hash="3f7be8a53c7a01cfd11aa5a8a8fcfac6"/></dir><dir name="Front"><file name="SearchController.php" hash="d220bd4628830ea238775ed9788e0674"/></dir></dir><dir name="etc"><file name="config.xml" hash="bae082d060f4c5a6e6fa3c7fa464dcc6"/><file name="system.xml" hash="a636f06591b6c01e1e5375aa46a644fb"/></dir><dir name="sql"><dir name="Antidot_setup"><file name="mysql4-install-0.9.php" hash="62672bc47ea92dbd46966fb76e4251e0"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="antidot.xml" hash="c79056de55d92a84cd087444f7a9d6c9"/></dir><dir name="template"><dir name="antidot"><dir name="catalog"><dir name="layer"><file name="category.phtml" hash="3ec81f7b3e3b947317da8664c8e15927"/><file name="filter.phtml" hash="2304baebff9b798e0ebd977fbc891346"/></dir></dir><dir name="catalogsearch"><dir name="result"><file name="category.phtml" hash="7413580b825508f2cfc08566d62369ae"/></dir><file name="result.phtml" hash="12c082ddff0e6c4fef74630b8253face"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="MDN_Antidot.xml" hash="988c6b7e9da4e50f1727956833ab1696"/></dir></target><target name="magelocale"><dir name="de_AT"><file name="MDN_Antidot.csv" hash="6d55b32bb063457c70296109170f944c"/></dir><dir name="de_CH"><file name="MDN_Antidot.csv" hash="6d55b32bb063457c70296109170f944c"/></dir><dir name="de_DE"><file name="MDN_Antidot.csv" hash="6d55b32bb063457c70296109170f944c"/></dir><dir name="es_AR"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_CL"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_CO"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_CR"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_ES"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_MX"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_PA"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_PE"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="es_VE"><file name="MDN_Antidot.csv" hash="b7f7906a0af8c8a524033fe6565b8da1"/></dir><dir name="fr_CA"><file name="MDN_Antidot.csv" hash="cb32f785ce819fe925347b7863d8de36"/></dir><dir name="fr_FR"><file name="MDN_Antidot.csv" hash="cb32f785ce819fe925347b7863d8de36"/></dir></target><target name="mageweb"><dir name="js"><dir name="mdn"><dir name="antidot"><file name="CollapsibleLists.js" hash="86792ecde0c2759ba85e0d863dd147ce"/></dir></dir></dir></target><target name="magelib"><dir name="antidot"><dir name="AFS"><dir name="ACP"><file name="Makefile" hash="0f76232bfabc275a3dac973666fb5dae"/><dir name="TEST"><file name="Makefile" hash="ce56cc786e1df50148e1d3222c05e5f8"/><file name="acpConnectorTest.php" hash="25a8194f3dc8895640df4f4bba895d8e"/><file name="acpQueryTest.php" hash="74ad65a4af639a409ee72a75a2a043d6"/><file name="acpReplysetHelperTest.php" hash="4f0a0d471a06e139cd11c715b67ebe81"/><file name="acpResponseHelperTest.php" hash="6d30f99108db0d9956aef9ba5e1d88df"/><file name="acpTest.php" hash="d6119d150543e7943ba4e9907901ae5d"/></dir><file name="afs_acp.php" hash="78dbfbc92f68469c92898f1da4263e68"/><file name="afs_acp_configuration.php" hash="2d644cc6c5bf2cdaeca5780576c4bf0e"/><file name="afs_acp_connector.php" hash="b72439562b02024e0b9629c18394985d"/><file name="afs_acp_exception.php" hash="f610d2cc37a15d4b981d7b43939414ad"/><file name="afs_acp_query.php" hash="ced0629355f5d4fc1c219d1adb03297d"/><file name="afs_acp_query_manager.php" hash="b3348972a850c904fc664b4e27671439"/><file name="afs_acp_reply_helper.php" hash="b0259f24f10d2e92ed6e3b8cdaaacc44"/><file name="afs_acp_replyset_helper.php" hash="07e7fdb88a42a399c96261c47ffb0231"/><file name="afs_acp_response_helper.php" hash="33a66106fd3a94194514a0d8d39af1cd"/></dir><file name="Makefile" hash="7bb31592939024f74745d6b6cb7fec0b"/><dir name="SEARCH"><dir name="FILTER"><file name="Makefile" hash="d42338199c6857ded179af2117b9f571"/><dir name="TEST"><file name="Makefile" hash="ab37090c6c5e7af1b260376237737700"/><file name="filterBuilderTest.php" hash="161ff5c8e73914eef884d17456afa133"/><file name="filterCombinationTest.php" hash="2162288d5255d3b24fe94d75b939aa51"/><file name="filterTest.php" hash="1682c0a4d50158a8d2c9369d30e45a18"/><file name="groupFilterTest.php" hash="1ebe8ce7344ed64b93cf94632d3b0184"/></dir><file name="afs_combinable_filter.php" hash="336e6c6bc9ebae3f58602d23ef734182"/><file name="afs_combinator_filter.php" hash="e2fc560b9c0c31f20c73f2057a8b7b69"/><file name="afs_filter.php" hash="6dbfc8c668cd48510cc9a9243d1bf4c3"/><file name="afs_filter_exception.php" hash="ccce583c63a4a65f7f0a27fc4a487505"/><file name="afs_filter_wrapper.php" hash="30dec104456abc037019ad93922b5afd"/><file name="afs_group_filter.php" hash="b95fa3bc0e26bc39dfc53a6010bce32f"/><file name="afs_native_function_filter.php" hash="37176bdbc66cc3dca18149132921f0a5"/><file name="afs_operator_filter.php" hash="c7ea43c8d64eedbe33397f61737e0226"/><file name="afs_valued_filter.php" hash="483653071734f77972c9b9771e187d82"/></dir><file name="Makefile" hash="0f76232bfabc275a3dac973666fb5dae"/><dir name="TEST"><file name="Makefile" hash="ce56cc786e1df50148e1d3222c05e5f8"/><file name="clientDataHelperTest.php" hash="1556ab047e1df23447586d529768befd"/><file name="clusterHelperTest.php" hash="e112e7c756f63c8e8ceb554281b418c9"/><file name="conceptHelperTest.php" hash="b44e39b62d0537bf1f7b7feb23f8111f"/><file name="facetDefaultTest.php" hash="382e4ea35e1c7173371b4a84046a38e5"/><file name="facetHelperTest.php" hash="d51a714bc116e77f5f115c26e9640f10"/><file name="facetManagerTest.php" hash="bbef8e207c387dbe6a26142fd55264d5"/><file name="facetTest.php" hash="26123aa75cb2597a3ededfa9d778095d"/><file name="facetValuesSortOrderTest.php" hash="b650080bf9b2cce2ac42a245cb84c911"/><file name="feedCoderTest.php" hash="f2b5dfdd4fa3c4e5d14c790d15235146"/><file name="filterCoderTest.php" hash="46249fa13edccf1e5d5000daf2573b77"/><file name="headerHelperTest.php" hash="8eb9450972ce082c35d7b66be7735d79"/><file name="helperConfigurationTest.php" hash="be3f74e53e27744e8214f3c341172796"/><file name="intervalTest.php" hash="912389dad049853f6bf0b4eab2af5034"/><file name="metaHelperTest.php" hash="080f160b54636c4eee743544a6a12bee"/><file name="pagerHelperTest.php" hash="d96a9891523e453647493f3219e86357"/><file name="promoteBannerReplyHelper.php" hash="94c3c14517536437e9800eaa706fbe29"/><file name="promoteRedirectReplyHelper.php" hash="ed00c66be5127d8b374f6416abf328ef"/><file name="promoteReplyHelperTest.php" hash="7cbb68a7f50c2bd2ef11a085ac94deb2"/><file name="promoteReplysetHelperTest.php" hash="ac2f1e3073015143dc7b2b705711c845"/><file name="queryCoderTest.php" hash="03983a114c6697464f8bf016822ff4a3"/><file name="queryTest.php" hash="338264d8e6dbbc09e88bd9a8179e8be4"/><file name="replyHelperTest.php" hash="4d86f19ea7de2aece5d7fd9c143c3dbc"/><file name="replysetHelperTest.php" hash="897f074b8382c6853f51b06a5ee50b0a"/><file name="responseHelperTest.php" hash="ebb167e1c330af6aa0e6a2b917431040"/><file name="searchConnectorTest.php" hash="9201de573884b643041b6c32bc535e7e"/><file name="searchQueryManagerTest.php" hash="2188b262a1c11422bcc8133f68fa6dd9"/><file name="searchTest.php" hash="fa47a7819b5c7c71172d6b1f1e7a02f7"/><file name="spellcheckHelperTest.php" hash="49960fb90055dcf265ef41e491c11325"/><file name="spellcheckTextVisitorTest.php" hash="203f0d08f548a39135517a41f6e9e43a"/><file name="textVisitorTest.php" hash="b722845dd0f5f953574cb51284ad025b"/></dir><file name="afs_base_reply_helper.php" hash="57abe4828b7ed7126db963764faa718a"/><file name="afs_base_replyset_helper.php" hash="096b124a3ebdc6e8d6beb359bd8bb7c5"/><file name="afs_client_data_exception.php" hash="899957af974d04aa7eaca44903a7f86c"/><file name="afs_client_data_helper.php" hash="4700218e2400350014fde428bc86806b"/><file name="afs_cluster_exception.php" hash="86d97623db7aebaa28a20857ce2cf17f"/><file name="afs_cluster_helper.php" hash="60b7fbcc869a672929ef9fc6d840d2b2"/><file name="afs_cluster_parameter.php" hash="20ed527d3ed1a6cf2bc80e032ecd2c7e"/><file name="afs_coder_base.php" hash="fb87fbea43d12695154b3b6102e2a019"/><file name="afs_coder_interface.php" hash="3b179b2513e215751ee4edd190b2a719"/><file name="afs_concept_helper.php" hash="982cf3d2063c565cf19cc6136b049066"/><file name="afs_count.php" hash="9f83f3baa3cf4462c0db786f4eea479a"/><file name="afs_facet.php" hash="1b4d7d35ebe8ed4894fda4881d0b168f"/><file name="afs_facet_combination.php" hash="005e9742ee032194b86856195dd59f7d"/><file name="afs_facet_default.php" hash="cbcb5d28b7b00815ce5248017065e84b"/><file name="afs_facet_exception.php" hash="f1f0afdbf9a727b53c4731e5a40ac417"/><file name="afs_facet_helper.php" hash="fe1ca1e7242c319bac96488b1f5e2063"/><file name="afs_facet_helper_retriever.php" hash="5628cc41c50ab25fd3336df302d903f4"/><file name="afs_facet_layout.php" hash="c83f6fef1c13ba3cda667c611841ff87"/><file name="afs_facet_manager.php" hash="a3fabb34d56a9614d4a0a2917f6fea0c"/><file name="afs_facet_mode.php" hash="8dcac389a37f8267a367400377631dba"/><file name="afs_facet_sort.php" hash="0d7ba4059b10da9981b9c801355cb874"/><file name="afs_facet_type.php" hash="6df82cbfa627629f9523437994d1fbb1"/><file name="afs_facet_value_formatter.php" hash="d6580281f9ef5c0820615ac385aae863"/><file name="afs_facet_values_sort_mode.php" hash="17def98365132c810515f8cf3c6fb006"/><file name="afs_facet_values_sort_order.php" hash="f95f77cb5dd7015e4f2e6094ddba49a6"/><file name="afs_feed_coder.php" hash="ed7b40e872a7ed5aa30adbcffc05de56"/><file name="afs_filter_coder.php" hash="4edbdcf6760d80465e5d2533014ba307"/><file name="afs_filter_parameter.php" hash="2b03c2c83ffe2e2968aaf50ad4903921"/><file name="afs_fts_mode.php" hash="edbd9342cd9625183e1e01ed81b79fc3"/><file name="afs_header_helper.php" hash="3b30d839efe9128773c82d47cbd591b8"/><file name="afs_helper_configuration.php" hash="dbd0378574fbc5729babfbddfef0fd67"/><file name="afs_interval.php" hash="dbf9749881be0a2b063f8a33dff214f3"/><file name="afs_interval_exception.php" hash="40f223de231df03aae59596c1a493065"/><file name="afs_meta_helper.php" hash="8403689868c98db725ebd11748508c8b"/><file name="afs_pager_helper.php" hash="077052931e0cffb1e589c21b57156b38"/><file name="afs_producer.php" hash="7c8c515ccb8126523fa0d09a7f759dd5"/><file name="afs_promote_banner_reply_helper.php" hash="418702b3c053029b3aa8fcb2775c65bd"/><file name="afs_promote_redirect_reply_helper.php" hash="be17eda6f8b4552b9ec21183362171a2"/><file name="afs_promote_reply_helper.php" hash="0e2a4f67cd307f74e8b64cd3b158235c"/><file name="afs_promote_replyset_helper.php" hash="fdefc6f8a686addb31ea9b6c0a3fa5ad"/><file name="afs_query.php" hash="bd969a62cd4bbbcb5b9996eaa19353f7"/><file name="afs_query_coder.php" hash="ca0bfad66b8d8549ab3f33380d716732"/><file name="afs_query_coder_interface.php" hash="dd16f17b3606a7418c1c714475b19b51"/><file name="afs_query_object_interface.php" hash="a9af13e2c856e4136ccadfff60f72d36"/><file name="afs_raw_text_visitor.php" hash="fd574583c4c9110165c1cadc67b832de"/><file name="afs_reply_helper.php" hash="3919f9e83cba62be9bc67117b1087b03"/><file name="afs_reply_helper_factory.php" hash="f159f7d0ef7e5a209fb872a970d0d582"/><file name="afs_replyset_helper.php" hash="cb8f81391d9a59904dcb0c3d6ae31999"/><file name="afs_response_exception.php" hash="0a865bb92fb700ae555dcb5ae675f644"/><file name="afs_response_helper.php" hash="2fec8d101712087660dc6aba5119e3c2"/><file name="afs_search.php" hash="3f2e3ef447515a2fa05b270654ef2969"/><file name="afs_search_connector.php" hash="17242fb6536f4596b2c0198a16986310"/><file name="afs_search_query_manager.php" hash="77e30683ee4ba9e004e9c7c12d9c811d"/><file name="afs_sort_builtins.php" hash="0cc1617a62f1a834a28d7d2ac249b081"/><file name="afs_sort_coder.php" hash="1dfe2d32278383d8465df67535cb91dd"/><file name="afs_sort_order.php" hash="7755deb99386650c9974871474168cda"/><file name="afs_sort_parameter.php" hash="bfb8c59c1560ec8a3b597dc45aa8ecd5"/><file name="afs_spellcheck_helper.php" hash="bb5465848ada7a9df9875f2565fb9686"/><file name="afs_spellcheck_text_helper.php" hash="3ca5c3118660aa600aadb504ceff6c4c"/><file name="afs_spellcheck_text_visitor.php" hash="c44c23ae21f61b065e457911bbc45ed2"/><file name="afs_text_helper.php" hash="59c4ae24560948c3af0f4adbf6bd1803"/><file name="afs_text_visitor.php" hash="867b44a280403cd4567358ec6d59588a"/></dir><file name="afs_configuration_base.php" hash="f26dd9efda4923cc2c71057f21be97d9"/><file name="afs_connector.php" hash="aa04a21163b57ef338bf96bd55e95882"/><file name="afs_exception.php" hash="c1840fe279f9cb313cec151012ed4513"/><file name="afs_feed.php" hash="005305cace79a3aa7719a3c942df9da7"/><file name="afs_multiple_values_parameter.php" hash="96dc30f1fbf137cbfd73c2b195d9f9ef"/><file name="afs_origin.php" hash="a6b7e39a687210572c116afcbea0e7cb"/><file name="afs_query_base.php" hash="7209115a714d9b7de209a0af691c1d22"/><file name="afs_query_parameter.php" hash="6552428d955d0a48c015e1f98ba62815"/><file name="afs_response_helper_base.php" hash="b087f7bdad35ed0526566042ef9afc8c"/><file name="afs_single_value_parameter.php" hash="65d002d7ac6b6e8dd6170309b4c84649"/></dir><dir name="AIF"><file name="Makefile" hash="2d232abf9913fcabb44033d5e5d1ebfd"/><dir name="TEST"><file name="Makefile" hash="24d3030d27e88732028d14fb1d81c203"/><file name="afsMultipartResponseTest.php" hash="70a64d0d599ea01806fac2126fb3680a"/><file name="authenticationTest.php" hash="2e476e9ab15ee221ddd63bb555262a28"/><file name="bowsInformationTest.php" hash="3bbfe71f431a35f0285afdca40906874"/><file name="documentManagerTest.php" hash="ad90a6146f5aeee383355bb05425b3dd"/><file name="documentTest.php" hash="59b204b10b90cd764b259ad4c2bc043a"/><file name="pafConnectorTest.php" hash="ac2928b501d9ea167af43dbf3adafa7d"/><file name="pafLiveTest.php" hash="92862c31d151c34b2caf44bff9d0fb80"/></dir><file name="afs_about_connector.php" hash="8972264a9b7cce237ad1a4b47852b529"/><file name="afs_authentication.php" hash="4285035550c9681a047b85abbca64936"/><file name="afs_bows_connector.php" hash="47a6bcafd5eba2361d2cea409f60d3f7"/><file name="afs_bows_connector_interface.php" hash="8fdf9749f0500a39741d696feb55af14"/><file name="afs_bows_exception.php" hash="1bd8657a37b8b4a9e08bfc4eb6b7e416"/><file name="afs_bows_information.php" hash="1f96a4cd84b2332f1186f9e0cea8542d"/><file name="afs_bows_information_cache.php" hash="1ae9a9243342c4e58a52e70473b68472"/><file name="afs_document.php" hash="c0003ec962a79b9d3f642b17bade0fff"/><file name="afs_document_manager.php" hash="8c5c0105d9337b7ae6a9f041f643ea88"/><file name="afs_multipart_response.php" hash="f2077c9eaf121fabdb2fc26c23b2e256"/><file name="afs_paf_connector.php" hash="96111b0536c83874b7c06ada5577106b"/><file name="afs_paf_live_connector.php" hash="9efeb2716f6d95e666f9c37726869fe7"/><file name="afs_paf_upload_reply.php" hash="0cb4905d1c894637d5e6acbd2cffc112"/><file name="afs_token_authentication.php" hash="1f003310f156f0a71db1d273375172d8"/><file name="afs_user_authentication.php" hash="03deeead93ee32753f2f7f80cfc011f4"/></dir><dir name="COMMON"><file name="Makefile" hash="7bb31592939024f74745d6b6cb7fec0b"/><dir name="TEST"><file name="Makefile" hash="d568cfe3683543f363312aa4b6d2bbad"/><file name="languageTest.php" hash="ad0f75b1c2f320c81eba32cade86191c"/><file name="toolsTest.php" hash="9276cb1a275d697f8e8365f2ac340cdf"/><file name="userSessionManagerTest.php" hash="b2b78d6fa156f1a61065f8ee5bfc6e0b"/></dir><file name="afs_connector_base.php" hash="b6b1f091ec71e5b92e4a1e5ca958255f"/><file name="afs_connector_interface.php" hash="68ad5e20a861b85dbf198f79cd2afd4c"/><file name="afs_exception.php" hash="b8eed4376088ae3003d0b77cc523e732"/><file name="afs_helper_base.php" hash="839cca78a663c3a22b4a8e35d1460129"/><file name="afs_helper_format.php" hash="30a3f6e945db7412ef95e83e7b0b5898"/><file name="afs_language.php" hash="277acb15b86089b37c812c47f2141d3c"/><file name="afs_service.php" hash="12c00c906e130860120552c40fa9dbc2"/><file name="afs_service_status.php" hash="1dee172850a76b46987534df89013878"/><file name="afs_tools.php" hash="26f6c01c5a61987925385e7a35260399"/><file name="afs_user_session_manager.php" hash="abd625f6b7b5cecf386dac9d82887764"/><file name="afs_versions.php" hash="556c912ff7f19f5083c4fb44d4d40ac6"/><dir name="lib"><dir name="JsonPath"><file name="JsonPath.php" hash="baa12e1baa9f8a20a095463042e96ad3"/><file name="JsonStore.php" hash="a9632aeb2126e98db9a49403a8f2ff77"/></dir></dir><dir name="php-SAI"><file name="README.md" hash="63ab581c83fe44918e6d074e20f08f95"/><dir name="lib"><dir name="Curl"><file name="Handle.php" hash="0fc7132737da7cee7df6b974447864ac"/></dir><file name="Curl.php" hash="358e4d3afca2035ee4d3f99f372ed15a"/><file name="CurlInterface.php" hash="714fa045dd4546d0c92cd022efb09422"/><file name="CurlStub.php" hash="fbdc0ece6321c5b5a1e27a65449f4a1f"/><dir name="rb_temp"><file name="HttpClient.php" hash="091b91c98acf9f1cd6c3d6d75cddfb88"/><file name="MultiCurl.php" hash="916e85d73bae6e136f889166ebc6db17"/><file name="SimpleCurl.php" hash="c296966a8bda96e03b464a1d3a9c8e06"/></dir></dir><dir name="tests"><file name="SAI_CurlStubTest.php" hash="bce69cbb17a40bd4eeba6bad1133216e"/></dir><file name=".gitignore" hash="09e625dea07b4d4098b19ec998d266f9"/></dir></dir><file name="COPYING" hash="b234ee4d69f5fce4486a80fdaf4a4263"/><file name="COPYING.LESSER" hash="4fbd65380cdd255951079008b364516c"/><file name="FAQ.md" hash="7d7c886674d70a0047303c5d93de6165"/><file name="Makefile" hash="225475a5a4a0204cecbb77621ff38bb2"/><file name="README.md" hash="7ecfd33825a0e6bc50cca099c1c0e50e"/><file name="afs_lib.doxygen" hash="8128d53d894cc57e08142377d13c72f4"/><file name="afs_lib.php" hash="946834742cd313e818f79bb96b6dfb52"/><file name="afs_version.php" hash="d2d295f9758c29cb26173f9095ff1400"/><file name="composer.json" hash="39190df70fafa99d7eb5ab566e8edf3f"/><dir name="doc"><file name="afs_filter_documentation.dox" hash="3bf4b96e25d95ce5953b822038c6f135"/><file name="afs_paf_upload.dox" hash="d36893db0234f171e6cfb43f6e13d47c"/><file name="afs_search.dox" hash="b1c5ab8728703822f910852cd17561f4"/><file name="afs_search_coder.dox" hash="77709e1bc691301017f0982e0348a9b9"/><file name="afs_search_query.dox" hash="21dcd1734a165a4cb3b4f62c42a6a0be"/><file name="afs_search_reply.dox" hash="cdb1d42447671f4352927b40b3f8f37d"/><dir name="data"><file name="acp_helper_example.php" hash="2815890e7afbae78e7eb4e6fc5c88f6f"/><file name="full_example.php" hash="e152a964d06e55de460c596070c714d8"/><file name="full_lightweight_example.php" hash="eac3bb2d251052f547a9f737e5cd0461"/><file name="raw_example.php" hash="703356b9284e7fe904cf1334abbe08c9"/><dir name="templates"><file name="error_template.html" hash="70f44bd0f45470d379a11d0a2fe507e4"/><file name="facet_template.html" hash="6836005a7dae45e9415273f1eb6b78e2"/><file name="facet_values_template.html" hash="9b41f2b55a1cecae5724b4fcd4a46cfb"/><file name="meta_template.html" hash="e664a3bb222d272ce2451fb10bf46de4"/><file name="pager_template.html" hash="2700ab5b60a1f9553b1c39374fda63d4"/><file name="result_template.html" hash="1572a4ef4e8dda0b3db1ea77bbed4a98"/><file name="spellcheck_template.html" hash="8042054a1f5a271b47c77f81436c4791"/></dir></dir><file name="detailled_integration_example_with_template.dox" hash="26ef377a6ef546b636a0e254d11d01f5"/><file name="lightweight_integration_example_with_template.dox" hash="5a388d2dbfad63ad6ec353407b79a6bb"/><file name="logo-antidot-long-200x41.png" hash="1ceac3fff767fb5e395bd767344a3d13"/><file name="main.dox" hash="ca3e97f95deead927fb3298ecafbad5e"/><file name="raw_integration_example.dox" hash="56a7126d008c2e49abdf9bf0b5ec9717"/><file name="template_prerequisites.dox" hash="baa24a943e19ff3654227850bd316abb"/><file name="templates_in_details.dox" hash="5e8db94382f1fbd6c4e0b424a9edc9a3"/></dir><file name="rules.mk" hash="ff48aa6a5c40e31b3f38aba1267e9a71"/><dir name="scripts"><file name="gen_doc.sh" hash="0f6fc60aca94da563397d3c710bd9d33"/><file name="increment_version.sh" hash="431db9c60d2f94d251be07957787fcb0"/><file name="print_version.sh" hash="a05ddc19cd27ff185721fe2bd0cffc25"/><file name="version_management.sh" hash="3d5ecd39f45ba081144b3033dbd14330"/></dir><file name=".gitignore" hash="0292f51c0906b2092255872c69603f29"/><file name=".travis.yml" hash="4330b9c449e9cd0e97829f679c2a2786"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="mdn"><dir name="antidot"><file name="CollapsibleLists.css" hash="c956d83facc41a97bf14726dcb953edb"/></dir></dir></dir><dir name="images"><dir name="mdn"><dir name="antidot"><file name="base.gif" hash="1f71b021e061a4948d69adc4ff10ccad"/><file name="button-closed.png" hash="563b78324e0712c0902cb4f77cb9eb86"/><file name="button-open.png" hash="c710849a0d2b61ad1f0fc36c0e59d131"/><file name="button.png" hash="97f3055c5046c851eea2dad7e5227508"/><file name="cd.gif" hash="f41037663522fab5c5c31530c7fa43d8"/><file name="empty.gif" hash="df22aff6e941ff1cc577333d1712b584"/><file name="folder.gif" hash="ea16980ab437fa6ba4aba3d480e83e9e"/><file name="folderopen.gif" hash="18aa3d75315bf95bf080357733437fcc"/><file name="globe.gif" hash="d6b48614cf8dc9553e077c19197637d2"/><file name="imgfolder.gif" hash="1d488d377762e65ab4e8b691ba01e5a4"/><file name="join.gif" hash="4d5d614e0da056df815a4306d6368692"/><file name="joinbottom.gif" hash="4b3daa7f2cc584f1aac0d142275d7cba"/><file name="line.gif" hash="63ab38a6203262f15ca46c631232ea2c"/><file name="list-item-contents.png" hash="00ae24d5bc76df9eedaea597859963e4"/><file name="list-item-last-open.png" hash="615ddd71f81b240e9ed7d4e383b2c01a"/><file name="list-item-last.png" hash="e2bfb790f46855c378e50f3c0a82ea01"/><file name="list-item-open.png" hash="732d1cc59f3a488c89c624eb434eac98"/><file name="list-item-root.png" hash="5529d21e7ec68e9cb750a4895ff0b480"/><file name="list-item.png" hash="e03ec1bf3d9e16bb3005ccf8d26eaa6c"/><file name="minus.gif" hash="d647fbbd0ec410b8f3bb3357b62eedcf"/><file name="minusbottom.gif" hash="b09d684cca7135ef728141aaf2464baa"/><file name="musicfolder.gif" hash="21ece951734f23adb2f75befe1f31fc1"/><file name="nolines_minus.gif" hash="eb2243a354ffcfac93ba0fe948f7167d"/><file name="nolines_plus.gif" hash="ec92b634b63608fb4b0dbf114e3b89e1"/><file name="page.gif" hash="c25b136c1cb3bb145495c25b35d93754"/><file name="plus.gif" hash="5c55d798909c553deca31d610bd18fac"/><file name="plusbottom.gif" hash="1924ce363c38a992f888a4df48c0b274"/><file name="question.gif" hash="ea0ca196ce0ebfd625cc1210abfdec6c"/><file name="trash.gif" hash="6cbfd3ed29531044aed9b4edb3cca9ad"/></dir></dir></dir></dir></dir></dir></target></contents>
23
  <compatible/>
24
  <dependencies><required><php><min>5.2.0</min><max>5.6.0</max></php><extension><name>curl</name><min/><max/></extension></required></dependencies>
25
  </package>
shell/antidotExport.php CHANGED
@@ -13,7 +13,9 @@
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
- require_once 'abstract.php';
 
 
17
 
18
  class MDN_Shell_AntidotExport extends Mage_Shell_Abstract
19
  {
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
+ //with modman we use symlinks and we need realpath
17
+ $basepath = dirname($_SERVER['SCRIPT_FILENAME']).DIRECTORY_SEPARATOR;
18
+ require_once $basepath.'abstract.php';
19
 
20
  class MDN_Shell_AntidotExport extends Mage_Shell_Abstract
21
  {
shell/antidotExportCategory.php CHANGED
@@ -13,7 +13,9 @@
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
- require_once 'abstract.php';
 
 
17
 
18
  class MDN_Shell_AntidotExportCategory extends Mage_Shell_Abstract
19
  {
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
+ //with modman we use symlinks and we need realpath
17
+ $basepath = dirname($_SERVER['SCRIPT_FILENAME']).DIRECTORY_SEPARATOR;
18
+ require_once $basepath.'abstract.php';
19
 
20
  class MDN_Shell_AntidotExportCategory extends Mage_Shell_Abstract
21
  {
shell/antidotExportInc.php CHANGED
@@ -13,7 +13,9 @@
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
- require_once 'abstract.php';
 
 
17
 
18
  class MDN_Shell_AntidotExportInc extends Mage_Shell_Abstract
19
  {
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
+ //with modman we use symlinks and we need realpath
17
+ $basepath = dirname($_SERVER['SCRIPT_FILENAME']).DIRECTORY_SEPARATOR;
18
+ require_once $basepath.'abstract.php';
19
 
20
  class MDN_Shell_AntidotExportInc extends Mage_Shell_Abstract
21
  {
shell/antidotExportProduct.php CHANGED
@@ -13,9 +13,11 @@
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
- require_once 'abstract.php';
 
 
17
 
18
- class MDN_Shell_AntidotExport extends Mage_Shell_Abstract
19
  {
20
 
21
  /**
@@ -34,5 +36,5 @@ class MDN_Shell_AntidotExport extends Mage_Shell_Abstract
34
  }
35
  }
36
 
37
- $shell = new MDN_Shell_AntidotExport();
38
  $shell->run();
13
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
14
  */
15
 
16
+ //with modman we use symlinks and we need realpath
17
+ $basepath = dirname($_SERVER['SCRIPT_FILENAME']).DIRECTORY_SEPARATOR;
18
+ require_once $basepath.'abstract.php';
19
 
20
+ class MDN_Shell_AntidotExportProduct extends Mage_Shell_Abstract
21
  {
22
 
23
  /**
36
  }
37
  }
38
 
39
+ $shell = new MDN_Shell_AntidotExportProduct();
40
  $shell->run();