Version Notes
refactoring and bugfixes
- Moved plugin from local to community pool to support custom overrides.
- Adding support for URL export in Magento EE.
- Improving handling of missing/empty images in the autocompletion.
- Refactoring and improving facet block.
- Exclude catalog only items in the search.
- Fixing regressions in the customer synchronization.
- Correcting order total calculation in tracking.
Download this release
Release Info
Developer | Szymon Nosal |
Extension | boxalino_plugin |
Version | 2.10.0 |
Comparing to | |
See all releases |
Code changes from version 2.9.0 to 2.10.0
- app/code/{local → community}/Boxalino/CemSearch/Block/Abstract.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Block/Autocomplete.php +16 -23
- app/code/{local → community}/Boxalino/CemSearch/Block/Cart/Crosssell.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Block/Facets.php +161 -157
- app/code/{local → community}/Boxalino/CemSearch/Block/Product/List.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Block/Product/List/Recommendation.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Block/Product/List/Related.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Block/Product/List/Upsell.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Block/Script.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/CatalogSearch/Helper/Data.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Helper/Data.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Adapter.php +5 -1
- app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Config.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Recommendation.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Sort.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/AbstractThrift.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/P13nService.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/Types.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Base/TBase.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/ClassLoader/ThriftClassLoader.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TApplicationException.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TException.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TProtocolException.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TTransportException.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TBinaryProtocolFactory.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TCompactProtocolFactory.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TJSONProtocolFactory.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TProtocolFactory.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TStringFuncFactory.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TTransportFactory.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/HttpP13n.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/BaseContext.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/ListContext.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/LookaheadReader.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/PairContext.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TBinaryProtocol.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TBinaryProtocolAccelerated.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TCompactProtocol.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TJSONProtocol.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TProtocol.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Serializer/TBinarySerializer.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TForkingServer.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TServer.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TServerSocket.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TServerTransport.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TSimpleServer.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/StringFunc/Core.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/StringFunc/Mbstring.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/StringFunc/TStringFunc.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/P13nTCurlClient.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/P13nTHttpClient.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TBufferedTransport.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TCurlClient.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TFramedTransport.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/THttpClient.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TMemoryBuffer.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TNullTransport.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TPhpStream.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TSocket.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TSocketPool.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TTransport.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Type/TMessageType.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Type/TType.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Model/Advanced.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Model/Category.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Model/Logger.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Model/Observer.php +1 -1
- app/code/{local → community}/Boxalino/CemSearch/Model/Resource/Advanced.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Model/Resource/Advanced/Collection.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Model/Resource/Fulltext.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/Model/Session.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/controllers/AdvancedController.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/controllers/AjaxController.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/controllers/IndexController.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/controllers/ResultController.php +0 -0
- app/code/{local → community}/Boxalino/CemSearch/etc/adminhtml.xml +0 -0
- app/code/{local → community}/Boxalino/CemSearch/etc/config.xml +1 -1
- app/code/{local → community}/Boxalino/CemSearch/etc/system.xml +0 -0
- app/code/{local → community}/Boxalino/Exporter/Helper/Data.php +2 -7
- app/code/{local → community}/Boxalino/Exporter/Model/Delta.php +0 -0
- app/code/{local → community}/Boxalino/Exporter/Model/Indexer.php +0 -0
- app/code/{local → community}/Boxalino/Exporter/Model/Mysql4/Exporter/Delta.php +0 -0
- app/code/{local → community}/Boxalino/Exporter/Model/Mysql4/Exporter/Indexer.php +0 -0
- app/code/{local → community}/Boxalino/Exporter/Model/Mysql4/Indexer.php +48 -31
- app/code/{local → community}/Boxalino/Exporter/etc/adminhtml.xml +0 -0
- app/code/{local → community}/Boxalino/Exporter/etc/config.xml +2 -1
- app/code/{local → community}/Boxalino/Exporter/etc/system.xml +0 -0
- app/etc/modules/Boxalino_CemSearch.xml +1 -2
- app/etc/modules/Boxalino_Exporter.xml +2 -1
- package.xml +14 -7
app/code/{local → community}/Boxalino/CemSearch/Block/Abstract.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Block/Autocomplete.php
RENAMED
@@ -32,15 +32,14 @@ require_once "Mage/CatalogSearch/Block/Autocomplete.php";
|
|
32 |
|
33 |
class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Autocomplete
|
34 |
{
|
35 |
-
protected $_suggestData =
|
36 |
-
protected $_suggestDataProducts =
|
37 |
protected $_order = array();
|
38 |
protected $_first = null;
|
39 |
|
40 |
protected function _toHtml()
|
41 |
{
|
42 |
-
|
43 |
-
if (Mage::getStoreConfig('Boxalino_General/general/enabled') == '0') {
|
44 |
return null;
|
45 |
}
|
46 |
|
@@ -118,11 +117,11 @@ class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Aut
|
|
118 |
$product = Mage::getModel('catalog/product')->load($prod['id']);
|
119 |
if ($prod['hash'] == $this->_first || empty($this->_first)) {
|
120 |
$html .= '<li data-word="' . $prod['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product->getName()) . '">';
|
121 |
-
} else{
|
122 |
$html .= '<li style="display:none" data-word="' . $prod['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product->getName()) . '">';
|
123 |
}
|
124 |
$html .= '<a href="' . $product->getProductUrl() . '" >';
|
125 |
-
$html .= '<div class="product-image"><img src="' . $product->getThumbnailUrl() . '" alt="' . $product->getName() . '"
|
126 |
$html .= '<div class="product-title"><span>' . $product->getName() . '</span></div>';
|
127 |
$html .= '</a>';
|
128 |
$html .= '</li>';
|
@@ -136,17 +135,15 @@ class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Aut
|
|
136 |
$html .= '</ul>';
|
137 |
|
138 |
return $html;
|
139 |
-
|
140 |
}
|
141 |
|
142 |
-
|
143 |
{
|
144 |
-
|
145 |
$html = '';
|
146 |
|
147 |
if ($product['hash'] == $this->_first || empty($this->_first)) {
|
148 |
$html .= '<li style="display:block" data-word="' . $product['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product['title']) . '">';
|
149 |
-
} else{
|
150 |
$html .= '<li style="display:none" data-word="' . $product['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product['title']) . '">';
|
151 |
}
|
152 |
|
@@ -155,10 +152,10 @@ class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Aut
|
|
155 |
unset($product['hash']);
|
156 |
unset($product[Mage::getStoreConfig('Boxalino_General/search/entity_id')]);
|
157 |
|
158 |
-
foreach($this->_order as $f) {
|
159 |
-
if ($f == 'image') {
|
160 |
-
$html .= '<div class="product-' . $f . '"><img src="' . $product[$f] . '" alt="' . $product['title'] . '" style="max-height:75px; max-width:75px;"
|
161 |
-
} elseif (isset($product[$f])) {
|
162 |
$html .= '<div class="product-' . $f . '"><span>' . $product[$f] . '</span></div>';
|
163 |
}
|
164 |
}
|
@@ -167,8 +164,6 @@ class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Aut
|
|
167 |
$html .= '</li>';
|
168 |
|
169 |
return $html;
|
170 |
-
|
171 |
-
|
172 |
}
|
173 |
|
174 |
public function getSuggestData()
|
@@ -195,11 +190,11 @@ class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Aut
|
|
195 |
if ($query) {
|
196 |
if ($htmlConfig['enabled'] == '1') {
|
197 |
$fields = array($generalConfig['entity_id'], 'title', 'score');
|
198 |
-
} else{
|
199 |
$fields = array($generalConfig['entity_id']);
|
200 |
$map = array($generalConfig['entity_id'] => $generalConfig['entity_id']);
|
201 |
$fi = explode(',', $htmlConfig['items']);
|
202 |
-
foreach($fi as $f) {
|
203 |
list($attribute, $fieldname) = explode(':', $f);
|
204 |
$fields[] = $fieldname;
|
205 |
$map[$fieldname] = $attribute;
|
@@ -238,15 +233,13 @@ class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Aut
|
|
238 |
}
|
239 |
|
240 |
$this->_suggestData = $data;
|
|
|
241 |
if ($htmlConfig['enabled'] == '1') {
|
242 |
-
$this->_suggestDataProducts = $p13n->getAutocompleteProducts($
|
243 |
} else {
|
244 |
-
$this->_suggestDataProducts = $p13n->getAutocompleteProducts($
|
245 |
}
|
246 |
}
|
247 |
return $this->_suggestData;
|
248 |
}
|
249 |
-
/*
|
250 |
-
*
|
251 |
-
*/
|
252 |
}
|
32 |
|
33 |
class Boxalino_CemSearch_Block_Autocomplete extends Mage_CatalogSearch_Block_Autocomplete
|
34 |
{
|
35 |
+
protected $_suggestData = array();
|
36 |
+
protected $_suggestDataProducts = array();
|
37 |
protected $_order = array();
|
38 |
protected $_first = null;
|
39 |
|
40 |
protected function _toHtml()
|
41 |
{
|
42 |
+
if (!Mage::getStoreConfig('Boxalino_General/general/enabled')) {
|
|
|
43 |
return null;
|
44 |
}
|
45 |
|
117 |
$product = Mage::getModel('catalog/product')->load($prod['id']);
|
118 |
if ($prod['hash'] == $this->_first || empty($this->_first)) {
|
119 |
$html .= '<li data-word="' . $prod['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product->getName()) . '">';
|
120 |
+
} else {
|
121 |
$html .= '<li style="display:none" data-word="' . $prod['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product->getName()) . '">';
|
122 |
}
|
123 |
$html .= '<a href="' . $product->getProductUrl() . '" >';
|
124 |
+
$html .= '<div class="product-image"><img src="' . $product->getThumbnailUrl() . '" alt="' . $product->getName() . '"></div>';
|
125 |
$html .= '<div class="product-title"><span>' . $product->getName() . '</span></div>';
|
126 |
$html .= '</a>';
|
127 |
$html .= '</li>';
|
135 |
$html .= '</ul>';
|
136 |
|
137 |
return $html;
|
|
|
138 |
}
|
139 |
|
140 |
+
protected function prepareProductView($product)
|
141 |
{
|
|
|
142 |
$html = '';
|
143 |
|
144 |
if ($product['hash'] == $this->_first || empty($this->_first)) {
|
145 |
$html .= '<li style="display:block" data-word="' . $product['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product['title']) . '">';
|
146 |
+
} else {
|
147 |
$html .= '<li style="display:none" data-word="' . $product['hash'] . '" class="product-autocomplete" title="' . $this->escapeHtml($product['title']) . '">';
|
148 |
}
|
149 |
|
152 |
unset($product['hash']);
|
153 |
unset($product[Mage::getStoreConfig('Boxalino_General/search/entity_id')]);
|
154 |
|
155 |
+
foreach ($this->_order as $f) {
|
156 |
+
if ($f == 'image' && isset($product[$f]) && !empty($product[$f])) {
|
157 |
+
$html .= '<div class="product-' . $f . '"><img src="' . $product[$f] . '" alt="' . $product['title'] . '" style="max-height:75px; max-width:75px;"></div>';
|
158 |
+
} elseif (isset($product[$f]) && !empty($product[$f])) {
|
159 |
$html .= '<div class="product-' . $f . '"><span>' . $product[$f] . '</span></div>';
|
160 |
}
|
161 |
}
|
164 |
$html .= '</li>';
|
165 |
|
166 |
return $html;
|
|
|
|
|
167 |
}
|
168 |
|
169 |
public function getSuggestData()
|
190 |
if ($query) {
|
191 |
if ($htmlConfig['enabled'] == '1') {
|
192 |
$fields = array($generalConfig['entity_id'], 'title', 'score');
|
193 |
+
} else {
|
194 |
$fields = array($generalConfig['entity_id']);
|
195 |
$map = array($generalConfig['entity_id'] => $generalConfig['entity_id']);
|
196 |
$fi = explode(',', $htmlConfig['items']);
|
197 |
+
foreach ($fi as $f) {
|
198 |
list($attribute, $fieldname) = explode(':', $f);
|
199 |
$fields[] = $fieldname;
|
200 |
$map[$fieldname] = $attribute;
|
233 |
}
|
234 |
|
235 |
$this->_suggestData = $data;
|
236 |
+
$facets = array_key_exists(0, $data) && is_array($data[0]['facets']) ? $data[0]['facets'] : array();
|
237 |
if ($htmlConfig['enabled'] == '1') {
|
238 |
+
$this->_suggestDataProducts = $p13n->getAutocompleteProducts($facets);
|
239 |
} else {
|
240 |
+
$this->_suggestDataProducts = $p13n->getAutocompleteProducts($facets, $map, $fields);
|
241 |
}
|
242 |
}
|
243 |
return $this->_suggestData;
|
244 |
}
|
|
|
|
|
|
|
245 |
}
|
app/code/{local → community}/Boxalino/CemSearch/Block/Cart/Crosssell.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Block/Facets.php
RENAMED
@@ -56,18 +56,20 @@ class Boxalino_CemSearch_Block_Facets extends Mage_Core_Block_Template
|
|
56 |
public function getTopFilters()
|
57 |
{
|
58 |
$filters = array();
|
59 |
-
$
|
60 |
-
$
|
|
|
61 |
$i = 0;
|
62 |
$allFilters = $this->_allFilters;
|
63 |
foreach ($topFilters as $filter) {
|
|
|
64 |
if (isset($allFilters[$filter])) {
|
65 |
foreach ($allFilters[$filter] as $key => $values) {
|
66 |
-
$yes = strtolower($values['stringValue']) == 'yes'
|
67 |
if ($values['stringValue'] == 1 || $yes) {
|
68 |
$filters[$filter] = $allFilters[$filter][$key];
|
69 |
$filters[$filter]['title'] = $titles[$i];
|
70 |
-
$filters[$filter]['url'] = $this->
|
71 |
$filters[$filter]['selected'] = $allFilters[$filter][$key]['selected'];
|
72 |
}
|
73 |
}
|
@@ -77,34 +79,6 @@ class Boxalino_CemSearch_Block_Facets extends Mage_Core_Block_Template
|
|
77 |
return $filters;
|
78 |
}
|
79 |
|
80 |
-
private function getTopFilterUrl($name, $value, $selected)
|
81 |
-
{
|
82 |
-
$multioption = Mage::getStoreConfig('Boxalino_General/filter/top_filters_multioption');
|
83 |
-
$currentUrl = urldecode(Mage::helper('core/url')->getCurrentUrl());
|
84 |
-
if (strpos($currentUrl, '?') === FALSE) {
|
85 |
-
$currentUrl .= '?';
|
86 |
-
}
|
87 |
-
if ($multioption == true) {
|
88 |
-
if ($selected === false) {
|
89 |
-
$url = $currentUrl . '&bx_' . $name . '[0]' . '=' . $value;
|
90 |
-
} else {
|
91 |
-
$url = str_replace('&bx_' . $name . '[0]' . '=' . $value, '', $currentUrl);
|
92 |
-
}
|
93 |
-
} else {
|
94 |
-
$topFilters = explode(',', Mage::getStoreConfig('Boxalino_General/filter/top_filters'));
|
95 |
-
if ($selected === false) {
|
96 |
-
foreach ($topFilters as $filter) {
|
97 |
-
$currentUrl = str_replace('&bx_' . $filter . '[0]' . '=' . $value, '', $currentUrl);
|
98 |
-
}
|
99 |
-
$url = $currentUrl . '&bx_' . $name . '[0]' . '=' . urlencode($value);
|
100 |
-
} else {
|
101 |
-
$url = str_replace('&bx_' . $name . '[0]' . '=' . urlencode($value), '', $currentUrl);
|
102 |
-
}
|
103 |
-
}
|
104 |
-
|
105 |
-
return $url;
|
106 |
-
}
|
107 |
-
|
108 |
public function getLeftFilters()
|
109 |
{
|
110 |
$filters = array();
|
@@ -118,10 +92,10 @@ class Boxalino_CemSearch_Block_Facets extends Mage_Core_Block_Template
|
|
118 |
$filters[$filter[0]] = array('title' => $leftFiltersTitles[$i], 'values' => array());
|
119 |
if (isset($allFilters[$filter[0]])) {
|
120 |
if ($filter[1] == 'hierarchical') {
|
121 |
-
$filters[$filter[0]]['values'] = $this->
|
122 |
} else {
|
123 |
foreach ($allFilters[$filter[0]] as $key => $values) {
|
124 |
-
$filters[$filter[0]]['values'][] = $this->
|
125 |
$position++;
|
126 |
}
|
127 |
}
|
@@ -134,141 +108,123 @@ class Boxalino_CemSearch_Block_Facets extends Mage_Core_Block_Template
|
|
134 |
return $filters;
|
135 |
}
|
136 |
|
137 |
-
|
138 |
{
|
139 |
-
$
|
140 |
-
$
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
} else {
|
146 |
-
$highestChild = array();
|
147 |
-
$level = $parents['display']['level'];
|
148 |
-
$parentId = 0;
|
149 |
-
if (isset($parents['values'][$level])) {
|
150 |
-
$highestLevelCount = count($parents['values'][$level]);
|
151 |
-
foreach ($parents['values'][$level] as $value) {
|
152 |
-
$parentId = $parents['display']['parentId'];
|
153 |
-
if ($value['parentId'] == $parentId) {
|
154 |
-
if ($highestLevelCount == 1) {
|
155 |
-
$value['selected'] = true;
|
156 |
-
}
|
157 |
-
$value['level'] = $level;
|
158 |
-
$highestChild[] = $value;
|
159 |
-
}
|
160 |
-
}
|
161 |
-
} else {
|
162 |
-
$level = $level - 1;
|
163 |
-
foreach ($parents['values'][$level] as $value) {
|
164 |
-
if ($value['selected'] == true) {
|
165 |
-
$parentId = $value['parentId'];
|
166 |
-
$value['level'] = $level;
|
167 |
-
$highestChild[] = $value;
|
168 |
-
}
|
169 |
-
}
|
170 |
-
|
171 |
-
foreach ($parents['values'][$level] as $value) {
|
172 |
-
if ($parentId == $value['parentId'] && $value['selected'] == false) {
|
173 |
-
$value['level'] = $level;
|
174 |
-
$highestChild[] = $value;
|
175 |
-
}
|
176 |
}
|
177 |
}
|
178 |
-
|
179 |
-
for ($i = $level - 1; $i >= 2; $i--) {
|
180 |
-
$parents['values'][$i][$parentId]['selected'] = true;
|
181 |
-
$parents['values'][$i][$parentId]['level'] = $i;
|
182 |
-
$results[] = $parents['values'][$i][$parentId];
|
183 |
-
$parentId = $parents['values'][$i][$parentId]['parentId'];
|
184 |
-
}
|
185 |
-
$results = array_reverse($results);
|
186 |
-
|
187 |
-
|
188 |
}
|
189 |
-
|
190 |
-
$this->setMaxLevel($filter, $level);
|
191 |
-
return $results;
|
192 |
}
|
193 |
|
194 |
-
|
195 |
{
|
196 |
-
$
|
197 |
-
$
|
198 |
-
$
|
|
|
199 |
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
if ($parentLevel < count($values[$j]['hierarchy'])) {
|
205 |
-
$level = count($values[$j]['hierarchy']);
|
206 |
-
$childId = $values[$j]['hierarchyId'];
|
207 |
-
$parents[$level][$childId] = array(
|
208 |
-
'stringValue' => end($values[$j]['hierarchy']),
|
209 |
-
'hitCount' => $values[$j]['hitCount'],
|
210 |
-
'parentId' => $values[$i]['hierarchyId'],
|
211 |
-
'url' => $this->getFilterUrl($filter, $values[$j]['stringValue'], $values[$j]['selected'], false, 0),
|
212 |
-
'selected' => $values[$j]['selected']
|
213 |
-
);
|
214 |
-
if ($values[$j]['selected'] === true) {
|
215 |
-
$whatToDisplay = array('level' => $level + 1, 'parentId' => $values[$j]['hierarchyId']);
|
216 |
-
}
|
217 |
-
continue;
|
218 |
-
}
|
219 |
-
if (count($values[$i]['hierarchy']) == count($values[$j]['hierarchy'])) {
|
220 |
-
break;
|
221 |
-
}
|
222 |
-
}
|
223 |
}
|
224 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
}
|
226 |
|
227 |
-
|
228 |
{
|
229 |
$multioption = Mage::getStoreConfig('Boxalino_General/filter/left_filters_multioption');
|
230 |
-
$currentUrl =
|
231 |
-
if (strpos($currentUrl, '?') === FALSE) {
|
232 |
-
$currentUrl .= '?';
|
233 |
-
}
|
234 |
if (!$ranged) {
|
235 |
if ($multioption == true && $hierarchical == null) {
|
236 |
if ($selected === false) {
|
237 |
-
$url = $currentUrl
|
238 |
} else {
|
239 |
-
$url =
|
240 |
}
|
241 |
} else {
|
242 |
$position = 0;
|
243 |
if ($selected === false) {
|
244 |
-
if (
|
245 |
foreach ($_REQUEST['bx_' . $name] as $val) {
|
246 |
-
$currentUrl =
|
247 |
}
|
248 |
}
|
249 |
-
$url = $currentUrl
|
250 |
} else {
|
251 |
-
$url =
|
252 |
}
|
253 |
}
|
254 |
} else {
|
255 |
if ($selected === false) {
|
256 |
-
$url = $currentUrl
|
257 |
} else {
|
258 |
-
$url =
|
259 |
}
|
260 |
}
|
261 |
return $url;
|
262 |
}
|
263 |
|
264 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
{
|
266 |
$data = array();
|
267 |
if ($option == 'ranged') {
|
268 |
$data['stringValue'] = array('min' => $values['rangeFromInclusive'], 'max' => $values['rangeToExclusive']);
|
269 |
-
$data['url'] = $this->
|
270 |
} else {
|
271 |
-
$data['url'] = $this->
|
272 |
$data['stringValue'] = $values['stringValue'];
|
273 |
}
|
274 |
$data['hitCount'] = $values['hitCount'];
|
@@ -276,44 +232,92 @@ class Boxalino_CemSearch_Block_Facets extends Mage_Core_Block_Template
|
|
276 |
return $data;
|
277 |
}
|
278 |
|
279 |
-
|
280 |
{
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
if ($key !== false) {
|
285 |
-
$filterKey = 'bx_' . $filter . '[' . $key . ']';
|
286 |
-
|
287 |
-
// remove filter from url
|
288 |
-
$url = str_replace($filterKey . '=' . $vals[$key], '', $url);
|
289 |
-
$url = str_replace(urlencode($filterKey) . '=' . urlencode($vals[$key]), '', $url);
|
290 |
|
291 |
-
|
292 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
}
|
294 |
}
|
295 |
}
|
296 |
-
return $
|
297 |
}
|
298 |
|
299 |
-
|
300 |
{
|
301 |
-
$
|
302 |
-
$
|
303 |
-
|
304 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
|
|
|
|
|
|
310 |
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
|
|
|
|
316 |
|
317 |
-
|
|
|
|
|
|
|
318 |
}
|
319 |
}
|
56 |
public function getTopFilters()
|
57 |
{
|
58 |
$filters = array();
|
59 |
+
$filterOptions = Mage::getStoreConfig('Boxalino_General/filter');
|
60 |
+
$topFilters = explode(',', $filterOptions['top_filters']);
|
61 |
+
$titles = explode(',', $filterOptions['top_filters_title']);
|
62 |
$i = 0;
|
63 |
$allFilters = $this->_allFilters;
|
64 |
foreach ($topFilters as $filter) {
|
65 |
+
$filter = trim($filter);
|
66 |
if (isset($allFilters[$filter])) {
|
67 |
foreach ($allFilters[$filter] as $key => $values) {
|
68 |
+
$yes = (strtolower($values['stringValue']) == 'yes');
|
69 |
if ($values['stringValue'] == 1 || $yes) {
|
70 |
$filters[$filter] = $allFilters[$filter][$key];
|
71 |
$filters[$filter]['title'] = $titles[$i];
|
72 |
+
$filters[$filter]['url'] = $this->_getTopFilterUrl($filter, $yes?$values['stringValue']:'1', $allFilters[$filter][$key]['selected']);
|
73 |
$filters[$filter]['selected'] = $allFilters[$filter][$key]['selected'];
|
74 |
}
|
75 |
}
|
79 |
return $filters;
|
80 |
}
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
public function getLeftFilters()
|
83 |
{
|
84 |
$filters = array();
|
92 |
$filters[$filter[0]] = array('title' => $leftFiltersTitles[$i], 'values' => array());
|
93 |
if (isset($allFilters[$filter[0]])) {
|
94 |
if ($filter[1] == 'hierarchical') {
|
95 |
+
$filters[$filter[0]]['values'] = $this->_returnTree($filter[0]);
|
96 |
} else {
|
97 |
foreach ($allFilters[$filter[0]] as $key => $values) {
|
98 |
+
$filters[$filter[0]]['values'][] = $this->_returnImportantValues($values, $filter[1], $filter[0], $position);
|
99 |
$position++;
|
100 |
}
|
101 |
}
|
108 |
return $filters;
|
109 |
}
|
110 |
|
111 |
+
public function removeFilterFromUrl($url, $filter, $vals)
|
112 |
{
|
113 |
+
$key = 'bx_' . $filter;
|
114 |
+
if (array_key_exists($key, $_REQUEST) && is_array($_REQUEST[$key])) {
|
115 |
+
foreach ($vals as $val) {
|
116 |
+
$position = array_search($val, $_REQUEST[$key]);
|
117 |
+
if ($position !== false) {
|
118 |
+
$url = $this->_removeFilterFromUrl($url, $filter, $val, $position);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
}
|
120 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
}
|
122 |
+
return $url;
|
|
|
|
|
123 |
}
|
124 |
|
125 |
+
public function getMinMaxValues($values)
|
126 |
{
|
127 |
+
$first = $values[0];
|
128 |
+
$last = end($values);
|
129 |
+
return array('min' => round(floor($first['stringValue']['min']), -2), 'max' => round(ceil($last['stringValue']['max'])), 1);
|
130 |
+
}
|
131 |
|
132 |
+
public function getMaxLevel($filter)
|
133 |
+
{
|
134 |
+
if (isset($this->maxLevel[$filter])) {
|
135 |
+
return $this->maxLevel[$filter];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
}
|
137 |
+
|
138 |
+
return 0;
|
139 |
+
}
|
140 |
+
|
141 |
+
protected function _addFilterToUrl($url, $filter, $value, $position = 0)
|
142 |
+
{
|
143 |
+
return $url . (strpos($url, '?') === FALSE ? '?' : '&') .
|
144 |
+
'bx_' . $filter . '[' . $position . ']=' . urlencode($value);
|
145 |
}
|
146 |
|
147 |
+
protected function _getFilterUrl($name, $value, $selected, $ranged = false, $position = 0, $hierarchical = null)
|
148 |
{
|
149 |
$multioption = Mage::getStoreConfig('Boxalino_General/filter/left_filters_multioption');
|
150 |
+
$currentUrl = Mage::helper('core/url')->getCurrentUrl();
|
|
|
|
|
|
|
151 |
if (!$ranged) {
|
152 |
if ($multioption == true && $hierarchical == null) {
|
153 |
if ($selected === false) {
|
154 |
+
$url = $this->_addFilterToUrl($currentUrl, $name, $value, $position);
|
155 |
} else {
|
156 |
+
$url = $this->_removeFilterFromUrl($currentUrl, $name, $value, $position);
|
157 |
}
|
158 |
} else {
|
159 |
$position = 0;
|
160 |
if ($selected === false) {
|
161 |
+
if (array_key_exists('bx_' . $name, $_REQUEST) && is_array($_REQUEST['bx_' . $name])) {
|
162 |
foreach ($_REQUEST['bx_' . $name] as $val) {
|
163 |
+
$currentUrl = $this->_removeFilterFromUrl($currentUrl, $name, $val, $position);
|
164 |
}
|
165 |
}
|
166 |
+
$url = $this->_addFilterToUrl($currentUrl, $name, $value, $position);
|
167 |
} else {
|
168 |
+
$url = $this->_removeFilterFromUrl($currentUrl, $name, $value, $position);
|
169 |
}
|
170 |
}
|
171 |
} else {
|
172 |
if ($selected === false) {
|
173 |
+
$url = $this->_addFilterToUrl($currentUrl, $name, $value['from'] . '-' . $value['to'], $position);
|
174 |
} else {
|
175 |
+
$url = $this->_removeFilterFromUrl($currentUrl, $name, $value['from'] . '-' . $value['to'], $position);
|
176 |
}
|
177 |
}
|
178 |
return $url;
|
179 |
}
|
180 |
|
181 |
+
protected function _getTopFilterUrl($name, $value, $selected)
|
182 |
+
{
|
183 |
+
$filterOptions = Mage::getStoreConfig('Boxalino_General/filter');
|
184 |
+
$multioption = $filterOptions['top_filters_multioption'];
|
185 |
+
$currentUrl = Mage::helper('core/url')->getCurrentUrl();
|
186 |
+
if ($multioption == true) {
|
187 |
+
if ($selected === false) {
|
188 |
+
$url = $this->_addFilterToUrl($currentUrl, $name, $value);
|
189 |
+
} else {
|
190 |
+
$url = $this->_removeFilterFromUrl($currentUrl, $name, $value);
|
191 |
+
}
|
192 |
+
} else {
|
193 |
+
if ($selected === false) {
|
194 |
+
$topFilters = explode(',', $filterOptions['top_filters']);
|
195 |
+
foreach ($topFilters as $filter) {
|
196 |
+
$filter = trim($filter);
|
197 |
+
$currentUrl = $this->_removeFilterFromUrl($currentUrl, $filter, $value);
|
198 |
+
}
|
199 |
+
$url = $this->_addFilterToUrl($currentUrl, $name, $value);
|
200 |
+
} else {
|
201 |
+
$url = $this->_removeFilterFromUrl($currentUrl, $name, $value);
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
return $url;
|
206 |
+
}
|
207 |
+
|
208 |
+
protected function _removeFilterFromUrl($url, $filter, $value, $position = 0)
|
209 |
+
{
|
210 |
+
$filter = urlencode($filter);
|
211 |
+
$value = urlencode($value);
|
212 |
+
return str_replace(
|
213 |
+
array(
|
214 |
+
'&bx_' . $filter . '[' . $position . ']=' . $value,
|
215 |
+
'?bx_' . $filter . '[' . $position . ']=' . $value,
|
216 |
+
), '', $url
|
217 |
+
);
|
218 |
+
}
|
219 |
+
|
220 |
+
protected function _returnImportantValues($values, $option, $filter, $position)
|
221 |
{
|
222 |
$data = array();
|
223 |
if ($option == 'ranged') {
|
224 |
$data['stringValue'] = array('min' => $values['rangeFromInclusive'], 'max' => $values['rangeToExclusive']);
|
225 |
+
$data['url'] = $this->_getFilterUrl($filter, array('from' => $values['rangeFromInclusive'], 'to' => $values['rangeToExclusive']), $values['selected'], true, $position);
|
226 |
} else {
|
227 |
+
$data['url'] = $this->_getFilterUrl($filter, $values['stringValue'], $values['selected'], false, $position);
|
228 |
$data['stringValue'] = $values['stringValue'];
|
229 |
}
|
230 |
$data['hitCount'] = $values['hitCount'];
|
232 |
return $data;
|
233 |
}
|
234 |
|
235 |
+
protected function _returnHierarchy($filter)
|
236 |
{
|
237 |
+
$whatToDisplay = array('level' => 2, 'parentId' => '');
|
238 |
+
$parents = array();
|
239 |
+
$values = $this->_allFilters[$filter];
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
|
241 |
+
$amount = count($values);
|
242 |
+
for ($i = 0; $i < $amount; $i++) {
|
243 |
+
$parentLevel = count($values[$i]['hierarchy']);
|
244 |
+
for ($j = $i + 1; $j < $amount; $j++) {
|
245 |
+
if ($parentLevel < count($values[$j]['hierarchy'])) {
|
246 |
+
$level = count($values[$j]['hierarchy']);
|
247 |
+
$childId = $values[$j]['hierarchyId'];
|
248 |
+
$parents[$level][$childId] = array(
|
249 |
+
'stringValue' => end($values[$j]['hierarchy']),
|
250 |
+
'hitCount' => $values[$j]['hitCount'],
|
251 |
+
'parentId' => $values[$i]['hierarchyId'],
|
252 |
+
'url' => $this->_getFilterUrl($filter, $values[$j]['stringValue'], $values[$j]['selected'], false, 0),
|
253 |
+
'selected' => $values[$j]['selected']
|
254 |
+
);
|
255 |
+
if ($values[$j]['selected'] === true) {
|
256 |
+
$whatToDisplay = array('level' => $level + 1, 'parentId' => $values[$j]['hierarchyId']);
|
257 |
+
}
|
258 |
+
continue;
|
259 |
+
}
|
260 |
+
if (count($values[$i]['hierarchy']) == count($values[$j]['hierarchy'])) {
|
261 |
+
break;
|
262 |
}
|
263 |
}
|
264 |
}
|
265 |
+
return array('values' => $parents, 'display' => $whatToDisplay);
|
266 |
}
|
267 |
|
268 |
+
protected function _returnTree($filter)
|
269 |
{
|
270 |
+
$results = array();
|
271 |
+
$parents = $this->_returnHierarchy($filter);
|
272 |
+
$level = 0;
|
273 |
+
if ($parents['display']['level'] == 2) {
|
274 |
+
$results = $parents['values'][$parents['display']['level']];
|
275 |
+
return $results;
|
276 |
+
} else {
|
277 |
+
$highestChild = array();
|
278 |
+
$level = $parents['display']['level'];
|
279 |
+
$parentId = 0;
|
280 |
+
if (isset($parents['values'][$level])) {
|
281 |
+
$highestLevelCount = count($parents['values'][$level]);
|
282 |
+
foreach ($parents['values'][$level] as $value) {
|
283 |
+
$parentId = $parents['display']['parentId'];
|
284 |
+
if ($value['parentId'] == $parentId) {
|
285 |
+
if ($highestLevelCount == 1) {
|
286 |
+
$value['selected'] = true;
|
287 |
+
}
|
288 |
+
$value['level'] = $level;
|
289 |
+
$highestChild[] = $value;
|
290 |
+
}
|
291 |
+
}
|
292 |
+
} else {
|
293 |
+
$level = $level - 1;
|
294 |
+
foreach ($parents['values'][$level] as $value) {
|
295 |
+
if ($value['selected'] == true) {
|
296 |
+
$parentId = $value['parentId'];
|
297 |
+
$value['level'] = $level;
|
298 |
+
$highestChild[] = $value;
|
299 |
+
}
|
300 |
+
}
|
301 |
|
302 |
+
foreach ($parents['values'][$level] as $value) {
|
303 |
+
if ($parentId == $value['parentId'] && $value['selected'] == false) {
|
304 |
+
$value['level'] = $level;
|
305 |
+
$highestChild[] = $value;
|
306 |
+
}
|
307 |
+
}
|
308 |
+
}
|
309 |
|
310 |
+
for ($i = $level - 1; $i >= 2; $i--) {
|
311 |
+
$parents['values'][$i][$parentId]['selected'] = true;
|
312 |
+
$parents['values'][$i][$parentId]['level'] = $i;
|
313 |
+
$results[] = $parents['values'][$i][$parentId];
|
314 |
+
$parentId = $parents['values'][$i][$parentId]['parentId'];
|
315 |
+
}
|
316 |
+
$results = array_reverse($results);
|
317 |
|
318 |
+
}
|
319 |
+
$results = array_merge($results, $highestChild);
|
320 |
+
$this->maxLevel[$filter] = $level;
|
321 |
+
return $results;
|
322 |
}
|
323 |
}
|
app/code/{local → community}/Boxalino/CemSearch/Block/Product/List.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Block/Product/List/Recommendation.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Block/Product/List/Related.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Block/Product/List/Upsell.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Block/Script.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/CatalogSearch/Helper/Data.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Helper/Data.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Adapter.php
RENAMED
@@ -386,7 +386,7 @@ class Boxalino_CemSearch_Helper_P13n_Adapter
|
|
386 |
$filter = new \com\boxalino\p13n\api\thrift\Filter();
|
387 |
$filter->fieldName = 'products_visibility';
|
388 |
$filter->negative = true;
|
389 |
-
$filter->stringValues = array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE);
|
390 |
return $filter;
|
391 |
}
|
392 |
|
@@ -428,6 +428,10 @@ class Boxalino_CemSearch_Helper_P13n_Adapter
|
|
428 |
|
429 |
public function getAutocompleteProducts($facets, $map = null, $fields = null)
|
430 |
{
|
|
|
|
|
|
|
|
|
431 |
$fs = array();
|
432 |
foreach($facets as $f) {
|
433 |
$fs[] = $f['id'];
|
386 |
$filter = new \com\boxalino\p13n\api\thrift\Filter();
|
387 |
$filter->fieldName = 'products_visibility';
|
388 |
$filter->negative = true;
|
389 |
+
$filter->stringValues = array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE, Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG);
|
390 |
return $filter;
|
391 |
}
|
392 |
|
428 |
|
429 |
public function getAutocompleteProducts($facets, $map = null, $fields = null)
|
430 |
{
|
431 |
+
if (!is_array($facets)) {
|
432 |
+
$facets = array();
|
433 |
+
}
|
434 |
+
|
435 |
$fs = array();
|
436 |
foreach($facets as $f) {
|
437 |
$fs[] = $f['id'];
|
app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Config.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Recommendation.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Helper/P13n/Sort.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/AbstractThrift.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/P13nService.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/Types.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Base/TBase.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/ClassLoader/ThriftClassLoader.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TApplicationException.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TException.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TProtocolException.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Exception/TTransportException.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TBinaryProtocolFactory.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TCompactProtocolFactory.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TJSONProtocolFactory.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TProtocolFactory.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TStringFuncFactory.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Factory/TTransportFactory.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/HttpP13n.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/BaseContext.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/ListContext.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/LookaheadReader.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/JSON/PairContext.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TBinaryProtocol.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TBinaryProtocolAccelerated.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TCompactProtocol.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TJSONProtocol.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Protocol/TProtocol.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Serializer/TBinarySerializer.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TForkingServer.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TServer.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TServerSocket.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TServerTransport.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Server/TSimpleServer.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/StringFunc/Core.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/StringFunc/Mbstring.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/StringFunc/TStringFunc.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/P13nTCurlClient.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/P13nTHttpClient.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TBufferedTransport.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TCurlClient.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TFramedTransport.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/THttpClient.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TMemoryBuffer.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TNullTransport.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TPhpStream.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TSocket.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TSocketPool.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Transport/TTransport.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Type/TMessageType.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Lib/vendor/Thrift/Type/TType.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Model/Advanced.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Model/Category.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Model/Logger.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Model/Observer.php
RENAMED
@@ -45,7 +45,7 @@ class Boxalino_CemSearch_Model_Observer
|
|
45 |
'quantity' => $item->getData('qty_ordered'),
|
46 |
'price' => $item->getPrice()
|
47 |
);
|
48 |
-
$fullPrice
|
49 |
}
|
50 |
}
|
51 |
$script = Mage::helper('Boxalino_CemSearch')->reportPurchase($products, $transactionId, $fullPrice, Mage::app()->getStore()->getCurrentCurrencyCode());
|
45 |
'quantity' => $item->getData('qty_ordered'),
|
46 |
'price' => $item->getPrice()
|
47 |
);
|
48 |
+
$fullPrice += $item->getPrice() * $item->getData('qty_ordered');
|
49 |
}
|
50 |
}
|
51 |
$script = Mage::helper('Boxalino_CemSearch')->reportPurchase($products, $transactionId, $fullPrice, Mage::app()->getStore()->getCurrentCurrencyCode());
|
app/code/{local → community}/Boxalino/CemSearch/Model/Resource/Advanced.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Model/Resource/Advanced/Collection.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Model/Resource/Fulltext.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/Model/Session.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/controllers/AdvancedController.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/controllers/AjaxController.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/controllers/IndexController.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/controllers/ResultController.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/etc/adminhtml.xml
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/CemSearch/etc/config.xml
RENAMED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Boxalino_CemSearch>
|
5 |
-
<version>
|
6 |
</Boxalino_CemSearch>
|
7 |
</modules>
|
8 |
<frontend>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Boxalino_CemSearch>
|
5 |
+
<version>2.10</version>
|
6 |
</Boxalino_CemSearch>
|
7 |
</modules>
|
8 |
<frontend>
|
app/code/{local → community}/Boxalino/CemSearch/etc/system.xml
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/Exporter/Helper/Data.php
RENAMED
@@ -194,16 +194,11 @@ class Boxalino_Exporter_Helper_Data extends Mage_Core_Helper_Data
|
|
194 |
return rmdir($dir);
|
195 |
}
|
196 |
|
197 |
-
public function rewrittenProductUrl($productId, $
|
198 |
{
|
199 |
$coreUrl = Mage::getModel('core/url_rewrite');
|
200 |
-
$idPath = sprintf('product/%d', $productId);
|
201 |
-
if ($categoryId) {
|
202 |
-
$idPath = sprintf('%s/%d', $idPath, $categoryId);
|
203 |
-
}
|
204 |
$coreUrl->setStoreId($storeId);
|
205 |
-
$coreUrl->loadByIdPath($
|
206 |
-
|
207 |
return $coreUrl->getRequestPath();
|
208 |
}
|
209 |
|
194 |
return rmdir($dir);
|
195 |
}
|
196 |
|
197 |
+
public function rewrittenProductUrl($productId, $storeId)
|
198 |
{
|
199 |
$coreUrl = Mage::getModel('core/url_rewrite');
|
|
|
|
|
|
|
|
|
200 |
$coreUrl->setStoreId($storeId);
|
201 |
+
$coreUrl->loadByIdPath(sprintf('product/%d', $productId));
|
|
|
202 |
return $coreUrl->getRequestPath();
|
203 |
}
|
204 |
|
app/code/{local → community}/Boxalino/Exporter/Model/Delta.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/Exporter/Model/Indexer.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/Exporter/Model/Mysql4/Exporter/Delta.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/Exporter/Model/Mysql4/Exporter/Indexer.php
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/Exporter/Model/Mysql4/Indexer.php
RENAMED
@@ -232,8 +232,8 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
232 |
'special_price',
|
233 |
'special_from_date',
|
234 |
'special_to_date',
|
235 |
-
'visibility',
|
236 |
'category_ids',
|
|
|
237 |
'status'
|
238 |
);
|
239 |
|
@@ -279,7 +279,7 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
279 |
if (!in_array($field, $this->_customerAttributes)) {
|
280 |
Mage::throwException("Customer attribute \"$field\" doesn't exist, please update your additional_customer_attributes setting in the Boxalino Exporter settings!");
|
281 |
}
|
282 |
-
if ($field != null && strlen($field) > 0 && !in_array($field, $
|
283 |
$attributes[] = $field;
|
284 |
}
|
285 |
}
|
@@ -536,6 +536,7 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
536 |
$count++;
|
537 |
}
|
538 |
|
|
|
539 |
self::logMem('Products - get attributes - before');
|
540 |
$columns = array(
|
541 |
'entity_id',
|
@@ -605,11 +606,10 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
605 |
)
|
606 |
->where('t_d.attribute_id IN(?)', $attrsFromDb['datetime']);
|
607 |
|
608 |
-
$select = $db->select()
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
);
|
613 |
|
614 |
$select1 = null;
|
615 |
$select2 = null;
|
@@ -678,13 +678,33 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
678 |
)
|
679 |
)
|
680 |
->where('product_id IN(?)', $ids);
|
681 |
-
$ids = null;
|
682 |
foreach ($db->fetchAll($select) as $r) {
|
683 |
$products[$r['product_id']]['categories'][] = $r['category_id'];
|
684 |
}
|
685 |
$select = null;
|
686 |
self::logMem('Products - get categories - after');
|
687 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
688 |
foreach ($products as $product) {
|
689 |
self::logMem('Products - start transform');
|
690 |
|
@@ -694,7 +714,6 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
694 |
}
|
695 |
|
696 |
$id = $product['entity_id'];
|
697 |
-
|
698 |
$productParam = array();
|
699 |
$haveParent = false;
|
700 |
|
@@ -748,9 +767,7 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
748 |
fputcsv($filesMtM[$attr], array($id, $val), $this->_helperExporter->XML_DELIMITER, $this->_helperExporter->XML_ENCLOSURE);
|
749 |
}
|
750 |
|
751 |
-
|
752 |
$val = null;
|
753 |
-
|
754 |
continue;
|
755 |
}
|
756 |
|
@@ -803,10 +820,7 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
803 |
$this->_count++;
|
804 |
$localeCount++;
|
805 |
|
806 |
-
|
807 |
-
* Add special fields
|
808 |
-
*/
|
809 |
-
//Add url to image cache
|
810 |
if ($this->_storeConfig['export_product_images']) {
|
811 |
$_product = Mage::getModel('catalog/product')->load($id);
|
812 |
$media_gallery = $_product->getMediaGallery();
|
@@ -823,17 +837,21 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
823 |
$this->_transformedProducts['products'][$id] = array_merge($this->_transformedProducts['products'][$id], $productParam);
|
824 |
}
|
825 |
|
826 |
-
|
827 |
-
* Add url to product for each languages
|
828 |
-
*/
|
829 |
if ($this->_storeConfig['export_product_url']) {
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
)
|
836 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
837 |
}
|
838 |
|
839 |
$productParam = null;
|
@@ -841,7 +859,6 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
841 |
|
842 |
ksort($this->_transformedProducts['products'][$id]);
|
843 |
self::logMem('Products - end transform');
|
844 |
-
|
845 |
}
|
846 |
}
|
847 |
|
@@ -1579,7 +1596,7 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
1579 |
|
1580 |
//customer source
|
1581 |
$source = $sources->addChild('source');
|
1582 |
-
$source->addAttribute('id', '
|
1583 |
$source->addAttribute('type', 'item_data_file');
|
1584 |
|
1585 |
$source->addChild('file')->addAttribute('value', 'customers.csv');
|
@@ -1637,7 +1654,7 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
1637 |
$source->addChild('file')->addAttribute('value', 'transactions.csv');
|
1638 |
$source->addChild('orderIdColumn')->addAttribute('value', 'order_id');
|
1639 |
$customerIdColumn = $source->addChild('customerIdColumn');
|
1640 |
-
$customerIdColumn->addAttribute('value', '
|
1641 |
$customerIdColumn->addAttribute('customer_property_id', 'customer_id');
|
1642 |
$productIdColumn = $source->addChild('productIdColumn');
|
1643 |
$productIdColumn->addAttribute('value', 'entity_id');
|
@@ -1692,9 +1709,10 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
1692 |
}
|
1693 |
|
1694 |
foreach ($attrs as $attr) {
|
1695 |
-
$ptype = 'string';
|
1696 |
// set property type
|
1697 |
switch ($attr) {
|
|
|
|
|
1698 |
case 'name':
|
1699 |
$ptype = 'title';
|
1700 |
break;
|
@@ -1722,6 +1740,8 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
1722 |
case 'length':
|
1723 |
$ptype = 'number';
|
1724 |
break;
|
|
|
|
|
1725 |
}
|
1726 |
|
1727 |
if (isset($this->_attributesValuesByName[$attr]) && $attr != 'visibility' && $attr != 'status') {
|
@@ -1734,8 +1754,6 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
1734 |
'has_lang' => false,
|
1735 |
'reference' => $attr
|
1736 |
);
|
1737 |
-
} elseif ($attr == 'category_ids') {
|
1738 |
-
continue;
|
1739 |
} else {
|
1740 |
$ref = null;
|
1741 |
$type = 'direct';
|
@@ -1751,7 +1769,6 @@ abstract class Boxalino_Exporter_Model_Mysql4_Indexer extends Mage_Core_Model_My
|
|
1751 |
break;
|
1752 |
default:
|
1753 |
$lang = false;
|
1754 |
-
break;
|
1755 |
}
|
1756 |
$properties[] = array(
|
1757 |
'id' => $attr,
|
232 |
'special_price',
|
233 |
'special_from_date',
|
234 |
'special_to_date',
|
|
|
235 |
'category_ids',
|
236 |
+
'visibility',
|
237 |
'status'
|
238 |
);
|
239 |
|
279 |
if (!in_array($field, $this->_customerAttributes)) {
|
280 |
Mage::throwException("Customer attribute \"$field\" doesn't exist, please update your additional_customer_attributes setting in the Boxalino Exporter settings!");
|
281 |
}
|
282 |
+
if ($field != null && strlen($field) > 0 && !in_array($field, $attributes)) {
|
283 |
$attributes[] = $field;
|
284 |
}
|
285 |
}
|
536 |
$count++;
|
537 |
}
|
538 |
|
539 |
+
// we have to check for settings on the different levels: Store(View) & Global
|
540 |
self::logMem('Products - get attributes - before');
|
541 |
$columns = array(
|
542 |
'entity_id',
|
606 |
)
|
607 |
->where('t_d.attribute_id IN(?)', $attrsFromDb['datetime']);
|
608 |
|
609 |
+
$select = $db->select()->union(
|
610 |
+
array($select1, $select2, $select3, $select4, $select5),
|
611 |
+
Zend_Db_Select::SQL_UNION_ALL
|
612 |
+
);
|
|
|
613 |
|
614 |
$select1 = null;
|
615 |
$select2 = null;
|
678 |
)
|
679 |
)
|
680 |
->where('product_id IN(?)', $ids);
|
|
|
681 |
foreach ($db->fetchAll($select) as $r) {
|
682 |
$products[$r['product_id']]['categories'][] = $r['category_id'];
|
683 |
}
|
684 |
$select = null;
|
685 |
self::logMem('Products - get categories - after');
|
686 |
|
687 |
+
if (Mage::getEdition() == Mage::EDITION_ENTERPRISE) {
|
688 |
+
self::logMem('Products - get EE URL key - before');
|
689 |
+
$select = $db->select()
|
690 |
+
->from(
|
691 |
+
array('t_g' => $this->_prefix . 'catalog_product_entity_url_key'),
|
692 |
+
array('entity_id')
|
693 |
+
)
|
694 |
+
->joinLeft(
|
695 |
+
array('t_s' => $this->_prefix . 'catalog_product_entity_url_key'),
|
696 |
+
$db->quoteInto('t_s.attribute_id = t_g.attribute_id AND t_s.entity_id = t_g.entity_id AND t_s.store_id = ?', $storeId),
|
697 |
+
array('value' => 'IF(t_s.store_id IS NULL, t_g.value, t_s.value)')
|
698 |
+
)
|
699 |
+
->where('t_g.store_id = ?', 0)
|
700 |
+
->where('t_g.entity_id IN(?)', $ids);
|
701 |
+
foreach ($db->fetchAll($select) as $r) {
|
702 |
+
$products[$r['entity_id']]['url_key'] = $r['value'];
|
703 |
+
}
|
704 |
+
self::logMem('Products - get EE URL key - after');
|
705 |
+
}
|
706 |
+
$ids = null;
|
707 |
+
|
708 |
foreach ($products as $product) {
|
709 |
self::logMem('Products - start transform');
|
710 |
|
714 |
}
|
715 |
|
716 |
$id = $product['entity_id'];
|
|
|
717 |
$productParam = array();
|
718 |
$haveParent = false;
|
719 |
|
767 |
fputcsv($filesMtM[$attr], array($id, $val), $this->_helperExporter->XML_DELIMITER, $this->_helperExporter->XML_ENCLOSURE);
|
768 |
}
|
769 |
|
|
|
770 |
$val = null;
|
|
|
771 |
continue;
|
772 |
}
|
773 |
|
820 |
$this->_count++;
|
821 |
$localeCount++;
|
822 |
|
823 |
+
// Add url to image cache
|
|
|
|
|
|
|
824 |
if ($this->_storeConfig['export_product_images']) {
|
825 |
$_product = Mage::getModel('catalog/product')->load($id);
|
826 |
$media_gallery = $_product->getMediaGallery();
|
837 |
$this->_transformedProducts['products'][$id] = array_merge($this->_transformedProducts['products'][$id], $productParam);
|
838 |
}
|
839 |
|
840 |
+
// Add url to product for each languages
|
|
|
|
|
841 |
if ($this->_storeConfig['export_product_url']) {
|
842 |
+
if (array_key_exists('url_key', $product)) {
|
843 |
+
$url_path = $product['url_key'] . '.html';
|
844 |
+
} else {
|
845 |
+
$url_path = $this->_helperExporter->rewrittenProductUrl(
|
846 |
+
$id, $storeId
|
|
|
847 |
);
|
848 |
+
}
|
849 |
+
$this->_transformedProducts['products'][$id] = array_merge(
|
850 |
+
$this->_transformedProducts['products'][$id],
|
851 |
+
array('default_url_' . $lang => (
|
852 |
+
$storeBaseUrl . $url_path . '?___store=' . $storeCode
|
853 |
+
))
|
854 |
+
);
|
855 |
}
|
856 |
|
857 |
$productParam = null;
|
859 |
|
860 |
ksort($this->_transformedProducts['products'][$id]);
|
861 |
self::logMem('Products - end transform');
|
|
|
862 |
}
|
863 |
}
|
864 |
|
1596 |
|
1597 |
//customer source
|
1598 |
$source = $sources->addChild('source');
|
1599 |
+
$source->addAttribute('id', 'customer_vals');
|
1600 |
$source->addAttribute('type', 'item_data_file');
|
1601 |
|
1602 |
$source->addChild('file')->addAttribute('value', 'customers.csv');
|
1654 |
$source->addChild('file')->addAttribute('value', 'transactions.csv');
|
1655 |
$source->addChild('orderIdColumn')->addAttribute('value', 'order_id');
|
1656 |
$customerIdColumn = $source->addChild('customerIdColumn');
|
1657 |
+
$customerIdColumn->addAttribute('value', 'customer_id');
|
1658 |
$customerIdColumn->addAttribute('customer_property_id', 'customer_id');
|
1659 |
$productIdColumn = $source->addChild('productIdColumn');
|
1660 |
$productIdColumn->addAttribute('value', 'entity_id');
|
1709 |
}
|
1710 |
|
1711 |
foreach ($attrs as $attr) {
|
|
|
1712 |
// set property type
|
1713 |
switch ($attr) {
|
1714 |
+
case 'category_ids':
|
1715 |
+
continue 2;
|
1716 |
case 'name':
|
1717 |
$ptype = 'title';
|
1718 |
break;
|
1740 |
case 'length':
|
1741 |
$ptype = 'number';
|
1742 |
break;
|
1743 |
+
default:
|
1744 |
+
$ptype = 'string';
|
1745 |
}
|
1746 |
|
1747 |
if (isset($this->_attributesValuesByName[$attr]) && $attr != 'visibility' && $attr != 'status') {
|
1754 |
'has_lang' => false,
|
1755 |
'reference' => $attr
|
1756 |
);
|
|
|
|
|
1757 |
} else {
|
1758 |
$ref = null;
|
1759 |
$type = 'direct';
|
1769 |
break;
|
1770 |
default:
|
1771 |
$lang = false;
|
|
|
1772 |
}
|
1773 |
$properties[] = array(
|
1774 |
'id' => $attr,
|
app/code/{local → community}/Boxalino/Exporter/etc/adminhtml.xml
RENAMED
File without changes
|
app/code/{local → community}/Boxalino/Exporter/etc/config.xml
RENAMED
@@ -1,7 +1,8 @@
|
|
|
|
1 |
<config>
|
2 |
<modules>
|
3 |
<Boxalino_Exporter>
|
4 |
-
<version>
|
5 |
</Boxalino_Exporter>
|
6 |
</modules>
|
7 |
<global>
|
1 |
+
<?xml version="1.0"?>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Boxalino_Exporter>
|
5 |
+
<version>2.10</version>
|
6 |
</Boxalino_Exporter>
|
7 |
</modules>
|
8 |
<global>
|
app/code/{local → community}/Boxalino/Exporter/etc/system.xml
RENAMED
File without changes
|
app/etc/modules/Boxalino_CemSearch.xml
CHANGED
@@ -1,10 +1,9 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
-
|
3 |
<config>
|
4 |
<modules>
|
5 |
<Boxalino_CemSearch>
|
6 |
<active>true</active>
|
7 |
-
<codePool>
|
8 |
</Boxalino_CemSearch>
|
9 |
</modules>
|
10 |
</config>
|
1 |
<?xml version="1.0"?>
|
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Boxalino_CemSearch>
|
5 |
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
</Boxalino_CemSearch>
|
8 |
</modules>
|
9 |
</config>
|
app/etc/modules/Boxalino_Exporter.xml
CHANGED
@@ -1,8 +1,9 @@
|
|
|
|
1 |
<config>
|
2 |
<modules>
|
3 |
<Boxalino_Exporter>
|
4 |
<active>true</active>
|
5 |
-
<codePool>
|
6 |
</Boxalino_Exporter>
|
7 |
</modules>
|
8 |
</config>
|
1 |
+
<?xml version="1.0"?>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Boxalino_Exporter>
|
5 |
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
</Boxalino_Exporter>
|
8 |
</modules>
|
9 |
</config>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>boxalino_plugin</name>
|
4 |
-
<version>2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.boxalino.com">boxalino Plugin</license>
|
7 |
<channel>community</channel>
|
@@ -16,13 +16,20 @@ Boxalino increases the online success of e-commerce companies on the mobile and
|
|
16 |
Boxalino is the best solution for Conversion Optimization on the market that integrates Testing, AI and Reporting in a way that is really usable for E-Commerce Teams.
|
17 |

|
18 |
Check out www.boxalino.com for details or give us a shout at sales@boxalino.com.</description>
|
19 |
-
<notes>
|
20 |

|
21 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
<authors><author><name>Szymon Nosal</name><user>szymonnosal</user><email>szymon.nosal@boxalino.com</email></author><author><name>Simon Rupf</name><user>simonrupf</user><email>simon.rupf@boxalino.com</email></author></authors>
|
23 |
-
<date>2015-
|
24 |
-
<time>14:
|
25 |
-
<contents><target name="
|
26 |
<compatible/>
|
27 |
-
<dependencies><required><php><min>5.2.0</min><max>5.
|
28 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>boxalino_plugin</name>
|
4 |
+
<version>2.10.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.boxalino.com">boxalino Plugin</license>
|
7 |
<channel>community</channel>
|
16 |
Boxalino is the best solution for Conversion Optimization on the market that integrates Testing, AI and Reporting in a way that is really usable for E-Commerce Teams.
|
17 |

|
18 |
Check out www.boxalino.com for details or give us a shout at sales@boxalino.com.</description>
|
19 |
+
<notes>refactoring and bugfixes
|
20 |

|
21 |
+
- Moved plugin from local to community pool to support custom overrides.
|
22 |
+
- Adding support for URL export in Magento EE.
|
23 |
+
- Improving handling of missing/empty images in the autocompletion.
|
24 |
+
- Refactoring and improving facet block.
|
25 |
+
- Exclude catalog only items in the search.
|
26 |
+
- Fixing regressions in the customer synchronization.
|
27 |
+
- Correcting order total calculation in tracking.
|
28 |
+
</notes>
|
29 |
<authors><author><name>Szymon Nosal</name><user>szymonnosal</user><email>szymon.nosal@boxalino.com</email></author><author><name>Simon Rupf</name><user>simonrupf</user><email>simon.rupf@boxalino.com</email></author></authors>
|
30 |
+
<date>2015-08-17</date>
|
31 |
+
<time>14:35:15</time>
|
32 |
+
<contents><target name="magecommunity"><dir name="Boxalino"><dir name="CemSearch"><dir name="Block"><file name="Abstract.php" hash="45253ec10623b07c67cd623c626ad5f4"/><file name="Autocomplete.php" hash="a2218ee667aa6ee4c488a77fc4a1338f"/><dir name="Cart"><file name="Crosssell.php" hash="cea7a2d6f5b65db2a2f645a1603b4f8d"/></dir><file name="Facets.php" hash="27dfddf4b68367ab52c3a24a49edff66"/><dir name="Product"><dir name="List"><file name="Recommendation.php" hash="a6a6458eb55c017aca0a6ab5d6576386"/><file name="Related.php" hash="e7586fbc5cab975bc159ea946f367a87"/><file name="Upsell.php" hash="49e506c72b059348d6edab2a56050ec8"/></dir><file name="List.php" hash="2ae8fde63ab299c4ec7a6cff0c31edbc"/></dir><file name="Script.php" hash="a1d73dbf9a6fee9b3146a852072c95bf"/></dir><dir name="CatalogSearch"><dir name="Helper"><file name="Data.php" hash="9257d32c8f117e727333f4f1b4b5ef35"/></dir></dir><dir name="Helper"><file name="Data.php" hash="da6294c7560e3643dd312809cf7fd539"/><dir name="P13n"><file name="Adapter.php" hash="940d05652c3bc6959dbd116ee53baea3"/><file name="Config.php" hash="82597fa7e5fc6695137ad2f96267378a"/><file name="Recommendation.php" hash="32a664921b31680dca74335885b61a54"/><file name="Sort.php" hash="f40c0e1472ed4c75b2dbafc14cc5608c"/></dir></dir><dir name="Lib"><file name="AbstractThrift.php" hash="d6c88b8524dbd810d51ca9b568ca64ee"/><file name="P13nService.php" hash="96bae2ed236b56c93c69c043d61bb1fa"/><file name="Types.php" hash="3b56e03fe225e986511a7abfaab0a84c"/><dir name="vendor"><dir name="Thrift"><dir name="Base"><file name="TBase.php" hash="b383bf43ac76a57e3b1168cfacffbf22"/></dir><dir name="ClassLoader"><file name="ThriftClassLoader.php" hash="13159566c8b2dcc5b260ef9a0844167e"/></dir><dir name="Exception"><file name="TApplicationException.php" hash="1ee65cc5fb3dc82550a85cc18a31850c"/><file name="TException.php" hash="756e6a847c9e6bd1560c24b9a7373d2c"/><file name="TProtocolException.php" hash="148ebd5d8eba2587cd6e039cf70e04ab"/><file name="TTransportException.php" hash="aca39eea001fcbfd452db9ca7d5c218c"/></dir><dir name="Factory"><file name="TBinaryProtocolFactory.php" hash="bcd6e0555d6e2670a3bc7dd39ff3dbaf"/><file name="TCompactProtocolFactory.php" hash="0118b6363e09080548de3c6daf153290"/><file name="TJSONProtocolFactory.php" hash="28af1d10b4133df7f8ad8022ca39d703"/><file name="TProtocolFactory.php" hash="300bf2d805fa4a227cc3dc2b6ed0200c"/><file name="TStringFuncFactory.php" hash="242f32ade732f9c0d9b62a81b6901cd4"/><file name="TTransportFactory.php" hash="8347271458aea0453e774170a5b3e9fd"/></dir><file name="HttpP13n.php" hash="8ab6f5e997fae57430e9634b753fdd46"/><dir name="Protocol"><dir name="JSON"><file name="BaseContext.php" hash="ed1d83fba59a1d04c07416094ece8ee1"/><file name="ListContext.php" hash="9c8a970f54c30be1299c2d38da60ed56"/><file name="LookaheadReader.php" hash="315a96446f0f530ed1b0b1350b37f58d"/><file name="PairContext.php" hash="3fa06b3f7c9698642aefe00cd322f68b"/></dir><file name="TBinaryProtocol.php" hash="933d2be5503504cddd544992a4af0ee3"/><file name="TBinaryProtocolAccelerated.php" hash="444ba8026d73b83fbcf303d9a550cb70"/><file name="TCompactProtocol.php" hash="57b31bf77c29c1e0d1417f018a239505"/><file name="TJSONProtocol.php" hash="fac76e10fbc711cbfbcf6bdbc0b60191"/><file name="TProtocol.php" hash="d9c9a8105ad160bf0b87e8053d4b9d7c"/></dir><dir name="Serializer"><file name="TBinarySerializer.php" hash="e1fef75686b1fbadc28242b7f3697397"/></dir><dir name="Server"><file name="TForkingServer.php" hash="6e319d0d7f45350a03e387fc2f22473d"/><file name="TServer.php" hash="dc87f6a299fb4fb9ab76206f3b6bec72"/><file name="TServerSocket.php" hash="468fc875e7a5e4899e502e95f823455d"/><file name="TServerTransport.php" hash="ca2ab3e25a0760d37eb3538274dfaccb"/><file name="TSimpleServer.php" hash="38d5685001585a0d9f31b9d8c46656d2"/></dir><dir name="StringFunc"><file name="Core.php" hash="4493a096c73f5922316d95cc2c5fb687"/><file name="Mbstring.php" hash="b5ee27dd6bdceee0f2133df01c8d4fcd"/><file name="TStringFunc.php" hash="89fd7900f1b258391e4d4fdc924bc0f0"/></dir><dir name="Transport"><file name="P13nTCurlClient.php" hash="aaa63d036b6920b57e0777f90c08064f"/><file name="P13nTHttpClient.php" hash="8223e00845b717bb55981649d9ce6616"/><file name="TBufferedTransport.php" hash="7ace771173641cf47b3b11ca0bfebcfa"/><file name="TCurlClient.php" hash="16b14d5f643b20c872468dc96218708d"/><file name="TFramedTransport.php" hash="c6fc032e990e4cf3507741ef1d5b83b2"/><file name="THttpClient.php" hash="b299d30eecc318d7dde4d012ebe8a512"/><file name="TMemoryBuffer.php" hash="7367faa512ec8d25489819ca2ed8848f"/><file name="TNullTransport.php" hash="82d683d7d76ef2938fad1c58878f45e5"/><file name="TPhpStream.php" hash="44769e5da4709a4b6c2025137e4898b3"/><file name="TSocket.php" hash="d689b1f877eda19f7caaa9cb46788f96"/><file name="TSocketPool.php" hash="73d86dbd017130fe2aa0778132b42b26"/><file name="TTransport.php" hash="9185e82d3a440d1db97c6983573bd1ab"/></dir><dir name="Type"><file name="TMessageType.php" hash="20a9fb9a1de1ffe03bfac3057c913101"/><file name="TType.php" hash="261cc40ce2573ebf414c0ec06a2ee093"/></dir></dir></dir></dir><dir name="Model"><file name="Advanced.php" hash="d22f70b7cc2a9e599e5b45fbea541750"/><file name="Category.php" hash="37a225843c7ce20966f130480075aa5d"/><file name="Logger.php" hash="a75219dc447c1ebdd41ad312b2ef7f40"/><file name="Observer.php" hash="769d825a8547191d22d20cdf638b8921"/><dir name="Resource"><dir name="Advanced"><file name="Collection.php" hash="8814272ed16bc3c895bf3320633c0d24"/></dir><file name="Advanced.php" hash="572af318b61552c006b32ce5f5d9eb7e"/><file name="Fulltext.php" hash="cb2dc7ab7e243ea12a5595cfd77dc60a"/></dir><file name="Session.php" hash="f5f6948355cfc10882dd7a4f80e2713f"/></dir><dir name="controllers"><file name="AdvancedController.php" hash="7b22f7b4ffdf1a59448218eb79fca4ad"/><file name="AjaxController.php" hash="8331416b6beee0fb635da991790b8f40"/><file name="IndexController.php" hash="0f9ba5d1ee9bf4d7f9d6868a502738cd"/><file name="ResultController.php" hash="e43539a5921da7db3364b8e70dac2bdc"/></dir><dir name="etc"><file name="adminhtml.xml" hash="13af90d012dc3871c9af59c804d3588f"/><file name="config.xml" hash="890e172d0691b24cdc43083e1cf92a91"/><file name="system.xml" hash="96d9966e52f500a359822e3bb40946a0"/></dir></dir><dir name="Exporter"><dir name="Helper"><file name="Data.php" hash="68de11db65d7b0f091ee001d6b5a443c"/></dir><dir name="Model"><file name="Delta.php" hash="664b8a733751dd7e85169f3c9d99322f"/><file name="Indexer.php" hash="d9c10401971e9544992fbf34594fb600"/><dir name="Mysql4"><dir name="Exporter"><file name="Delta.php" hash="f4175abe070a035fd16399d3dbda1509"/><file name="Indexer.php" hash="bc1524bba09adc0c796872c718d5b6c1"/></dir><file name="Indexer.php" hash="2056705d63f3d44f0765db76b73c8850"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="57e26697c6d9b55a58f6da88b5a8d822"/><file name="config.xml" hash="9a3ac9b7ce890e8685bde7e6ba299516"/><file name="system.xml" hash="3c8e345e2ed5c2c1e01b0b37c9d62f10"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="boxalino.xml" hash="94bdcfdcff2210386d329f396f16b55a"/></dir><dir name="template"><dir name="boxalino"><dir name="catalogsearch"><file name="form.mini.phtml" hash="ac78368a3d53a36f912b5f9ceae4b566"/><file name="relaxation_products.phtml" hash="257908262463f380f098f0158c628899"/><file name="result.phtml" hash="8764361c966bdc64557aee6af4e8e336"/></dir><file name="left_filters.phtml" hash="d49cfedbc38298a1556cdca86b03a192"/><file name="relaxation_suggestion.phtml" hash="2344e747549eb399c219459b842569a0"/><file name="script.phtml" hash="9d5dc83f66114026208446fb0993b004"/><file name="top_filters.phtml" hash="588185dc46825a1415124f84b90ef6c3"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Boxalino_CemSearch.xml" hash="4c040e0f79d861c68c6cb036d7f58947"/><file name="Boxalino_Exporter.xml" hash="76a7a0be8d1c8caf84247b3ef0beb166"/></dir></target><target name="magelocale"><dir name="de_DE"><file name="Boxalino.csv" hash="898a7e741c385f6de40705755c7dbac7"/></dir><dir name="en_US"><file name="Boxalino.csv" hash="2fa5b37fa965c1c60e60609918cc953a"/></dir><dir name="fr_FR"><file name="Boxalino.csv" hash="07fc6c55708c4986f21f3196af74a4a3"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="boxalinoCemSearch.css" hash="aa5e2a4ae7f048bc8dc96cc3b15f827d"/></dir><dir name="js"><file name="boxalinoAutocomplete.js" hash="b26c8a5e419c7f2e8da9c0e6efbe04a2"/><file name="jquery-1.10.2.min.js" hash="628072e7212db1e8cdacb22b21752cda"/><file name="jquery-noConflict.js" hash="10bdc1b7f2effa529e5baae786007688"/></dir></dir></dir></dir></target></contents>
|
33 |
<compatible/>
|
34 |
+
<dependencies><required><php><min>5.2.0</min><max>5.6.9</max></php></required></dependencies>
|
35 |
</package>
|