Version Notes
New linkup method
Minor bugs fixed
Download this release
Release Info
Developer | Oct8ne |
Extension | LetsSyncroLLC_Oct8ne |
Version | 2.1.6 |
Comparing to | |
See all releases |
Code changes from version 2.1.5 to 2.1.6
- app/code/community/LetsSyncroLLC/Oct8ne/Block/Accountconfig.php +130 -32
- app/code/community/LetsSyncroLLC/Oct8ne/Helper/Data.php +39 -23
- app/code/community/LetsSyncroLLC/Oct8ne/Helper/Search/Solr.php +78 -34
- app/code/community/LetsSyncroLLC/Oct8ne/Helper/Url.php +1 -1
- app/code/community/LetsSyncroLLC/Oct8ne/controllers/FrameController.php +9 -9
- app/code/community/LetsSyncroLLC/Oct8ne/controllers/SetupController.php +11 -6
- app/code/community/LetsSyncroLLC/Oct8ne/etc/config.xml +1 -1
- app/code/community/LetsSyncroLLC/Oct8ne/etc/system.xml +1 -1
- app/design/frontend/base/default/template/oct8ne/letssyncro.phtml +1 -1
- app/etc/modules/LetsSyncroLLC_Oct8ne.xml +1 -1
- package.xml +7 -5
app/code/community/LetsSyncroLLC/Oct8ne/Block/Accountconfig.php
CHANGED
@@ -35,6 +35,7 @@ class LetsSyncroLLC_Oct8ne_Block_Accountconfig extends Mage_Core_Block_Template
|
|
35 |
}
|
36 |
|
37 |
if (isset($_GET['deactivate']) && !isset($submitLetsSyncroCredentials)) {
|
|
|
38 |
if (!$this->updateLetsSyncroEnabled('0', $letssyncrooptions, $letssyncromodel))
|
39 |
$this->_html .= '<div id="messagesbox"><ul class="messages"><li class="error-msg"><ul><li><div id="themessage">' . $this->__('There was an error deactivating OCT8NE integration.') . '</div></li></ul></li></ul><br></div>';
|
40 |
else
|
@@ -44,6 +45,7 @@ class LetsSyncroLLC_Oct8ne_Block_Accountconfig extends Mage_Core_Block_Template
|
|
44 |
}
|
45 |
|
46 |
if (isset($_GET['activate']) && !isset($submitLetsSyncroCredentials)) {
|
|
|
47 |
if (!$this->updateLetsSyncroEnabled('1', $letssyncrooptions, $letssyncromodel))
|
48 |
$this->_html .= '<div id="messagesbox"><ul class="messages"><li class="error-msg"><ul><li><div id="themessage">' . $this->__('There was an error activating OCT8NE integration.') . '</div></li></ul></li></ul><br></div>';
|
49 |
else
|
@@ -99,6 +101,8 @@ class LetsSyncroLLC_Oct8ne_Block_Accountconfig extends Mage_Core_Block_Template
|
|
99 |
elseif ($letssyncrooptions['licenseid'] != '' && $letssyncrooptions['enabled'] == '1')
|
100 |
$this->_html .= str_replace('&deactivate', '', $linked_literal_deact);
|
101 |
|
|
|
|
|
102 |
$this->_html .= '
|
103 |
<legend>' . $this->__('Account Setup') . '</legend>
|
104 |
<table cellspacing="0" class="form-list">
|
@@ -141,8 +145,7 @@ class LetsSyncroLLC_Oct8ne_Block_Accountconfig extends Mage_Core_Block_Template
|
|
141 |
<br />
|
142 |
<p class="LetsSyncro">' . $this->__('Don\'t have an oct8ne account? Email us: support@oct8ne.com') . '</p>
|
143 |
</fieldset>
|
144 |
-
</form><br />';
|
145 |
-
|
146 |
return $this->_html;
|
147 |
}
|
148 |
|
@@ -158,16 +161,53 @@ class LetsSyncroLLC_Oct8ne_Block_Accountconfig extends Mage_Core_Block_Template
|
|
158 |
if ($letssyncro_enabled == '1' && ($letssyncro_licenseid == '' || strlen($letssyncro_licenseid) != 32))
|
159 |
return false;
|
160 |
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
165 |
$linkup = Mage::helper('oct8ne/url')->getOct8neLinkupServiceUrl();
|
166 |
-
$this->sendRequest($xmlData, 'logon', $linkup)
|
167 |
|
168 |
-
return $letssyncromodel->setEnabled($letssyncro_enabled);
|
169 |
}
|
170 |
-
|
171 |
public function updateLetsSyncroUserPassword($letssyncrooptions, $letssyncromodel, $letssyncro_useremail, $letssyncro_password) {
|
172 |
if (!$letssyncromodel->setEmail($letssyncro_useremail) || !$letssyncromodel->setPassword($letssyncro_password))
|
173 |
return false;
|
@@ -175,34 +215,92 @@ class LetsSyncroLLC_Oct8ne_Block_Accountconfig extends Mage_Core_Block_Template
|
|
175 |
$letssyncromodel->setApitoken('');
|
176 |
$letssyncromodel->setLicenseid('');
|
177 |
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
$
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
$
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
return false;
|
193 |
}
|
194 |
-
|
195 |
-
$letssyncromodel->setLicenseid($xml->LicenseId) &&
|
196 |
-
$letssyncromodel->setEmail($letssyncro_useremail) &&
|
197 |
-
$letssyncromodel->setPassword($letssyncro_password)) {
|
198 |
-
return true;
|
199 |
-
}
|
200 |
return false;
|
201 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
return false;
|
203 |
}
|
204 |
-
|
205 |
-
return true;
|
206 |
}
|
207 |
|
208 |
public function sendRequest($xmlData, $method = '', $letssyncro_url, $letssyncro_apitoken = '') {
|
35 |
}
|
36 |
|
37 |
if (isset($_GET['deactivate']) && !isset($submitLetsSyncroCredentials)) {
|
38 |
+
Mage::log('Deactivate');
|
39 |
if (!$this->updateLetsSyncroEnabled('0', $letssyncrooptions, $letssyncromodel))
|
40 |
$this->_html .= '<div id="messagesbox"><ul class="messages"><li class="error-msg"><ul><li><div id="themessage">' . $this->__('There was an error deactivating OCT8NE integration.') . '</div></li></ul></li></ul><br></div>';
|
41 |
else
|
45 |
}
|
46 |
|
47 |
if (isset($_GET['activate']) && !isset($submitLetsSyncroCredentials)) {
|
48 |
+
Mage::log('Activate');
|
49 |
if (!$this->updateLetsSyncroEnabled('1', $letssyncrooptions, $letssyncromodel))
|
50 |
$this->_html .= '<div id="messagesbox"><ul class="messages"><li class="error-msg"><ul><li><div id="themessage">' . $this->__('There was an error activating OCT8NE integration.') . '</div></li></ul></li></ul><br></div>';
|
51 |
else
|
101 |
elseif ($letssyncrooptions['licenseid'] != '' && $letssyncrooptions['enabled'] == '1')
|
102 |
$this->_html .= str_replace('&deactivate', '', $linked_literal_deact);
|
103 |
|
104 |
+
echo $oct8neLinkupServiceUrl;
|
105 |
+
|
106 |
$this->_html .= '
|
107 |
<legend>' . $this->__('Account Setup') . '</legend>
|
108 |
<table cellspacing="0" class="form-list">
|
145 |
<br />
|
146 |
<p class="LetsSyncro">' . $this->__('Don\'t have an oct8ne account? Email us: support@oct8ne.com') . '</p>
|
147 |
</fieldset>
|
148 |
+
</form><br />';
|
|
|
149 |
return $this->_html;
|
150 |
}
|
151 |
|
161 |
if ($letssyncro_enabled == '1' && ($letssyncro_licenseid == '' || strlen($letssyncro_licenseid) != 32))
|
162 |
return false;
|
163 |
|
164 |
+
try {
|
165 |
+
//peticion
|
166 |
+
$url = Mage::helper('oct8ne/url')->getOct8neLinkupServiceUrl();
|
167 |
+
echo $url;
|
168 |
+
|
169 |
+
$data = array('email' => $letssyncrooptions['email'],
|
170 |
+
'pass' => $this->urlsafe_b64decode($letssyncrooptions['password']),
|
171 |
+
'platform' => 'MAGENTO',
|
172 |
+
'urlDomain' => Mage::getBaseUrl(),
|
173 |
+
'statusPlatform' => $letssyncro_enabled ? 1 : 0);
|
174 |
+
|
175 |
+
$options = array(
|
176 |
+
'http' => array(
|
177 |
+
'header' => "Content-Type: application/json;charset=UTF-8\r\n",
|
178 |
+
'method' => 'POST',
|
179 |
+
'content' => json_encode($data)
|
180 |
+
)
|
181 |
+
);
|
182 |
+
$context = stream_context_create($options);
|
183 |
+
$result = self::OctFileGetContents($url, false, $context);
|
184 |
+
$result = json_decode($result);
|
185 |
+
|
186 |
+
if (isset($result)) {
|
187 |
+
//si se devuelve una licencia y token correctos se devuelve
|
188 |
+
$license = $result->LicenseId;
|
189 |
+
$token = $result->ApiToken;
|
190 |
+
//$msg = $result->Message;
|
191 |
+
|
192 |
+
if ($license != null && $token != null) {
|
193 |
+
Mage::log('Ha entrat al if de updateLetsSyncroEnabled');
|
194 |
+
return $letssyncromodel->setEnabled($letssyncro_enabled);
|
195 |
+
} else {
|
196 |
+
return false;
|
197 |
+
}
|
198 |
+
} else {
|
199 |
+
return false;
|
200 |
+
}
|
201 |
+
} catch (Exception $ex) {
|
202 |
+
return false;
|
203 |
+
}
|
204 |
+
/*$xmlData = $this->createXML_Logon($letssyncro_useremail, $letssyncro_password, $letssyncro_enabled ? 1 : 0);
|
205 |
$linkup = Mage::helper('oct8ne/url')->getOct8neLinkupServiceUrl();
|
206 |
+
$this->sendRequest($xmlData, 'logon', $linkup);*/
|
207 |
|
208 |
+
return $letssyncromodel->setEnabled($letssyncro_enabled);
|
209 |
}
|
210 |
+
|
211 |
public function updateLetsSyncroUserPassword($letssyncrooptions, $letssyncromodel, $letssyncro_useremail, $letssyncro_password) {
|
212 |
if (!$letssyncromodel->setEmail($letssyncro_useremail) || !$letssyncromodel->setPassword($letssyncro_password))
|
213 |
return false;
|
215 |
$letssyncromodel->setApitoken('');
|
216 |
$letssyncromodel->setLicenseid('');
|
217 |
|
218 |
+
try {
|
219 |
+
//peticion
|
220 |
+
$url = Mage::helper('oct8ne/url')->getOct8neLinkupServiceUrl();
|
221 |
+
$data = array('email' => $letssyncro_useremail,
|
222 |
+
'pass' => $this->urlsafe_b64decode($letssyncro_password),
|
223 |
+
'platform' => 'MAGENTO',
|
224 |
+
'urlDomain' => Mage::getBaseUrl());
|
225 |
+
|
226 |
+
$options = array(
|
227 |
+
'http' => array(
|
228 |
+
'header' => "Content-Type: application/json;charset=UTF-8\r\n",
|
229 |
+
'method' => 'POST',
|
230 |
+
'content' => json_encode($data)
|
231 |
+
)
|
232 |
+
);
|
233 |
+
$context = stream_context_create($options);
|
234 |
+
$result = self::OctFileGetContents($url, false, $context);
|
235 |
+
$result = json_decode($result);
|
236 |
+
|
237 |
+
if (isset($result)) {
|
238 |
+
//si se devuelve una licencia y token correctos se devuelve
|
239 |
+
$license = $result->LicenseId;
|
240 |
+
$token = $result->ApiToken;
|
241 |
+
//$msg = $result->Message;
|
242 |
+
|
243 |
+
if ($license != null && $token != null) {
|
244 |
+
Mage::log('Ha entrat al if de updateLetsSyncroUserPassword');
|
245 |
+
if ($letssyncromodel->setApitoken($result->ApiToken) &&
|
246 |
+
$letssyncromodel->setLicenseid($result->LicenseId) &&
|
247 |
+
$letssyncromodel->setEmail($letssyncro_useremail) &&
|
248 |
+
$letssyncromodel->setPassword($letssyncro_password)) {
|
249 |
+
return true;
|
250 |
+
}
|
251 |
+
} else {
|
252 |
+
return false;
|
253 |
+
}
|
254 |
+
} else {
|
255 |
return false;
|
256 |
}
|
257 |
+
} catch (Exception $ex) {
|
|
|
|
|
|
|
|
|
|
|
258 |
return false;
|
259 |
+
}
|
260 |
+
}
|
261 |
+
|
262 |
+
private static function jsonResult($data) {
|
263 |
+
$options = array(
|
264 |
+
'http' => array(
|
265 |
+
'header' => "Content-Type: application/json;charset=UTF-8\r\n",
|
266 |
+
'method' => 'POST',
|
267 |
+
'content' => json_encode($data)
|
268 |
+
)
|
269 |
+
);
|
270 |
+
return $options;
|
271 |
+
}
|
272 |
+
|
273 |
+
private static function octFileGetContents($url, $use_include_path = false, $stream_context = null, $curl_timeout = 5)
|
274 |
+
{
|
275 |
+
if ($stream_context == null && preg_match('/^https?:\/\//', $url)) {
|
276 |
+
$stream_context = @stream_context_create(array('http' => array('timeout' => $curl_timeout)));
|
277 |
+
}
|
278 |
+
if (in_array(ini_get('allow_url_fopen'), array('On', 'on', '1')) || !preg_match('/^https?:\/\//', $url)) {
|
279 |
+
$meth = 'file_get_contents';
|
280 |
+
return @$meth($url, $use_include_path, $stream_context);
|
281 |
+
} elseif (function_exists('curl_init')) {
|
282 |
+
$curl = curl_init();
|
283 |
+
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
284 |
+
curl_setopt($curl, CURLOPT_URL, $url);
|
285 |
+
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
|
286 |
+
curl_setopt($curl, CURLOPT_TIMEOUT, $curl_timeout);
|
287 |
+
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
|
288 |
+
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=UTF-8\r\n'));
|
289 |
+
if ($stream_context != null) {
|
290 |
+
$opts = stream_context_get_options($stream_context);
|
291 |
+
if (isset($opts['http']['method']) && Tools::strtolower($opts['http']['method']) == 'post') {
|
292 |
+
curl_setopt($curl, CURLOPT_POST, true);
|
293 |
+
if (isset($opts['http']['content'])) {
|
294 |
+
curl_setopt($curl, CURLOPT_POSTFIELDS, $opts['http']['content']);
|
295 |
+
}
|
296 |
+
}
|
297 |
+
}
|
298 |
+
$content = curl_exec($curl);
|
299 |
+
curl_close($curl);
|
300 |
+
return $content;
|
301 |
+
} else {
|
302 |
return false;
|
303 |
}
|
|
|
|
|
304 |
}
|
305 |
|
306 |
public function sendRequest($xmlData, $method = '', $letssyncro_url, $letssyncro_apitoken = '') {
|
app/code/community/LetsSyncroLLC/Oct8ne/Helper/Data.php
CHANGED
@@ -107,7 +107,8 @@ class LetsSyncroLLC_Oct8ne_Helper_Data extends Mage_Core_Helper_Abstract {
|
|
107 |
static public function createProductSummaryFromProduct($product, $qty = null) {
|
108 |
$product_id = $product->getId();
|
109 |
$formattedPrevPrice = $product->getFinalPrice() != 0 ? Mage::helper('core')->currency($product->getPrice(), true, false): NULL;
|
110 |
-
|
|
|
111 |
$productUrl = self::_remove_http($product->getProductUrl());
|
112 |
$thumbnail = self::_remove_http(self::getProductThumbnail($product, 120));
|
113 |
$title = htmlspecialchars($product->getName(), ENT_QUOTES, "UTF-8");
|
@@ -272,22 +273,33 @@ class LetsSyncroLLC_Oct8ne_Helper_Data extends Mage_Core_Helper_Abstract {
|
|
272 |
}
|
273 |
|
274 |
static private function getSanitizedDescription($product) {
|
275 |
-
$
|
276 |
-
$
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
}
|
283 |
}
|
|
|
|
|
284 |
}
|
285 |
if (!is_null($description)) {
|
286 |
$description = htmlspecialchars($description, ENT_QUOTES, "UTF-8");
|
287 |
$description = trim($description, "\r\n\t ");
|
288 |
$description = str_replace("\r", "", $description);
|
289 |
$description = str_replace("\t", "", $description);
|
290 |
-
$description = str_replace("\n", "<br
|
291 |
}
|
292 |
return $description;
|
293 |
}
|
@@ -384,25 +396,29 @@ class LetsSyncroLLC_Oct8ne_Helper_Data extends Mage_Core_Helper_Abstract {
|
|
384 |
}
|
385 |
}
|
386 |
|
|
|
|
|
|
|
|
|
387 |
private static function getDescriptionAttributes() {
|
388 |
$descriptionAttrs = Mage::getStoreConfig('oct8neData/productData/productDataDescription');
|
389 |
if (trim($descriptionAttrs) == '') {
|
390 |
-
$
|
391 |
} else {
|
392 |
-
$attrs =
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
}
|
405 |
-
return $
|
406 |
}
|
407 |
|
408 |
private static $profiler = NULL;
|
107 |
static public function createProductSummaryFromProduct($product, $qty = null) {
|
108 |
$product_id = $product->getId();
|
109 |
$formattedPrevPrice = $product->getFinalPrice() != 0 ? Mage::helper('core')->currency($product->getPrice(), true, false): NULL;
|
110 |
+
$formattedPrice = $product->getFinalPrice() != 0 ? Mage::helper('core')->currency($product->getFinalPrice(), true, false) : NULL;
|
111 |
+
|
112 |
$productUrl = self::_remove_http($product->getProductUrl());
|
113 |
$thumbnail = self::_remove_http(self::getProductThumbnail($product, 120));
|
114 |
$title = htmlspecialchars($product->getName(), ENT_QUOTES, "UTF-8");
|
273 |
}
|
274 |
|
275 |
static private function getSanitizedDescription($product) {
|
276 |
+
$descriptionAttrs = Mage::getStoreConfig('oct8neData/productData/productDataDescription');
|
277 |
+
if (trim($descriptionAttrs) == '') {
|
278 |
+
$groups = self::getDefaultDescriptionAttributes();
|
279 |
+
} else {
|
280 |
+
$groups = explode(',', $descriptionAttrs); // Example: ["a+b", "c"]
|
281 |
+
}
|
282 |
+
$description = "";
|
283 |
+
foreach($groups as $group) {
|
284 |
+
$fields = explode('+', $group);
|
285 |
+
foreach($fields as $field) {
|
286 |
+
$value = $product[$field];
|
287 |
+
if(!is_null($value) && strlen($value)>0) {
|
288 |
+
if (strlen($description) > 0) {
|
289 |
+
$description .= "<hr class='oct8ne-description-separator' />";
|
290 |
+
}
|
291 |
+
$description .= $value;
|
292 |
}
|
293 |
}
|
294 |
+
if(strlen($description) > 0)
|
295 |
+
break;
|
296 |
}
|
297 |
if (!is_null($description)) {
|
298 |
$description = htmlspecialchars($description, ENT_QUOTES, "UTF-8");
|
299 |
$description = trim($description, "\r\n\t ");
|
300 |
$description = str_replace("\r", "", $description);
|
301 |
$description = str_replace("\t", "", $description);
|
302 |
+
$description = str_replace("\n", "<br/ >", $description);
|
303 |
}
|
304 |
return $description;
|
305 |
}
|
396 |
}
|
397 |
}
|
398 |
|
399 |
+
private static function getDefaultDescriptionAttributes() {
|
400 |
+
return array('description', 'short_description');
|
401 |
+
}
|
402 |
+
|
403 |
private static function getDescriptionAttributes() {
|
404 |
$descriptionAttrs = Mage::getStoreConfig('oct8neData/productData/productDataDescription');
|
405 |
if (trim($descriptionAttrs) == '') {
|
406 |
+
$result = self::getDefaultDescriptionAttributes();
|
407 |
} else {
|
408 |
+
$attrs = [];
|
409 |
+
$groups = explode(',', $descriptionAttrs); // Example: ["a+b", "c"]
|
410 |
+
foreach($groups as $group) {
|
411 |
+
$fields = explode('+', $group);
|
412 |
+
foreach($fields as $field) {
|
413 |
+
$field = trim($field);
|
414 |
+
if(!array_key_exists($field, $attrs) ){
|
415 |
+
$attrs[$field] = null;
|
416 |
+
}
|
417 |
+
}
|
418 |
+
}
|
419 |
+
$result = array_keys($attrs);
|
420 |
}
|
421 |
+
return $result;
|
422 |
}
|
423 |
|
424 |
private static $profiler = NULL;
|
app/code/community/LetsSyncroLLC/Oct8ne/Helper/Search/Solr.php
CHANGED
@@ -8,7 +8,8 @@
|
|
8 |
* - id_field: name of id field
|
9 |
* - name_field: name of product name field (used for sorting)
|
10 |
* - price_field: name of price field (used for sorting and filtering)
|
11 |
-
* -
|
|
|
12 |
* - additional_query_params: additional criteria to be added to the search expression
|
13 |
* - categories_field: name of the field having the array of categories the product belongs to
|
14 |
* - related_method: method to get the related products (name|name-reverse|categories|self)
|
@@ -20,7 +21,7 @@
|
|
20 |
host=http://dev.binaryanvil.net:8080/solr;
|
21 |
id_field=id;
|
22 |
additional_query_params=in_stock:true AND store_id:1;
|
23 |
-
|
24 |
name_field=attr_sort_name_en;
|
25 |
price_field=price_0_1;
|
26 |
related_method=name;
|
@@ -47,6 +48,7 @@ class LetsSyncroLLC_Oct8ne_Helper_Search_Solr extends LetsSyncroLLC_Oct8ne_Helpe
|
|
47 |
|
48 |
public function search($storeId, $searchTerm, $searchOrder, $searchDir, $page, $pageSize, &$totalSearchResults, &$attrs_applied, &$attrs_available) {
|
49 |
if (!$this->checkEngineParams()) {
|
|
|
50 |
return array();
|
51 |
}
|
52 |
|
@@ -67,19 +69,21 @@ class LetsSyncroLLC_Oct8ne_Helper_Search_Solr extends LetsSyncroLLC_Oct8ne_Helpe
|
|
67 |
|
68 |
public function getRelatedProductIds($product, $page, $pageSize) {
|
69 |
if (!$this->checkEngineParams()) {
|
|
|
70 |
return array();
|
71 |
}
|
72 |
|
73 |
-
if ($relatedMethod == "self") {
|
74 |
-
$result = array($product->getId());
|
75 |
-
return $result;
|
76 |
-
}
|
77 |
-
|
78 |
$pageSize = 30;
|
79 |
$relatedMethod = strtolower($this->getEngineParam("related_method"));
|
80 |
if (!$relatedMethod) {
|
81 |
$relatedMethod = "name";
|
82 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
$result = NULL;
|
84 |
if ($relatedMethod == "categories") {
|
85 |
$categoryIds = $product->getCategoryIds();
|
@@ -136,20 +140,18 @@ class LetsSyncroLLC_Oct8ne_Helper_Search_Solr extends LetsSyncroLLC_Oct8ne_Helpe
|
|
136 |
$query = $host . '/select?' . http_build_query($queryParams);
|
137 |
|
138 |
// Set up query expression
|
139 |
-
$
|
|
|
|
|
|
|
140 |
$q = trim("" . $this->getEngineParam("additional_query_params"));
|
141 |
if ($q) {
|
142 |
$q .= " AND ";
|
143 |
}
|
144 |
$searchTerm = trim($searchTerm);
|
145 |
if ($searchTerm) {
|
146 |
-
$
|
147 |
-
|
148 |
-
$q .= ("(" . $queryField . ":" . $searchTerm . ")");
|
149 |
-
} else {
|
150 |
-
$q .= $this->generateQueryExpression($queryField, $searchTerm);
|
151 |
-
}
|
152 |
-
$q .= ")";
|
153 |
}
|
154 |
$q = str_replace(" ", "%20", $q);
|
155 |
$query .= "&q=" . $q;
|
@@ -164,9 +166,18 @@ class LetsSyncroLLC_Oct8ne_Helper_Search_Solr extends LetsSyncroLLC_Oct8ne_Helpe
|
|
164 |
if ($this->getEngineParam("price_range")) {
|
165 |
$query = $this->addAllPriceRangesToQuery($query);
|
166 |
}
|
167 |
-
|
168 |
$this->log("Executing query: {$query}");
|
169 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
$request = curl_init($query);
|
171 |
|
172 |
if($this->getEngineParam("http_verb")=="post") {
|
@@ -202,6 +213,56 @@ class LetsSyncroLLC_Oct8ne_Helper_Search_Solr extends LetsSyncroLLC_Oct8ne_Helpe
|
|
202 |
curl_close($request);
|
203 |
return $result;
|
204 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
|
206 |
// Add all facets to the query, so
|
207 |
// the results will include these facets
|
@@ -409,27 +470,10 @@ class LetsSyncroLLC_Oct8ne_Helper_Search_Solr extends LetsSyncroLLC_Oct8ne_Helpe
|
|
409 |
return $filters;
|
410 |
}
|
411 |
|
412 |
-
// Splits the search terms and generates an "OR" search expression
|
413 |
-
// Example: "hello world" -> "text:hello OR text:world"
|
414 |
-
private function generateQueryExpression($queryField, $searchTerm) {
|
415 |
-
$words = explode(" ", $searchTerm);
|
416 |
-
$result = "";
|
417 |
-
foreach ($words as $word) {
|
418 |
-
$word = trim($word);
|
419 |
-
if ($word) {
|
420 |
-
if ($result != "") {
|
421 |
-
$result .=" OR ";
|
422 |
-
}
|
423 |
-
$result .= $queryField . ":" . $word;
|
424 |
-
}
|
425 |
-
}
|
426 |
-
return $result;
|
427 |
-
}
|
428 |
-
|
429 |
private function checkEngineParams() {
|
430 |
$valid = $this->check("host");
|
431 |
$valid = $valid && $this->check("id_field");
|
432 |
-
$valid = $valid && $this->check("query_field");
|
433 |
$valid = $valid && $this->check("name_field");
|
434 |
$valid = $valid && $this->check("price_field");
|
435 |
$valid = $valid && $this->check("categories_field");
|
8 |
* - id_field: name of id field
|
9 |
* - name_field: name of product name field (used for sorting)
|
10 |
* - price_field: name of price field (used for sorting and filtering)
|
11 |
+
* - query_fields: name of the fields where the text search is performed (separated by commas)
|
12 |
+
* - multiword_criteria: operator used in criteria for multiple words (AND|OR). By default, "OR"
|
13 |
* - additional_query_params: additional criteria to be added to the search expression
|
14 |
* - categories_field: name of the field having the array of categories the product belongs to
|
15 |
* - related_method: method to get the related products (name|name-reverse|categories|self)
|
21 |
host=http://dev.binaryanvil.net:8080/solr;
|
22 |
id_field=id;
|
23 |
additional_query_params=in_stock:true AND store_id:1;
|
24 |
+
query_fields=fulltext_1_en,fulltext_2_en;
|
25 |
name_field=attr_sort_name_en;
|
26 |
price_field=price_0_1;
|
27 |
related_method=name;
|
48 |
|
49 |
public function search($storeId, $searchTerm, $searchOrder, $searchDir, $page, $pageSize, &$totalSearchResults, &$attrs_applied, &$attrs_available) {
|
50 |
if (!$this->checkEngineParams()) {
|
51 |
+
Mage::log("[Oct8ne] Invalid Solr engine params");
|
52 |
return array();
|
53 |
}
|
54 |
|
69 |
|
70 |
public function getRelatedProductIds($product, $page, $pageSize) {
|
71 |
if (!$this->checkEngineParams()) {
|
72 |
+
Mage::log("[Oct8ne] Invalid Solr engine params");
|
73 |
return array();
|
74 |
}
|
75 |
|
|
|
|
|
|
|
|
|
|
|
76 |
$pageSize = 30;
|
77 |
$relatedMethod = strtolower($this->getEngineParam("related_method"));
|
78 |
if (!$relatedMethod) {
|
79 |
$relatedMethod = "name";
|
80 |
}
|
81 |
+
|
82 |
+
if ($relatedMethod == "self") {
|
83 |
+
$result = array($product->getId());
|
84 |
+
return $result;
|
85 |
+
}
|
86 |
+
|
87 |
$result = NULL;
|
88 |
if ($relatedMethod == "categories") {
|
89 |
$categoryIds = $product->getCategoryIds();
|
140 |
$query = $host . '/select?' . http_build_query($queryParams);
|
141 |
|
142 |
// Set up query expression
|
143 |
+
$queryFields = $this->getEngineParam("query_fields");
|
144 |
+
if(! $queryFields) {
|
145 |
+
$queryFields = $this->getEngineParam("query_field"); // Retrocompatibility
|
146 |
+
}
|
147 |
$q = trim("" . $this->getEngineParam("additional_query_params"));
|
148 |
if ($q) {
|
149 |
$q .= " AND ";
|
150 |
}
|
151 |
$searchTerm = trim($searchTerm);
|
152 |
if ($searchTerm) {
|
153 |
+
$searchCriteria = $this->getSearchCriteria($searchTerm, $queryFields);
|
154 |
+
$q .= $searchCriteria;
|
|
|
|
|
|
|
|
|
|
|
155 |
}
|
156 |
$q = str_replace(" ", "%20", $q);
|
157 |
$query .= "&q=" . $q;
|
166 |
if ($this->getEngineParam("price_range")) {
|
167 |
$query = $this->addAllPriceRangesToQuery($query);
|
168 |
}
|
169 |
+
|
170 |
$this->log("Executing query: {$query}");
|
171 |
|
172 |
+
/* Uncomment to debug
|
173 |
+
if($searchCriteria) {
|
174 |
+
echo "<b>Search criteria:</b><br>" . $searchCriteria . "<br>";
|
175 |
+
}
|
176 |
+
echo "<b>Complete criteria:</b><br>" . $q . "<br>";
|
177 |
+
echo "<b>Query:</b><br>" . $query . "<br>";
|
178 |
+
die();
|
179 |
+
*/
|
180 |
+
|
181 |
$request = curl_init($query);
|
182 |
|
183 |
if($this->getEngineParam("http_verb")=="post") {
|
213 |
curl_close($request);
|
214 |
return $result;
|
215 |
}
|
216 |
+
|
217 |
+
private function getSearchCriteria($searchTerm, $queryFields) {
|
218 |
+
$fieldsArray = explode(",", $queryFields);
|
219 |
+
if(empty($fieldsArray)) {
|
220 |
+
return "";
|
221 |
+
}
|
222 |
+
$result = "(";
|
223 |
+
$first = true;
|
224 |
+
foreach($fieldsArray as $queryField) {
|
225 |
+
if (!$first) {
|
226 |
+
$result .= " OR ";
|
227 |
+
}
|
228 |
+
if ($searchTerm[0] == '"' && $searchTerm[strlen($searchTerm) - 1] == '"') {
|
229 |
+
$result .= ("(" . $queryField . ":" . $searchTerm . ")");
|
230 |
+
} else {
|
231 |
+
$result .= $this->generateQueryExpression($queryField, $searchTerm);
|
232 |
+
}
|
233 |
+
$first = false;
|
234 |
+
}
|
235 |
+
$result .= ")";
|
236 |
+
return $result;
|
237 |
+
}
|
238 |
+
|
239 |
+
// Splits the search terms and generates an "OR" search expression
|
240 |
+
// Example: "hello world" -> "(text:hello OR text:world)"
|
241 |
+
private function generateQueryExpression($queryField, $searchTerm) {
|
242 |
+
$words = explode(" ", $searchTerm);
|
243 |
+
if(empty($words)) {
|
244 |
+
return "";
|
245 |
+
}
|
246 |
+
$result = "(";
|
247 |
+
$first = true;
|
248 |
+
|
249 |
+
$multiwordCriteria = $this->getEngineParam("multiword_criteria");
|
250 |
+
if(!$multiwordCriteria) {
|
251 |
+
$multiwordCriteria = "OR";
|
252 |
+
}
|
253 |
+
foreach ($words as $word) {
|
254 |
+
$word = trim($word);
|
255 |
+
if ($word) {
|
256 |
+
if (!$first) {
|
257 |
+
$result .=" " . $multiwordCriteria ." ";
|
258 |
+
}
|
259 |
+
$result .= $queryField . ":" . $word;
|
260 |
+
$first = false;
|
261 |
+
}
|
262 |
+
}
|
263 |
+
$result .= ")";
|
264 |
+
return $result;
|
265 |
+
}
|
266 |
|
267 |
// Add all facets to the query, so
|
268 |
// the results will include these facets
|
470 |
return $filters;
|
471 |
}
|
472 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
473 |
private function checkEngineParams() {
|
474 |
$valid = $this->check("host");
|
475 |
$valid = $valid && $this->check("id_field");
|
476 |
+
$valid = $valid && ($this->check("query_fields") || $this->check("query_field")); // Retrocompatible
|
477 |
$valid = $valid && $this->check("name_field");
|
478 |
$valid = $valid && $this->check("price_field");
|
479 |
$valid = $valid && $this->check("categories_field");
|
app/code/community/LetsSyncroLLC/Oct8ne/Helper/Url.php
CHANGED
@@ -21,7 +21,7 @@ class LetsSyncroLLC_Oct8ne_Helper_Url extends Mage_Core_Helper_Url {
|
|
21 |
public function getOct8neLinkupServiceUrl() {
|
22 |
$linkupUrl = Mage::registry('oct8neLinkupServiceUrl');
|
23 |
if (!$linkupUrl) {
|
24 |
-
$linkupUrl = "https://
|
25 |
}
|
26 |
return $linkupUrl;
|
27 |
}
|
21 |
public function getOct8neLinkupServiceUrl() {
|
22 |
$linkupUrl = Mage::registry('oct8neLinkupServiceUrl');
|
23 |
if (!$linkupUrl) {
|
24 |
+
$linkupUrl = "https://backoffice.oct8ne.com/platformConnection/linkup";
|
25 |
}
|
26 |
return $linkupUrl;
|
27 |
}
|
app/code/community/LetsSyncroLLC/Oct8ne/controllers/FrameController.php
CHANGED
@@ -145,7 +145,7 @@ class LetsSyncroLLC_Oct8ne_FrameController extends Mage_Core_Controller_Front_Ac
|
|
145 |
'result' => $result
|
146 |
);
|
147 |
$this->returnJson($results);
|
148 |
-
}
|
149 |
|
150 |
public function removeFromWishlistAction() {
|
151 |
$this->setEnvironment();
|
@@ -328,11 +328,11 @@ class LetsSyncroLLC_Oct8ne_FrameController extends Mage_Core_Controller_Front_Ac
|
|
328 |
$response = json_encode($jsonData);
|
329 |
$callback = $this->getRequest()->getParam('callback', NULL);
|
330 |
if ($callback) {
|
331 |
-
|
332 |
$response = $callback . "(" . $response . ");";
|
333 |
-
}else{
|
334 |
-
|
335 |
-
|
336 |
$this->getResponse()->setBody($response);
|
337 |
}
|
338 |
|
@@ -401,17 +401,17 @@ class LetsSyncroLLC_Oct8ne_FrameController extends Mage_Core_Controller_Front_Ac
|
|
401 |
|
402 |
// Sets the current request environment (currency & locale)
|
403 |
private function setEnvironment() {
|
404 |
-
|
405 |
$app = Mage::app();
|
406 |
$request = $this->getRequest();
|
407 |
-
|
408 |
// Set currency, if nedded
|
409 |
$currency = $request->getParam('currency', null);
|
410 |
if ($currency) {
|
411 |
$store = $app->getStore();
|
412 |
$currentCurrency = $store->getCurrentCurrencyCode();
|
413 |
-
if($currency != $currentCurrency) {
|
414 |
-
$store->setCurrentCurrencyCode($currency);
|
415 |
}
|
416 |
}
|
417 |
|
145 |
'result' => $result
|
146 |
);
|
147 |
$this->returnJson($results);
|
148 |
+
}
|
149 |
|
150 |
public function removeFromWishlistAction() {
|
151 |
$this->setEnvironment();
|
328 |
$response = json_encode($jsonData);
|
329 |
$callback = $this->getRequest()->getParam('callback', NULL);
|
330 |
if ($callback) {
|
331 |
+
$this->getResponse()->setHeader('Content-type', 'application/javascript; charset=utf-8', true);
|
332 |
$response = $callback . "(" . $response . ");";
|
333 |
+
} else {
|
334 |
+
$this->getResponse()->setHeader('Content-type', 'application/json; charset=utf-8', true);
|
335 |
+
}
|
336 |
$this->getResponse()->setBody($response);
|
337 |
}
|
338 |
|
401 |
|
402 |
// Sets the current request environment (currency & locale)
|
403 |
private function setEnvironment() {
|
404 |
+
|
405 |
$app = Mage::app();
|
406 |
$request = $this->getRequest();
|
407 |
+
|
408 |
// Set currency, if nedded
|
409 |
$currency = $request->getParam('currency', null);
|
410 |
if ($currency) {
|
411 |
$store = $app->getStore();
|
412 |
$currentCurrency = $store->getCurrentCurrencyCode();
|
413 |
+
if ($currency != $currentCurrency) {
|
414 |
+
$store->setCurrentCurrencyCode($currency);
|
415 |
}
|
416 |
}
|
417 |
|
app/code/community/LetsSyncroLLC/Oct8ne/controllers/SetupController.php
CHANGED
@@ -32,7 +32,7 @@ class LetsSyncroLLC_Oct8ne_SetupController extends Mage_Core_Controller_Front_Ac
|
|
32 |
$this->addSetting($dataList, $settings, 'oct8neSearch/assistedSearch/elementSelector', "Search element selector", 'CSS selector. Example: "#search"');
|
33 |
$this->addSetting($dataList, $settings, 'oct8neSearch/searchEngine/engine', "Search engine", 'Allowed: { "magento", "sli", "solr", "celebros" }');
|
34 |
$this->addSetting($dataList, $settings, 'oct8neSearch/searchEngine/params', "Search engine settings", '"Search engine specific settings"');
|
35 |
-
$this->addSetting($dataList, $settings, 'oct8neData/productData/productDataDescription', "Comma-separated product description fields", 'Example: "description,
|
36 |
$this->addSetting($dataList, $settings, 'oct8neData/productData/ignoreExcludedImages', "Ignore images marked as excluded", "1=true, 0=false");
|
37 |
$this->addSetting($dataList, $settings, 'oct8neData/productData/returnActualProductImageUrl', "Use product's actual images instead of 'image' action", "1=true, 0=false");
|
38 |
$this->addSetting($dataList, $settings, 'oct8neData/productData/actualProductImageWidth', "Product's actual images default width", "Example: '600' or empty for not resizing");
|
@@ -58,13 +58,13 @@ class LetsSyncroLLC_Oct8ne_SetupController extends Mage_Core_Controller_Front_Ac
|
|
58 |
print "<table border=1 cellspacing=0 cellpadding=3><tr><th>Key</th><th>Current value</th><th>Description</th><th>Example/Allowed values</th></tr>";
|
59 |
print_r($settings);
|
60 |
print "</table>";
|
61 |
-
print "<hr><form method='post' action='
|
62 |
. "Key: <input type='text' name='setting' id='setting' list='settings' size='50'> "
|
63 |
. "New value: <textarea name='value' id='value' style='vertical-align: top; margin-right: 10px'></textarea>"
|
64 |
. "<input type='hidden' name='apitoken' value='" . $this->getRequest()->getParam('apitoken', null) . "'>"
|
65 |
. "<input type='submit'>"
|
66 |
. "</form>"
|
67 |
-
. "<p><a href='
|
68 |
. "<script>"
|
69 |
. "function selectSetting(setting, value) {"
|
70 |
. " document.getElementById('setting').value = setting;"
|
@@ -94,7 +94,10 @@ class LetsSyncroLLC_Oct8ne_SetupController extends Mage_Core_Controller_Front_Ac
|
|
94 |
|
95 |
// Mage::app()->cleanCache();
|
96 |
Mage::getConfig()->reinit();
|
97 |
-
|
|
|
|
|
|
|
98 |
die();
|
99 |
}
|
100 |
|
@@ -119,7 +122,7 @@ class LetsSyncroLLC_Oct8ne_SetupController extends Mage_Core_Controller_Front_Ac
|
|
119 |
if($this->getRequest()->getParam('done')) {
|
120 |
print "<h3 style='color: blue'>Linkup/status settings changed!</h3>";
|
121 |
}
|
122 |
-
print "<hr><form method='post' action='
|
123 |
. "API token: <input type='text' name='apiToken' value='{$apiToken}' required> <br />"
|
124 |
. "License ID: <input type='text' name='licenseId' value='{$licenseId}' required> <br />"
|
125 |
. "Enabled: <select name='enabled'>"
|
@@ -152,7 +155,9 @@ class LetsSyncroLLC_Oct8ne_SetupController extends Mage_Core_Controller_Front_Ac
|
|
152 |
|
153 |
$letssyncromodel->save();
|
154 |
|
155 |
-
|
|
|
|
|
156 |
die();
|
157 |
}
|
158 |
|
32 |
$this->addSetting($dataList, $settings, 'oct8neSearch/assistedSearch/elementSelector', "Search element selector", 'CSS selector. Example: "#search"');
|
33 |
$this->addSetting($dataList, $settings, 'oct8neSearch/searchEngine/engine', "Search engine", 'Allowed: { "magento", "sli", "solr", "celebros" }');
|
34 |
$this->addSetting($dataList, $settings, 'oct8neSearch/searchEngine/params', "Search engine settings", '"Search engine specific settings"');
|
35 |
+
$this->addSetting($dataList, $settings, 'oct8neData/productData/productDataDescription', "Comma-separated product description fallback fields or groups.", 'Example: "description,short_description,field1+field2"');
|
36 |
$this->addSetting($dataList, $settings, 'oct8neData/productData/ignoreExcludedImages', "Ignore images marked as excluded", "1=true, 0=false");
|
37 |
$this->addSetting($dataList, $settings, 'oct8neData/productData/returnActualProductImageUrl', "Use product's actual images instead of 'image' action", "1=true, 0=false");
|
38 |
$this->addSetting($dataList, $settings, 'oct8neData/productData/actualProductImageWidth', "Product's actual images default width", "Example: '600' or empty for not resizing");
|
58 |
print "<table border=1 cellspacing=0 cellpadding=3><tr><th>Key</th><th>Current value</th><th>Description</th><th>Example/Allowed values</th></tr>";
|
59 |
print_r($settings);
|
60 |
print "</table>";
|
61 |
+
print "<hr><form method='post' action='setsettings'>"
|
62 |
. "Key: <input type='text' name='setting' id='setting' list='settings' size='50'> "
|
63 |
. "New value: <textarea name='value' id='value' style='vertical-align: top; margin-right: 10px'></textarea>"
|
64 |
. "<input type='hidden' name='apitoken' value='" . $this->getRequest()->getParam('apitoken', null) . "'>"
|
65 |
. "<input type='submit'>"
|
66 |
. "</form>"
|
67 |
+
. "<p><a href='../setup'>Back to menu</a></p>"
|
68 |
. "<script>"
|
69 |
. "function selectSetting(setting, value) {"
|
70 |
. " document.getElementById('setting').value = setting;"
|
94 |
|
95 |
// Mage::app()->cleanCache();
|
96 |
Mage::getConfig()->reinit();
|
97 |
+
|
98 |
+
$current = strtolower($_SERVER['REQUEST_URI']);
|
99 |
+
$url = str_replace("setsettings", "settings?done=1", $current);
|
100 |
+
header("Location: " . $url);
|
101 |
die();
|
102 |
}
|
103 |
|
122 |
if($this->getRequest()->getParam('done')) {
|
123 |
print "<h3 style='color: blue'>Linkup/status settings changed!</h3>";
|
124 |
}
|
125 |
+
print "<hr><form method='post' action='setLinkup'>"
|
126 |
. "API token: <input type='text' name='apiToken' value='{$apiToken}' required> <br />"
|
127 |
. "License ID: <input type='text' name='licenseId' value='{$licenseId}' required> <br />"
|
128 |
. "Enabled: <select name='enabled'>"
|
155 |
|
156 |
$letssyncromodel->save();
|
157 |
|
158 |
+
$current = strtolower($_SERVER['REQUEST_URI']);
|
159 |
+
$url = str_replace("setlinkup", "linkup?done=1", $current);
|
160 |
+
header("Location: " . $url);
|
161 |
die();
|
162 |
}
|
163 |
|
app/code/community/LetsSyncroLLC/Oct8ne/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<LetsSyncroLLC_Oct8ne>
|
5 |
-
<version>2.1.
|
6 |
</LetsSyncroLLC_Oct8ne>
|
7 |
</modules>
|
8 |
|
2 |
<config>
|
3 |
<modules>
|
4 |
<LetsSyncroLLC_Oct8ne>
|
5 |
+
<version>2.1.6</version>
|
6 |
</LetsSyncroLLC_Oct8ne>
|
7 |
</modules>
|
8 |
|
app/code/community/LetsSyncroLLC/Oct8ne/etc/system.xml
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
<fields>
|
27 |
<productDataDescription translate="label">
|
28 |
<label>Description Attributes</label>
|
29 |
-
<comment>Type the attributes containing the product
|
30 |
<frontend_type>text</frontend_type>
|
31 |
<sort_order>10</sort_order>
|
32 |
<show_in_default>1</show_in_default>
|
26 |
<fields>
|
27 |
<productDataDescription translate="label">
|
28 |
<label>Description Attributes</label>
|
29 |
+
<comment>Type the attributes containing the product description, separated by commas. We'll use the first non empty field. Default: "description,short_description".<br />To concatenate fields, just use "+" as follows "short_description+description".</comment>
|
30 |
<frontend_type>text</frontend_type>
|
31 |
<sort_order>10</sort_order>
|
32 |
<show_in_default>1</show_in_default>
|
app/design/frontend/base/default/template/oct8ne/letssyncro.phtml
CHANGED
@@ -51,7 +51,7 @@ if (is_null(Mage::registry('oct8ne')) && !$disable) {
|
|
51 |
}
|
52 |
echo <<<EOT
|
53 |
|
54 |
-
<script type=
|
55 |
var oct8ne = document.createElement("script");
|
56 |
oct8ne.type = "text/javascript";
|
57 |
oct8ne.async = true;
|
51 |
}
|
52 |
echo <<<EOT
|
53 |
|
54 |
+
<script type="text/javascript">
|
55 |
var oct8ne = document.createElement("script");
|
56 |
oct8ne.type = "text/javascript";
|
57 |
oct8ne.async = true;
|
app/etc/modules/LetsSyncroLLC_Oct8ne.xml
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
<LetsSyncroLLC_Oct8ne>
|
5 |
<active>true</active>
|
6 |
<codePool>community</codePool>
|
7 |
-
<version>2.1.
|
8 |
<depends>
|
9 |
<Mage_Eav/>
|
10 |
<Mage_Dataflow/>
|
4 |
<LetsSyncroLLC_Oct8ne>
|
5 |
<active>true</active>
|
6 |
<codePool>community</codePool>
|
7 |
+
<version>2.1.6</version>
|
8 |
<depends>
|
9 |
<Mage_Eav/>
|
10 |
<Mage_Dataflow/>
|
package.xml
CHANGED
@@ -1,18 +1,20 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>LetsSyncroLLC_Oct8ne</name>
|
4 |
-
<version>2.1.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/gpl-license.php">GPL</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Oct8ne extension</summary>
|
10 |
<description>Agent-assisted search, proprietary co-viewing technology, & live chat to engage in personal selling & service.</description>
|
11 |
-
<notes>
|
|
|
|
|
12 |
<authors><author><name>Oct8ne</name><user>Oct8ne</user><email>xavier.gonzalez@oct8ne.com</email></author></authors>
|
13 |
-
<date>
|
14 |
-
<time>
|
15 |
-
<contents><target name="magecommunity"><dir name="LetsSyncroLLC"><dir name="Oct8ne"><dir name="Block"><file name="Accountconfig.php" hash="
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>LetsSyncroLLC_Oct8ne</name>
|
4 |
+
<version>2.1.6</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/gpl-license.php">GPL</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Oct8ne extension</summary>
|
10 |
<description>Agent-assisted search, proprietary co-viewing technology, & live chat to engage in personal selling & service.</description>
|
11 |
+
<notes>New linkup method
|
12 |
+
Minor bugs fixed
|
13 |
+
</notes>
|
14 |
<authors><author><name>Oct8ne</name><user>Oct8ne</user><email>xavier.gonzalez@oct8ne.com</email></author></authors>
|
15 |
+
<date>2017-05-04</date>
|
16 |
+
<time>15:56:18</time>
|
17 |
+
<contents><target name="magecommunity"><dir name="LetsSyncroLLC"><dir name="Oct8ne"><dir name="Block"><file name="Accountconfig.php" hash="bffa6b2340097289f85620a1f55057c9"/><dir name="Customer"><file name="Notifier.php" hash="58785a446c6c6a69db0348b81852028b"/></dir><dir name="Html"><file name="Head.php" hash="7fec049acbd3391ce0176982eede105b"/></dir><file name="Index.php" hash="d4cc07e7e6412cb9f3cedf2508f56461"/><dir name="Mage"><dir name="Product"><file name="View.php" hash="ca15ba7c5cc756cc18af5c9c48fbe492"/></dir></dir></dir><dir name="Helper"><file name="CustomerData.php" hash="38658993e66fee8d5e3170658fa71556"/><file name="Data.php" hash="b44aae800370a4bc39c66d4e1b349215"/><file name="Debug.php" hash="147f2d06848b4596a0409b471cf0769a"/><dir name="Image"><file name="Default.php" hash="74ff374e88db99c4ae911bd3303e4c8e"/><file name="Schuler.php" hash="ea104cd9d9df2c62beab7af298e45fe1"/></dir><file name="Reports.php" hash="6df3362a381e507a69fbf27162174f1b"/><dir name="Search"><file name="Base.php" hash="abd7647e0892bd912cc11406ee59188b"/><file name="Celebros.php" hash="9c7007d3a3501d63af8207e107f6ac0f"/><dir name="CelebrosAPI"><file name="QwiserAnswer.php" hash="56f07a272ce8de8738868fc4c7a74165"/><file name="QwiserAnswers.php" hash="a7ac00848b3f60935771880b75aba90c"/><file name="QwiserConcept.php" hash="32ffebe11630864b666fe66f37eab1b2"/><file name="QwiserConcepts.php" hash="0b3c0fada961fe22dd6cbb3a4b719d2a"/><file name="QwiserProduct.php" hash="09069308e5f5fc862ddafebe7152f40b"/><file name="QwiserProductAnswer.php" hash="9dc1c8c9a929affa9db5a339ac1b7317"/><file name="QwiserProductAnswers.php" hash="699fc568eeb8bfc3d4bcc9b24102d3ad"/><file name="QwiserProductField.php" hash="273c36aad014b9220201881738eeafea"/><file name="QwiserProductFields.php" hash="4670e55b10d57c4208d9e5bacdd1d91c"/><file name="QwiserProducts.php" hash="cf2f76940b1c508823d00fbb7817cd06"/><file name="QwiserProductsMetaData.php" hash="4d54fae9b996ea18bbad5a60cd72c52a"/><file name="QwiserQuestion.php" hash="a148b2193de6967c3a12f43b939b92f2"/><file name="QwiserQuestions.php" hash="9de5d58ab267ea6a4ea9084d54920ddd"/><file name="QwiserSearchAPI.php" hash="e2680c99083553f6e0dc908ba3875603"/><file name="QwiserSearchPath.php" hash="300327589bf6720d0ae400c9cce755e7"/><file name="QwiserSearchPathEntry.php" hash="6e4192df47fc6c7ebdbb6251b6401e57"/><file name="QwiserSearchResults.php" hash="379337770db03fc27377be8de14ebd55"/><file name="QwiserSpellerInformation.php" hash="c52100535c3f0dc9650740cdbda6e40a"/><file name="SearchInformation.php" hash="de29fd1136f2512c18603164abfa58af"/><file name="SortingOptions.php" hash="a55d1eaabfee811b9f71dfdbb61f5c9a"/><file name="domxml-php4-to-php5.php" hash="29c0571bea402f63987c09d811d1a662"/></dir><file name="Magento.php" hash="0ae593bd70db8952c897682082594c10"/><file name="Sli.php" hash="c3cbe01a28f09a0e83bffb7764fb40c1"/><file name="Solr.php" hash="65b9025b2d6c9d5a4d560241dfbe3805"/></dir><file name="Url.php" hash="2489577dcb604e9ddbeaf0e51495d202"/><file name="Version.php" hash="fe41f98f2f73b6252f0e2c4fca830369"/><file name="Wishlist.php" hash="95a30da6de9131026580e6475a2ea951"/></dir><dir name="Model"><file name="Cron.php" hash="11fbdce80ef509a89cbc055960c627dd"/><file name="ImageWidth.php" hash="ddffd8d74a25f989b1116a663ac3a9e6"/><file name="Letssyncro.php" hash="a7755ee759fa31f004207823314a907d"/><dir name="Mage"><file name="Onepage.php" hash="400ea1de621a7d2e6b0e04db55b60027"/><file name="Request.php" hash="feee181c817bc4a1ed8d662104ddb1af"/><file name="Rewrite.php" hash="5699a8b1707724c4ad01fd6998cf12d6"/><file name="Url.php" hash="82a05832eaea74fedfd2c5b081dc5cc6"/></dir><dir name="Mysql4"><dir name="LetsSyncro"><file name="Collection.php" hash="1820b31106065627aa81007f966de6b7"/></dir><file name="Letssyncro.php" hash="81b49a4f7770d408eacd230a41434cbf"/><dir name="Order"><file name="Collection.php" hash="431a18fb0f8a2d29ea44a1b617b48382"/></dir><file name="Order.php" hash="1fd857af382915617c1d64d438a842ab"/></dir><file name="Observer.php" hash="bdfb77a7082ac8c27756b5bf7f4779df"/><file name="Order.php" hash="5ea076e3f76f9a28a5ab6eee1f157b69"/><file name="Orderproducts.php" hash="9edf0ab5159b046d0d33c2766087183f"/><file name="Quoteproducts.php" hash="3b6baf23d5ab4136c52fe24d470a3fd0"/><file name="SearchEngines.php" hash="d894f3f32f74bde7899db50dcf3e2719"/></dir><dir name="controllers"><file name="AccountController.php" hash="c900a756947b61498e5edd2e39b1d0bf"/><file name="FrameController.php" hash="86bc36473a0d69bc6e01b2d14374a0b8"/><file name="IndexController.php" hash="5a63469c2dead9b78a262fd580a3e43b"/><file name="Oct8neAdminController.php" hash="159d851a7b51f3483ebdfe2b49b05b4a"/><file name="SetupController.php" hash="5d00d70a9d9794877ba9c7490038d6d2"/></dir><dir name="etc"><file name="config.xml" hash="821162e310a571b56a3097d4c2296c7f"/><file name="system.xml" hash="2447530e6dd54c5abd423732c54644da"/></dir><dir name="sql"><dir name="oct8ne_setup"><file name="mysql4-install-2.0.0.php" hash="7cd9ed6b373a104ec7a27b1b2f26b570"/><file name="mysql4-install-2.1.0.php" hash="0c268a08bbfc48a072fdfb75c7013a43"/><file name="mysql4-install-2.1.2.php" hash="0c268a08bbfc48a072fdfb75c7013a43"/><file name="mysql4-install-2.1.3.php" hash="0c268a08bbfc48a072fdfb75c7013a43"/><file name="mysql4-install-2.1.4.php" hash="0c268a08bbfc48a072fdfb75c7013a43"/><file name="mysql4-upgrade-1-2.1.0.php" hash="5883e47d9718350d49146e33ba8fbd84"/><file name="mysql4-upgrade-1.0.0-1.1.0.php" hash="0944f9c420562fa8071b04eff2abdb15"/><file name="mysql4-upgrade-1.1.6-1.1.7.php" hash="eecd1f66e51507306abf5e4fa5d70584"/><file name="mysql4-upgrade-1.1.7-2.0.0.php" hash="3c7e1655fb0b45dd5dc01aca98929679"/><file name="mysql4-upgrade-2.0.0-2.0.3.php" hash="0288d291dec83584d97052e62b64a738"/><file name="mysql4-upgrade-2.0.3-2.1.0.php" hash="4a06d9802360e45a08d417168c260f15"/><file name="mysql4-upgrade-2.1.0-2.1.1.php" hash="0288d291dec83584d97052e62b64a738"/><file name="mysql4-upgrade-2.1.1-2.1.2.php" hash="0288d291dec83584d97052e62b64a738"/><file name="mysql4-upgrade-2.1.2-2.1.3.php" hash="0288d291dec83584d97052e62b64a738"/><file name="mysql4-upgrade-2.1.3-2.1.4.php" hash="0288d291dec83584d97052e62b64a738"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="oct8ne"><dir name="layout"><file name="oct8ne.xml" hash="664f6b6c51799aba0fa905cbc80eb703"/></dir><dir name="template"><dir name="page"><file name="1column.phtml" hash="3fbf17f71254a75cbf3261eab5a727ab"/><file name="2columns-left.phtml" hash="3fbf17f71254a75cbf3261eab5a727ab"/><file name="2columns-right.phtml" hash="3fbf17f71254a75cbf3261eab5a727ab"/><file name="3columns.phtml" hash="3fbf17f71254a75cbf3261eab5a727ab"/></dir></dir></dir></dir><dir name="base"><dir name="default"><dir name="layout"><file name="oct8ne.xml" hash="4b6f167fdbaf25f864934c0e8ecdda51"/></dir><dir name="template"><dir name="oct8ne"><dir name="frame"><file name="clean-page.phtml" hash="86c6580270709b8adb8a624130704cb5"/><dir name="productview"><file name="additional.phtml" hash="d0f80a4f31b31154af12197301cbc524"/><file name="addto.phtml" hash="358f19e35ff76f853cfad50ad35329fc"/><file name="addtocart.phtml" hash="06ac8be9a7197e87e8c5972c27804cc9"/><file name="attributes.phtml" hash="def5531385ad60aac88274bd91f76f52"/><file name="description.phtml" hash="09674e0a56d36f27c93d3a52c3a880c4"/><file name="media.phtml" hash="b23c4e9ef29e00d2f592d822fec8e52c"/><file name="media.phtml.ORIGINAL" hash="071f4d92269b2cbfa1a14271afbf0dbe"/><dir name="options"><file name="js.phtml" hash="7d9917d908ca99033c3473ecc10d895d"/><dir name="type"><file name="date.phtml" hash="41a612891cda695e3023d15a460c4325"/><file name="default.phtml" hash="b6f6d8e715f2a1d59913f313654fc38a"/><file name="file.phtml" hash="5e336ccdfa66b78264e5a0e859600d74"/><file name="select.phtml" hash="162f029fc825b78676cce70633805e62"/><file name="text.phtml" hash="c2c2940fb278d952e0e0d5d232ba5ed9"/></dir><dir name="wrapper"><file name="bottom.phtml" hash="182b49972e67cc834b8e1094a3984f5b"/></dir><file name="wrapper.phtml" hash="b635f6abf10b920afb6000b462134db6"/></dir><file name="options.phtml" hash="60d92d70da66f28300788027aa6f3056"/><file name="price.phtml" hash="06e90ec3368d07d62c3895f706069f96"/><file name="price_clone.phtml" hash="fb1ca9b19f97b0498f529b96c5c0e372"/><file name="tierprices.phtml" hash="4ac50d3c9f54d11fa5041a361485da74"/><dir name="type"><file name="configurable.phtml" hash="b9a427816f9c8a3d0d7179e8d5382683"/><file name="default.phtml" hash="e7f000d4b7fbc62f4e155e429f976126"/><file name="grouped.phtml" hash="9ce42ac44794853963bf68e9f2e911b0"/><dir name="options"><file name="configurable.phtml" hash="2636b369c1ceacd1b131f77ade2c996f"/></dir><file name="simple.phtml" hash="b9a427816f9c8a3d0d7179e8d5382683"/><file name="virtual.phtml" hash="b9a427816f9c8a3d0d7179e8d5382683"/></dir></dir><file name="productview.phtml" hash="da287c78285ecb003bbee37491d3a2f2"/></dir><file name="letssyncro.phtml" hash="38ae135b7c4c762a16fe5d9718067be7"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="LetsSyncroLLC_Oct8ne.xml" hash="a29daa08815803264bc549f41d12bbe2"/></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="LetsSyncroLLC_Oct8ne.csv" hash="686df4107da7e35e243b629c5ee57963"/></dir><dir name="es_ES"><file name="LetsSyncroLLC_Oct8ne.csv" hash="eb0b3ddaae1e2e52005e9ab23cb37163"/></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><file name="oct8ne.css" hash="4255fddac8c054bbe32621cdccf844b8"/></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><file name="LetsSyncro_Logo.png" hash="2104af20cc380d0c745531e1dca2f97c"/></dir></dir></dir></dir></target></contents>
|
18 |
<compatible/>
|
19 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
20 |
</package>
|