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.2.2 |
Comparing to | |
See all releases |
Code changes from version 1.2.1 to 1.2.2
- app/code/community/MDN/Antidot/Block/Catalogsearch/Result.php +2 -2
- app/code/community/MDN/Antidot/Block/System/Config/Button/PushArticles.php +1 -1
- app/code/community/MDN/Antidot/Block/System/Config/Button/PushCategories.php +1 -1
- app/code/community/MDN/Antidot/Block/System/Config/Button/PushProducts.php +1 -1
- app/code/community/MDN/Antidot/Block/System/Config/Fieldset/Notice.php +2 -2
- app/code/community/MDN/Antidot/Model/Export/Abstract.php +8 -1
- app/code/community/MDN/Antidot/Model/Export/Article.php +8 -1
- app/code/community/MDN/Antidot/Model/Export/Category.php +8 -1
- app/code/community/MDN/Antidot/Model/Export/Model/Product.php +23 -0
- app/code/community/MDN/Antidot/Model/Export/Product.php +7 -0
- app/code/community/MDN/Antidot/Model/Observer.php +3 -3
- app/code/community/MDN/Antidot/Model/Resource/Catalog/Product/Collection.php +30 -4
- app/code/community/MDN/Antidot/Model/Resource/Engine/Abstract.php +1 -0
- app/code/community/MDN/Antidot/Model/Resource/Engine/Antidot.php +41 -8
- app/code/community/MDN/Antidot/Model/Search/Search.php +20 -0
- app/code/community/MDN/Antidot/Model/System/Config/ExportType.php +28 -0
- app/code/community/MDN/Antidot/Model/System/Config/Source/Redirect.php +45 -0
- app/code/community/MDN/Antidot/Model/Transport.php +4 -3
- app/code/community/MDN/Antidot/Model/Transport/File.php +1 -1
- app/code/community/MDN/Antidot/Model/Transport/Ftp.php +1 -1
- app/code/community/MDN/Antidot/Model/Transport/Http.php +62 -4
- app/code/community/MDN/Antidot/Model/Transport/Interface.php +2 -1
- app/code/community/MDN/Antidot/Test/Block/Catalogsearch/Result.php +64 -0
- app/code/community/MDN/Antidot/Test/Block/Catalogsearch/Result/fixtures/testSetListOrders.yaml +3 -0
- app/code/community/MDN/Antidot/Test/Model/Export/Abstract.php +1 -0
- app/code/community/MDN/Antidot/Test/Model/Export/Category.php +1 -0
- app/code/community/MDN/Antidot/Test/Model/Export/Context.php +1 -0
- app/code/community/MDN/Antidot/Test/Model/Export/Model/Product.php +22 -0
- app/code/community/MDN/Antidot/Test/Model/Export/Model/Product/fixtures/testGetIsInStock.yaml +4 -0
- app/code/community/MDN/Antidot/Test/Model/Export/Product.php +1 -0
- app/code/community/MDN/Antidot/Test/Model/Export/Product/fixtures/testWriteXml.yaml +0 -2
- app/code/community/MDN/Antidot/Test/Model/Observer/fixtures/testGetDefaultContext.yaml +0 -2
- app/code/community/MDN/Antidot/Test/Model/Resource/Engine/Antidot.php +117 -1
- app/code/community/MDN/Antidot/Test/Model/Resource/Engine/Antidot/fixtures/testFormatResult.yaml +1 -0
- app/code/community/MDN/Antidot/Test/Model/System/Config/Facet.php +1 -0
- app/code/community/MDN/Antidot/Test/Model/System/Config/Source/Acpengine.php +25 -0
- app/code/community/MDN/Antidot/Test/Model/System/Config/Source/Redirect.php +25 -0
- app/code/community/MDN/Antidot/Test/Model/Transport/Http.php +43 -0
- app/code/community/MDN/Antidot/Test/Model/Transport/fixtures/testSend.yaml +7 -0
- app/code/community/MDN/Antidot/controllers/{Admin → Adminhtml/Antidot}/PushController.php +76 -67
- app/code/community/MDN/Antidot/etc/adminhtml.xml +22 -0
- app/code/community/MDN/Antidot/etc/config.xml +11 -25
- app/code/community/MDN/Antidot/etc/system.xml +54 -7
- app/code/community/MDN/Antidot/sql/Antidot_setup/mysql4-upgrade-1.2.1-1.2.2.php +24 -0
- app/design/frontend/base/default/template/antidot/catalog/layer/category.phtml +8 -3
- app/locale/de_AT/MDN_Antidot.csv +10 -1
- app/locale/de_CH/MDN_Antidot.csv +10 -1
- app/locale/de_DE/MDN_Antidot.csv +10 -1
- app/locale/es_AR/MDN_Antidot.csv +10 -1
- app/locale/es_CL/MDN_Antidot.csv +10 -1
- app/locale/es_CO/MDN_Antidot.csv +10 -1
- app/locale/es_CR/MDN_Antidot.csv +10 -1
- app/locale/es_ES/MDN_Antidot.csv +10 -1
- app/locale/es_MX/MDN_Antidot.csv +10 -1
- app/locale/es_PA/MDN_Antidot.csv +10 -1
- app/locale/es_PE/MDN_Antidot.csv +10 -1
- app/locale/es_VE/MDN_Antidot.csv +10 -1
- app/locale/fr_CA/MDN_Antidot.csv +10 -1
- app/locale/fr_FR/MDN_Antidot.csv +10 -1
- lib/antidot/AFS/SEARCH/TEST/facetHelperTest.php +1 -1
- lib/antidot/AFS/SEARCH/TEST/headerHelperTest.php +70 -691
- lib/antidot/AFS/SEARCH/TEST/queryOrchestrationTest.php +173 -0
- lib/antidot/AFS/SEARCH/afs_facet_helper.php +7 -5
- lib/antidot/AFS/SEARCH/afs_header_helper.php +43 -0
- lib/antidot/AFS/SEARCH/afs_response_helper.php +19 -0
- lib/antidot/AFS/orchestration_type.php +18 -0
- lib/antidot/AIF/TEST/authenticationTest.php +1 -6
- lib/antidot/AIF/TEST/pafConnectorTest.php +3 -3
- lib/antidot/AIF/afs_about_connector.php +1 -1
- lib/antidot/AIF/afs_authentication.php +2 -2
- lib/antidot/AIF/afs_bows_connector.php +1 -1
- lib/antidot/AIF/afs_paf_connector.php +7 -7
- lib/antidot/AIF/afs_paf_live_connector.php +1 -1
- lib/antidot/AIF/afs_token_authentication.php +4 -10
- lib/antidot/AIF/afs_user_authentication.php +12 -14
- lib/antidot/afs_lib.php +7 -0
- lib/antidot/afs_version.php +1 -1
- lib/antidot/doc/data/raw_example.php +13 -338
- package.xml +4 -4
app/code/community/MDN/Antidot/Block/Catalogsearch/Result.php
CHANGED
@@ -13,7 +13,7 @@
|
|
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
|
17 |
{
|
18 |
/**
|
19 |
* Set default order
|
@@ -40,7 +40,7 @@ class MDN_Antidot_Block_CatalogSearch_Result extends Mage_CatalogSearch_Block_Re
|
|
40 |
if (isset($availableOrders[$dfield])) {
|
41 |
$field = $dfield;
|
42 |
$dir = $defaultSort['dir'];
|
43 |
-
|
44 |
}
|
45 |
}
|
46 |
/*
|
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_Catalogsearch_Result extends Mage_CatalogSearch_Block_Result
|
17 |
{
|
18 |
/**
|
19 |
* Set default order
|
40 |
if (isset($availableOrders[$dfield])) {
|
41 |
$field = $dfield;
|
42 |
$dir = $defaultSort['dir'];
|
43 |
+
break;
|
44 |
}
|
45 |
}
|
46 |
/*
|
app/code/community/MDN/Antidot/Block/System/Config/Button/PushArticles.php
CHANGED
@@ -22,7 +22,7 @@ class MDN_Antidot_Block_System_Config_Button_PushArticles extends Mage_Adminhtml
|
|
22 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
23 |
{
|
24 |
$this->setElement($element);
|
25 |
-
$url =
|
26 |
|
27 |
$html = $this->getLayout()->createBlock('adminhtml/widget_button')
|
28 |
->setType('button')
|
22 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
23 |
{
|
24 |
$this->setElement($element);
|
25 |
+
$url = Mage::helper("adminhtml")->getUrl('adminhtml/antidot_push/article');
|
26 |
|
27 |
$html = $this->getLayout()->createBlock('adminhtml/widget_button')
|
28 |
->setType('button')
|
app/code/community/MDN/Antidot/Block/System/Config/Button/PushCategories.php
CHANGED
@@ -22,7 +22,7 @@ class MDN_Antidot_Block_System_Config_Button_PushCategories extends Mage_Adminht
|
|
22 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
23 |
{
|
24 |
$this->setElement($element);
|
25 |
-
$url =
|
26 |
|
27 |
$html = $this->getLayout()->createBlock('adminhtml/widget_button')
|
28 |
->setType('button')
|
22 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
23 |
{
|
24 |
$this->setElement($element);
|
25 |
+
$url = Mage::helper("adminhtml")->getUrl('adminhtml/antidot_push/category');
|
26 |
|
27 |
$html = $this->getLayout()->createBlock('adminhtml/widget_button')
|
28 |
->setType('button')
|
app/code/community/MDN/Antidot/Block/System/Config/Button/PushProducts.php
CHANGED
@@ -22,7 +22,7 @@ class MDN_Antidot_Block_System_Config_Button_PushProducts extends Mage_Adminhtml
|
|
22 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
23 |
{
|
24 |
$this->setElement($element);
|
25 |
-
$url =
|
26 |
|
27 |
$html = $this->getLayout()->createBlock('adminhtml/widget_button')
|
28 |
->setType('button')
|
22 |
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
23 |
{
|
24 |
$this->setElement($element);
|
25 |
+
$url = Mage::helper("adminhtml")->getUrl('adminhtml/antidot_push/product');
|
26 |
|
27 |
$html = $this->getLayout()->createBlock('adminhtml/widget_button')
|
28 |
->setType('button')
|
app/code/community/MDN/Antidot/Block/System/Config/Fieldset/Notice.php
CHANGED
@@ -44,8 +44,8 @@ class MDN_Antidot_Block_System_Config_Fieldset_Notice
|
|
44 |
$html .= "<li><strong>" . $helper->__("The curl php extension is not installed, it's required to upload export files") . "</strong></li>";
|
45 |
} else {
|
46 |
$curl_version = curl_version();
|
47 |
-
if (!isset($curl_version['protocols']) || !in_array("
|
48 |
-
$html .= "<li><strong>" . $helper->__("The curl php extension doesn't support
|
49 |
}
|
50 |
}
|
51 |
|
44 |
$html .= "<li><strong>" . $helper->__("The curl php extension is not installed, it's required to upload export files") . "</strong></li>";
|
45 |
} else {
|
46 |
$curl_version = curl_version();
|
47 |
+
if (!isset($curl_version['protocols']) || !in_array("https", $curl_version['protocols'])) {
|
48 |
+
$html .= "<li><strong>" . $helper->__("The curl php extension doesn't support https protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded") . "</strong></li>";
|
49 |
}
|
50 |
}
|
51 |
|
app/code/community/MDN/Antidot/Model/Export/Abstract.php
CHANGED
@@ -13,7 +13,7 @@
|
|
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_Model_Export_Abstract extends Mage_Core_Model_Abstract
|
17 |
{
|
18 |
/**
|
19 |
* Instance of XmlWriter
|
@@ -36,6 +36,13 @@ class MDN_Antidot_Model_Export_Abstract extends Mage_Core_Model_Abstract
|
|
36 |
'description'
|
37 |
);
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
/**
|
40 |
* Init the xml writer
|
41 |
*/
|
13 |
* @author : Antidot devmagento@antidot.net
|
14 |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
*/
|
16 |
+
abstract class MDN_Antidot_Model_Export_Abstract extends Mage_Core_Model_Abstract
|
17 |
{
|
18 |
/**
|
19 |
* Instance of XmlWriter
|
36 |
'description'
|
37 |
);
|
38 |
|
39 |
+
/**
|
40 |
+
* The name of the PAF export
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
abstract public function getPafName();
|
45 |
+
|
46 |
/**
|
47 |
* Init the xml writer
|
48 |
*/
|
app/code/community/MDN/Antidot/Model/Export/Article.php
CHANGED
@@ -24,7 +24,14 @@ class MDN_Antidot_Model_Export_Article extends MDN_Antidot_Model_Export_Product
|
|
24 |
const imagePrefix = 'media/catalog/article';
|
25 |
|
26 |
const ARTICLE_LIMIT = 1000;
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
/**
|
29 |
* Write the xml file
|
30 |
*
|
24 |
const imagePrefix = 'media/catalog/article';
|
25 |
|
26 |
const ARTICLE_LIMIT = 1000;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* {@inherit}
|
30 |
+
*/
|
31 |
+
public function getPafName() {
|
32 |
+
return "Articles";
|
33 |
+
}
|
34 |
+
|
35 |
/**
|
36 |
* Write the xml file
|
37 |
*
|
app/code/community/MDN/Antidot/Model/Export/Category.php
CHANGED
@@ -19,7 +19,14 @@ class MDN_Antidot_Model_Export_Category extends MDN_Antidot_Model_Export_Abstrac
|
|
19 |
const FILENAME_XML = 'categories-%s_%s-%s.xml';
|
20 |
const FILENAME_ZIP = '%s_full_%s_categories.zip';
|
21 |
const XSD = 'http://ref.antidot.net/store/latest/categories.xsd';
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* Get xml
|
25 |
*
|
19 |
const FILENAME_XML = 'categories-%s_%s-%s.xml';
|
20 |
const FILENAME_ZIP = '%s_full_%s_categories.zip';
|
21 |
const XSD = 'http://ref.antidot.net/store/latest/categories.xsd';
|
22 |
+
|
23 |
+
/**
|
24 |
+
* {@inherit}
|
25 |
+
*/
|
26 |
+
public function getPafName() {
|
27 |
+
return "Categories";
|
28 |
+
}
|
29 |
+
|
30 |
/**
|
31 |
* Get xml
|
32 |
*
|
app/code/community/MDN/Antidot/Model/Export/Model/Product.php
CHANGED
@@ -343,10 +343,17 @@ class MDN_Antidot_Model_Export_Model_Product extends Mage_Catalog_Model_Product
|
|
343 |
* Return is_in_stock status
|
344 |
*
|
345 |
* is_in_stock is loaded by product collection join with inventory table
|
|
|
346 |
*
|
347 |
* @return int
|
348 |
*/
|
349 |
public function getIsInStock() {
|
|
|
|
|
|
|
|
|
|
|
|
|
350 |
if (!$this->hasData('is_in_stock')) {
|
351 |
if ($this->hasData('stock_item')) {
|
352 |
$this->setData('stock_item', Mage::getModel('cataloginventory/stock_item')->loadByProduct($this));
|
@@ -409,4 +416,20 @@ class MDN_Antidot_Model_Export_Model_Product extends Mage_Catalog_Model_Product
|
|
409 |
return $this;
|
410 |
}
|
411 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
412 |
}
|
343 |
* Return is_in_stock status
|
344 |
*
|
345 |
* is_in_stock is loaded by product collection join with inventory table
|
346 |
+
* see MDN_Antidot_Model_Export_Model_Product_Link getProductCollection()
|
347 |
*
|
348 |
* @return int
|
349 |
*/
|
350 |
public function getIsInStock() {
|
351 |
+
/**
|
352 |
+
* MCNX-264 if config !cataloginventory/item_options/manage_stock : meens all product are available
|
353 |
+
*/
|
354 |
+
if (!Mage::getStoreConfig('cataloginventory/item_options/manage_stock')) {
|
355 |
+
return true;
|
356 |
+
}
|
357 |
if (!$this->hasData('is_in_stock')) {
|
358 |
if ($this->hasData('stock_item')) {
|
359 |
$this->setData('stock_item', Mage::getModel('cataloginventory/stock_item')->loadByProduct($this));
|
416 |
return $this;
|
417 |
}
|
418 |
|
419 |
+
/**
|
420 |
+
* Get attribute text by its code
|
421 |
+
*
|
422 |
+
* @param $attributeCode Code of the attribute
|
423 |
+
* @return string
|
424 |
+
*/
|
425 |
+
public function getAttributeText($attributeCode)
|
426 |
+
{
|
427 |
+
if ($attribute = $this->getResource()->getAttribute($attributeCode)) {
|
428 |
+
return $attribute
|
429 |
+
->getSource()
|
430 |
+
->getOptionText($this->getData($attributeCode));
|
431 |
+
} else {
|
432 |
+
return '';
|
433 |
+
}
|
434 |
+
}
|
435 |
}
|
app/code/community/MDN/Antidot/Model/Export/Product.php
CHANGED
@@ -54,6 +54,13 @@ class MDN_Antidot_Model_Export_Product extends MDN_Antidot_Model_Export_Abstract
|
|
54 |
Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE
|
55 |
);
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
/**
|
58 |
* Write the xml file
|
59 |
*
|
54 |
Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE
|
55 |
);
|
56 |
|
57 |
+
/**
|
58 |
+
* {@inherit}
|
59 |
+
*/
|
60 |
+
public function getPafName() {
|
61 |
+
return "Catalog";
|
62 |
+
}
|
63 |
+
|
64 |
/**
|
65 |
* Write the xml file
|
66 |
*
|
app/code/community/MDN/Antidot/Model/Observer.php
CHANGED
@@ -180,7 +180,7 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
|
|
180 |
$filenameZip = sprintf($filenameZip, date('YmdHis'), $ownerForFilename);
|
181 |
$filename = $this->compress($files, $filenameZip);
|
182 |
$log['reference'] = md5($filename);
|
183 |
-
$this->send($filename);
|
184 |
|
185 |
$log['status'] = 'SUCCESS';
|
186 |
} else {
|
@@ -270,13 +270,13 @@ class MDN_Antidot_Model_Observer extends Mage_Core_Model_Abstract
|
|
270 |
* @param string $filename
|
271 |
* @return boolean
|
272 |
*/
|
273 |
-
protected function send($filename)
|
274 |
{
|
275 |
$this->log('send the file');
|
276 |
|
277 |
$transport = Mage::getModel('Antidot/transport');
|
278 |
|
279 |
-
return $transport->send($filename,
|
280 |
}
|
281 |
|
282 |
/**
|
180 |
$filenameZip = sprintf($filenameZip, date('YmdHis'), $ownerForFilename);
|
181 |
$filename = $this->compress($files, $filenameZip);
|
182 |
$log['reference'] = md5($filename);
|
183 |
+
$this->send($filename, $exportModel);
|
184 |
|
185 |
$log['status'] = 'SUCCESS';
|
186 |
} else {
|
270 |
* @param string $filename
|
271 |
* @return boolean
|
272 |
*/
|
273 |
+
protected function send($filename, $exportModel)
|
274 |
{
|
275 |
$this->log('send the file');
|
276 |
|
277 |
$transport = Mage::getModel('Antidot/transport');
|
278 |
|
279 |
+
return $transport->send($filename, Mage::getStoreConfig('antidot/ftp/upload_type'), $exportModel);
|
280 |
}
|
281 |
|
282 |
/**
|
app/code/community/MDN/Antidot/Model/Resource/Catalog/Product/Collection.php
CHANGED
@@ -37,7 +37,13 @@ class MDN_Antidot_Model_Resource_Catalog_Product_Collection extends Mage_Catalog
|
|
37 |
/**
|
38 |
* @var array banners
|
39 |
*/
|
40 |
-
protected $_banners
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
/**
|
43 |
* @var array Facets conditions.
|
@@ -294,11 +300,11 @@ class MDN_Antidot_Model_Resource_Catalog_Product_Collection extends Mage_Catalog
|
|
294 |
*/
|
295 |
protected function _beforeLoad()
|
296 |
{
|
297 |
-
|
298 |
if ($this->_engine) {
|
299 |
$this->initQueryResult($this->_getQuery(), $this->_getParams());
|
300 |
-
if(
|
301 |
-
header('location: '.
|
302 |
exit(0);
|
303 |
}
|
304 |
}
|
@@ -309,6 +315,25 @@ class MDN_Antidot_Model_Resource_Catalog_Product_Collection extends Mage_Catalog
|
|
309 |
return parent::_beforeLoad();
|
310 |
}
|
311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
/**
|
313 |
* Retrieve the query result
|
314 |
*
|
@@ -326,6 +351,7 @@ class MDN_Antidot_Model_Resource_Catalog_Product_Collection extends Mage_Catalog
|
|
326 |
$this->_searchedEntityIds = isset($this->queryResult['ids']) ? $this->queryResult['ids'] : array();
|
327 |
$this->_categoryIds = isset($this->queryResult['category_ids']) ? $this->queryResult['category_ids'] : array();
|
328 |
$this->_banners = isset($this->queryResult['banners']) ? $this->queryResult['banners'] : array();
|
|
|
329 |
}
|
330 |
}
|
331 |
|
37 |
/**
|
38 |
* @var array banners
|
39 |
*/
|
40 |
+
protected $_banners = array();
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @var boolen spellcheck
|
44 |
+
*/
|
45 |
+
protected $_spellcheck = false;
|
46 |
+
|
47 |
|
48 |
/**
|
49 |
* @var array Facets conditions.
|
300 |
*/
|
301 |
protected function _beforeLoad()
|
302 |
{
|
303 |
+
|
304 |
if ($this->_engine) {
|
305 |
$this->initQueryResult($this->_getQuery(), $this->_getParams());
|
306 |
+
if ($this->redirectToProduct()) {
|
307 |
+
header('location: '.Mage::getModel('catalog/product')->load(current($this->_searchedEntityIds))->getProductUrl());
|
308 |
exit(0);
|
309 |
}
|
310 |
}
|
315 |
return parent::_beforeLoad();
|
316 |
}
|
317 |
|
318 |
+
/**
|
319 |
+
* Return if the redirection to the product page must be done
|
320 |
+
* MCNX-260
|
321 |
+
* @return boolean
|
322 |
+
*/
|
323 |
+
protected function redirectToProduct() {
|
324 |
+
|
325 |
+
if(count($this->_searchedEntityIds) === 1) {
|
326 |
+
$redirect = Mage::getStoreConfig('antidot/engine/redirect_product');
|
327 |
+
if ($redirect == MDN_Antidot_Model_System_Config_Source_Redirect::ALWAYS ||
|
328 |
+
($redirect == MDN_Antidot_Model_System_Config_Source_Redirect::UNLESS_SPELLCHECK &&
|
329 |
+
!$this->_spellcheck )) {
|
330 |
+
return true;
|
331 |
+
}
|
332 |
+
}
|
333 |
+
return false;
|
334 |
+
|
335 |
+
}
|
336 |
+
|
337 |
/**
|
338 |
* Retrieve the query result
|
339 |
*
|
351 |
$this->_searchedEntityIds = isset($this->queryResult['ids']) ? $this->queryResult['ids'] : array();
|
352 |
$this->_categoryIds = isset($this->queryResult['category_ids']) ? $this->queryResult['category_ids'] : array();
|
353 |
$this->_banners = isset($this->queryResult['banners']) ? $this->queryResult['banners'] : array();
|
354 |
+
$this->_spellcheck = isset($this->queryResult['spellcheck']) ? $this->queryResult['spellcheck'] : false;
|
355 |
}
|
356 |
}
|
357 |
|
app/code/community/MDN/Antidot/Model/Resource/Engine/Abstract.php
CHANGED
@@ -104,6 +104,7 @@ abstract class MDN_Antidot_Model_Resource_Engine_Abstract
|
|
104 |
'faceted_data' => (isset($resultTmp['facets'])) ? $resultTmp['facets'] : array(),
|
105 |
'category_ids' => (isset($resultTmp['category_ids'])) ? $resultTmp['category_ids'] : array(),
|
106 |
'banners' => (isset($resultTmp['banners'])) ? $resultTmp['banners'] : array(),
|
|
|
107 |
);
|
108 |
}
|
109 |
|
104 |
'faceted_data' => (isset($resultTmp['facets'])) ? $resultTmp['facets'] : array(),
|
105 |
'category_ids' => (isset($resultTmp['category_ids'])) ? $resultTmp['category_ids'] : array(),
|
106 |
'banners' => (isset($resultTmp['banners'])) ? $resultTmp['banners'] : array(),
|
107 |
+
'spellcheck' => (isset($resultTmp['spellcheck'])) ? $resultTmp['spellcheck'] : false,
|
108 |
);
|
109 |
}
|
110 |
|
app/code/community/MDN/Antidot/Model/Resource/Engine/Antidot.php
CHANGED
@@ -30,6 +30,13 @@ class MDN_Antidot_Model_Resource_Engine_Antidot extends MDN_Antidot_Model_Resour
|
|
30 |
$this->client = Mage::getModel('Antidot/search_search');
|
31 |
}
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
/**
|
34 |
* Returns search helper.
|
35 |
*
|
@@ -387,17 +394,43 @@ class MDN_Antidot_Model_Resource_Engine_Antidot extends MDN_Antidot_Model_Resour
|
|
387 |
}
|
388 |
}
|
389 |
}
|
390 |
-
|
391 |
-
if (!$this->addedNote && $result['total_count'] == 0 && isset($resultAntidot->spellcheck)) {
|
392 |
-
if($spellcheck = $resultAntidot->spellcheck) {
|
393 |
-
$link = '<a href="'.Mage::helper('catalogsearch')->getResultUrl($spellcheck).'">'.$spellcheck.'</a>';
|
394 |
-
$spellcheck = str_replace('{spellcheck}', $link, Mage::getStoreConfig('antidot/engine/spellcheck'));
|
395 |
|
396 |
-
|
397 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
398 |
}
|
399 |
}
|
400 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
401 |
return $result;
|
402 |
}
|
403 |
|
30 |
$this->client = Mage::getModel('Antidot/search_search');
|
31 |
}
|
32 |
|
33 |
+
/**
|
34 |
+
* reset addedNote (unit tests)
|
35 |
+
*/
|
36 |
+
public function init() {
|
37 |
+
$this->addedNote = false;
|
38 |
+
}
|
39 |
+
|
40 |
/**
|
41 |
* Returns search helper.
|
42 |
*
|
394 |
}
|
395 |
}
|
396 |
}
|
|
|
|
|
|
|
|
|
|
|
397 |
|
398 |
+
$result['spellcheck'] = false;
|
399 |
+
if (!$this->addedNote) {
|
400 |
+
if (isset($resultAntidot->spellcheck) && $resultAntidot->spellcheck) {
|
401 |
+
$redirect = Mage::getStoreConfig('antidot/engine/redirect_product');
|
402 |
+
if ($result['total_count'] == 0 ||
|
403 |
+
($result['total_count'] == 1 && $redirect == MDN_Antidot_Model_System_Config_Source_Redirect::UNLESS_SPELLCHECK) ) {
|
404 |
+
$spellcheck = $resultAntidot->spellcheck;
|
405 |
+
$message = Mage::helper('Antidot')->__(Mage::getStoreConfig('antidot/engine/spellcheck'));
|
406 |
+
$link = '<a href="'.Mage::helper('catalogsearch')->getResultUrl(
|
407 |
+
$spellcheck
|
408 |
+
).'">'.$spellcheck.'</a>';
|
409 |
+
$message = str_replace('{spellcheck}', $link, $message);
|
410 |
+
|
411 |
+
Mage::helper('catalogsearch')->addNoteMessage($message);
|
412 |
+
$this->addedNote = true;
|
413 |
+
$result['spellcheck'] = true;
|
414 |
+
}
|
415 |
}
|
416 |
}
|
417 |
+
|
418 |
+
/**
|
419 |
+
* MCNX-64 query orchestration : add a message if the query has been re-executed by AFSStore based on spellcheck
|
420 |
+
*/
|
421 |
+
if (!$this->addedNote && isset($resultAntidot->isOrchestrated) && isset($resultAntidot->spellcheck)) {
|
422 |
+
if(($spellcheck = $resultAntidot->spellcheck) && $resultAntidot->isOrchestrated) {
|
423 |
+
if ($message = Mage::getStoreConfig('antidot/engine/spellcheck_query')) {
|
424 |
+
$message = Mage::helper('Antidot')->__($message);
|
425 |
+
$message = str_replace('{spellcheck}', $spellcheck, $message);
|
426 |
+
$message = str_replace('{originalQuery}', $resultAntidot->originalQuery, $message);
|
427 |
+
|
428 |
+
Mage::helper('catalogsearch')->addNoteMessage($message);
|
429 |
+
$this->addedNote = true;
|
430 |
+
}
|
431 |
+
}
|
432 |
+
}
|
433 |
+
|
434 |
return $result;
|
435 |
}
|
436 |
|
app/code/community/MDN/Antidot/Model/Search/Search.php
CHANGED
@@ -96,9 +96,11 @@ class MDN_Antidot_Model_Search_Search extends MDN_Antidot_Model_Search_Abstract
|
|
96 |
}
|
97 |
|
98 |
$resultAntidot->spellcheck = $this->getSpellcheckFromResult($results);
|
|
|
99 |
$resultAntidot->promote = $this->getPromoteFromResult($results);
|
100 |
$resultAntidot->replyset = $this->getReplySetFromResult($results);
|
101 |
$resultAntidot->replysetCategories = $this->getReplySetFromResult($results, 'Categories');
|
|
|
102 |
|
103 |
//save translations
|
104 |
if ($resultAntidot->replyset) {
|
@@ -169,6 +171,24 @@ class MDN_Antidot_Model_Search_Search extends MDN_Antidot_Model_Search_Abstract
|
|
169 |
return $replyset;
|
170 |
}
|
171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
/**
|
173 |
* Return facets list
|
174 |
*
|
96 |
}
|
97 |
|
98 |
$resultAntidot->spellcheck = $this->getSpellcheckFromResult($results);
|
99 |
+
$resultAntidot->originalQuery = Mage::helper('catalogsearch')->getEscapedQueryText();
|
100 |
$resultAntidot->promote = $this->getPromoteFromResult($results);
|
101 |
$resultAntidot->replyset = $this->getReplySetFromResult($results);
|
102 |
$resultAntidot->replysetCategories = $this->getReplySetFromResult($results, 'Categories');
|
103 |
+
$resultAntidot->isOrchestrated = $this->getOrchestratedFromResult($results);
|
104 |
|
105 |
//save translations
|
106 |
if ($resultAntidot->replyset) {
|
171 |
return $replyset;
|
172 |
}
|
173 |
|
174 |
+
/**
|
175 |
+
* Get Orchestraed boolean from results
|
176 |
+
*
|
177 |
+
* @param StdClass $results
|
178 |
+
* @return boolean
|
179 |
+
*/
|
180 |
+
protected function getOrchestratedFromResult($results)
|
181 |
+
{
|
182 |
+
$orchestrated = false;
|
183 |
+
try {
|
184 |
+
$orchestrated = $results->is_orchestrated();
|
185 |
+
} catch (Exception $e) {
|
186 |
+
Mage::log($e->getMessage(), null, 'antidot.log');
|
187 |
+
}
|
188 |
+
|
189 |
+
return $orchestrated;
|
190 |
+
}
|
191 |
+
|
192 |
/**
|
193 |
* Return facets list
|
194 |
*
|
app/code/community/MDN/Antidot/Model/System/Config/ExportType.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_Model_System_Config_ExportType
|
17 |
+
{
|
18 |
+
/**
|
19 |
+
* {@inherit}
|
20 |
+
*/
|
21 |
+
public function toOptionArray()
|
22 |
+
{
|
23 |
+
return array(
|
24 |
+
array('value' => MDN_Antidot_Model_Transport::TRANS_HTTP, 'label' => 'HTTPS'),
|
25 |
+
array('value' => MDN_Antidot_Model_Transport::TRANS_FTP, 'label' => 'SFTP'),
|
26 |
+
);
|
27 |
+
}
|
28 |
+
}
|
app/code/community/MDN/Antidot/Model/System/Config/Source/Redirect.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
|
17 |
+
class MDN_Antidot_Model_System_Config_Source_Redirect
|
18 |
+
{
|
19 |
+
|
20 |
+
const ALWAYS = '1';
|
21 |
+
const UNLESS_SPELLCHECK = '2';
|
22 |
+
const NEVER = '3';
|
23 |
+
|
24 |
+
|
25 |
+
/**
|
26 |
+
* {@inherit}
|
27 |
+
*/
|
28 |
+
public function toOptionArray()
|
29 |
+
{
|
30 |
+
$options = array();
|
31 |
+
$options[] = array(
|
32 |
+
'value' => self::ALWAYS,
|
33 |
+
'label' => Mage::helper('Antidot')->__('Always')
|
34 |
+
);
|
35 |
+
$options[] = array(
|
36 |
+
'value' => self::UNLESS_SPELLCHECK,
|
37 |
+
'label' => Mage::helper('Antidot')->__('Unless there\'s a spellcheck')
|
38 |
+
);
|
39 |
+
$options[] = array(
|
40 |
+
'value' => self::NEVER,
|
41 |
+
'label' => Mage::helper('Antidot')->__('Never')
|
42 |
+
);
|
43 |
+
return $options;
|
44 |
+
}
|
45 |
+
}
|
app/code/community/MDN/Antidot/Model/Transport.php
CHANGED
@@ -25,11 +25,12 @@ class MDN_Antidot_Model_Transport extends Mage_Core_Model_Abstract
|
|
25 |
*
|
26 |
* @param string $file File to send
|
27 |
* @param string $type The transport type used to send the file
|
|
|
28 |
*/
|
29 |
-
public function send($file, $type = self::TRANS_FILE)
|
30 |
{
|
31 |
-
if($transport = Mage::getModel('Antidot/transport_'
|
32 |
-
return $transport->send($file);
|
33 |
}
|
34 |
|
35 |
throw new Exception('The type transport "'.$type.'" does not exist');
|
25 |
*
|
26 |
* @param string $file File to send
|
27 |
* @param string $type The transport type used to send the file
|
28 |
+
* @param MDN_Antidot_Model_Export_Abstract $exportModel the type of data exported
|
29 |
*/
|
30 |
+
public function send($file, $type = self::TRANS_FILE, $exportModel)
|
31 |
{
|
32 |
+
if($transport = Mage::getModel('Antidot/transport_'.$type)) {
|
33 |
+
return $transport->send($file, $exportModel);
|
34 |
}
|
35 |
|
36 |
throw new Exception('The type transport "'.$type.'" does not exist');
|
app/code/community/MDN/Antidot/Model/Transport/File.php
CHANGED
@@ -21,7 +21,7 @@ class MDN_Antidot_Model_Transport_File extends MDN_Antidot_Model_Transport_Abstr
|
|
21 |
/**
|
22 |
* {@inherit}
|
23 |
*/
|
24 |
-
public function send($file)
|
25 |
{
|
26 |
return rename($file, self::DIRECTORY.'/'.basename($file));
|
27 |
}
|
21 |
/**
|
22 |
* {@inherit}
|
23 |
*/
|
24 |
+
public function send($file, $exportModel, SAI_CurlInterface $curlConnector=null)
|
25 |
{
|
26 |
return rename($file, self::DIRECTORY.'/'.basename($file));
|
27 |
}
|
app/code/community/MDN/Antidot/Model/Transport/Ftp.php
CHANGED
@@ -19,7 +19,7 @@ class MDN_Antidot_Model_Transport_Ftp extends MDN_Antidot_Model_Transport_Abstra
|
|
19 |
/**
|
20 |
* {@inherit}
|
21 |
*/
|
22 |
-
public function send($file)
|
23 |
{
|
24 |
$ftpConfig = Mage::getStoreConfig('antidot/ftp');
|
25 |
if (!$ftpConfig)
|
19 |
/**
|
20 |
* {@inherit}
|
21 |
*/
|
22 |
+
public function send($file, $exportModel, SAI_CurlInterface $curlConnector=null)
|
23 |
{
|
24 |
$ftpConfig = Mage::getStoreConfig('antidot/ftp');
|
25 |
if (!$ftpConfig)
|
app/code/community/MDN/Antidot/Model/Transport/Http.php
CHANGED
@@ -13,14 +13,72 @@
|
|
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_Model_Transport_Http extends MDN_Antidot_Model_Transport_Abstract implements MDN_Antidot_Model_Transport_Interface
|
17 |
{
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
/**
|
20 |
* {@inherit}
|
21 |
*/
|
22 |
-
public function send($file)
|
23 |
{
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
}
|
26 |
}
|
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_Model_Transport_Http extends MDN_Antidot_Model_Transport_Abstract implements MDN_Antidot_Model_Transport_Interface
|
17 |
{
|
18 |
+
|
19 |
+
protected $afsHost;
|
20 |
+
protected $afsService;
|
21 |
+
protected $afsStatus;
|
22 |
+
protected $afsUser;
|
23 |
+
protected $afsPasswd;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Init Antidot API
|
27 |
+
*/
|
28 |
+
public function _construct($host = 'bo-store.afs-antidot.net')
|
29 |
+
{
|
30 |
+
parent::_construct();
|
31 |
+
|
32 |
+
$this->afsHost = $host;
|
33 |
+
|
34 |
+
require_once "antidot/afs_lib.php";
|
35 |
+
|
36 |
+
if ($config = Mage::getStoreConfig('antidot/web_service')) {
|
37 |
+
|
38 |
+
if (isset($config['service'])) {
|
39 |
+
$this->afsService = (int)$config['service'];
|
40 |
+
}
|
41 |
+
if (isset($config['status'])) {
|
42 |
+
$this->afsStatus = $config['status'];
|
43 |
+
}
|
44 |
+
}
|
45 |
+
if ($config = Mage::getStoreConfig('antidot/ftp')) {
|
46 |
+
|
47 |
+
if (isset($config['username'])) {
|
48 |
+
$this->afsUser = $config['username'];
|
49 |
+
}
|
50 |
+
if (isset($config['passwd'])) {
|
51 |
+
$this->afsPasswd = $config['passwd'];
|
52 |
+
}
|
53 |
+
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
|
58 |
/**
|
59 |
* {@inherit}
|
60 |
*/
|
61 |
+
public function send($file, $exportModel, SAI_CurlInterface $curlConnector=null)
|
62 |
{
|
63 |
+
|
64 |
+
/**
|
65 |
+
* see http://antidot.github.io/PHP_API/doc/html/classAfsPafConnector.html
|
66 |
+
*/
|
67 |
+
$auth = new AfsUserAuthentication($this->afsUser, $this->afsPasswd, null);
|
68 |
+
|
69 |
+
$service = new AfsService($this->afsService, $this->afsStatus);
|
70 |
+
|
71 |
+
$doc = new AfsDocument(file_get_contents($file));
|
72 |
+
|
73 |
+
$connector = new AfsPafConnector($this->afsHost, $service, $exportModel->getPafName(), $auth, AFS_SCHEME_HTTPS, $curlConnector);
|
74 |
+
|
75 |
+
/** @var AfsPafUploadReply $result */
|
76 |
+
$result = $connector->upload_doc($doc);
|
77 |
+
|
78 |
+
if ($result->in_error()) {
|
79 |
+
throw new Exception("Can't send the file (".$result->get_error().")");
|
80 |
+
}
|
81 |
+
|
82 |
+
|
83 |
}
|
84 |
}
|
app/code/community/MDN/Antidot/Model/Transport/Interface.php
CHANGED
@@ -19,6 +19,7 @@ interface MDN_Antidot_Model_Transport_Interface
|
|
19 |
* Send file to Antidot
|
20 |
*
|
21 |
* @param string $file Files to send
|
|
|
22 |
*/
|
23 |
-
public function send($files);
|
24 |
}
|
19 |
* Send file to Antidot
|
20 |
*
|
21 |
* @param string $file Files to send
|
22 |
+
* @param MDN_Antidot_Model_Export_Abstract $exportModel the type of data exported
|
23 |
*/
|
24 |
+
public function send($files, $exportModel, SAI_CurlInterface $curlConnector=null);
|
25 |
}
|
app/code/community/MDN/Antidot/Test/Block/Catalogsearch/Result.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_Test_Block_Catalogsearch_Result extends EcomDev_PHPUnit_Test_Case
|
17 |
+
{
|
18 |
+
|
19 |
+
public static function setUpBeforeClass()
|
20 |
+
{
|
21 |
+
|
22 |
+
//avoid errors when session_start is called during the test
|
23 |
+
@session_start();
|
24 |
+
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
*
|
29 |
+
* @test
|
30 |
+
* @loadFixture
|
31 |
+
*/
|
32 |
+
public function testSetListOrders()
|
33 |
+
{
|
34 |
+
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Create block result and check it's rewrited by Antidot module's one
|
38 |
+
*/
|
39 |
+
|
40 |
+
$layout = Mage::app()->getLayout();
|
41 |
+
//créer le block head qui est utilisé dans la méthode _prepareLayout du blok result :
|
42 |
+
$layout->createBlock('page/html_head', 'head');
|
43 |
+
/** @var MDN_Antidot_Block_Catalogsearch_Result $blockResult */
|
44 |
+
$blockResult = $layout->createBlock('catalogsearch/result');
|
45 |
+
$this->assertEquals(
|
46 |
+
'MDN_Antidot_Block_Catalogsearch_Result',
|
47 |
+
get_class($blockResult)
|
48 |
+
);
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Create block product list and at it as the result block child
|
52 |
+
*/
|
53 |
+
$blockList = $layout->createBlock('catalog/product_list');
|
54 |
+
$blockResult->setChild('search_result_list', $blockList);
|
55 |
+
|
56 |
+
$blockResult->setListOrders();
|
57 |
+
|
58 |
+
$this->assertEquals(
|
59 |
+
'afs:relevance',
|
60 |
+
$blockResult->getListBlock()->getSortBy()
|
61 |
+
);
|
62 |
+
|
63 |
+
}
|
64 |
+
}
|
app/code/community/MDN/Antidot/Test/Block/Catalogsearch/Result/fixtures/testSetListOrders.yaml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
config:
|
2 |
+
default/antidot/engine/sortable: a:2:{s:17:"_1426771479065_65";a:1:{s:4:"sort";s:23:"afs:relevance|Relevance";}s:18:"_1445496660565_565";a:1:{s:4:"sort";s:11:"price|Price";}}
|
3 |
+
default/antidot/engine/default_sort: a:2:{s:18:"_1426771516777_777";a:2:{s:5:"field";s:23:"afs:relevance|Relevance";s:3:"dir";s:3:"asc";}s:18:"_1445849231624_624";a:2:{s:5:"field";s:11:"price|Price";s:3:"dir";s:3:"asc";}}
|
app/code/community/MDN/Antidot/Test/Model/Export/Abstract.php
CHANGED
@@ -10,6 +10,7 @@ class MDN_Antidot_Test_Model_Export_Abstract extends EcomDev_PHPUnit_Test_Case
|
|
10 |
* gc is enabled in fixture
|
11 |
* percentage is set to 10% in fixture
|
12 |
*
|
|
|
13 |
* @loadFixture
|
14 |
*/
|
15 |
public function testGarbageCollection() {
|
10 |
* gc is enabled in fixture
|
11 |
* percentage is set to 10% in fixture
|
12 |
*
|
13 |
+
* @test
|
14 |
* @loadFixture
|
15 |
*/
|
16 |
public function testGarbageCollection() {
|
app/code/community/MDN/Antidot/Test/Model/Export/Category.php
CHANGED
@@ -30,6 +30,7 @@ class MDN_Antidot_Test_Model_Export_Category extends EcomDev_PHPUnit_Test_Case
|
|
30 |
/*
|
31 |
* MCNX-170 don't generate file if there's no categories to export
|
32 |
* test the XmlWriter has not been initialised if there's no categories to export
|
|
|
33 |
* @loadFixture
|
34 |
*/
|
35 |
public function testEmptyFile() {
|
30 |
/*
|
31 |
* MCNX-170 don't generate file if there's no categories to export
|
32 |
* test the XmlWriter has not been initialised if there's no categories to export
|
33 |
+
* @test
|
34 |
* @loadFixture
|
35 |
*/
|
36 |
public function testEmptyFile() {
|
app/code/community/MDN/Antidot/Test/Model/Export/Context.php
CHANGED
@@ -16,6 +16,7 @@ class MDN_Antidot_Test_Model_Export_Context extends EcomDev_PHPUnit_Test_Case
|
|
16 |
*
|
17 |
* Test Context Object construction
|
18 |
*
|
|
|
19 |
* @loadFixture
|
20 |
*/
|
21 |
public function testContext() {
|
16 |
*
|
17 |
* Test Context Object construction
|
18 |
*
|
19 |
+
* @test
|
20 |
* @loadFixture
|
21 |
*/
|
22 |
public function testContext() {
|
app/code/community/MDN/Antidot/Test/Model/Export/Model/Product.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class MDN_Antidot_Test_Model_Export_Model_Product extends EcomDev_PHPUnit_Test_Case
|
5 |
+
{
|
6 |
+
|
7 |
+
/**
|
8 |
+
* MCNX-264
|
9 |
+
* in fixture config cataloginventory/item_options/manage_stock : 0 meens the product is available
|
10 |
+
* even if is_in_stock data from database is false
|
11 |
+
*
|
12 |
+
* @test
|
13 |
+
* @loadFixture
|
14 |
+
*/
|
15 |
+
public function testGetIsInStock() {
|
16 |
+
|
17 |
+
$product = Mage::getModel('Antidot/export_model_product');
|
18 |
+
$product->setData('is_in_stock', 0);
|
19 |
+
|
20 |
+
$this->assertTrue($product->getIsInStock());
|
21 |
+
}
|
22 |
+
}
|
app/code/community/MDN/Antidot/Test/Model/Export/Model/Product/fixtures/testGetIsInStock.yaml
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
config:
|
2 |
+
default/antidot/fields_product/in_stock_only: 1
|
3 |
+
default/cataloginventory/options/show_out_of_stock: 0
|
4 |
+
default/cataloginventory/item_options/manage_stock: 0
|
app/code/community/MDN/Antidot/Test/Model/Export/Product.php
CHANGED
@@ -577,6 +577,7 @@ class MDN_Antidot_Test_Model_Export_Product extends EcomDev_PHPUnit_Test_Case
|
|
577 |
|
578 |
/**
|
579 |
* MCNX-243 : test categories with inactive parent category is not exported
|
|
|
580 |
* @loadFixture
|
581 |
*/
|
582 |
public function testInactiveParentCategory()
|
577 |
|
578 |
/**
|
579 |
* MCNX-243 : test categories with inactive parent category is not exported
|
580 |
+
* @test
|
581 |
* @loadFixture
|
582 |
*/
|
583 |
public function testInactiveParentCategory()
|
app/code/community/MDN/Antidot/Test/Model/Export/Product/fixtures/testWriteXml.yaml
CHANGED
@@ -65,8 +65,6 @@ scope:
|
|
65 |
|
66 |
config:
|
67 |
default/antidot/general/owner: JETPULP
|
68 |
-
default/antidot/fields_product/model:
|
69 |
-
default/antidot/fields_product/gender:
|
70 |
default/antidot/fields_product/properties: a:2:{s:18:"_1426953698813_813";a:2:{s:5:"value";s:7:"authors";s:12:"autocomplete";s:1:"0";}s:18:"_1426953714346_346";a:2:{s:5:"value";s:6:"editor";s:12:"autocomplete";s:1:"0";}}
|
71 |
default/web/secure/base_url: http://www.mywebsite.com/
|
72 |
default/web/unsecure/base_url: http://www.mywebsite.com/
|
65 |
|
66 |
config:
|
67 |
default/antidot/general/owner: JETPULP
|
|
|
|
|
68 |
default/antidot/fields_product/properties: a:2:{s:18:"_1426953698813_813";a:2:{s:5:"value";s:7:"authors";s:12:"autocomplete";s:1:"0";}s:18:"_1426953714346_346";a:2:{s:5:"value";s:6:"editor";s:12:"autocomplete";s:1:"0";}}
|
69 |
default/web/secure/base_url: http://www.mywebsite.com/
|
70 |
default/web/unsecure/base_url: http://www.mywebsite.com/
|
app/code/community/MDN/Antidot/Test/Model/Observer/fixtures/testGetDefaultContext.yaml
CHANGED
@@ -65,8 +65,6 @@ scope:
|
|
65 |
|
66 |
config:
|
67 |
default/antidot/general/owner: JETPULP
|
68 |
-
default/antidot/fields_product/model:
|
69 |
-
default/antidot/fields_product/gender:
|
70 |
default/antidot/fields_product/properties: a:2:{s:18:"_1426953698813_813";a:2:{s:5:"value";s:7:"authors";s:12:"autocomplete";s:1:"0";}s:18:"_1426953714346_346";a:2:{s:5:"value";s:6:"editor";s:12:"autocomplete";s:1:"0";}}
|
71 |
default/web/secure/base_url: http://www.mywebsite.com/
|
72 |
default/web/unsecure/base_url: http://www.mywebsite.com/
|
65 |
|
66 |
config:
|
67 |
default/antidot/general/owner: JETPULP
|
|
|
|
|
68 |
default/antidot/fields_product/properties: a:2:{s:18:"_1426953698813_813";a:2:{s:5:"value";s:7:"authors";s:12:"autocomplete";s:1:"0";}s:18:"_1426953714346_346";a:2:{s:5:"value";s:6:"editor";s:12:"autocomplete";s:1:"0";}}
|
69 |
default/web/secure/base_url: http://www.mywebsite.com/
|
70 |
default/web/unsecure/base_url: http://www.mywebsite.com/
|
app/code/community/MDN/Antidot/Test/Model/Resource/Engine/Antidot.php
CHANGED
@@ -16,7 +16,14 @@
|
|
16 |
class MDN_Antidot_Test_Model_Resource_Engine_Antidot extends EcomDev_PHPUnit_Test_Case
|
17 |
{
|
18 |
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
* MCNX-171 Test extraction of the raw value of multiselect facet into array of values
|
21 |
*
|
22 |
* @test
|
@@ -153,6 +160,115 @@ class MDN_Antidot_Test_Model_Resource_Engine_Antidot extends EcomDev_PHPUnit_Tes
|
|
153 |
$this->assertEquals('http://antidot.net/banner_target', $result['banners'][0]->getUrl());
|
154 |
$this->assertEquals('http://antidot.net/banner.jpg', $result['banners'][0]->getImage());
|
155 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
157 |
|
158 |
}
|
16 |
class MDN_Antidot_Test_Model_Resource_Engine_Antidot extends EcomDev_PHPUnit_Test_Case
|
17 |
{
|
18 |
|
19 |
+
|
20 |
+
public static function setUpBeforeClass()
|
21 |
+
{
|
22 |
+
//avoid errors when session_start is called during the test
|
23 |
+
@session_start();
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
* MCNX-171 Test extraction of the raw value of multiselect facet into array of values
|
28 |
*
|
29 |
* @test
|
160 |
$this->assertEquals('http://antidot.net/banner_target', $result['banners'][0]->getUrl());
|
161 |
$this->assertEquals('http://antidot.net/banner.jpg', $result['banners'][0]->getImage());
|
162 |
|
163 |
+
/**
|
164 |
+
* 5th test : MCNX-260 : spell check
|
165 |
+
* Search with only one result and a spellcheck, the result flag spellcheck must be true in order to do redirection
|
166 |
+
*/
|
167 |
+
//previous test spellcheck must be false
|
168 |
+
$this->assertFalse($result['spellcheck']);
|
169 |
+
|
170 |
+
$mockAFSClientDateHelper = $this->getMockBuilder('AfsXmlClientDataHelper')->disableOriginalConstructor()->getMock(); //AfsXmlClientDataHelper
|
171 |
+
$mockAFSClientDateHelper
|
172 |
+
->method('get_value')
|
173 |
+
->willReturn("<empty></empty>");
|
174 |
+
|
175 |
+
$mockAFSReplyHelper = $this->getMockBuilder('AfsReplyHelper')->disableOriginalConstructor()->getMock(); //AfsReplyHelper
|
176 |
+
$mockAFSReplyHelper
|
177 |
+
->method('get_clientdata')
|
178 |
+
->willReturn($mockAFSClientDateHelper);
|
179 |
+
|
180 |
+
$mockAFSMetaHelper = $this->getMockBuilder('AfsMetaHelper')->disableOriginalConstructor()->getMock(); //AfsMetaHelper
|
181 |
+
$mockAFSMetaHelper
|
182 |
+
->method('get_total_replies')
|
183 |
+
->willReturn(1); //return one result
|
184 |
+
|
185 |
+
$mockAFSReplysetHelper = $this->getMockBuilder('AfsReplysetHelper')->disableOriginalConstructor()->getMock();//AfsReplysetHelper
|
186 |
+
$mockAFSReplysetHelper
|
187 |
+
->method('get_replies')
|
188 |
+
->willReturn(array($mockAFSReplyHelper)); //return mock meta
|
189 |
+
$mockAFSReplysetHelper
|
190 |
+
->method('get_meta')
|
191 |
+
->willReturn($mockAFSMetaHelper); //return array with one result
|
192 |
+
|
193 |
+
$resultAntidot = new stdClass();
|
194 |
+
$resultAntidot->spellcheck = "suggestion";
|
195 |
+
$resultAntidot->replyset = $mockAFSReplysetHelper;
|
196 |
+
|
197 |
+
$antidotEngine->init();
|
198 |
+
Mage::helper('catalogsearch')->setNoteMessages(array());
|
199 |
+
$result = MDN_Antidot_Test_PHPUnitUtil::callPrivateMethod($antidotEngine, 'formatResult', array($resultAntidot));
|
200 |
+
|
201 |
+
$this->assertTrue($result['spellcheck']);
|
202 |
+
|
203 |
+
/**
|
204 |
+
* 6th test : Spellcheck (MCNX-64 : orchestrated)
|
205 |
+
* an orchestrad search must generate an appropriate message
|
206 |
+
*/
|
207 |
+
$mockAfsMetaHelper = $this->getMockBuilder('AfsMetaHelper')->disableOriginalConstructor()->getMock();
|
208 |
+
$mockAfsMetaHelper->method('get_total_replies')
|
209 |
+
->willReturn(10);
|
210 |
+
|
211 |
+
$mockAFSReplysetHelper = $this->getMockBuilder('AfsReplysetHelper')->disableOriginalConstructor()->getMock(); //AfsReplysetHelper
|
212 |
+
$mockAFSReplysetHelper->method('get_meta')
|
213 |
+
->willReturn($mockAfsMetaHelper);
|
214 |
+
$mockAFSReplysetHelper->method('get_replies')
|
215 |
+
->willReturn(array());
|
216 |
+
|
217 |
+
$resultAntidot = new stdClass();
|
218 |
+
$resultAntidot->isOrchestrated = true;
|
219 |
+
$resultAntidot->spellcheck = "antidot";
|
220 |
+
$resultAntidot->originalQuery = "antiot";
|
221 |
+
$resultAntidot->replyset = $mockAFSReplysetHelper;
|
222 |
+
|
223 |
+
$antidotEngine->init();
|
224 |
+
Mage::helper('catalogsearch')->setNoteMessages(array());
|
225 |
+
$result = MDN_Antidot_Test_PHPUnitUtil::callPrivateMethod($antidotEngine, 'formatResult', array($resultAntidot));
|
226 |
+
|
227 |
+
$messages = Mage::helper('catalogsearch')->getNoteMessages();
|
228 |
+
$this->assertCount(1, $messages);
|
229 |
+
|
230 |
+
//translate expected message here too
|
231 |
+
$expectedMessage = Mage::helper('Antidot')->__("No result found for '{originalQuery}'. Here the results for '{spellcheck}'.");
|
232 |
+
$expectedMessage = str_replace('{spellcheck}', $resultAntidot->spellcheck, $expectedMessage);
|
233 |
+
$expectedMessage = str_replace('{originalQuery}', $resultAntidot->originalQuery, $expectedMessage);
|
234 |
+
$this->assertEquals($expectedMessage, $messages[0]);
|
235 |
+
|
236 |
+
/**
|
237 |
+
* 7th test : Spellcheck (not orchestrated, no result)
|
238 |
+
* an not orchestrad search without result and a spellcheck must generate an appropriate message
|
239 |
+
*/
|
240 |
+
$mockAfsMetaHelper = $this->getMockBuilder('AfsMetaHelper')->disableOriginalConstructor()->getMock();
|
241 |
+
$mockAfsMetaHelper->method('get_total_replies')
|
242 |
+
->willReturn(0);
|
243 |
+
|
244 |
+
$mockAFSReplysetHelper = $this->getMockBuilder('AfsReplysetHelper')->disableOriginalConstructor()->getMock(); //AfsReplysetHelper
|
245 |
+
$mockAFSReplysetHelper->method('get_meta')
|
246 |
+
->willReturn($mockAfsMetaHelper);
|
247 |
+
$mockAFSReplysetHelper->method('get_replies')
|
248 |
+
->willReturn(array());
|
249 |
+
|
250 |
+
$resultAntidot = new stdClass();
|
251 |
+
$resultAntidot->isOrchestrated = false;
|
252 |
+
$resultAntidot->spellcheck = "antidot";
|
253 |
+
$resultAntidot->originalQuery = "antiot";
|
254 |
+
$resultAntidot->replyset = $mockAFSReplysetHelper;
|
255 |
+
|
256 |
+
|
257 |
+
$antidotEngine->init();
|
258 |
+
Mage::helper('catalogsearch')->setNoteMessages(array());
|
259 |
+
$result = MDN_Antidot_Test_PHPUnitUtil::callPrivateMethod($antidotEngine, 'formatResult', array($resultAntidot));
|
260 |
+
|
261 |
+
$messages = Mage::helper('catalogsearch')->getNoteMessages();
|
262 |
+
|
263 |
+
$this->assertCount(1, $messages);
|
264 |
+
|
265 |
+
//translate expected message here too
|
266 |
+
$expectedMessage = Mage::helper('Antidot')->__('Did you mean {spellcheck} ?');
|
267 |
+
$link = '<a href="'.Mage::helper('catalogsearch')->getResultUrl($resultAntidot->spellcheck).'">'.$resultAntidot->spellcheck.'</a>';
|
268 |
+
$expectedMessage = str_replace('{spellcheck}', $link, $expectedMessage);
|
269 |
+
$this->assertEquals($expectedMessage, $messages[0]);
|
270 |
+
|
271 |
+
|
272 |
}
|
273 |
|
274 |
}
|
app/code/community/MDN/Antidot/Test/Model/Resource/Engine/Antidot/fixtures/testFormatResult.yaml
CHANGED
@@ -1,2 +1,3 @@
|
|
1 |
config:
|
2 |
default/antidot/promote/redirect: always
|
|
1 |
config:
|
2 |
default/antidot/promote/redirect: always
|
3 |
+
default/antidot/engine/redirect_product: 2
|
app/code/community/MDN/Antidot/Test/Model/System/Config/Facet.php
CHANGED
@@ -9,6 +9,7 @@ class MDN_Antidot_Test_Model_System_Config_Facet extends EcomDev_PHPUnit_Test_Ca
|
|
9 |
* Test toOptionArray method
|
10 |
*
|
11 |
* MCNX-217 : translation of facets labels
|
|
|
12 |
* @loadFixture
|
13 |
*/
|
14 |
public function testToOptionArray()
|
9 |
* Test toOptionArray method
|
10 |
*
|
11 |
* MCNX-217 : translation of facets labels
|
12 |
+
* @test
|
13 |
* @loadFixture
|
14 |
*/
|
15 |
public function testToOptionArray()
|
app/code/community/MDN/Antidot/Test/Model/System/Config/Source/Acpengine.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class MDN_Antidot_Test_Model_System_Config_Source_Acpengine extends EcomDev_PHPUnit_Test_Case
|
5 |
+
{
|
6 |
+
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Test toOptionArray method
|
10 |
+
*
|
11 |
+
* MCNX-249 : synchronise dropdownlist between AFSTore config and Catalog Seach config
|
12 |
+
*/
|
13 |
+
public function testToOptionArray()
|
14 |
+
{
|
15 |
+
|
16 |
+
/** @var $configSort MDN_Antidot_Model_System_Config_Source_Engine */
|
17 |
+
$configSourceEngine = Mage::getModel('Antidot/system_config_source_acpengine');
|
18 |
+
|
19 |
+
$values = $configSourceEngine->toOptionArray();
|
20 |
+
|
21 |
+
$this->assertEquals(2 , count($values));
|
22 |
+
|
23 |
+
}
|
24 |
+
|
25 |
+
}
|
app/code/community/MDN/Antidot/Test/Model/System/Config/Source/Redirect.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class MDN_Antidot_Test_Model_System_Config_Source_Redirect extends EcomDev_PHPUnit_Test_Case
|
5 |
+
{
|
6 |
+
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Test toOptionArray method
|
10 |
+
*
|
11 |
+
* MCNX-260
|
12 |
+
*/
|
13 |
+
public function testToOptionArray()
|
14 |
+
{
|
15 |
+
|
16 |
+
/** @var $configSort MDN_Antidot_Model_System_Config_Source_Engine */
|
17 |
+
$configSourceEngine = Mage::getModel('Antidot/system_config_source_redirect');
|
18 |
+
|
19 |
+
$values = $configSourceEngine->toOptionArray();
|
20 |
+
|
21 |
+
$this->assertEquals(3 , count($values));
|
22 |
+
|
23 |
+
}
|
24 |
+
|
25 |
+
}
|
app/code/community/MDN/Antidot/Test/Model/Transport/Http.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class MDN_Antidot_Test_Model_Transport_Http 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 |
+
/**
|
14 |
+
* MCNX-68 : Replace sftp upload by PaF WS Upload
|
15 |
+
*
|
16 |
+
* @test
|
17 |
+
* @loadFixture
|
18 |
+
*/
|
19 |
+
public function testSend() {
|
20 |
+
|
21 |
+
require_once("antidot/COMMON/php-SAI/lib/CurlStub.php");
|
22 |
+
|
23 |
+
/** @var $observer MDN_Antidot_Model_Transport_Http */
|
24 |
+
$transport = Mage::getModel('Antidot/transport_http');
|
25 |
+
|
26 |
+
$file = "/tmp/antidot/unittest_send.xml";
|
27 |
+
file_put_contents($file,"<categories xmlns=\"http://ref.antidot.net/store/afs#\"></categories>");
|
28 |
+
|
29 |
+
$exportModel = Mage::getModel('Antidot/export_product');
|
30 |
+
$curlConnector = new SAI_CurlStub();
|
31 |
+
//Set response for upload
|
32 |
+
$pafLiveResponse = <<<JSON
|
33 |
+
{"x:type":"ws.response","query":{"x:type":"ws.response.query","locale":"*","parameters":{"x:type":"collection","x:values":[]},"properties":{"x:type":"x:dynamic"}},"result":{"x:type":"PushPafContentReply","jobId":3641,"started":true,"uuid":"e4fe5bfa-dcc7-409d-b688-288cc62e314e"}}
|
34 |
+
JSON;
|
35 |
+
$curlConnector->setResponse($pafLiveResponse);
|
36 |
+
|
37 |
+
$result = $transport->send($file, $exportModel, $curlConnector);
|
38 |
+
|
39 |
+
$this->assertNull($result);
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
}
|
app/code/community/MDN/Antidot/Test/Model/Transport/fixtures/testSend.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
config:
|
2 |
+
default/antidot/general/owner: JETPULP
|
3 |
+
default/antidot/web_service/service: 1234
|
4 |
+
default/antidot/web_service/status: sandbox
|
5 |
+
default/antidot/ftp/upload_type: http
|
6 |
+
default/antidot/ftp/username: jetpulp
|
7 |
+
default/antidot/ftp/passwd: changeit
|
app/code/community/MDN/Antidot/controllers/{Admin → Adminhtml/Antidot}/PushController.php
RENAMED
@@ -1,67 +1,76 @@
|
|
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
|
17 |
-
{
|
18 |
-
|
19 |
-
/**
|
20 |
-
*
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_Adminhtml_Antidot_PushController extends Mage_Adminhtml_Controller_Action
|
17 |
+
{
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Is the controller allowed (compatibility patch SUPEE-6285)
|
21 |
+
* @return mixed
|
22 |
+
*/
|
23 |
+
protected function _isAllowed()
|
24 |
+
{
|
25 |
+
return Mage::getSingleton('admin/session')->isAllowed('system/config/antidot');
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Generate the category file, call from back office
|
30 |
+
*/
|
31 |
+
public function categoryAction()
|
32 |
+
{
|
33 |
+
try
|
34 |
+
{
|
35 |
+
if (Mage::getModel('Antidot/observer')->categoriesFullExport('UI')) {
|
36 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(
|
37 |
+
Mage::helper('Antidot')->__('Categories exported')
|
38 |
+
);
|
39 |
+
} else {
|
40 |
+
Mage::getSingleton('adminhtml/session')->addWarning(
|
41 |
+
Mage::helper('Antidot')->__('No Category to export')
|
42 |
+
);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
catch(Exception $ex) {
|
46 |
+
Mage::getSingleton('adminhtml/session')->addError(
|
47 |
+
Mage::helper('Antidot')->__('An error occured : %s', $ex->getMessage())
|
48 |
+
);
|
49 |
+
}
|
50 |
+
$this->_redirectReferer();
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Generate the catalog file, call from back office
|
55 |
+
*/
|
56 |
+
public function productAction()
|
57 |
+
{
|
58 |
+
try {
|
59 |
+
if (Mage::getModel('Antidot/observer')->catalogFullExport('UI')) {
|
60 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(
|
61 |
+
Mage::helper('Antidot')->__('Catalog exported')
|
62 |
+
);
|
63 |
+
} else {
|
64 |
+
Mage::getSingleton('adminhtml/session')->addWarning(
|
65 |
+
Mage::helper('Antidot')->__('No Product to export')
|
66 |
+
);
|
67 |
+
}
|
68 |
+
}
|
69 |
+
catch(Exception $ex) {
|
70 |
+
Mage::getSingleton('adminhtml/session')->addError(
|
71 |
+
Mage::helper('Antidot')->__('An error occured : %s', $ex->getMessage())
|
72 |
+
);
|
73 |
+
}
|
74 |
+
$this->_redirectReferer();
|
75 |
+
}
|
76 |
+
}
|
app/code/community/MDN/Antidot/etc/adminhtml.xml
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<acl>
|
4 |
+
<resources>
|
5 |
+
<admin>
|
6 |
+
<children>
|
7 |
+
<system>
|
8 |
+
<children>
|
9 |
+
<config>
|
10 |
+
<children>
|
11 |
+
<antidot module="Antidot">
|
12 |
+
<title>Antidot</title>
|
13 |
+
</antidot>
|
14 |
+
</children>
|
15 |
+
</config>
|
16 |
+
</children>
|
17 |
+
</system>
|
18 |
+
</children>
|
19 |
+
</admin>
|
20 |
+
</resources>
|
21 |
+
</acl>
|
22 |
+
</config>
|
app/code/community/MDN/Antidot/etc/config.xml
CHANGED
@@ -18,7 +18,7 @@
|
|
18 |
</crontab>
|
19 |
<modules>
|
20 |
<MDN_Antidot>
|
21 |
-
<version>1.2.
|
22 |
</MDN_Antidot>
|
23 |
</modules>
|
24 |
<global>
|
@@ -133,25 +133,6 @@
|
|
133 |
</Antidot>
|
134 |
</updates>
|
135 |
</layout>
|
136 |
-
<acl>
|
137 |
-
<resources>
|
138 |
-
<admin>
|
139 |
-
<children>
|
140 |
-
<system>
|
141 |
-
<children>
|
142 |
-
<config>
|
143 |
-
<children>
|
144 |
-
<antidot module="Antidot">
|
145 |
-
<title>Antidot</title>
|
146 |
-
</antidot>
|
147 |
-
</children>
|
148 |
-
</config>
|
149 |
-
</children>
|
150 |
-
</system>
|
151 |
-
</children>
|
152 |
-
</admin>
|
153 |
-
</resources>
|
154 |
-
</acl>
|
155 |
</adminhtml>
|
156 |
|
157 |
<frontend>
|
@@ -185,23 +166,28 @@
|
|
185 |
|
186 |
<admin>
|
187 |
<routers>
|
188 |
-
<
|
189 |
-
<use>admin</use>
|
190 |
<args>
|
191 |
-
<
|
192 |
-
|
|
|
193 |
</args>
|
194 |
-
</
|
195 |
</routers>
|
196 |
</admin>
|
197 |
|
198 |
<default>
|
199 |
<antidot>
|
|
|
|
|
|
|
200 |
<web_service>
|
201 |
<status>rc</status>
|
202 |
</web_service>
|
203 |
<engine>
|
204 |
<spellcheck>Did you mean {spellcheck} ?</spellcheck>
|
|
|
|
|
205 |
<price_facet>From {min}€ to {max}€</price_facet>
|
206 |
<feed_catalog>1</feed_catalog>
|
207 |
<facet_multiple>0</facet_multiple>
|
18 |
</crontab>
|
19 |
<modules>
|
20 |
<MDN_Antidot>
|
21 |
+
<version>1.2.2</version>
|
22 |
</MDN_Antidot>
|
23 |
</modules>
|
24 |
<global>
|
133 |
</Antidot>
|
134 |
</updates>
|
135 |
</layout>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
</adminhtml>
|
137 |
|
138 |
<frontend>
|
166 |
|
167 |
<admin>
|
168 |
<routers>
|
169 |
+
<adminhtml>
|
|
|
170 |
<args>
|
171 |
+
<modules>
|
172 |
+
<antidot before="Mage_Adminhtml">MDN_Antidot_Adminhtml</antidot>
|
173 |
+
</modules>
|
174 |
</args>
|
175 |
+
</adminhtml>
|
176 |
</routers>
|
177 |
</admin>
|
178 |
|
179 |
<default>
|
180 |
<antidot>
|
181 |
+
<ftp>
|
182 |
+
<upload_type>http</upload_type>
|
183 |
+
</ftp>
|
184 |
<web_service>
|
185 |
<status>rc</status>
|
186 |
</web_service>
|
187 |
<engine>
|
188 |
<spellcheck>Did you mean {spellcheck} ?</spellcheck>
|
189 |
+
<spellcheck_query>No result found for '{originalQuery}'. Here the results for '{spellcheck}'.</spellcheck_query>
|
190 |
+
<redirect_product>1</redirect_product>
|
191 |
<price_facet>From {min}€ to {max}€</price_facet>
|
192 |
<feed_catalog>1</feed_catalog>
|
193 |
<facet_multiple>0</facet_multiple>
|
app/code/community/MDN/Antidot/etc/system.xml
CHANGED
@@ -72,44 +72,72 @@
|
|
72 |
<show_in_website>0</show_in_website>
|
73 |
<show_in_store>0</show_in_store>
|
74 |
<fields>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
<host translate="label">
|
76 |
<label>Host</label>
|
77 |
<frontend_type>text</frontend_type>
|
78 |
-
<sort_order>
|
79 |
<show_in_default>1</show_in_default>
|
80 |
<comment>Host to connect to Antidot to push files</comment>
|
|
|
81 |
</host>
|
82 |
<directory translate="label">
|
83 |
<label>Upload Directory</label>
|
84 |
<frontend_type>text</frontend_type>
|
85 |
-
<sort_order>
|
86 |
<show_in_default>1</show_in_default>
|
87 |
<comment>Directory to upload files</comment>
|
|
|
88 |
</directory>
|
89 |
<login translate="label">
|
90 |
<label>Login</label>
|
91 |
<frontend_type>text</frontend_type>
|
92 |
-
<sort_order>
|
93 |
<show_in_default>1</show_in_default>
|
94 |
<comment>Your Antidot FTP Login</comment>
|
|
|
95 |
</login>
|
96 |
<password translate="label">
|
97 |
<label>Password</label>
|
98 |
<frontend_type>password</frontend_type>
|
99 |
-
<sort_order>
|
100 |
<show_in_default>1</show_in_default>
|
101 |
<comment>Your Antidot FTP Password</comment>
|
|
|
102 |
</password>
|
103 |
<working_directory translate="label">
|
104 |
<label>Working directory</label>
|
105 |
<frontend_type>text</frontend_type>
|
106 |
-
<sort_order>
|
107 |
<show_in_default>1</show_in_default>
|
108 |
<comment>Local directory to use to generate xml files. If empty, /tmp will be used</comment>
|
|
|
109 |
</working_directory>
|
110 |
</fields>
|
111 |
</ftp>
|
112 |
-
|
113 |
<web_service>
|
114 |
<label>Web services</label>
|
115 |
<frontend_type>text</frontend_type>
|
@@ -136,7 +164,7 @@
|
|
136 |
<label>Status</label>
|
137 |
<frontend_type>select</frontend_type>
|
138 |
<source_model>Antidot/System_Config_WSStatus</source_model>
|
139 |
-
<sort_order>
|
140 |
<show_in_default>1</show_in_default>
|
141 |
<comment>Web service status. Go live only with 'stable' status on your production site</comment>
|
142 |
</status>
|
@@ -543,6 +571,25 @@
|
|
543 |
<show_in_store>1</show_in_store>
|
544 |
<comment>Text to display when a spellcheck suggestion is available. Use {spellcheck} keyword to include AFS@Store suggestion in your text</comment>
|
545 |
</spellcheck>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
546 |
<facets translate="label">
|
547 |
<label>Facets</label>
|
548 |
<frontend_model>Antidot/System_Config_Form_Field_Array_Facet</frontend_model>
|
72 |
<show_in_website>0</show_in_website>
|
73 |
<show_in_store>0</show_in_store>
|
74 |
<fields>
|
75 |
+
<upload_type translate="label">
|
76 |
+
<label>Upload Type</label>
|
77 |
+
<frontend_type>select</frontend_type>
|
78 |
+
<source_model>Antidot/system_config_exportType</source_model>
|
79 |
+
<sort_order>1</sort_order>
|
80 |
+
<show_in_default>1</show_in_default>
|
81 |
+
</upload_type>
|
82 |
+
<username translate="label">
|
83 |
+
<label>AFS@Store BO Login</label>
|
84 |
+
<frontend_type>text</frontend_type>
|
85 |
+
<sort_order>2</sort_order>
|
86 |
+
<show_in_default>1</show_in_default>
|
87 |
+
<comment></comment>
|
88 |
+
<depends><upload_type>http</upload_type></depends>
|
89 |
+
</username>
|
90 |
+
<passwd translate="label">
|
91 |
+
<label>AFS@Store BO Password</label>
|
92 |
+
<frontend_type>password</frontend_type>
|
93 |
+
<sort_order>3</sort_order>
|
94 |
+
<show_in_default>1</show_in_default>
|
95 |
+
<comment></comment>
|
96 |
+
<depends><upload_type>http</upload_type></depends>
|
97 |
+
</passwd>
|
98 |
<host translate="label">
|
99 |
<label>Host</label>
|
100 |
<frontend_type>text</frontend_type>
|
101 |
+
<sort_order>2</sort_order>
|
102 |
<show_in_default>1</show_in_default>
|
103 |
<comment>Host to connect to Antidot to push files</comment>
|
104 |
+
<depends><upload_type>ftp</upload_type></depends>
|
105 |
</host>
|
106 |
<directory translate="label">
|
107 |
<label>Upload Directory</label>
|
108 |
<frontend_type>text</frontend_type>
|
109 |
+
<sort_order>3</sort_order>
|
110 |
<show_in_default>1</show_in_default>
|
111 |
<comment>Directory to upload files</comment>
|
112 |
+
<depends><upload_type>ftp</upload_type></depends>
|
113 |
</directory>
|
114 |
<login translate="label">
|
115 |
<label>Login</label>
|
116 |
<frontend_type>text</frontend_type>
|
117 |
+
<sort_order>4</sort_order>
|
118 |
<show_in_default>1</show_in_default>
|
119 |
<comment>Your Antidot FTP Login</comment>
|
120 |
+
<depends><upload_type>ftp</upload_type></depends>
|
121 |
</login>
|
122 |
<password translate="label">
|
123 |
<label>Password</label>
|
124 |
<frontend_type>password</frontend_type>
|
125 |
+
<sort_order>5</sort_order>
|
126 |
<show_in_default>1</show_in_default>
|
127 |
<comment>Your Antidot FTP Password</comment>
|
128 |
+
<depends><upload_type>ftp</upload_type></depends>
|
129 |
</password>
|
130 |
<working_directory translate="label">
|
131 |
<label>Working directory</label>
|
132 |
<frontend_type>text</frontend_type>
|
133 |
+
<sort_order>6</sort_order>
|
134 |
<show_in_default>1</show_in_default>
|
135 |
<comment>Local directory to use to generate xml files. If empty, /tmp will be used</comment>
|
136 |
+
<depends><upload_type>ftp</upload_type></depends>
|
137 |
</working_directory>
|
138 |
</fields>
|
139 |
</ftp>
|
140 |
+
|
141 |
<web_service>
|
142 |
<label>Web services</label>
|
143 |
<frontend_type>text</frontend_type>
|
164 |
<label>Status</label>
|
165 |
<frontend_type>select</frontend_type>
|
166 |
<source_model>Antidot/System_Config_WSStatus</source_model>
|
167 |
+
<sort_order>5</sort_order>
|
168 |
<show_in_default>1</show_in_default>
|
169 |
<comment>Web service status. Go live only with 'stable' status on your production site</comment>
|
170 |
</status>
|
571 |
<show_in_store>1</show_in_store>
|
572 |
<comment>Text to display when a spellcheck suggestion is available. Use {spellcheck} keyword to include AFS@Store suggestion in your text</comment>
|
573 |
</spellcheck>
|
574 |
+
<spellcheck_query translate="label">
|
575 |
+
<label>Query Spellcheck sentence</label>
|
576 |
+
<frontend_type>text</frontend_type>
|
577 |
+
<sort_order>46</sort_order>
|
578 |
+
<show_in_default>1</show_in_default>
|
579 |
+
<show_in_website>1</show_in_website>
|
580 |
+
<show_in_store>1</show_in_store>
|
581 |
+
<comment>Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality</comment>
|
582 |
+
</spellcheck_query>
|
583 |
+
<redirect_product translate="label">
|
584 |
+
<label>Redirect to the product page</label>
|
585 |
+
<frontend_type>select</frontend_type>
|
586 |
+
<source_model>Antidot/system_config_source_redirect</source_model>
|
587 |
+
<sort_order>47</sort_order>
|
588 |
+
<show_in_default>1</show_in_default>
|
589 |
+
<show_in_website>1</show_in_website>
|
590 |
+
<show_in_store>1</show_in_store>
|
591 |
+
<comment>In case there's only one result : redirect to product page</comment>
|
592 |
+
</redirect_product>
|
593 |
<facets translate="label">
|
594 |
<label>Facets</label>
|
595 |
<frontend_model>Antidot/System_Config_Form_Field_Array_Facet</frontend_model>
|
app/code/community/MDN/Antidot/sql/Antidot_setup/mysql4-upgrade-1.2.1-1.2.2.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
/**
|
8 |
+
* have to load config in setup because it is not yet done by magento
|
9 |
+
*/
|
10 |
+
$config = Mage::getConfig();
|
11 |
+
$dbConfig = Mage::getResourceModel('core/config');
|
12 |
+
$dbConfig->loadToXml($config);
|
13 |
+
|
14 |
+
$ftpConfig = Mage::getStoreConfig('antidot/ftp');
|
15 |
+
/**
|
16 |
+
* if ftp config is done, it means we upgrade an installed module,
|
17 |
+
* then keep ftp upload_type
|
18 |
+
*/
|
19 |
+
if ($ftpConfig && is_array($ftpConfig) && count($ftpConfig)>1) {
|
20 |
+
$config = Mage::getSingleton('core/config');
|
21 |
+
$config->saveConfig('antidot/ftp/upload_type', MDN_Antidot_Model_Transport::TRANS_FTP, 'default', 0);
|
22 |
+
}
|
23 |
+
|
24 |
+
$installer->endSetup();
|
app/design/frontend/base/default/template/antidot/catalog/layer/category.phtml
CHANGED
@@ -46,12 +46,13 @@ if(!function_exists('getItems')) {
|
|
46 |
return $listItems;
|
47 |
}
|
48 |
|
49 |
-
function writeItems($items, $
|
50 |
{
|
51 |
-
$tree = '<ul '.(
|
52 |
$node = '<li class="%s"><a %s href="%s"> %s (%d)%s</a>';
|
53 |
|
54 |
$nodes = '';
|
|
|
55 |
foreach ($items as $item) {
|
56 |
if ($item->getCount() > 0) {
|
57 |
|
@@ -60,7 +61,11 @@ if(!function_exists('getItems')) {
|
|
60 |
|
61 |
$selected = $item->isSelected() || in_array($nodeId, $selectedNode) ? 'checked="checked"': '';
|
62 |
$class = $selected !== '' ? ' collapsibleListClosed' : '';
|
63 |
-
|
|
|
|
|
|
|
|
|
64 |
|
65 |
$nodes.= sprintf($node, $class, $selected, $item->getUrl(), $item->getLabel(), $item->getCount(), $child);
|
66 |
}
|
46 |
return $listItems;
|
47 |
}
|
48 |
|
49 |
+
function writeItems($items, $level = 0, $selectedNode = array())
|
50 |
{
|
51 |
+
$tree = '<ul '.($level==0 ? 'class="collapsibleList"' : '').'>%s</ul>';
|
52 |
$node = '<li class="%s"><a %s href="%s"> %s (%d)%s</a>';
|
53 |
|
54 |
$nodes = '';
|
55 |
+
$nbItems = count($items);
|
56 |
foreach ($items as $item) {
|
57 |
if ($item->getCount() > 0) {
|
58 |
|
61 |
|
62 |
$selected = $item->isSelected() || in_array($nodeId, $selectedNode) ? 'checked="checked"': '';
|
63 |
$class = $selected !== '' ? ' collapsibleListClosed' : '';
|
64 |
+
/* MCNX-94 : Expand first level of tree facet if there's only one item : */
|
65 |
+
if ($level==0 && $nbItems==1) {
|
66 |
+
$class = 'collapsibleListClosed';
|
67 |
+
}
|
68 |
+
$child = $item->getChild() ? writeItems($item->getChild(), $level+1, $selectedNode) : '';
|
69 |
|
70 |
$nodes.= sprintf($node, $class, $selected, $item->getUrl(), $item->getLabel(), $item->getCount(), $child);
|
71 |
}
|
app/locale/de_AT/MDN_Antidot.csv
CHANGED
@@ -144,4 +144,13 @@ Price,Preis
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","Die php curl extension nicht https-Protokoll unterstützen, müssen libcurl auf Ihrem System aktualisiert werden , sonst werden die Exportdateien werden nicht hochgeladen werden"
|
148 |
+
"Upload Type","hochladen Typ"
|
149 |
+
"Query Spellcheck sentence","Query-Rechtschreibprüfung Satz"
|
150 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidadText angezeigt werden soll, wenn ein Rechtschreibprüfung Abfrage durchgeführt wurde. Verwenden {originalQuery} und {spellcheck} Keyword Rechtschreibprüfung, die ursprüngliche Abfrage und die Rechtschreibprüfung in Ihrem Text enthalten, leer lassen, um die Funktion zu deaktivieren"
|
151 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","Kein Ergebnis für {originalQuery} gefunden. Hier die Ergebnisse für die Rechtschreibprüfung '{spellcheck}'."
|
152 |
+
"Redirect to the product page","Umleitung auf die Produktseite"
|
153 |
+
"In case there's only one result : redirect to product page","Für den Fall, es gibt nur ein Ergebnis: redirect zur Produktseite"
|
154 |
+
"Always","Immer"
|
155 |
+
"Unless there's a spellcheck","Es sei denn, es gibt eine Rechtschreibprüfung"
|
156 |
+
"Never","Nie"
|
app/locale/de_CH/MDN_Antidot.csv
CHANGED
@@ -144,4 +144,13 @@ Price,Preis
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","Die php curl extension nicht https-Protokoll unterstützen, müssen libcurl auf Ihrem System aktualisiert werden , sonst werden die Exportdateien werden nicht hochgeladen werden"
|
148 |
+
"Upload Type","hochladen Typ"
|
149 |
+
"Query Spellcheck sentence","Query-Rechtschreibprüfung Satz"
|
150 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidadText angezeigt werden soll, wenn ein Rechtschreibprüfung Abfrage durchgeführt wurde. Verwenden {originalQuery} und {spellcheck} Keyword Rechtschreibprüfung, die ursprüngliche Abfrage und die Rechtschreibprüfung in Ihrem Text enthalten, leer lassen, um die Funktion zu deaktivieren"
|
151 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","Kein Ergebnis für {originalQuery} gefunden. Hier die Ergebnisse für die Rechtschreibprüfung '{spellcheck}'."
|
152 |
+
"Redirect to the product page","Umleitung auf die Produktseite"
|
153 |
+
"In case there's only one result : redirect to product page","Für den Fall, es gibt nur ein Ergebnis: redirect zur Produktseite"
|
154 |
+
"Always","Immer"
|
155 |
+
"Unless there's a spellcheck","Es sei denn, es gibt eine Rechtschreibprüfung"
|
156 |
+
"Never","Nie"
|
app/locale/de_DE/MDN_Antidot.csv
CHANGED
@@ -144,4 +144,13 @@ Price,Preis
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https protocol, libcurl must be upgraded on your system, otherwise the export files won't be uploaded","Die php curl extension nicht https-Protokoll unterstützen, müssen libcurl auf Ihrem System aktualisiert werden , sonst werden die Exportdateien werden nicht hochgeladen werden"
|
148 |
+
"Upload Type","hochladen Typ"
|
149 |
+
"Query Spellcheck sentence","Query-Rechtschreibprüfung Satz"
|
150 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidadText angezeigt werden soll, wenn ein Rechtschreibprüfung Abfrage durchgeführt wurde. Verwenden {originalQuery} und {spellcheck} Keyword Rechtschreibprüfung, die ursprüngliche Abfrage und die Rechtschreibprüfung in Ihrem Text enthalten, leer lassen, um die Funktion zu deaktivieren"
|
151 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","Kein Ergebnis für {originalQuery} gefunden. Hier die Ergebnisse für die Rechtschreibprüfung '{spellcheck}'."
|
152 |
+
"Redirect to the product page","Umleitung auf die Produktseite"
|
153 |
+
"In case there's only one result : redirect to product page","Für den Fall, es gibt nur ein Ergebnis: redirect zur Produktseite"
|
154 |
+
"Always","Immer"
|
155 |
+
"Unless there's a spellcheck","Es sei denn, es gibt eine Rechtschreibprüfung"
|
156 |
+
"Never","Nie"
|
app/locale/es_AR/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_CL/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_CO/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_CR/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_ES/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_MX/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_PA/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_PE/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/es_VE/MDN_Antidot.csv
CHANGED
@@ -143,4 +143,13 @@ Price,Precio
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https , libcurl se debe actualizar en su sistema , de lo contrario no se subirán los archivos de exportación"
|
147 |
+
"Upload Type","Subir Tipo"
|
148 |
+
"Query Spellcheck sentence","Frase de consulta Spellcheck"
|
149 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalitéTexto a mostrar cuando se ha realizado una consulta basada corrección ortográfica. Use {originalQuery} y {spellcheck} corrección ortográfica palabra clave para incluir la consulta original y el corrector ortográfico en su texto, deje vacío para deshabilitar la funcionalidad"
|
150 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","No hay resultados para {originalQuery} originalQuery resultado. Aquí los resultados de la revisión ortográfica '{spellcheck}'."
|
151 |
+
"Redirect to the product page","Redirigir a la página del producto"
|
152 |
+
"In case there's only one result : redirect to product page","Hay en el cuadro de un solo resultado: redirigir a la página del producto"
|
153 |
+
"Always","Siempre"
|
154 |
+
"Unless there's a spellcheck","Menos Hay una corrección ortográfica"
|
155 |
+
"Never","Nunca"
|
app/locale/fr_CA/MDN_Antidot.csv
CHANGED
@@ -144,4 +144,13 @@ Price,Prix
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https, libcurl doit être mis à jour sur le système, sinon l'upload des fichiers d'export ne se fera pas"
|
148 |
+
"Upload Type","Type d'envoi"
|
149 |
+
"Redirect to the product page","Rediriger vers la page prdouit"
|
150 |
+
"In case there's only one result : redirect to product page","Dans le cas où il n'y a qu'un seul résultat : rediriger vers la page produit"
|
151 |
+
"Always","Toujours"
|
152 |
+
"Unless there's a spellcheck","Sauf si il y a une suggestion orthographique"
|
153 |
+
"Never","Jamais""Query Spellcheck sentence","Phrase de recherche basée sur la suggestion orthographique"
|
154 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalité"
|
155 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","Aucun résultat trouvé à partir de votre recherche initiale '{originalQuery}'. Voici les résultats pour la recherche '{spellcheck}'."
|
156 |
+
|
app/locale/fr_FR/MDN_Antidot.csv
CHANGED
@@ -144,4 +144,13 @@ Price,Prix
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 https 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 https, libcurl doit être mis à jour sur le système, sinon l'upload des fichiers d'export ne se fera pas"
|
148 |
+
"Upload Type","Type d'envoi"
|
149 |
+
"Query Spellcheck sentence","Phrase de recherche basée sur la suggestion orthographique"
|
150 |
+
"Text to display when a spellcheck based query has been made. Use {originalQuery} and {spellcheck} keyword to include the original query and the spellcheck in your text, leave empty to disable the functionality","Texte à afficher quand une recherche basée sur une suggestion orthographique a été faite. Utilisez {originalQuery} et {spellcheck} pour inclure la recherche original et la correction dans votre texte, laissez vide pour désactiver la fonctionnalité"
|
151 |
+
"No result found for '{originalQuery}'. Here the results for '{spellcheck}'.","Aucun résultat trouvé à partir de votre recherche initiale '{originalQuery}'. Voici les résultats pour la recherche '{spellcheck}'."
|
152 |
+
"Redirect to the product page","Rediriger vers la page prdouit"
|
153 |
+
"In case there's only one result : redirect to product page","Dans le cas où il n'y a qu'un seul résultat : rediriger vers la page produit"
|
154 |
+
"Always","Toujours"
|
155 |
+
"Unless there's a spellcheck","Sauf si il y a une suggestion orthographique"
|
156 |
+
"Never","Jamais"
|
lib/antidot/AFS/SEARCH/TEST/facetHelperTest.php
CHANGED
@@ -56,7 +56,7 @@ class FacetHelperTest extends PHPUnit_Framework_TestCase
|
|
56 |
$this->assertEquals(false, $helper->is_sticky());
|
57 |
|
58 |
$labels = $helper->get_labels();
|
59 |
-
$this->assertEquals(array("
|
60 |
}
|
61 |
|
62 |
public function testRetrieveLabelsWhenNoLabelsExists() {
|
56 |
$this->assertEquals(false, $helper->is_sticky());
|
57 |
|
58 |
$labels = $helper->get_labels();
|
59 |
+
$this->assertEquals(array("es" => "Faceta booleana", "fr" => "Facette booléenne", "Boolean facet"), $labels);
|
60 |
}
|
61 |
|
62 |
public function testRetrieveLabelsWhenNoLabelsExists() {
|
lib/antidot/AFS/SEARCH/TEST/headerHelperTest.php
CHANGED
@@ -1,702 +1,81 @@
|
|
1 |
<?php ob_start();
|
2 |
-
require_once "AFS/SEARCH/
|
3 |
-
require_once "AFS/SEARCH/afs_query.php";
|
4 |
-
require_once "AFS/SEARCH/afs_response_helper.php";
|
5 |
|
6 |
-
class
|
7 |
{
|
8 |
-
public function
|
9 |
{
|
10 |
$input = json_decode('{
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
],
|
20 |
-
"items": 67
|
21 |
-
},
|
22 |
-
{
|
23 |
-
"key": "true",
|
24 |
-
"labels": [
|
25 |
-
{
|
26 |
-
"label": "GOOD"
|
27 |
-
}
|
28 |
-
],
|
29 |
-
"items": 133
|
30 |
-
}
|
31 |
-
],
|
32 |
-
"layout": "TREE",
|
33 |
-
"type": "BOOL",
|
34 |
-
"id": "BOOL",
|
35 |
-
"labels": [
|
36 |
-
{
|
37 |
-
"lang": "ES",
|
38 |
-
"region": "ES",
|
39 |
-
"label": "Faceta booleana"
|
40 |
-
},
|
41 |
-
{
|
42 |
-
"lang": "FR",
|
43 |
-
"label": "Facette booléenne"
|
44 |
-
},
|
45 |
-
{
|
46 |
-
"label": "Boolean facet"
|
47 |
-
}
|
48 |
-
] }');
|
49 |
-
|
50 |
-
$config = new AfsHelperConfiguration();
|
51 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
52 |
-
$this->assertEquals($helper->get_label(), "Faceta booleana");
|
53 |
-
$this->assertEquals('BOOL', $helper->get_id());
|
54 |
-
$this->assertEquals(AfsFacetType::BOOL_TYPE, $helper->get_type());
|
55 |
-
$this->assertEquals(AfsFacetLayout::TREE, $helper->get_layout());
|
56 |
-
$this->assertEquals(false, $helper->is_sticky());
|
57 |
-
|
58 |
-
$labels = $helper->get_labels();
|
59 |
-
$this->assertEquals(array("es" => "Faceta booleana", "fr" => "Facette booléenne", "Boolean facet"), $labels);
|
60 |
-
}
|
61 |
-
|
62 |
-
public function testRetrieveLabelsWhenNoLabelsExists() {
|
63 |
-
$input = json_decode('{
|
64 |
-
"afs:t": "FacetTree",
|
65 |
-
"node": [
|
66 |
-
{
|
67 |
-
"key": "false",
|
68 |
-
"labels": [
|
69 |
-
{
|
70 |
-
"label": "BAD"
|
71 |
-
}
|
72 |
-
],
|
73 |
-
"items": 67
|
74 |
-
}
|
75 |
-
],
|
76 |
-
"layout": "TREE",
|
77 |
-
"type": "BOOL",
|
78 |
-
"id": "FOO",
|
79 |
-
"sticky": "true" }');
|
80 |
-
|
81 |
-
$config = new AfsHelperConfiguration();
|
82 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
83 |
-
$labels = $helper->get_labels();
|
84 |
-
$this->assertEquals(array("FOO"), $labels);
|
85 |
-
$this->assertEquals("FOO", $helper->get_label());
|
86 |
-
}
|
87 |
-
|
88 |
-
public function testRetrieveTags() {
|
89 |
-
$input = json_decode('{
|
90 |
-
"afs:t": "FacetTree",
|
91 |
-
"tags": "tag1 tag2 tag3",
|
92 |
-
"node": [
|
93 |
-
{
|
94 |
-
"key": "false",
|
95 |
-
"labels": [
|
96 |
-
{
|
97 |
-
"label": "BAD"
|
98 |
-
}
|
99 |
-
],
|
100 |
-
"items": 67
|
101 |
-
}
|
102 |
-
],
|
103 |
-
"layout": "TREE",
|
104 |
-
"type": "BOOL",
|
105 |
-
"id": "FOO",
|
106 |
-
"labels": [
|
107 |
-
{
|
108 |
-
"label": "String facet"
|
109 |
-
}
|
110 |
-
],
|
111 |
-
"sticky": "true" }');
|
112 |
-
|
113 |
-
$config = new AfsHelperConfiguration();
|
114 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
115 |
-
$this->assertEquals(array('tag1', 'tag2', 'tag3'), $helper->get_tags());
|
116 |
-
}
|
117 |
-
|
118 |
-
public function testNotags() {
|
119 |
-
$input = json_decode('{
|
120 |
-
"afs:t": "FacetTree",
|
121 |
-
"node": [
|
122 |
-
{
|
123 |
-
"key": "false",
|
124 |
-
"labels": [
|
125 |
-
{
|
126 |
-
"label": "BAD"
|
127 |
-
}
|
128 |
-
],
|
129 |
-
"items": 67
|
130 |
-
}
|
131 |
-
],
|
132 |
-
"layout": "TREE",
|
133 |
-
"type": "BOOL",
|
134 |
-
"id": "FOO",
|
135 |
-
"labels": [
|
136 |
-
{
|
137 |
-
"label": "String facet"
|
138 |
-
}
|
139 |
-
],
|
140 |
-
"sticky": "true" }');
|
141 |
-
|
142 |
-
$config = new AfsHelperConfiguration();
|
143 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
144 |
-
$this->assertEquals(array(), $helper->get_tags());
|
145 |
-
}
|
146 |
-
|
147 |
-
public function testRetrieveStickyness()
|
148 |
-
{
|
149 |
-
$input = json_decode('{
|
150 |
-
"afs:t": "FacetTree",
|
151 |
-
"node": [
|
152 |
-
{
|
153 |
-
"key": "false",
|
154 |
-
"labels": [
|
155 |
-
{
|
156 |
-
"label": "BAD"
|
157 |
-
}
|
158 |
-
],
|
159 |
-
"items": 67
|
160 |
-
}
|
161 |
-
],
|
162 |
-
"layout": "TREE",
|
163 |
-
"type": "BOOL",
|
164 |
-
"id": "FOO",
|
165 |
-
"labels": [
|
166 |
-
{
|
167 |
-
"label": "String facet"
|
168 |
-
}
|
169 |
-
],
|
170 |
-
"sticky": "true" }');
|
171 |
-
|
172 |
-
$config = new AfsHelperConfiguration();
|
173 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
174 |
-
$this->assertEquals($helper->get_label(), "String facet");
|
175 |
-
$this->assertEquals('FOO', $helper->get_id());
|
176 |
-
$this->assertEquals(AfsFacetType::BOOL_TYPE, $helper->get_type());
|
177 |
-
$this->assertEquals(AfsFacetLayout::TREE, $helper->get_layout());
|
178 |
-
$this->assertEquals(true, $helper->is_sticky());
|
179 |
-
}
|
180 |
-
|
181 |
-
public function testFacetValueNoMetaAvailable()
|
182 |
-
{
|
183 |
-
$input = json_decode('{
|
184 |
-
"afs:t": "FacetTree",
|
185 |
-
"node": [ {
|
186 |
-
"key": "false",
|
187 |
-
"labels": [ { "label": "BAD" } ],
|
188 |
-
"items": 67
|
189 |
-
} ],
|
190 |
-
"layout": "TREE",
|
191 |
-
"type": "BOOL",
|
192 |
-
"id": "BOOL",
|
193 |
-
"labels": [ { "label": "Boolean facet" } ] }');
|
194 |
-
|
195 |
-
$config = new AfsHelperConfiguration();
|
196 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
197 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
198 |
-
$elems = $helper->get_elements();
|
199 |
-
$this->assertEquals(1, count($elems));
|
200 |
-
$this->assertEquals(0, count($elems[0]->get_meta()));
|
201 |
-
}
|
202 |
-
|
203 |
-
public function testFacetValueOneMetaAvailable()
|
204 |
-
{
|
205 |
-
$input = json_decode('{
|
206 |
-
"afs:t": "FacetTree",
|
207 |
-
"node": [ {
|
208 |
-
"key": "false",
|
209 |
-
"labels": [ { "label": "BAD" } ],
|
210 |
-
"items": 67,
|
211 |
-
"meta": [ {
|
212 |
-
"key": "meta_id",
|
213 |
-
"value": "meta_value"
|
214 |
-
} ]
|
215 |
-
} ],
|
216 |
-
"layout": "TREE",
|
217 |
-
"type": "BOOL",
|
218 |
-
"id": "BOOL",
|
219 |
-
"labels": [ { "label": "Boolean facet" } ]
|
220 |
-
}');
|
221 |
-
|
222 |
-
$config = new AfsHelperConfiguration();
|
223 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
224 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
225 |
-
$elems = $helper->get_elements();
|
226 |
-
|
227 |
-
$this->assertEquals(1, count($elems));
|
228 |
-
$metas = $elems[0]->get_meta();
|
229 |
-
$this->assertEquals(1, count($metas));
|
230 |
-
foreach ($metas as $meta_key => $meta_value) {
|
231 |
-
$this->assertEquals('meta_id', $meta_key);
|
232 |
-
$this->assertEquals('meta_value', $meta_value);
|
233 |
-
}
|
234 |
-
$this->assertEquals('meta_value', $elems[0]->get_meta('meta_id'));
|
235 |
-
}
|
236 |
-
|
237 |
-
public function testFacetValueMultipleMetaAvailable()
|
238 |
-
{
|
239 |
-
$input = json_decode('{
|
240 |
-
"afs:t": "FacetTree",
|
241 |
-
"node": [ {
|
242 |
-
"key": "false",
|
243 |
-
"labels": [ { "label": "BAD" } ],
|
244 |
-
"items": 67,
|
245 |
-
"meta": [
|
246 |
-
{
|
247 |
-
"key": "meta_id_1",
|
248 |
-
"value": "meta_value_1"
|
249 |
},
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
}
|
277 |
-
|
278 |
-
public function testFacetValueWrongMetaRequested()
|
279 |
-
{
|
280 |
-
$input = json_decode('{
|
281 |
-
"afs:t": "FacetTree",
|
282 |
-
"node": [ {
|
283 |
-
"key": "false",
|
284 |
-
"labels": [ { "label": "BAD" } ],
|
285 |
-
"items": 67,
|
286 |
-
"meta": [
|
287 |
-
{
|
288 |
-
"key": "meta_id_1",
|
289 |
-
"value": "meta_value_1"
|
290 |
-
},
|
291 |
-
{
|
292 |
-
"key": "meta_id_2",
|
293 |
-
"value": "meta_value_2"
|
294 |
-
} ]
|
295 |
-
} ],
|
296 |
-
"layout": "TREE",
|
297 |
-
"type": "BOOL",
|
298 |
-
"id": "BOOL",
|
299 |
-
"labels": [ { "label": "Boolean facet" } ]
|
300 |
-
}');
|
301 |
-
|
302 |
-
$config = new AfsHelperConfiguration();
|
303 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
304 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
305 |
-
$elems = $helper->get_elements();
|
306 |
-
|
307 |
-
$this->assertEquals(1, count($elems));
|
308 |
-
$metas = $elems[0]->get_meta();
|
309 |
-
$this->assertEquals(2, count($metas));
|
310 |
-
try {
|
311 |
-
$elems[0]->get_meta('unknown_meta_id');
|
312 |
-
$this->fail('Should have raised an exception on unknown meta id');
|
313 |
-
} catch (OutOfBoundsException $e) { }
|
314 |
-
}
|
315 |
-
|
316 |
-
public function testFacetValueMultipleMetaAvailableInArrayFormat()
|
317 |
{
|
318 |
$input = json_decode('{
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
{
|
326 |
-
"
|
327 |
-
"value": "meta_value_1"
|
328 |
},
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
339 |
|
340 |
-
$config = new AfsHelperConfiguration();
|
341 |
-
$helper = new AfsFacetHelper($input, new AfsQuery(), $config);
|
342 |
-
$elems = $helper->get_elements();
|
343 |
|
344 |
-
$this->assertEquals(1, count($elems));
|
345 |
-
$metas = $elems[0]->meta;
|
346 |
-
$this->assertEquals(2, count($metas));
|
347 |
-
for ($i = 1; $i < 2; $i++) {
|
348 |
-
$res = each($metas);
|
349 |
-
$this->assertEquals('meta_id_' . $i, $res['key']);
|
350 |
-
$this->assertEquals('meta_value_' . $i, $res['value']);
|
351 |
-
}
|
352 |
-
}
|
353 |
-
|
354 |
-
|
355 |
-
public function testFacetElementBuilderOnInterval()
|
356 |
-
{
|
357 |
-
$input = json_decode('{
|
358 |
-
"afs:t": "FacetInterval",
|
359 |
-
"interval": [
|
360 |
-
{
|
361 |
-
"key": "[\"2009-10-02\" .. \"2013-10-01\"[",
|
362 |
-
"items": 109
|
363 |
-
},
|
364 |
-
{
|
365 |
-
"key": "[\"2010-10-02\" .. \"2013-10-01\"[",
|
366 |
-
"items": 97
|
367 |
-
}
|
368 |
-
],
|
369 |
-
"layout": "INTERVAL",
|
370 |
-
"type": "DATE",
|
371 |
-
"id": "ADVANCED_INTERVAL_DATE",
|
372 |
-
"labels": [
|
373 |
-
{
|
374 |
-
"label": "Advanced date interval"
|
375 |
-
}
|
376 |
-
]
|
377 |
-
}');
|
378 |
-
|
379 |
-
$query = new AfsQuery();
|
380 |
-
$config = new AfsHelperConfiguration();
|
381 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
382 |
-
$facet_mgr = $query->get_facet_manager();
|
383 |
-
$facet_mgr->add_facet(new AfsFacet('ADVANCED_INTERVAL_DATE', AfsFacetType::DATE_TYPE, AfsFacetLayout::INTERVAL));
|
384 |
-
$builder = new AfsFacetElementBuilder($facet_mgr, $query);
|
385 |
-
$elems = $builder->create_elements('ADVANCED_INTERVAL_DATE', $input, $config);
|
386 |
-
|
387 |
-
$this->assertEquals(count($elems), 2);
|
388 |
-
$elem = reset($elems);
|
389 |
-
$this->assertEquals($elem->label, '["2009-10-02" .. "2013-10-01"[');
|
390 |
-
$this->assertEquals('["2009-10-02" .. "2013-10-01"[', $elem->key);
|
391 |
-
$this->assertEquals($elem->count, 109);
|
392 |
-
$this->assertFalse($elem->active);
|
393 |
-
$this->assertTrue($elem->query->has_filter('ADVANCED_INTERVAL_DATE', '["2009-10-02" .. "2013-10-01"['));
|
394 |
-
$this->assertEquals(count($elem->values), 0);
|
395 |
-
next($elems);
|
396 |
-
$elem = current($elems);
|
397 |
-
$this->assertEquals($elem->label, '["2010-10-02" .. "2013-10-01"[');
|
398 |
-
$this->assertEquals('["2010-10-02" .. "2013-10-01"[', $elem->key);
|
399 |
-
$this->assertEquals($elem->count, 97);
|
400 |
-
$this->assertFalse($elem->active);
|
401 |
-
$this->assertTrue($elem->query->has_filter('ADVANCED_INTERVAL_DATE', '["2010-10-02" .. "2013-10-01"['));
|
402 |
-
$this->assertEquals(count($elem->values), 0);
|
403 |
-
}
|
404 |
-
|
405 |
-
public function testFacetElementBuilderOnNode()
|
406 |
-
{
|
407 |
-
$input = json_decode('{
|
408 |
-
"afs:t": "FacetTree",
|
409 |
-
"node": [
|
410 |
-
{
|
411 |
-
"key": "false",
|
412 |
-
"labels": [
|
413 |
-
{
|
414 |
-
"label": "BAD"
|
415 |
-
}
|
416 |
-
],
|
417 |
-
"items": 67
|
418 |
-
},
|
419 |
-
{
|
420 |
-
"key": "true",
|
421 |
-
"labels": [
|
422 |
-
{
|
423 |
-
"label": "GOOD"
|
424 |
-
}
|
425 |
-
],
|
426 |
-
"items": 133
|
427 |
-
}
|
428 |
-
],
|
429 |
-
"layout": "TREE",
|
430 |
-
"type": "BOOL",
|
431 |
-
"id": "BOOL",
|
432 |
-
"labels": [
|
433 |
-
{
|
434 |
-
"label": "Boolean facet"
|
435 |
-
}
|
436 |
-
]
|
437 |
-
}');
|
438 |
-
|
439 |
-
$query = new AfsQuery();
|
440 |
-
$config = new AfsHelperConfiguration();
|
441 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
442 |
-
$facet_mgr = $query->get_facet_manager();
|
443 |
-
$facet_mgr->add_facet(new AfsFacet('BOOL', AfsFacetType::BOOL_TYPE));
|
444 |
-
$builder = new AfsFacetElementBuilder($facet_mgr, $query);
|
445 |
-
$elems = $builder->create_elements('BOOL', $input, $config);
|
446 |
-
|
447 |
-
$this->assertEquals(count($elems), 2);
|
448 |
-
$elem = reset($elems);
|
449 |
-
$this->assertEquals($elem->label, 'BAD');
|
450 |
-
$this->assertEquals($elem->count, 67);
|
451 |
-
$this->assertFalse($elem->active);
|
452 |
-
$this->assertTrue($elem->query->has_filter('BOOL', 'false'));
|
453 |
-
$this->assertEquals(count($elem->values), 0);
|
454 |
-
next($elems);
|
455 |
-
$elem = current($elems);
|
456 |
-
$this->assertEquals($elem->label, 'GOOD');
|
457 |
-
$this->assertEquals($elem->count, 133);
|
458 |
-
$this->assertFalse($elem->active);
|
459 |
-
$this->assertTrue($elem->query->has_filter('BOOL', 'true'));
|
460 |
-
$this->assertEquals(count($elem->values), 0);
|
461 |
-
}
|
462 |
-
|
463 |
-
public function testFacetElementBuilderOnTreeNode()
|
464 |
-
{
|
465 |
-
$input = json_decode('{
|
466 |
-
"afs:t": "FacetTree",
|
467 |
-
"node": [
|
468 |
-
{
|
469 |
-
"key": "2010",
|
470 |
-
"labels": [
|
471 |
-
{
|
472 |
-
"lang": "FR",
|
473 |
-
"region": "FR",
|
474 |
-
"label": "2010"
|
475 |
-
}
|
476 |
-
],
|
477 |
-
"items": 24,
|
478 |
-
"node": [
|
479 |
-
{
|
480 |
-
"key": "2010-03",
|
481 |
-
"labels": [
|
482 |
-
{
|
483 |
-
"lang": "FR",
|
484 |
-
"region": "FR",
|
485 |
-
"label": "03"
|
486 |
-
}
|
487 |
-
],
|
488 |
-
"items": 14,
|
489 |
-
"node": [
|
490 |
-
{
|
491 |
-
"key": "2010-03-07",
|
492 |
-
"labels": [
|
493 |
-
{
|
494 |
-
"lang": "FR",
|
495 |
-
"region": "FR",
|
496 |
-
"label": "07"
|
497 |
-
}
|
498 |
-
],
|
499 |
-
"items": 4
|
500 |
-
}
|
501 |
-
]
|
502 |
-
}
|
503 |
-
]
|
504 |
-
}
|
505 |
-
],
|
506 |
-
"layout": "TREE",
|
507 |
-
"type": "DATE",
|
508 |
-
"id": "TREE_DATE",
|
509 |
-
"labels": [
|
510 |
-
{
|
511 |
-
"label": "Tree date"
|
512 |
-
}
|
513 |
-
]
|
514 |
-
}');
|
515 |
-
|
516 |
-
$query = new AfsQuery();
|
517 |
-
$config = new AfsHelperConfiguration();
|
518 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
519 |
-
$facet_mgr = $query->get_facet_manager();
|
520 |
-
$facet_mgr->add_facet(new AfsFacet('TREE_DATE', AfsFacetType::DATE_TYPE));
|
521 |
-
$builder = new AfsFacetElementBuilder($facet_mgr, $query);
|
522 |
-
$elems = $builder->create_elements('TREE_DATE', $input, $config);
|
523 |
-
|
524 |
-
$this->assertEquals(count($elems), 1);
|
525 |
-
$elem = reset($elems);
|
526 |
-
$this->assertEquals($elem->label, '2010');
|
527 |
-
$this->assertEquals($elem->count, 24);
|
528 |
-
$this->assertFalse($elem->active);
|
529 |
-
$this->assertTrue($elem->query->has_filter('TREE_DATE', '"2010"'));
|
530 |
-
$this->assertEquals(count($elem->values), 1);
|
531 |
-
$elem = $elem->values[0];
|
532 |
-
$this->assertEquals($elem->label, '03');
|
533 |
-
$this->assertEquals($elem->count, 14);
|
534 |
-
$this->assertFalse($elem->active);
|
535 |
-
$this->assertTrue($elem->query->has_filter('TREE_DATE', '"2010-03"'));
|
536 |
-
$this->assertEquals(count($elem->values), 1);
|
537 |
-
$elem = $elem->values[0];
|
538 |
-
$this->assertEquals($elem->label, '07');
|
539 |
-
$this->assertEquals($elem->count, 4);
|
540 |
-
$this->assertFalse($elem->active);
|
541 |
-
$this->assertTrue($elem->query->has_filter('TREE_DATE', '"2010-03-07"'));
|
542 |
-
$this->assertEquals(count($elem->values), 0);
|
543 |
-
}
|
544 |
-
|
545 |
-
public function testFacetElementBuilderReplaceFilter()
|
546 |
-
{
|
547 |
-
$input = json_decode('{
|
548 |
-
"afs:t": "FacetTree",
|
549 |
-
"node": [
|
550 |
-
{
|
551 |
-
"key": "false",
|
552 |
-
"labels": [
|
553 |
-
{
|
554 |
-
"label": "BAD"
|
555 |
-
}
|
556 |
-
],
|
557 |
-
"items": 67
|
558 |
-
},
|
559 |
-
{
|
560 |
-
"key": "true",
|
561 |
-
"labels": [
|
562 |
-
{
|
563 |
-
"label": "GOOD"
|
564 |
-
}
|
565 |
-
],
|
566 |
-
"items": 133
|
567 |
-
}
|
568 |
-
],
|
569 |
-
"layout": "TREE",
|
570 |
-
"type": "BOOL",
|
571 |
-
"id": "BOOL",
|
572 |
-
"labels": [
|
573 |
-
{
|
574 |
-
"label": "Boolean facet"
|
575 |
-
}
|
576 |
-
]
|
577 |
-
}');
|
578 |
-
|
579 |
-
$query = new AfsQuery();
|
580 |
-
$query = $query->add_filter('BOOL', 'false');
|
581 |
-
$config = new AfsHelperConfiguration();
|
582 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
583 |
-
$facet_mgr = $query->get_facet_manager();
|
584 |
-
$facet_mgr->add_facet(new AfsFacet('BOOL', AfsFacetType::BOOL_TYPE, AfsFacetLayout::TREE, AfsFacetMode::SINGLE_MODE));
|
585 |
-
$builder = new AfsFacetElementBuilder($facet_mgr, $query);
|
586 |
-
$elems = $builder->create_elements('BOOL', $input, $config);
|
587 |
-
|
588 |
-
$this->assertEquals(count($elems), 2);
|
589 |
-
$elem = reset($elems);
|
590 |
-
$this->assertEquals($elem->label, 'BAD');
|
591 |
-
$this->assertEquals($elem->count, 67);
|
592 |
-
$this->assertTrue($elem->active);
|
593 |
-
$this->assertFalse($elem->query->has_filter('BOOL', 'false'));
|
594 |
-
$this->assertEquals(count($elem->values), 0);
|
595 |
-
next($elems);
|
596 |
-
$elem = current($elems);
|
597 |
-
$this->assertEquals($elem->label, 'GOOD');
|
598 |
-
$this->assertEquals($elem->count, 133);
|
599 |
-
$this->assertFalse($elem->active);
|
600 |
-
$this->assertTrue($elem->query->has_filter('BOOL', 'true'));
|
601 |
-
$this->assertFalse($elem->query->has_filter('BOOL', 'false'));
|
602 |
-
$this->assertEquals(count($elem->values), 0);
|
603 |
-
}
|
604 |
-
|
605 |
-
public function testFacetElementBuilderAddFilter()
|
606 |
-
{
|
607 |
-
$input = json_decode('{
|
608 |
-
"afs:t": "FacetTree",
|
609 |
-
"node": [
|
610 |
-
{
|
611 |
-
"key": "false",
|
612 |
-
"labels": [
|
613 |
-
{
|
614 |
-
"label": "BAD"
|
615 |
-
}
|
616 |
-
],
|
617 |
-
"items": 67
|
618 |
-
},
|
619 |
-
{
|
620 |
-
"key": "true",
|
621 |
-
"labels": [
|
622 |
-
{
|
623 |
-
"label": "GOOD"
|
624 |
-
}
|
625 |
-
],
|
626 |
-
"items": 133
|
627 |
-
}
|
628 |
-
],
|
629 |
-
"layout": "TREE",
|
630 |
-
"type": "BOOL",
|
631 |
-
"id": "BOOL",
|
632 |
-
"labels": [
|
633 |
-
{
|
634 |
-
"label": "Boolean facet"
|
635 |
-
}
|
636 |
-
]
|
637 |
-
}');
|
638 |
-
|
639 |
-
$query = new AfsQuery();
|
640 |
-
$query = $query->add_filter('BOOL', 'false');
|
641 |
-
|
642 |
-
$config = new AfsHelperConfiguration();
|
643 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
644 |
-
$facet_mgr = $query->get_facet_manager();
|
645 |
-
$facet_mgr->add_facet(new AfsFacet('BOOL', AfsFacetType::BOOL_TYPE, AfsFacetLayout::TREE, AfsFacetMode::OR_MODE));
|
646 |
-
$builder = new AfsFacetElementBuilder($facet_mgr, $query);
|
647 |
-
$elems = $builder->create_elements('BOOL', $input, $config);
|
648 |
-
|
649 |
-
$this->assertEquals(count($elems), 2);
|
650 |
-
$elem = reset($elems);
|
651 |
-
$this->assertEquals($elem->label, 'BAD');
|
652 |
-
$this->assertEquals($elem->count, 67);
|
653 |
-
$this->assertTrue($elem->active);
|
654 |
-
$this->assertFalse($elem->query->has_filter('BOOL', 'false'));
|
655 |
-
$this->assertEquals(count($elem->values), 0);
|
656 |
-
next($elems);
|
657 |
-
$elem = current($elems);
|
658 |
-
$this->assertEquals($elem->label, 'GOOD');
|
659 |
-
$this->assertEquals($elem->count, 133);
|
660 |
-
$this->assertFalse($elem->active);
|
661 |
-
$this->assertTrue($elem->query->has_filter('BOOL', 'true'));
|
662 |
-
$this->assertTrue($elem->query->has_filter('BOOL', 'false'));
|
663 |
-
$this->assertEquals(count($elem->values), 0);
|
664 |
-
}
|
665 |
-
|
666 |
-
public function testFacetWithoutLabel()
|
667 |
-
{
|
668 |
-
$input = json_decode('{
|
669 |
-
"afs:t": "FacetTree",
|
670 |
-
"node": [
|
671 |
-
{
|
672 |
-
"key": "false",
|
673 |
-
"labels": [
|
674 |
-
{
|
675 |
-
"label": "BAD"
|
676 |
-
}
|
677 |
-
],
|
678 |
-
"items": 67
|
679 |
-
},
|
680 |
-
{
|
681 |
-
"key": "true",
|
682 |
-
"labels": [
|
683 |
-
{
|
684 |
-
"label": "GOOD"
|
685 |
-
}
|
686 |
-
],
|
687 |
-
"items": 133
|
688 |
-
}
|
689 |
-
],
|
690 |
-
"layout": "TREE",
|
691 |
-
"type": "BOOL",
|
692 |
-
"id": "BOOOOL"
|
693 |
-
}');
|
694 |
-
|
695 |
-
$config = new AfsHelperConfiguration();
|
696 |
-
$config->set_helper_format(AfsHelperFormat::HELPERS);
|
697 |
-
$query = new AfsQuery();
|
698 |
-
$facet = new AfsFacetHelper($input, $query, $config);
|
699 |
-
|
700 |
-
$this->assertEquals('BOOOOL', $facet->get_label());
|
701 |
-
}
|
702 |
-
}
|
1 |
<?php ob_start();
|
2 |
+
require_once "AFS/SEARCH/afs_header_helper.php";
|
|
|
|
|
3 |
|
4 |
+
class HeaderHelperTest extends PHPUnit_Framework_TestCase
|
5 |
{
|
6 |
+
public function testError()
|
7 |
{
|
8 |
$input = json_decode('{
|
9 |
+
"header": {
|
10 |
+
"query": {
|
11 |
+
"userId": "?",
|
12 |
+
"sessionId": "?",
|
13 |
+
"date": "2014-01-10T16:04:32+0000",
|
14 |
+
"queryParam": [ ],
|
15 |
+
"mainCtx": {
|
16 |
+
"textQuery": ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
},
|
18 |
+
"textQuery": ""
|
19 |
+
},
|
20 |
+
"user": {
|
21 |
+
"requestMethod": "GET",
|
22 |
+
"agent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0 Iceweasel/24.0",
|
23 |
+
"address": "10.61.8.236",
|
24 |
+
"output": {
|
25 |
+
"format": "JSON",
|
26 |
+
"encoding": "gzip",
|
27 |
+
"charset": "UTF-8"
|
28 |
+
}
|
29 |
+
},
|
30 |
+
"info": { },
|
31 |
+
"error": {
|
32 |
+
"message": [
|
33 |
+
"errorMsg"
|
34 |
+
]
|
35 |
+
}
|
36 |
+
}
|
37 |
+
}');
|
38 |
+
$header = new AfsHeaderHelper($input->header);
|
39 |
+
$this->assertTrue($header->in_error());
|
40 |
+
$this->assertEquals('errorMsg', $header->get_error());
|
41 |
+
}
|
42 |
+
|
43 |
+
public function testNotInError()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
{
|
45 |
$input = json_decode('{
|
46 |
+
"header": {
|
47 |
+
"query": {
|
48 |
+
"userId": "e3eddaff-5a3d-4807-8fb2-09e13baf78e1",
|
49 |
+
"sessionId": "4c0f28d1-bb67-469b-86bf-54f83432914e",
|
50 |
+
"date": "2014-01-10T16:17:44+0000",
|
51 |
+
"queryParam": [ ],
|
52 |
+
"mainCtx": {
|
53 |
+
"textQuery": ""
|
|
|
54 |
},
|
55 |
+
"textQuery": ""
|
56 |
+
},
|
57 |
+
"user": {
|
58 |
+
"requestMethod": "GET",
|
59 |
+
"agent": "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0 Iceweasel/24.0",
|
60 |
+
"address": "10.61.8.236",
|
61 |
+
"output": {
|
62 |
+
"format": "JSON",
|
63 |
+
"encoding": "gzip",
|
64 |
+
"charset": "UTF-8"
|
65 |
+
}
|
66 |
+
},
|
67 |
+
"performance": {
|
68 |
+
"durationMs": 204
|
69 |
+
},
|
70 |
+
"info": { }
|
71 |
+
}
|
72 |
+
}');
|
73 |
+
$header = new AfsHeaderHelper($input->header);
|
74 |
+
$this->assertFalse($header->in_error());
|
75 |
+
$this->assertEquals('e3eddaff-5a3d-4807-8fb2-09e13baf78e1', $header->get_user_id());
|
76 |
+
$this->assertEquals('4c0f28d1-bb67-469b-86bf-54f83432914e', $header->get_session_id());
|
77 |
+
$this->assertEquals(204, $header->get_duration());
|
78 |
+
}
|
79 |
+
}
|
80 |
|
|
|
|
|
|
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/antidot/AFS/SEARCH/TEST/queryOrchestrationTest.php
ADDED
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once 'AFS/SEARCH/afs_search.php';
|
3 |
+
require_once 'COMMON/php-SAI/lib/CurlStub.php';
|
4 |
+
require_once 'AIF/afs_user_authentication.php';
|
5 |
+
|
6 |
+
class QueryOrchestrationTest extends PHPUnit_Framework_TestCase
|
7 |
+
{
|
8 |
+
public function testAutoSpellcheckOrchestration()
|
9 |
+
{
|
10 |
+
$query = AfsQuery::create_from_parameters(array("query" => "topic", "mycustomparameter" => "mycustomvalue"));
|
11 |
+
$curlConnector = new SAI_CurlStub();
|
12 |
+
$mockBaseUrl = "localhost";
|
13 |
+
$aboutRequestOpts = array(CURLOPT_URL => "http://$mockBaseUrl/bo-ws/about");
|
14 |
+
$aboutResponse = <<<JSON
|
15 |
+
{
|
16 |
+
"x:type":"ws.response",
|
17 |
+
"query":{
|
18 |
+
"x:type":"ws.response.query",
|
19 |
+
"parameters":{
|
20 |
+
"x:type":"collection",
|
21 |
+
"x:values":[
|
22 |
+
|
23 |
+
]
|
24 |
+
},
|
25 |
+
"properties":{
|
26 |
+
"x:type":"x:dynamic"
|
27 |
+
}
|
28 |
+
},
|
29 |
+
"result":{
|
30 |
+
"x:type":"bows.about",
|
31 |
+
"boWsVersion":{
|
32 |
+
"x:type":"AfsVersion",
|
33 |
+
"build":"3eaebfd1f1fe261780347cbc35bfbd65d613575e",
|
34 |
+
"gen":"7.6",
|
35 |
+
"major":"4",
|
36 |
+
"minor":"0",
|
37 |
+
"motto":"Pink Dolphin"
|
38 |
+
},
|
39 |
+
"copyright":"Copyright (C) 1999-2013 Antidot"
|
40 |
+
}
|
41 |
+
}
|
42 |
+
JSON;
|
43 |
+
$response = <<<JSON
|
44 |
+
{"header":{"query":{"userId":"b756a0de-e252-426f-8a24-66c4bbb96aa0","sessionId":"188ff0e1-5fd9-4a06-bab5-24ade9cab206","date":"2015-10-14T14:25:22+0000","queryParam":[{"name":"afs:service","value":"42"},{"name":"afs:status","value":"beta"},{"name":"afs:query","value":"vet"},{"name":"afs:output","value":"json,2"},{"name":"afs:facetDefault","value":"replies=100"},{"name":"afs:replies","value":"20"},{"name":"afs:sort","value":"disposite, DESC and afs:relevance, DESC"}],"mainCtx":{"textQuery":"vet"},"textQuery":"vet"},"user":{"requestMethod":"GET","agent":"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.90 Safari\/537.36","address":"172.17.42.1","output":{"format":"JSON","encoding":"gzip","charset":"UTF-8"}},"performance":{"durationMs":7},"info":{},"orchestrationInfo":{"autoSpellchecker":{"triggered":true}}},"replySet":[{"meta":{"uri":"Catalog","totalItems":1,"totalItemsIsExact":true,"pageItems":1,"firstPageItem":1,"lastPageItem":1,"durationMs":1,"firstPaFId":3,"lastPaFId":3,"producer":"SEARCH"},"facets":{"facet":[{"afs:t":"FacetTree","node":[{"key":"fr","labels":[{"label":"Français"}],"items":1}],"layout":"TREE","type":"STRING","id":"afs:lang","labels":[{"label":"Language"}]}]},"content":{"reply":[{"docId":4,"uri":"3612531066812_fr","title":[{"afs:t":"KwicMatch","match":"vert"}],"relevance":{"rank":1},"clientData":[{"contents":"<product xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" id=\"3612531066812\" xml:lang=\"fr\" autocomplete=\"on\" xsi:schemaLocation=\"http:\/\/ref.antidot.net\/store\/afs# http:\/\/ref.antidot.net\/store\/v4.1\/xsd\/product.xsd\"><name xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\">vert<\/name><\/product>","id":"main","mimeType":"text\/xml"}]}]}},{"meta":{"uri":"afs:spellcheck","totalItems":1,"totalItemsIsExact":true,"pageItems":1,"firstPageItem":1,"lastPageItem":1,"durationMs":0,"firstPaFId":1,"lastPaFId":1,"producer":"SPELLCHECK"},"content":{"reply":[{"docId":1,"uri":"Catalog","title":[{"afs:t":"KwicMatch","match":"vert"}],"abstract":[{"afs:t":"KwicString","text":"vert"}],"suggestion":[{"items":[{"match":{"text":"vert","src":"vet"}}]}]}]}}]}
|
45 |
+
JSON;
|
46 |
+
|
47 |
+
|
48 |
+
//Set BO response for AboutConnector
|
49 |
+
$curlConnector->setResponse($aboutResponse, $aboutRequestOpts);
|
50 |
+
//Set response for query
|
51 |
+
$curlConnector->setResponse($response);
|
52 |
+
$search = new AfsSearch($mockBaseUrl, '71003', AfsServiceStatus::STABLE, $curlConnector);
|
53 |
+
$search->set_query($query);
|
54 |
+
$coder = new AfsQueryCoder();
|
55 |
+
$search->set_query_coder($coder);
|
56 |
+
$helper = $search->execute($query);
|
57 |
+
$this->assertEquals($helper->is_orchestrated(), true);
|
58 |
+
$this->assertEquals($helper->get_orchestration_type(), OrchestrationType::AUTOSPELLCHECKER);
|
59 |
+
}
|
60 |
+
|
61 |
+
public function testFallbackToOptionalOrchestration()
|
62 |
+
{
|
63 |
+
$query = AfsQuery::create_from_parameters(array("query" => "topic", "mycustomparameter" => "mycustomvalue"));
|
64 |
+
$curlConnector = new SAI_CurlStub();
|
65 |
+
$mockBaseUrl = "localhost";
|
66 |
+
$aboutRequestOpts = array(CURLOPT_URL => "http://$mockBaseUrl/bo-ws/about");
|
67 |
+
$aboutResponse = <<<JSON
|
68 |
+
{
|
69 |
+
"x:type":"ws.response",
|
70 |
+
"query":{
|
71 |
+
"x:type":"ws.response.query",
|
72 |
+
"parameters":{
|
73 |
+
"x:type":"collection",
|
74 |
+
"x:values":[
|
75 |
+
|
76 |
+
]
|
77 |
+
},
|
78 |
+
"properties":{
|
79 |
+
"x:type":"x:dynamic"
|
80 |
+
}
|
81 |
+
},
|
82 |
+
"result":{
|
83 |
+
"x:type":"bows.about",
|
84 |
+
"boWsVersion":{
|
85 |
+
"x:type":"AfsVersion",
|
86 |
+
"build":"3eaebfd1f1fe261780347cbc35bfbd65d613575e",
|
87 |
+
"gen":"7.6",
|
88 |
+
"major":"4",
|
89 |
+
"minor":"0",
|
90 |
+
"motto":"Pink Dolphin"
|
91 |
+
},
|
92 |
+
"copyright":"Copyright (C) 1999-2013 Antidot"
|
93 |
+
}
|
94 |
+
}
|
95 |
+
JSON;
|
96 |
+
$response = <<<JSON
|
97 |
+
|
98 |
+
{"header":{"query":{"userId":"b756a0de-e252-426f-8a24-66c4bbb96aa0","sessionId":"188ff0e1-5fd9-4a06-bab5-24ade9cab206","date":"2015-10-14T14:24:09+0000","queryParam":[{"name":"afs:service","value":"42"},{"name":"afs:status","value":"beta"},{"name":"afs:query","value":"vert bleu"},{"name":"afs:output","value":"json,2"},{"name":"afs:facetDefault","value":"replies=100"},{"name":"afs:replies","value":"20"},{"name":"afs:sort","value":"disposite, DESC and afs:relevance, DESC"}],"mainCtx":{"textQuery":"vert bleu"},"textQuery":"vert bleu"},"user":{"requestMethod":"GET","agent":"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.90 Safari\/537.36","address":"172.17.42.1","output":{"format":"JSON","encoding":"gzip","charset":"UTF-8"}},"performance":{"durationMs":5},"info":{},"orchestrationInfo":{"fallbackToOptional":{"triggered":true}}},"replySet":[{"meta":{"uri":"Catalog","totalItems":2,"totalItemsIsExact":true,"pageItems":2,"firstPageItem":1,"lastPageItem":2,"durationMs":0,"firstPaFId":3,"lastPaFId":3,"producer":"SEARCH"},"facets":{"facet":[{"afs:t":"FacetTree","node":[{"key":"fr","labels":[{"label":"Français"}],"items":2}],"layout":"TREE","type":"STRING","id":"afs:lang","labels":[{"label":"Language"}]}]},"content":{"reply":[{"docId":5,"uri":"36125310668123_fr","title":[{"afs:t":"KwicMatch","match":"bleu"}],"relevance":{"rank":1},"clientData":[{"contents":"<product xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" id=\"36125310668123\" xml:lang=\"fr\" autocomplete=\"on\" xsi:schemaLocation=\"http:\/\/ref.antidot.net\/store\/afs# http:\/\/ref.antidot.net\/store\/v4.1\/xsd\/product.xsd\"><name xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\">bleu<\/name><\/product>","id":"main","mimeType":"text\/xml"}]},{"docId":4,"uri":"3612531066812_fr","title":[{"afs:t":"KwicMatch","match":"vert"}],"relevance":{"rank":2},"clientData":[{"contents":"<product xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" id=\"3612531066812\" xml:lang=\"fr\" autocomplete=\"on\" xsi:schemaLocation=\"http:\/\/ref.antidot.net\/store\/afs# http:\/\/ref.antidot.net\/store\/v4.1\/xsd\/product.xsd\"><name xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\">vert<\/name><\/product>","id":"main","mimeType":"text\/xml"}]}]}}]}
|
99 |
+
JSON;
|
100 |
+
|
101 |
+
|
102 |
+
//Set BO response for AboutConnector
|
103 |
+
$curlConnector->setResponse($aboutResponse, $aboutRequestOpts);
|
104 |
+
//Set response for query
|
105 |
+
$curlConnector->setResponse($response);
|
106 |
+
$search = new AfsSearch($mockBaseUrl, '71003', AfsServiceStatus::STABLE, $curlConnector);
|
107 |
+
$search->set_query($query);
|
108 |
+
$coder = new AfsQueryCoder();
|
109 |
+
$search->set_query_coder($coder);
|
110 |
+
$helper = $search->execute($query);
|
111 |
+
$this->assertEquals($helper->is_orchestrated(), true);
|
112 |
+
$this->assertEquals($helper->get_orchestration_type(), OrchestrationType::FALLBACKTOOPTIONAL);
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* @expectedException Exception
|
117 |
+
*/
|
118 |
+
public function testNotOrchestratedRequest()
|
119 |
+
{
|
120 |
+
$query = AfsQuery::create_from_parameters(array("query" => "topic", "mycustomparameter" => "mycustomvalue"));
|
121 |
+
$curlConnector = new SAI_CurlStub();
|
122 |
+
$mockBaseUrl = "localhost";
|
123 |
+
$aboutRequestOpts = array(CURLOPT_URL => "http://$mockBaseUrl/bo-ws/about");
|
124 |
+
$aboutResponse = <<<JSON
|
125 |
+
{
|
126 |
+
"x:type":"ws.response",
|
127 |
+
"query":{
|
128 |
+
"x:type":"ws.response.query",
|
129 |
+
"parameters":{
|
130 |
+
"x:type":"collection",
|
131 |
+
"x:values":[
|
132 |
+
|
133 |
+
]
|
134 |
+
},
|
135 |
+
"properties":{
|
136 |
+
"x:type":"x:dynamic"
|
137 |
+
}
|
138 |
+
},
|
139 |
+
"result":{
|
140 |
+
"x:type":"bows.about",
|
141 |
+
"boWsVersion":{
|
142 |
+
"x:type":"AfsVersion",
|
143 |
+
"build":"3eaebfd1f1fe261780347cbc35bfbd65d613575e",
|
144 |
+
"gen":"7.6",
|
145 |
+
"major":"4",
|
146 |
+
"minor":"0",
|
147 |
+
"motto":"Pink Dolphin"
|
148 |
+
},
|
149 |
+
"copyright":"Copyright (C) 1999-2013 Antidot"
|
150 |
+
}
|
151 |
+
}
|
152 |
+
JSON;
|
153 |
+
$response = <<<JSON
|
154 |
+
|
155 |
+
|
156 |
+
{"header":{"query":{"userId":"b756a0de-e252-426f-8a24-66c4bbb96aa0","sessionId":"dd33b13c-dd9f-49a1-abe1-95e89140fb40","date":"2015-10-14T15:12:00+0000","queryParam":[{"name":"afs:service","value":"42"},{"name":"afs:status","value":"beta"},{"name":"afs:query","value":"vert"},{"name":"afs:output","value":"json,2"},{"name":"afs:facetDefault","value":"replies=100"},{"name":"afs:replies","value":"20"},{"name":"afs:sort","value":"disposite, DESC and afs:relevance, DESC"}],"mainCtx":{"textQuery":"vert"},"textQuery":"vert"},"user":{"requestMethod":"GET","agent":"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/42.0.2311.90 Safari\/537.36","address":"172.17.42.1","output":{"format":"JSON","encoding":"gzip","charset":"UTF-8"}},"performance":{"durationMs":5},"info":{}},"replySet":[{"meta":{"uri":"Catalog","totalItems":1,"totalItemsIsExact":true,"pageItems":1,"firstPageItem":1,"lastPageItem":1,"durationMs":1,"firstPaFId":3,"lastPaFId":3,"producer":"SEARCH"},"facets":{"facet":[{"afs:t":"FacetTree","node":[{"key":"fr","labels":[{"label":"Français"}],"items":1}],"layout":"TREE","type":"STRING","id":"afs:lang","labels":[{"label":"Language"}]}]},"content":{"reply":[{"docId":4,"uri":"3612531066812_fr","title":[{"afs:t":"KwicMatch","match":"vert"}],"relevance":{"rank":1},"clientData":[{"contents":"<product xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" id=\"3612531066812\" xml:lang=\"fr\" autocomplete=\"on\" xsi:schemaLocation=\"http:\/\/ref.antidot.net\/store\/afs# http:\/\/ref.antidot.net\/store\/v4.1\/xsd\/product.xsd\"><name xmlns=\"http:\/\/ref.antidot.net\/store\/afs#\">vert<\/name><\/product>","id":"main","mimeType":"text\/xml"}]}]}}]}
|
157 |
+
JSON;
|
158 |
+
|
159 |
+
|
160 |
+
//Set BO response for AboutConnector
|
161 |
+
$curlConnector->setResponse($aboutResponse, $aboutRequestOpts);
|
162 |
+
//Set response for query
|
163 |
+
$curlConnector->setResponse($response);
|
164 |
+
$search = new AfsSearch($mockBaseUrl, '71003', AfsServiceStatus::STABLE, $curlConnector);
|
165 |
+
$search->set_query($query);
|
166 |
+
$coder = new AfsQueryCoder();
|
167 |
+
$search->set_query_coder($coder);
|
168 |
+
$helper = $search->execute($query);
|
169 |
+
$this->assertEquals($helper->is_orchestrated(), false);
|
170 |
+
|
171 |
+
$helper->get_orchestration_type();
|
172 |
+
}
|
173 |
+
}
|
lib/antidot/AFS/SEARCH/afs_facet_helper.php
CHANGED
@@ -37,7 +37,7 @@ class AfsFacetHelper extends AfsHelperBase
|
|
37 |
$this->layout = $facet->layout;
|
38 |
$this->type = $facet->type;
|
39 |
if (property_exists($facet, 'sticky')
|
40 |
-
|
41 |
$this->sticky = true;
|
42 |
} else {
|
43 |
$this->sticky = false;
|
@@ -155,7 +155,7 @@ class AfsFacetHelper extends AfsHelperBase
|
|
155 |
public function format()
|
156 |
{
|
157 |
return array('label' => $this->get_label(),
|
158 |
-
|
159 |
}
|
160 |
|
161 |
}
|
@@ -236,7 +236,7 @@ class AfsFacetValueHelper extends AfsHelperBase
|
|
236 |
* @li @c label: label of the facet value,
|
237 |
* @li @c key: key of the facet value,
|
238 |
* @li @c count: number of element of the facet value,
|
239 |
-
* @li @c active: state of the facet value: true when this facet value is
|
240 |
* used in current query, false otherwise,
|
241 |
* @li @c query: query associated to the facet value (see @a query property
|
242 |
* for more details),
|
@@ -246,7 +246,7 @@ class AfsFacetValueHelper extends AfsHelperBase
|
|
246 |
* @li @c meta: key-value pairs of meta data identifiers and values.
|
247 |
*
|
248 |
* @remark: When helpers are used to create such facet value, if @a link is
|
249 |
-
* generated from @a query, then the query is no more necessary and not
|
250 |
* provided. So one of @c query and @c link is null.
|
251 |
*
|
252 |
* @return array filled with key and values.
|
@@ -349,7 +349,7 @@ class AfsFacetElementBuilder
|
|
349 |
$link = null;
|
350 |
}
|
351 |
$elements[] = new AfsFacetValueHelper($label, $value_id, $elem->items,
|
352 |
-
|
353 |
|
354 |
}
|
355 |
return $elements;
|
@@ -404,3 +404,5 @@ class AfsFacetElementBuilder
|
|
404 |
return $result;
|
405 |
}
|
406 |
}
|
|
|
|
37 |
$this->layout = $facet->layout;
|
38 |
$this->type = $facet->type;
|
39 |
if (property_exists($facet, 'sticky')
|
40 |
+
&& 0 == strcmp('true', $facet->sticky)) {
|
41 |
$this->sticky = true;
|
42 |
} else {
|
43 |
$this->sticky = false;
|
155 |
public function format()
|
156 |
{
|
157 |
return array('label' => $this->get_label(),
|
158 |
+
'values' => $this->get_elements());
|
159 |
}
|
160 |
|
161 |
}
|
236 |
* @li @c label: label of the facet value,
|
237 |
* @li @c key: key of the facet value,
|
238 |
* @li @c count: number of element of the facet value,
|
239 |
+
* @li @c active: state of the facet value: true when this facet value is
|
240 |
* used in current query, false otherwise,
|
241 |
* @li @c query: query associated to the facet value (see @a query property
|
242 |
* for more details),
|
246 |
* @li @c meta: key-value pairs of meta data identifiers and values.
|
247 |
*
|
248 |
* @remark: When helpers are used to create such facet value, if @a link is
|
249 |
+
* generated from @a query, then the query is no more necessary and not
|
250 |
* provided. So one of @c query and @c link is null.
|
251 |
*
|
252 |
* @return array filled with key and values.
|
349 |
$link = null;
|
350 |
}
|
351 |
$elements[] = new AfsFacetValueHelper($label, $value_id, $elem->items,
|
352 |
+
$meta, $active, $query, $link, $children);
|
353 |
|
354 |
}
|
355 |
return $elements;
|
404 |
return $result;
|
405 |
}
|
406 |
}
|
407 |
+
|
408 |
+
|
lib/antidot/AFS/SEARCH/afs_header_helper.php
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<?php
|
2 |
require_once 'COMMON/afs_helper_base.php';
|
|
|
3 |
|
4 |
/** @brief Helper to retrieve useful information from AFS search engine reply header.
|
5 |
*/
|
@@ -87,6 +88,48 @@ class AfsHeaderHelper extends AfsHelperBase
|
|
87 |
}
|
88 |
return null;
|
89 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
}
|
91 |
|
92 |
|
1 |
<?php
|
2 |
require_once 'COMMON/afs_helper_base.php';
|
3 |
+
require_once 'AFS/orchestration_type.php';
|
4 |
|
5 |
/** @brief Helper to retrieve useful information from AFS search engine reply header.
|
6 |
*/
|
88 |
}
|
89 |
return null;
|
90 |
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* @brief get request orchestration type (AutoSpellchecker or fallbackToOptional)
|
94 |
+
* @return OrchestrationType::(AutoSpellchecker or fallbackToOptional)
|
95 |
+
* @throws Exception
|
96 |
+
* @throws OrchestrationTypeException
|
97 |
+
*/
|
98 |
+
public function get_orchestration_type()
|
99 |
+
{
|
100 |
+
if ($this->is_orchestrated())
|
101 |
+
{
|
102 |
+
if (property_exists($this->header->orchestrationInfo, 'autoSpellchecker'))
|
103 |
+
{
|
104 |
+
return OrchestrationType::AUTOSPELLCHECKER;
|
105 |
+
}
|
106 |
+
elseif (property_exists($this->header->orchestrationInfo, 'fallbackToOptional'))
|
107 |
+
{
|
108 |
+
return OrchestrationType::FALLBACKTOOPTIONAL;
|
109 |
+
}
|
110 |
+
else
|
111 |
+
{
|
112 |
+
throw new OrchestrationTypeException('Unknown orchestration type');
|
113 |
+
}
|
114 |
+
}
|
115 |
+
else
|
116 |
+
{
|
117 |
+
throw new Exception('This request is not orchestrated');
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* @return true if this request is a result of orchestration
|
123 |
+
*/
|
124 |
+
public function is_orchestrated()
|
125 |
+
{
|
126 |
+
return property_exists($this->header, 'orchestrationInfo');
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
class OrchestrationTypeException extends Exception
|
131 |
+
{
|
132 |
+
|
133 |
}
|
134 |
|
135 |
|
lib/antidot/AFS/SEARCH/afs_response_helper.php
CHANGED
@@ -308,6 +308,25 @@ class AfsResponseHelper extends AfsResponseHelperBase
|
|
308 |
{
|
309 |
return $this->header->get_query_parameter($key);
|
310 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
/** @} */
|
312 |
|
313 |
}
|
308 |
{
|
309 |
return $this->header->get_query_parameter($key);
|
310 |
}
|
311 |
+
|
312 |
+
/**
|
313 |
+
* @brief get request orchestration type (AutoSpellchecker or fallbackToOptional)
|
314 |
+
* @return OrchestrationType::(AutoSpellchecker or fallbackToOptional)
|
315 |
+
* @throws Exception
|
316 |
+
* @throws OrchestrationTypeException
|
317 |
+
*/
|
318 |
+
public function get_orchestration_type()
|
319 |
+
{
|
320 |
+
return $this->header->get_orchestration_type();
|
321 |
+
}
|
322 |
+
|
323 |
+
/**
|
324 |
+
* @return true if this request is a result of orchestration
|
325 |
+
*/
|
326 |
+
public function is_orchestrated()
|
327 |
+
{
|
328 |
+
return $this->header->is_orchestrated();
|
329 |
+
}
|
330 |
/** @} */
|
331 |
|
332 |
}
|
lib/antidot/AFS/orchestration_type.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class OrchestrationType extends BasicEnum
|
4 |
+
{
|
5 |
+
private static $instance = null;
|
6 |
+
|
7 |
+
static public function check_value($value, $msg=null)
|
8 |
+
{
|
9 |
+
if (is_null(self::$instance))
|
10 |
+
{
|
11 |
+
self::$instance = new self();
|
12 |
+
}
|
13 |
+
BasicEnum::check_val(self::$instance, $value, $msg);
|
14 |
+
}
|
15 |
+
|
16 |
+
const AUTOSPELLCHECKER = 'autoSpellchecker';
|
17 |
+
const FALLBACKTOOPTIONAL = 'fallbackToOptional';
|
18 |
+
}
|
lib/antidot/AIF/TEST/authenticationTest.php
CHANGED
@@ -16,12 +16,7 @@ class AuthenticationTest extends PHPUnit_Framework_TestCase
|
|
16 |
$this->assertEquals(array('Authorization' => 'Basic ' . base64_encode('foo:bar')), $auth->format_as_header_param());
|
17 |
}
|
18 |
|
19 |
-
|
20 |
-
{
|
21 |
-
$auth = new AfsTokenAuthentication('foo');
|
22 |
-
$this->assertEquals(array('afs:login' => 'login://foo@SSO'), $auth->format_as_url_param('7.6'));
|
23 |
-
}
|
24 |
-
public function testTokenAuthenticationFormatNew()
|
25 |
{
|
26 |
$auth = new AfsTokenAuthentication('foo');
|
27 |
$this->assertEquals(array('access-token' => 'foo'), $auth->format_as_header_param());
|
16 |
$this->assertEquals(array('Authorization' => 'Basic ' . base64_encode('foo:bar')), $auth->format_as_header_param());
|
17 |
}
|
18 |
|
19 |
+
public function testTokenAuthenticationFormatNew()
|
|
|
|
|
|
|
|
|
|
|
20 |
{
|
21 |
$auth = new AfsTokenAuthentication('foo');
|
22 |
$this->assertEquals(array('access-token' => 'foo'), $auth->format_as_header_param());
|
lib/antidot/AIF/TEST/pafConnectorTest.php
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
<?php ob_start();
|
2 |
require_once('AIF/afs_paf_connector.php');
|
|
|
3 |
|
4 |
|
5 |
class PafConnectorTest extends PHPUnit_Framework_TestCase
|
6 |
{
|
7 |
public function testOneShot()
|
8 |
{
|
9 |
-
return;
|
10 |
$auth = new AfsUserAuthentication('antidot', 'change_on_install', AFS_AUTH_ANTIDOT);
|
11 |
-
$service = new AfsService(42);
|
12 |
$content = '<?xml version="1.0"?><root><uri>http://generated.doc.<?php ob_start();</uri><title>Generated doc</title><content>Generated content</content></root>';
|
13 |
$doc = new AfsDocument($content);
|
14 |
-
$connector = new AfsPafConnector('
|
15 |
$result = $connector->upload_doc($doc);
|
16 |
$this->assertTrue($result->has_result());
|
17 |
$this->assertFalse($result->in_error());
|
1 |
<?php ob_start();
|
2 |
require_once('AIF/afs_paf_connector.php');
|
3 |
+
require_once('AIF/afs_user_authentication.php');
|
4 |
|
5 |
|
6 |
class PafConnectorTest extends PHPUnit_Framework_TestCase
|
7 |
{
|
8 |
public function testOneShot()
|
9 |
{
|
|
|
10 |
$auth = new AfsUserAuthentication('antidot', 'change_on_install', AFS_AUTH_ANTIDOT);
|
11 |
+
$service = new AfsService(42, AfsServiceStatus::BETA);
|
12 |
$content = '<?xml version="1.0"?><root><uri>http://generated.doc.<?php ob_start();</uri><title>Generated doc</title><content>Generated content</content></root>';
|
13 |
$doc = new AfsDocument($content);
|
14 |
+
$connector = new AfsPafConnector('kaio:8085', $service, 'Catalog', $auth);
|
15 |
$result = $connector->upload_doc($doc);
|
16 |
$this->assertTrue($result->has_result());
|
17 |
$this->assertFalse($result->in_error());
|
lib/antidot/AIF/afs_about_connector.php
CHANGED
@@ -7,7 +7,7 @@ require_once 'AIF/afs_bows_information.php';
|
|
7 |
/** @brief Simple connector to retrieve AFS Back Office information. */
|
8 |
class AfsAboutConnector extends AfsBOWSConnector implements AfsBOWSConnectorInterface
|
9 |
{
|
10 |
-
public function __construct($host, AfsService $service=null, $scheme=AFS_SCHEME_HTTP, SAI_CurlInterface $curlConnector=null)
|
11 |
{
|
12 |
parent::__construct($host, $service, $scheme, $curlConnector);
|
13 |
}
|
7 |
/** @brief Simple connector to retrieve AFS Back Office information. */
|
8 |
class AfsAboutConnector extends AfsBOWSConnector implements AfsBOWSConnectorInterface
|
9 |
{
|
10 |
+
public function __construct($host, AfsService $service=null, $scheme=AFS_SCHEME_HTTP, SAI_CurlInterface $curlConnector=null, $params=null)
|
11 |
{
|
12 |
parent::__construct($host, $service, $scheme, $curlConnector);
|
13 |
}
|
lib/antidot/AIF/afs_authentication.php
CHANGED
@@ -24,14 +24,14 @@ interface AfsAuthentication
|
|
24 |
* version information.
|
25 |
* @return string representing authentication.
|
26 |
*/
|
27 |
-
public function format_as_url_param(
|
28 |
|
29 |
/** @brief Formats authentication parameters.
|
30 |
* @param $version [in] Format string representation according to provided
|
31 |
* version information.
|
32 |
* @return array representing authentication.
|
33 |
*/
|
34 |
-
public function format_as_header_param(
|
35 |
}
|
36 |
|
37 |
|
24 |
* version information.
|
25 |
* @return string representing authentication.
|
26 |
*/
|
27 |
+
public function format_as_url_param();
|
28 |
|
29 |
/** @brief Formats authentication parameters.
|
30 |
* @param $version [in] Format string representation according to provided
|
31 |
* version information.
|
32 |
* @return array representing authentication.
|
33 |
*/
|
34 |
+
public function format_as_header_param();
|
35 |
}
|
36 |
|
37 |
|
lib/antidot/AIF/afs_bows_connector.php
CHANGED
@@ -105,7 +105,7 @@ abstract class AfsBOWSConnector extends AfsConnectorBase
|
|
105 |
throw new Exception("Code : " . $r->error->code . "\nMessage : " .$r->error->message . "\nDescription : " . $r->error->description);
|
106 |
}
|
107 |
$this->curlConnector->curl_close($request);
|
108 |
-
|
109 |
return $result;
|
110 |
}
|
111 |
|
105 |
throw new Exception("Code : " . $r->error->code . "\nMessage : " .$r->error->message . "\nDescription : " . $r->error->description);
|
106 |
}
|
107 |
$this->curlConnector->curl_close($request);
|
108 |
+
Mage::log($result, null, 'antidot.log');
|
109 |
return $result;
|
110 |
}
|
111 |
|
lib/antidot/AIF/afs_paf_connector.php
CHANGED
@@ -62,8 +62,8 @@ class AfsPafConnector extends AfsBOWSConnector implements AfsBOWSConnectorInterf
|
|
62 |
if (! $mgr->has_document())
|
63 |
throw new InvalidArgumentException('No document to be sent');
|
64 |
|
65 |
-
$version = $this->get_bo_version();
|
66 |
-
$context = new AfsPafConnectorContext($
|
67 |
return new AfsPafUploadReply(json_decode($this->query($context)));
|
68 |
}
|
69 |
|
@@ -76,13 +76,13 @@ class AfsPafConnector extends AfsBOWSConnector implements AfsBOWSConnectorInterf
|
|
76 |
{
|
77 |
$url = parent::get_base_url('service');
|
78 |
|
79 |
-
$params = $this->authentication->format_as_url_param($context->version);
|
80 |
if (! is_null($context->comment))
|
81 |
$params['comment'] = $context->comment;
|
82 |
|
83 |
return sprintf($url . '/%d/instance/%s/paf/%s/upload?%s',
|
84 |
$this->service->id, $this->service->status, $this->paf_name,
|
85 |
-
$this->format_parameters(
|
86 |
}
|
87 |
|
88 |
/** @brief Retrieves authentication as HTTP header for new authentication policy (>=v7.7)
|
@@ -91,7 +91,7 @@ class AfsPafConnector extends AfsBOWSConnector implements AfsBOWSConnectorInterf
|
|
91 |
*/
|
92 |
public function get_http_headers($context=null)
|
93 |
{
|
94 |
-
return $this->authentication->format_as_header_param(
|
95 |
}
|
96 |
|
97 |
public function set_post_content(&$request, $context)
|
@@ -140,9 +140,9 @@ class AfsPafConnectorContext
|
|
140 |
* sent to Back Office.
|
141 |
* @param $comment [in] Optional comment for uploaded files.
|
142 |
*/
|
143 |
-
public function __construct(
|
144 |
{
|
145 |
-
$this->version = $version;
|
146 |
$this->doc_mgr = $doc_mgr;
|
147 |
$this->comment = $comment;
|
148 |
}
|
62 |
if (! $mgr->has_document())
|
63 |
throw new InvalidArgumentException('No document to be sent');
|
64 |
|
65 |
+
// $version = $this->get_bo_version();
|
66 |
+
$context = new AfsPafConnectorContext($mgr, $comment);
|
67 |
return new AfsPafUploadReply(json_decode($this->query($context)));
|
68 |
}
|
69 |
|
76 |
{
|
77 |
$url = parent::get_base_url('service');
|
78 |
|
79 |
+
// $params = $this->authentication->format_as_url_param($context->version);
|
80 |
if (! is_null($context->comment))
|
81 |
$params['comment'] = $context->comment;
|
82 |
|
83 |
return sprintf($url . '/%d/instance/%s/paf/%s/upload?%s',
|
84 |
$this->service->id, $this->service->status, $this->paf_name,
|
85 |
+
$this->format_parameters(array()));
|
86 |
}
|
87 |
|
88 |
/** @brief Retrieves authentication as HTTP header for new authentication policy (>=v7.7)
|
91 |
*/
|
92 |
public function get_http_headers($context=null)
|
93 |
{
|
94 |
+
return $this->authentication->format_as_header_param();
|
95 |
}
|
96 |
|
97 |
public function set_post_content(&$request, $context)
|
140 |
* sent to Back Office.
|
141 |
* @param $comment [in] Optional comment for uploaded files.
|
142 |
*/
|
143 |
+
public function __construct(AfsDocumentManager $doc_mgr, $comment)
|
144 |
{
|
145 |
+
// $this->version = $version;
|
146 |
$this->doc_mgr = $doc_mgr;
|
147 |
$this->comment = $comment;
|
148 |
}
|
lib/antidot/AIF/afs_paf_live_connector.php
CHANGED
@@ -42,7 +42,7 @@ class AfsPafLiveConnector extends AfsBOWSConnector implements AfsBOWSConnectorIn
|
|
42 |
{
|
43 |
$url = parent::get_base_url('service');
|
44 |
|
45 |
-
$params =
|
46 |
$params['afs:layers'] = $context['layers'];
|
47 |
|
48 |
return sprintf($url . '/%d/instance/%s/paf/%s/process?%s',
|
42 |
{
|
43 |
$url = parent::get_base_url('service');
|
44 |
|
45 |
+
$params = array();
|
46 |
$params['afs:layers'] = $context['layers'];
|
47 |
|
48 |
return sprintf($url . '/%d/instance/%s/paf/%s/process?%s',
|
lib/antidot/AIF/afs_token_authentication.php
CHANGED
@@ -24,23 +24,17 @@ class AfsTokenAuthentication implements AfsAuthentication
|
|
24 |
* version information.
|
25 |
* @return array representing authentication.
|
26 |
*/
|
27 |
-
public function format_as_url_param(
|
28 |
{
|
29 |
-
|
30 |
-
return array('afs:login' => sprintf('login://%s@%s', $this->token, AFS_AUTH_SSO));
|
31 |
-
else
|
32 |
-
return array();
|
33 |
}
|
34 |
/** @brief Formats authentication parameters.
|
35 |
* @param $version [in] Format string representation according to provided
|
36 |
* version information.
|
37 |
* @return array representing authentication.
|
38 |
*/
|
39 |
-
public function format_as_header_param(
|
40 |
{
|
41 |
-
|
42 |
-
return array();
|
43 |
-
else
|
44 |
-
return array('access-token' => $this->token);
|
45 |
}
|
46 |
}
|
24 |
* version information.
|
25 |
* @return array representing authentication.
|
26 |
*/
|
27 |
+
public function format_as_url_param()
|
28 |
{
|
29 |
+
return array();
|
|
|
|
|
|
|
30 |
}
|
31 |
/** @brief Formats authentication parameters.
|
32 |
* @param $version [in] Format string representation according to provided
|
33 |
* version information.
|
34 |
* @return array representing authentication.
|
35 |
*/
|
36 |
+
public function format_as_header_param()
|
37 |
{
|
38 |
+
return array('access-token' => $this->token);
|
|
|
|
|
|
|
39 |
}
|
40 |
}
|
lib/antidot/AIF/afs_user_authentication.php
CHANGED
@@ -33,27 +33,25 @@ class AfsUserAuthentication implements AfsAuthentication
|
|
33 |
* version information.
|
34 |
* @return array representing authentication.
|
35 |
*/
|
36 |
-
public function format_as_url_param(
|
37 |
{
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
|
|
46 |
}
|
47 |
/** @brief Formats authentication parameters.
|
48 |
* @param $version [in] Format string representation according to provided
|
49 |
* version information.
|
50 |
* @return array representing authentication.
|
51 |
*/
|
52 |
-
public function format_as_header_param(
|
53 |
{
|
54 |
-
|
55 |
-
return array();
|
56 |
-
else
|
57 |
-
return array('Authorization' => 'Basic ' . base64_encode($this->user . ':' . $this->password));
|
58 |
}
|
59 |
}
|
33 |
* version information.
|
34 |
* @return array representing authentication.
|
35 |
*/
|
36 |
+
public function format_as_url_param()
|
37 |
{
|
38 |
+
return array();
|
39 |
+
// // if ('7.6' == $version) {
|
40 |
+
// if (is_null($this->authority))
|
41 |
+
// throw new InvalidArgumentException('In version ' . $version
|
42 |
+
// . ' authority parameter is mandatory!');
|
43 |
+
// return array('afs:login' => sprintf('login://%s:%s@%s', $this->user, $this->password, $this->authority));
|
44 |
+
// // } else {
|
45 |
+
// // return array();
|
46 |
+
// // }
|
47 |
}
|
48 |
/** @brief Formats authentication parameters.
|
49 |
* @param $version [in] Format string representation according to provided
|
50 |
* version information.
|
51 |
* @return array representing authentication.
|
52 |
*/
|
53 |
+
public function format_as_header_param()
|
54 |
{
|
55 |
+
return array('Authorization' => 'Basic ' . base64_encode($this->user . ':' . $this->password));
|
|
|
|
|
|
|
56 |
}
|
57 |
}
|
lib/antidot/afs_lib.php
CHANGED
@@ -16,3 +16,10 @@ require_once 'AFS/SEARCH/FILTER/afs_filter.php';
|
|
16 |
|
17 |
require_once 'AFS/ACP/afs_acp.php';
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
require_once 'AFS/ACP/afs_acp.php';
|
18 |
|
19 |
+
/**
|
20 |
+
* Paf Upload
|
21 |
+
*/
|
22 |
+
require_once 'AIF/afs_document.php';
|
23 |
+
require_once 'AIF/afs_paf_connector.php';
|
24 |
+
require_once 'AIF/afs_authentication.php';
|
25 |
+
require_once 'AIF/afs_user_authentication.php';
|
lib/antidot/afs_version.php
CHANGED
@@ -15,7 +15,7 @@ define('AFS_API_VERSION_MINOR', 16);
|
|
15 |
/** @brief API fix version number.
|
16 |
*
|
17 |
* You should increase this number as soon as a bug is fixed.*/
|
18 |
-
define('AFS_API_VERSION_FIX',
|
19 |
|
20 |
/** @brief API full version number. */
|
21 |
define('AFS_API_VERSION', implode('.', array(AFS_API_VERSION_MAJOR, AFS_API_VERSION_MINOR, AFS_API_VERSION_FIX)));
|
15 |
/** @brief API fix version number.
|
16 |
*
|
17 |
* You should increase this number as soon as a bug is fixed.*/
|
18 |
+
define('AFS_API_VERSION_FIX', 4);
|
19 |
|
20 |
/** @brief API full version number. */
|
21 |
define('AFS_API_VERSION', implode('.', array(AFS_API_VERSION_MAJOR, AFS_API_VERSION_MINOR, AFS_API_VERSION_FIX)));
|
lib/antidot/doc/data/raw_example.php
CHANGED
@@ -2,355 +2,30 @@
|
|
2 |
/** @file raw_example.php
|
3 |
* @example raw_example.php
|
4 |
*/
|
5 |
-
require_once "PHP_API/afs_lib.php";
|
6 |
-
$search = new AfsSearch('
|
7 |
$query = $search->build_query_from_url_parameters();
|
8 |
$query = $query->set_lang('fr'); // language is set manually in order to get spellcheck results
|
9 |
$query = $query->set_multi_selection_facets('classification');
|
10 |
$query = $query->set_mono_selection_facets('afs:lang', 'has_variants', 'has_image');
|
11 |
$query = $query->set_facet_order('price_eur', 'marketing', 'classification', 'has_variants', 'has_image');
|
12 |
$query = $query->set_facets_values_sort_order(AfsFacetValuesSortMode::ITEMS, AfsSortOrder::DESC);
|
|
|
13 |
$helper = $search->execute($query);
|
14 |
$generated_url = $search->get_generated_url();
|
15 |
$clustering_is_active = $query->has_cluster();
|
16 |
-
$nsmap = array('ns' => 'http://ref.antidot.net/store/afs#');
|
17 |
-
?>
|
18 |
|
|
|
|
|
|
|
19 |
|
20 |
-
<html>
|
21 |
-
<head>
|
22 |
-
<title>Antidot PHP API - Raw example</title>
|
23 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
24 |
-
<meta charset="UTF-8">
|
25 |
-
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
|
26 |
-
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css">
|
27 |
-
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
28 |
-
<!--[if lt IE 9]>
|
29 |
-
<script src="../../assets/js/html5shiv.js"></script>
|
30 |
-
<script src="../../assets/js/respond.min.js"></script>
|
31 |
-
<![endif]-->
|
32 |
-
</head>
|
33 |
-
<body>
|
34 |
-
<div>
|
35 |
-
<a href="<?php echo $generated_url; ?>" target="_blank"><?php echo $generated_url; ?></a>
|
36 |
-
</div>
|
37 |
-
<div class="page-header">
|
38 |
-
<h1>Raw example <small>based on the Antidot PHP API</small></h1>
|
39 |
-
</div>
|
40 |
-
<!-- ####################### Search box ########################### -->
|
41 |
-
<div class="row">
|
42 |
-
<div class="col-md-5"></div>
|
43 |
-
<div class="input-group col-md-2">
|
44 |
-
<form method="get" action="" role="form" class="input-group">
|
45 |
-
<span class="input-group-addon">Search</span>
|
46 |
-
<input type="search" name="query" class="form-control" placeholder="Keywords" />
|
47 |
-
<span class="input-group-btn">
|
48 |
-
<button class="btn btn-primary" type="submit"><span class="glyphicon glyphicon-search"></span></button>
|
49 |
-
</span>
|
50 |
-
</form>
|
51 |
-
</div>
|
52 |
-
</div>
|
53 |
-
|
54 |
-
<!-- ####################### Current filter parameters ########################### -->
|
55 |
-
<?php
|
56 |
-
$params = $query->get_parameters(false);
|
57 |
-
if (array_key_exists('filter', $params) && is_array($params['filter'])) {
|
58 |
-
echo '
|
59 |
-
<div class="row">
|
60 |
-
<div class="col-md-8">';
|
61 |
-
foreach ($params['filter'] as $filter => $values) {
|
62 |
-
echo '
|
63 |
-
<ul>Filter: <strong>' . $filter . '</strong>';
|
64 |
-
foreach ($values as $value) {
|
65 |
-
echo '
|
66 |
-
<li>Value: ' . $value . '</li>';
|
67 |
-
}
|
68 |
-
echo '
|
69 |
-
</ul>';
|
70 |
-
}
|
71 |
-
echo '
|
72 |
-
</div>
|
73 |
-
</div>';
|
74 |
-
} ?>
|
75 |
-
|
76 |
-
<!-- ####################### Promote ########################### -->
|
77 |
-
<?php
|
78 |
-
if ($helper->has_promote()) {
|
79 |
-
echo '
|
80 |
-
<div class="row">
|
81 |
-
<div class="col-md-3"></div>';
|
82 |
-
foreach ($helper->get_promotes() as $promote) {
|
83 |
-
echo '
|
84 |
-
<div class="col-md-2">
|
85 |
-
<h4><span class="label label-danger">' . $promote->get_title() . '</span></h4>
|
86 |
-
<p>' . $promote->get_abstract() . '</p>
|
87 |
-
<ul>Some custom data:
|
88 |
-
<li>tag: ' . $promote->get_custom_data('tag') . '</li>
|
89 |
-
<li>identifier: ' . $promote->get_custom_data('id') . '</li>
|
90 |
-
</ul>
|
91 |
-
<ul>Or loop on custom data:';
|
92 |
-
foreach ($promote->get_custom_data() as $key => $value) {
|
93 |
-
echo '
|
94 |
-
<li><strong>' . $key . '</strong>: ' . $value . '</li>';
|
95 |
-
}
|
96 |
-
echo '
|
97 |
-
</ul>
|
98 |
-
</div>';
|
99 |
-
}
|
100 |
-
echo '
|
101 |
-
</div>
|
102 |
-
</div>';
|
103 |
-
} ?>
|
104 |
-
|
105 |
-
<?php
|
106 |
-
// checks whether there is at least one replyset
|
107 |
if ($helper->has_replyset()) {
|
108 |
-
$replyset = $helper->get_replyset(); // Retrieves only first replyset
|
109 |
if ($replyset->has_facet()) {
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
<div class="col-md-3">
|
114 |
-
<h2>Filters</h2>
|
115 |
-
<!-- ####################### Filters ########################### -->
|
116 |
-
<?php
|
117 |
-
foreach ($replyset->get_facets() as $facet) {
|
118 |
-
/* foreach ($replyset->facets->facet as $facet) */
|
119 |
-
?>
|
120 |
-
<div class="panel panel-default">
|
121 |
-
<div class="panel-heading"><?php echo $facet->get_label() ?></div> <!-- $facet->labels[0]->label -->
|
122 |
-
<div class="panel-body">
|
123 |
-
<div class="list-group">
|
124 |
-
<div class="list-group">
|
125 |
-
<?php
|
126 |
-
foreach ($facet->get_elements() as $value) {
|
127 |
-
/* $item = null;
|
128 |
-
* if ($facet->{'afs:t'} == 'FacetTree') {
|
129 |
-
* $item = 'node';
|
130 |
-
* } elif ($facet->{'afs:t'} == 'FacetInterval') {
|
131 |
-
* $item = 'interval;
|
132 |
-
* } else {
|
133 |
-
* throw new Exception('Unknown facet layout: ' . $facet->{'afs:t'});
|
134 |
-
* }
|
135 |
-
* foreach ($facet->$item as $value) */
|
136 |
-
?>
|
137 |
-
<a class="list-group-item <?php echo ($value->active ? 'active' : '') ?>" href="<?php echo $value->link ?>"><?php echo $value->label ?><span class="badge"><?php echo $value->count ?></span></a>
|
138 |
-
<!-- $active = $query->has_filter($facet->id, $value->key);
|
139 |
-
...
|
140 |
-
-->
|
141 |
-
<?php } ?>
|
142 |
-
</div>
|
143 |
-
</div>
|
144 |
-
</div>
|
145 |
-
</div>
|
146 |
-
<?php } ?>
|
147 |
-
</div>
|
148 |
-
<?php } ?>
|
149 |
-
|
150 |
-
<div class="col-md-9">
|
151 |
-
<div class="row page-header">
|
152 |
-
<div class="col-md-1"></div>
|
153 |
-
<div class="col-md-2">
|
154 |
-
<h2>Results <span class="label label-success"><?php echo $replyset->get_meta()->get_total_replies() ?></span></h2>
|
155 |
-
<h4><span class="label label-info">Duration <?php echo $replyset->get_meta()->get_duration() ?> ms</span></h4>
|
156 |
-
</div>
|
157 |
-
<div class="col-md-1"></div>
|
158 |
-
<div class="col-md-2">
|
159 |
-
<!-- ####################### Relevance ########################### -->
|
160 |
-
<?php
|
161 |
-
if ($query->has_sort(AfsSortBuiltins::RELEVANCE)) {
|
162 |
-
if ($query->get_sort_order(AfsSortBuiltins::RELEVANCE) == AfsSortOrder::ASC) {
|
163 |
-
$relevance_icon = 'glyphicon-arrow-up';
|
164 |
-
$relevance_query = $query->add_sort(AfsSortBuiltins::RELEVANCE, AfsSortOrder::DESC);
|
165 |
-
} else {
|
166 |
-
$relevance_icon = 'glyphicon-arrow-down';
|
167 |
-
$relevance_query = $query->add_sort(AfsSortBuiltins::RELEVANCE, AfsSortOrder::ASC);
|
168 |
-
}
|
169 |
-
} else {
|
170 |
-
$relevance_query = $query->add_sort(AfsSortBuiltins::RELEVANCE, AfsSortOrder::ASC);
|
171 |
-
$relevance_icon = 'glyphicon-arrow-down';
|
172 |
-
}
|
173 |
-
$relevance_link = $search->get_helpers_configuration()->get_query_coder()->generate_link($relevance_query);
|
174 |
-
?>
|
175 |
-
<a href="<?php echo $relevance_link ?>" class="btn btn-default btn-lg active" role="button"><span class="glyphicon <?php echo $relevance_icon; ?>"></span> Relevance</a>
|
176 |
-
</div>
|
177 |
-
<div class="col-md-2">
|
178 |
-
<?php
|
179 |
-
$query_coder = $search->get_helpers_configuration()->get_query_coder();
|
180 |
-
if ($clustering_is_active) {
|
181 |
-
$cluster_query = $query->unset_cluster();
|
182 |
-
$cluster_link = $query_coder->generate_link($query->unset_cluster());
|
183 |
-
$cluster_label = 'Remove clusters';
|
184 |
-
} else {
|
185 |
-
$cluster_link = $query_coder->generate_link($query->set_cluster('marketing', 1)->set_overspill());
|
186 |
-
$cluster_label = 'Create cluster on "marketing" filter';
|
187 |
-
} ?>
|
188 |
-
<a href="<?php echo $cluster_link ?>" class="btn btn-default btn-lg active" role="button"><?php echo $cluster_label ?></a>
|
189 |
-
</div>
|
190 |
-
</div>
|
191 |
-
|
192 |
-
<!-- ####################### Clusters ########################### -->
|
193 |
-
<?php
|
194 |
-
if ($clustering_is_active) {
|
195 |
-
foreach ($replyset->get_clusters() as $cluster) {
|
196 |
-
echo '
|
197 |
-
<div class="row">
|
198 |
-
<div class="col-md-1"></div>
|
199 |
-
<div class="col-md-5">
|
200 |
-
<h3>
|
201 |
-
<span class="label label-success">
|
202 |
-
<a href="' . $query_coder->generate_link($cluster->get_query()) . '">' . $cluster->get_label() . '<a>
|
203 |
-
</span>
|
204 |
-
</h3>
|
205 |
-
</div>
|
206 |
-
</div>
|
207 |
-
<ul class="list-unstyled">';
|
208 |
-
foreach ($cluster->get_replies() as $reply) {
|
209 |
-
echo '
|
210 |
-
<li>
|
211 |
-
<h3>' . $reply->get_title() . '</h3>
|
212 |
-
<p><a href="' . $reply->get_uri() . '">' . $reply->get_uri() . '</a></p>
|
213 |
-
<p>' . $reply->get_abstract() . '</p>
|
214 |
-
<p>Some client data:
|
215 |
-
<ul>
|
216 |
-
<li>Name: ' . $reply->get_clientdata()->get_value('/ns:product/ns:name', $nsmap) . '</li>
|
217 |
-
<li>Availability: ' . $reply->get_clientdata()->get_value('/ns:product/ns:is_available', $nsmap) . '</li>
|
218 |
-
<li>Prices:
|
219 |
-
<ul>';
|
220 |
-
// Here multiple values are retrieved from client data
|
221 |
-
foreach ($reply->get_clientdata()->get_values('/ns:product/ns:prices/ns:price', $nsmap) as $value)
|
222 |
-
echo '<li>' . $value . '</li>';
|
223 |
-
echo '
|
224 |
-
</ul>
|
225 |
-
</li>
|
226 |
-
</ul>
|
227 |
-
</p>
|
228 |
-
</li>';
|
229 |
-
}
|
230 |
-
echo '
|
231 |
-
</ul>';
|
232 |
}
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
<div class="col-md-5">
|
237 |
-
<h3><span class="label label-success">Other results</span></h3>
|
238 |
-
</div>
|
239 |
-
</div>';
|
240 |
-
} ?>
|
241 |
-
|
242 |
-
<!-- ####################### Replies ########################### -->
|
243 |
-
<?php
|
244 |
-
echo '
|
245 |
-
<ul class="list-unstyled">';
|
246 |
-
foreach ($replyset->get_replies() as $reply) {
|
247 |
-
?>
|
248 |
-
<li>
|
249 |
-
<h3><?php echo $reply->get_title() ?></h3>
|
250 |
-
<p><a href="<?php echo $reply->get_uri() ?>"><?php echo $reply->get_uri() ?></a></p>
|
251 |
-
<p><?php echo $reply->get_abstract() ?></p>
|
252 |
-
<p>Some client data:
|
253 |
-
<ul>
|
254 |
-
<li>Name: <?php echo $reply->get_clientdata()->get_value('/ns:product/ns:name', $nsmap) ?></li>
|
255 |
-
<li>Availability: <?php echo $reply->get_clientdata()->get_value('/ns:product/ns:is_available', $nsmap) ?></li>
|
256 |
-
<li>Prices:
|
257 |
-
<ul>
|
258 |
-
<?php
|
259 |
-
// Here multiple values are retrieved from client data
|
260 |
-
foreach ($reply->get_clientdata()->get_values('/ns:product/ns:prices/ns:price', $nsmap) as $value) {
|
261 |
-
echo '<li>' . $value . '</li>';
|
262 |
-
} ?>
|
263 |
-
</ul>
|
264 |
-
</li>
|
265 |
-
</ul>
|
266 |
-
</p>
|
267 |
-
</li>
|
268 |
-
<?php } ?>
|
269 |
-
</ul>
|
270 |
-
</div>
|
271 |
-
</div>
|
272 |
-
|
273 |
-
<!-- ####################### Pager ########################### -->
|
274 |
-
<?php
|
275 |
-
if ($replyset->has_pager()) {
|
276 |
-
$pager = $replyset->get_pager();
|
277 |
-
?>
|
278 |
-
<div class="row">
|
279 |
-
<div class="row">
|
280 |
-
<div class="col-md-5"></div>
|
281 |
-
<div class="input-group col-md-3">
|
282 |
-
<ul class="pagination">
|
283 |
-
<?php
|
284 |
-
foreach ($pager->get_all_pages() as $page => $url) {
|
285 |
-
if ($page == $pager->get_current_no()) {
|
286 |
-
$active = 'active';
|
287 |
-
} else {
|
288 |
-
$active = '';
|
289 |
-
}
|
290 |
-
?>
|
291 |
-
<li class="<?php echo $active ?>"><a href="<?php echo $url ?>"><?php echo $page ?></a></li>
|
292 |
-
<?php } ?>
|
293 |
-
|
294 |
-
</ul>
|
295 |
-
</div>
|
296 |
-
</div>
|
297 |
-
<?php } ?>
|
298 |
-
|
299 |
-
</div>
|
300 |
-
|
301 |
-
<!-- ####################### Spellcheck ########################### -->
|
302 |
-
<?php } elseif ($helper->has_spellcheck()) { // if no replyset, let's check spellcheck ?>
|
303 |
-
<div class="row">
|
304 |
-
<div class="col-md-9">
|
305 |
-
<div class="row">
|
306 |
-
<div class="col-md-1"></div>
|
307 |
-
<div class="col-md-4">
|
308 |
-
<h2>Typo ?</h2>
|
309 |
-
</div>
|
310 |
-
</div>
|
311 |
-
<?php
|
312 |
-
foreach ($helper->get_spellchecks() as $feed => $suggestions) {
|
313 |
-
?>
|
314 |
-
<div class="row">
|
315 |
-
<div class="col-md-6">
|
316 |
-
<h4><?php echo $feed ?></h4>
|
317 |
-
<ul class="list-unstyled">
|
318 |
-
<?php
|
319 |
-
foreach ($suggestions as $suggest) {
|
320 |
-
?>
|
321 |
-
<li>
|
322 |
-
<h3>Did you mean...</h3>
|
323 |
-
<p><a href="<?php echo $suggest->get_link() ?>"><?php echo $suggest->get_formatted_text() ?></a></p>
|
324 |
-
</li>
|
325 |
-
<?php } ?>
|
326 |
-
</ul>
|
327 |
-
</div>
|
328 |
-
</div>
|
329 |
-
<?php } ?>
|
330 |
-
</div>
|
331 |
-
</div>
|
332 |
-
<!-- ####################### Error ########################### -->
|
333 |
-
<?php } elseif ($helper->in_error()) { // no spellcheck... is there any error? ?>
|
334 |
-
<div class="row">
|
335 |
-
<div class="col-md-9">
|
336 |
-
<div class="row">
|
337 |
-
<div class="col-md-1"></div>
|
338 |
-
<div class="col-md-4">
|
339 |
-
<h2>Really bad error occured</h2>
|
340 |
-
</div>
|
341 |
-
</div>
|
342 |
-
<div class="row">
|
343 |
-
<div class="col-md-10">
|
344 |
-
<h2><?php echo $helper->get_error_msg() ?></h2>
|
345 |
-
</div>
|
346 |
-
</div>
|
347 |
-
</div>
|
348 |
-
</div>
|
349 |
-
<?php } ?>
|
350 |
-
|
351 |
-
<!-- jQuery (necessary for Bootstrap\'s JavaScript plugins) -->
|
352 |
-
<script src="//code.jquery.com/jquery.js"></script>
|
353 |
-
<!-- Include all compiled plugins (below), or include individual files as needed -->
|
354 |
-
<script src="js/bootstrap.min.js"></script>
|
355 |
-
</body>
|
356 |
-
</html>
|
2 |
/** @file raw_example.php
|
3 |
* @example raw_example.php
|
4 |
*/
|
5 |
+
require_once "/home/ct/Dev/PHP_API/afs_lib.php";
|
6 |
+
$search = new AfsSearch('3suisses-be.afs-antidot.net', 7123);
|
7 |
$query = $search->build_query_from_url_parameters();
|
8 |
$query = $query->set_lang('fr'); // language is set manually in order to get spellcheck results
|
9 |
$query = $query->set_multi_selection_facets('classification');
|
10 |
$query = $query->set_mono_selection_facets('afs:lang', 'has_variants', 'has_image');
|
11 |
$query = $query->set_facet_order('price_eur', 'marketing', 'classification', 'has_variants', 'has_image');
|
12 |
$query = $query->set_facets_values_sort_order(AfsFacetValuesSortMode::ITEMS, AfsSortOrder::DESC);
|
13 |
+
$query = $query->set_page(2, 'Catalog');
|
14 |
$helper = $search->execute($query);
|
15 |
$generated_url = $search->get_generated_url();
|
16 |
$clustering_is_active = $query->has_cluster();
|
|
|
|
|
17 |
|
18 |
+
$reply_set = $helper->get_replyset('Catalog');
|
19 |
+
$pager = $reply_set->get_pager();
|
20 |
+
$pages = $pager->get_all_pages();
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
if ($helper->has_replyset()) {
|
23 |
+
$replyset = $helper->get_replyset('Catalog'); // Retrieves only first replyset
|
24 |
if ($replyset->has_facet()) {
|
25 |
+
foreach ($replyset->get_facets() as $facet) {
|
26 |
+
foreach ($facet->get_labels() as $lang => $label) {
|
27 |
+
echo $facet->id + " " + $lang + " " + $label + "\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
+
}
|
30 |
+
}
|
31 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Antidot_Antidot</name>
|
4 |
-
<version>1.2.
|
5 |
<stability>stable</stability>
|
6 |
<license>LGPL</license>
|
7 |
<channel>community</channel>
|
@@ -17,9 +17,9 @@ Prevent to export empty categories node&#xD;
|
|
17 |
Add cdata for variant name&#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-
|
21 |
-
<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="Banner.php" hash="cfc866a6c1cfb2ee9cb690bed84781fe"/><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="3ba32c0f20c4b7447229843f45b06d3f"/><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="Forward.php" hash="3917a1882c3d55837138782e60791167"/><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="86e29b37d2c2390d5714ca99b45f4d6c"/></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="12fa64a9c9f519a3f249954ab780e01c"/><file name="Data.php" hash="db586edb739ad7f7b0281a887e252a61"/><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="f4f4e92c5e33c6142904cf27a75f6d23"/></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="b1c695f2ab0fb63a9c253ceb68883845"/><file name="Article.php" hash="790a58f2fa28c52302c996163b884393"/><file name="Category.php" hash="d3a82f9ace086bf0bec88e585e37578a"/><file name="Context.php" hash="d63d33f2dfa968e90ed11a6f76f41a34"/><dir name="Model"><dir name="Product"><file name="Link.php" hash="6f764a25fcde9b315d10f46189a428d1"/><dir name="Type"><file name="Configurable.php" hash="4bb627c1f5d1fbadd37a6b54e681406f"/><file name="Grouped.php" hash="8770d1ddf8228a2db136325da494de51"/></dir></dir><file name="Product.php" hash="fe1cbcf9257581f01bb1072db813355f"/></dir><file name="Product.php" hash="a3619bfbab7c81691775d5b747c57a47"/></dir><file name="Observer.php" hash="ac85f1a93b71df59fad86dbcd0579c53"/><dir name="Resource"><file name="Advanced.php" hash="989026021706cbcfb269451187002c19"/><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="1811ce81b3c42ec999541b5f493f0985"/></dir></dir><dir name="Engine"><file name="Abstract.php" hash="6fc0659e9f57633a707254680ad23e70"/><file name="Antidot.php" hash="6f038510c3eb9d6908443dec15d14232"/></dir><dir name="Export"><dir name="Product"><file name="Collection.php" hash="dfa31e927797fb1887aec5fcec2747d1"/><dir name="Link"><dir name="Product"><file name="Collection.php" hash="a50b67c39520422770b4b16d4ab51ba0"/></dir></dir><dir name="Type"><dir name="Configurable"><dir name="Product"><file name="Collection.php" hash="79d359ae0e176d3499225452d983c210"/></dir></dir></dir></dir><file name="Product.php" hash="f3e87d35ea55e911948f3909274e29b3"/></dir></dir><dir name="Search"><file name="Abstract.php" hash="fd71154b987b16f8d13bc3e10a3faeac"/><file name="Search.php" hash="4a70644bdcd6ade7519cfebe7bbe4a85"/><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="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="Source"><file name="Acpengine.php" hash="fdf8d5030d8823c325d707d8bb5b7208"/><file name="Engine.php" hash="0491592c4612779ffc7890456f6b946d"/></dir><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="291dac423dbd826394b8028c6b00064b"/><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="094d78a413adb76559ba3e0063f7eb03"/><file name="Article.php" hash="157dc12608521f1ad255142f0143ef18"/><dir name="Category"><dir name="fixtures"><file name="testEmptyFile.yaml" hash="9573e620466cfe8260f8a87e274c8261"/></dir></dir><file name="Category.php" hash="43c0813b3b00f68b1920b4e66cb3604d"/><dir name="Context"><dir name="fixtures"><file name="testContext.yaml" hash="d912a7bd71a209f591043a3644de3ceb"/></dir></dir><file name="Context.php" hash="1043f3b0b99d3d290d4f38e633864a25"/><dir name="Product"><dir name="fixtures"><file name="testInactiveParentCategory.yaml" hash="3ef9bcefae6399ccdc23e026746a1743"/><file name="testWriteImageUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWritePricesFixedtax.yaml" hash="698da07581100c1eff5a1a85e2be6d3b"/><file name="testWriteProductNoVariant.yaml" hash="626a27b35977e5a52b02f85011c5e216"/><file name="testWriteProductNoVariantInStock.yaml" hash="9aa7736a422276842350ac73c6f4ba55"/><file name="testWriteProductUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWriteProperties.yaml" hash="d434749b80908bbceefd5781e2d0e998"/><file name="testWriteXml.yaml" hash="774cbe1c5408ff8ad838f1693ec11d84"/></dir><dir name="providers"><file name="testWriteImageUrl.yaml" hash="666c33585c611bcc0b0ebe6e87dce1fc"/><file name="testWriteProductUrl.yaml" hash="18f511460efea04586fc888f5c85b3ea"/></dir></dir><file name="Product.php" hash="c3992e99a2752e8d8240de824faa4292"/></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="c69240a8fe5a637c3aa447c94550e268"/><dir name="Resource"><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="2ad006d8e096ade9043a9a370177782d"/></dir></dir><dir name="Engine"><dir name="Antidot"><dir name="fixtures"><file name="testFormatResult.yaml" hash="a1a684d4f08b4d3e3b7f3711e7563010"/></dir></dir><file name="Antidot.php" hash="46cbb6e95678c8fd55badb021a5a1a32"/></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 name="Source"><file name="Engine.php" hash="dcbee0d360773c28faa8a894cbed22ad"/></dir></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="ce5e9dd82d1077072064ec847d585434"/><file name="system.xml" hash="f1678909f76c86b3ce017b5d351a0bb9"/></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="5124433ec044f619ae99afb074ed6efc"/></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="banner.phtml" hash="4dc4b69ef2dd51aad9689dbfb2bf8f48"/><file name="category.phtml" hash="7413580b825508f2cfc08566d62369ae"/></dir><file name="result.phtml" hash="de6eecf5bd733d3440c843133afea8b6"/></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>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Antidot_Antidot</name>
|
4 |
+
<version>1.2.2</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>LGPL</license>
|
7 |
<channel>community</channel>
|
17 |
Add cdata for variant name&#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-11-23</date>
|
21 |
+
<time>16:47:02</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="Banner.php" hash="cfc866a6c1cfb2ee9cb690bed84781fe"/><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="3ba32c0f20c4b7447229843f45b06d3f"/><file name="Result.php" hash="887530a08ce375d1722fc327eebc64fc"/></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="Forward.php" hash="3917a1882c3d55837138782e60791167"/><file name="PushArticles.php" hash="c7d0ce7326c7f706c0432a2ffb57fee2"/><file name="PushCategories.php" hash="2caeb40ae6a5abe77be2ca666c01ed81"/><file name="PushProducts.php" hash="3eb6538ab55257b0a83021ff1ecbf632"/><file name="RestoreTemplate.php" hash="ffbbb0a73ff1ede611262a6a4da1a188"/><file name="ShowXml.php" hash="417ba0c9c62d8070b63f90397887dcc0"/></dir><dir name="Fieldset"><file name="Notice.php" hash="47601ca6e7732a9d22ecd25f3f1cd7bb"/></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="12fa64a9c9f519a3f249954ab780e01c"/><file name="Data.php" hash="db586edb739ad7f7b0281a887e252a61"/><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="f4f4e92c5e33c6142904cf27a75f6d23"/></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="76d9e775c5cbdcb45c02cd2af1779b60"/><file name="Article.php" hash="3fd18081b1013360d2f151931e16a4eb"/><file name="Category.php" hash="e4c1f09bd75f6cda693ab6aab084e5b4"/><file name="Context.php" hash="d63d33f2dfa968e90ed11a6f76f41a34"/><dir name="Model"><dir name="Product"><file name="Link.php" hash="6f764a25fcde9b315d10f46189a428d1"/><dir name="Type"><file name="Configurable.php" hash="4bb627c1f5d1fbadd37a6b54e681406f"/><file name="Grouped.php" hash="8770d1ddf8228a2db136325da494de51"/></dir></dir><file name="Product.php" hash="a56c7e50bbd95c57570e38d911976962"/></dir><file name="Product.php" hash="008cb58f7dab43f01ec5a2ef65dd7d58"/></dir><file name="Observer.php" hash="dbe10b9c6996878f06db435b6321d8f2"/><dir name="Resource"><file name="Advanced.php" hash="989026021706cbcfb269451187002c19"/><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="a761f935c0e3c4da1fec329c2c80f5b1"/></dir></dir><dir name="Engine"><file name="Abstract.php" hash="a341a04e6c7fe367a7da0e91ce205034"/><file name="Antidot.php" hash="eda85b16354da0f3d87cb4186c5bad43"/></dir><dir name="Export"><dir name="Product"><file name="Collection.php" hash="dfa31e927797fb1887aec5fcec2747d1"/><dir name="Link"><dir name="Product"><file name="Collection.php" hash="a50b67c39520422770b4b16d4ab51ba0"/></dir></dir><dir name="Type"><dir name="Configurable"><dir name="Product"><file name="Collection.php" hash="79d359ae0e176d3499225452d983c210"/></dir></dir></dir></dir><file name="Product.php" hash="f3e87d35ea55e911948f3909274e29b3"/></dir></dir><dir name="Search"><file name="Abstract.php" hash="fd71154b987b16f8d13bc3e10a3faeac"/><file name="Search.php" hash="823655bc366531ba97bd707adc723aa9"/><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="ExportType.php" hash="940a74862d74f7873258b35c33b7b87a"/><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="Source"><file name="Acpengine.php" hash="fdf8d5030d8823c325d707d8bb5b7208"/><file name="Engine.php" hash="0491592c4612779ffc7890456f6b946d"/><file name="Redirect.php" hash="ea6cb67ab98a0303d5c30c49099f5708"/></dir><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="4b0b2ef7940fc8cd60e96cc74a2c84f0"/><file name="Ftp.php" hash="73056ec4decef2fe9c459641e0a0ae7e"/><file name="Http.php" hash="61f334dead64bcc6b9882e1f72d64eb8"/><file name="Interface.php" hash="40cfaad8efccad7dc3ff7a920dee871a"/></dir><file name="Transport.php" hash="dfbe060f5575304736ba805f597f7393"/></dir><dir name="Test"><dir name="Block"><dir name="Catalogsearch"><file name="Layer.php" hash="49725570e661d72db50daab46e0e18af"/><dir name="Result"><dir name="fixtures"><file name="testSetListOrders.yaml" hash="3077a3199216b898963f1bcf9f4d7396"/></dir></dir><file name="Result.php" hash="a780e377612d4481c4f0c96311005620"/></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="a0768006a76b1e3004f8839988dc2d4d"/><file name="Article.php" hash="157dc12608521f1ad255142f0143ef18"/><dir name="Category"><dir name="fixtures"><file name="testEmptyFile.yaml" hash="9573e620466cfe8260f8a87e274c8261"/></dir></dir><file name="Category.php" hash="42164121852311eb200af116e0a20d58"/><dir name="Context"><dir name="fixtures"><file name="testContext.yaml" hash="d912a7bd71a209f591043a3644de3ceb"/></dir></dir><file name="Context.php" hash="c5af056a47ee7acdacbe7072a825ce90"/><dir name="Model"><dir name="Product"><dir name="fixtures"><file name="testGetIsInStock.yaml" hash="b9a95c8ad5b3999221d027192d79fe55"/></dir></dir><file name="Product.php" hash="a3b6765c5c663caa1a50dc511c78db5e"/></dir><dir name="Product"><dir name="fixtures"><file name="testInactiveParentCategory.yaml" hash="3ef9bcefae6399ccdc23e026746a1743"/><file name="testWriteImageUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWritePricesFixedtax.yaml" hash="698da07581100c1eff5a1a85e2be6d3b"/><file name="testWriteProductNoVariant.yaml" hash="626a27b35977e5a52b02f85011c5e216"/><file name="testWriteProductNoVariantInStock.yaml" hash="9aa7736a422276842350ac73c6f4ba55"/><file name="testWriteProductUrl.yaml" hash="a4e08b8f1565eba67a16553cf57e1004"/><file name="testWriteProperties.yaml" hash="d434749b80908bbceefd5781e2d0e998"/><file name="testWriteXml.yaml" hash="8a702dfbd07f2d773d991679a2c219a0"/></dir><dir name="providers"><file name="testWriteImageUrl.yaml" hash="666c33585c611bcc0b0ebe6e87dce1fc"/><file name="testWriteProductUrl.yaml" hash="18f511460efea04586fc888f5c85b3ea"/></dir></dir><file name="Product.php" hash="032f8ca084fb1ec71aeac8ca0ffb2d6f"/></dir><dir name="Observer"><dir name="fixtures"><file name="testGetDefaultContext.yaml" hash="d77af9c502bf7e7c90fdb3aad609c087"/></dir><dir name="providers"><file name="testGetOwnerForFilename.yaml" hash="c5c07e73f536f9ffacc0c3ff6b5a13d1"/></dir></dir><file name="Observer.php" hash="c69240a8fe5a637c3aa447c94550e268"/><dir name="Resource"><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="2ad006d8e096ade9043a9a370177782d"/></dir></dir><dir name="Engine"><dir name="Antidot"><dir name="fixtures"><file name="testFormatResult.yaml" hash="f4aa0a050156b55c5733c5d30f4255ed"/></dir></dir><file name="Antidot.php" hash="5dff5053128f275557772330716da04c"/></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="0115c27c5881ff9d35f18a251686dc68"/><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 name="Source"><file name="Acpengine.php" hash="482bcb056949d9d52eda623ee9bdca0d"/><file name="Engine.php" hash="dcbee0d360773c28faa8a894cbed22ad"/><file name="Redirect.php" hash="2dbbaecbb8453ba1025e2e9b5a5957c3"/></dir></dir></dir><dir name="Transport"><file name="Http.php" hash="e517ff2ab7ddf5ba61bfe6ffb0227ad9"/><dir name="fixtures"><file name="testSend.yaml" hash="af0bc3c97a109e63aaf018f57ddad6cd"/></dir></dir></dir><file name="PHPUnitUtil.php" hash="2a128a7c19f4c37cb9dd7fc60e679693"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Antidot"><file name="PushController.php" hash="6dc15f43dbaef76efa4e0462cf6cf3aa"/></dir></dir><dir name="Front"><file name="SearchController.php" hash="d220bd4628830ea238775ed9788e0674"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="7190cd220b09b657ba9b767614aeebb2"/><file name="config.xml" hash="045a13091daac0b33bee10d17f0be393"/><file name="system.xml" hash="38a2d1d570abe54b646b6f598fc952fc"/></dir><dir name="sql"><dir name="Antidot_setup"><file name="mysql4-install-0.9.php" hash="62672bc47ea92dbd46966fb76e4251e0"/><file name="mysql4-upgrade-1.2.1-1.2.2.php" hash="fe774495c51921c2affeb8a472c049ff"/></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="5124433ec044f619ae99afb074ed6efc"/></dir><dir name="template"><dir name="antidot"><dir name="catalog"><dir name="layer"><file name="category.phtml" hash="125de3812ded3b341ab6f1a1f2f92777"/><file name="filter.phtml" hash="2304baebff9b798e0ebd977fbc891346"/></dir></dir><dir name="catalogsearch"><dir name="result"><file name="banner.phtml" hash="4dc4b69ef2dd51aad9689dbfb2bf8f48"/><file name="category.phtml" hash="7413580b825508f2cfc08566d62369ae"/></dir><file name="result.phtml" hash="de6eecf5bd733d3440c843133afea8b6"/></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="bd59e534fb9a44fdb706867d43479b85"/></dir><dir name="de_CH"><file name="MDN_Antidot.csv" hash="bd59e534fb9a44fdb706867d43479b85"/></dir><dir name="de_DE"><file name="MDN_Antidot.csv" hash="bd59e534fb9a44fdb706867d43479b85"/></dir><dir name="es_AR"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_CL"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_CO"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_CR"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_ES"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_MX"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_PA"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_PE"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="es_VE"><file name="MDN_Antidot.csv" hash="58b985f371a2e1a5af049365267cc318"/></dir><dir name="fr_CA"><file name="MDN_Antidot.csv" hash="5d362c657f256fd1b6a0fb4993f48cd0"/></dir><dir name="fr_FR"><file name="MDN_Antidot.csv" hash="fff8f36a7da80f27f3075ba84b6cf748"/></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="4af0256294abbea651d1b8d06832556b"/><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="62185c34e1e9015bb12014d719287f06"/><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="queryOrchestrationTest.php" hash="02867da7662cdb9f005eb9c1e73dfa30"/><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="b8ad96c57ec80f40bd21a39bb9b5fbb5"/><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="c123aeb736bf2e0506e56831fe516800"/><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="048910936a0fc00705d3fd4ad39a0270"/><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"/><file name="orchestration_type.php" hash="047eab54be2eba5500ef747ab7f139b9"/></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="e3a84092f7eb76bc3e44335a3a47bcdd"/><file name="bowsInformationTest.php" hash="3bbfe71f431a35f0285afdca40906874"/><file name="documentManagerTest.php" hash="ad90a6146f5aeee383355bb05425b3dd"/><file name="documentTest.php" hash="59b204b10b90cd764b259ad4c2bc043a"/><file name="pafConnectorTest.php" hash="f77eb3a317443916c8e8f2774ea732ec"/><file name="pafLiveTest.php" hash="92862c31d151c34b2caf44bff9d0fb80"/></dir><file name="afs_about_connector.php" hash="dd52b41d37d47867467165203de1d1ce"/><file name="afs_authentication.php" hash="90a2405786726a6c05c7b339dff7017f"/><file name="afs_bows_connector.php" hash="0f07eea36c8c1794e46fc34c3a8a7819"/><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="519a81178af37c7aec9dbfa460bfa7cb"/><file name="afs_paf_live_connector.php" hash="0e91807cbe49dad1428c2de5200997fd"/><file name="afs_paf_upload_reply.php" hash="0cb4905d1c894637d5e6acbd2cffc112"/><file name="afs_token_authentication.php" hash="6329f0f7b6840d610a4b3078fb4dcce9"/><file name="afs_user_authentication.php" hash="8330376642778e0e0191f66b1783896c"/></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="5d49433720f05b707dae0206c1ec1dbf"/><file name="afs_version.php" hash="15ef21883652ec9da0da0f4830f153d7"/><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="f1f9d547fe0d89f129c9bbb050eb263e"/><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>
|