Version Notes
- Shell script message change
- Css change
- Domain related notification
- Change cloud search url to change 4
- Pass the date when the product was added
- Add an option in the plugin to regenerate images using shell script command
- Exclude in search change
- Options to use configurable product description
- bug fix for Bundle product tax issue
- All data sync with magento indexing using shell script command
- Trigger option to detect ERP and third party api direct db change in stock and price
- Message change for openssl
Download this release
Release Info
Developer | Klevu |
Extension | Klevu_SmartSearch |
Version | 1.2.13 |
Comparing to | |
See all releases |
Code changes from version 1.2.12 to 1.2.13
- app/code/community/Klevu/Content/Model/Content.php +14 -3
- app/code/community/Klevu/Search/Block/Adminhtml/Form/Field/Trigger/Button.php +48 -0
- app/code/community/Klevu/Search/Helper/Config.php +66 -2
- app/code/community/Klevu/Search/Helper/Data.php +41 -0
- app/code/community/Klevu/Search/Model/Api/Action/Addrecords.php +4 -1
- app/code/community/Klevu/Search/Model/Api/Request.php +3 -2
- app/code/community/Klevu/Search/Model/Api/Response.php +18 -2
- app/code/community/Klevu/Search/Model/Api/Response/Empty.php +1 -1
- app/code/community/Klevu/Search/Model/Api/Response/Search.php +11 -9
- app/code/community/Klevu/Search/Model/Observer.php +4 -1
- app/code/community/Klevu/Search/Model/Product/Sync.php +100 -24
- app/code/community/Klevu/Search/Model/System/Config/Source/Triggeroptions.php +16 -0
- app/code/community/Klevu/Search/controllers/Adminhtml/Klevu/SearchController.php +131 -7
- app/code/community/Klevu/Search/controllers/IndexController.php +14 -11
- app/code/community/Klevu/Search/etc/config.xml +7 -3
- app/code/community/Klevu/Search/etc/system.xml +47 -0
- app/design/adminhtml/default/default/template/klevu/search/form/field/trigger/button.phtml +20 -0
- app/design/frontend/base/default/template/klevu/search/form_js.phtml +2 -2
- lib/Klevu/Trigger.php +335 -0
- package.xml +17 -8
- shell/klevu/sync.php +77 -4
- skin/frontend/base/default/css/klevu/klevu-landing-page-style.css +16 -0
app/code/community/Klevu/Content/Model/Content.php
CHANGED
@@ -237,18 +237,25 @@ class Klevu_Content_Model_Content extends Klevu_Search_Model_Product_Sync
|
|
237 |
*/
|
238 |
protected function deletecms(array $data)
|
239 |
{
|
|
|
|
|
|
|
|
|
|
|
240 |
$total = count($data);
|
241 |
$response = Mage::getModel('klevu_search/api_action_deleterecords')->setStore($this->getStore())->execute(array(
|
242 |
'sessionId' => $this->getSessionId() ,
|
243 |
'records' => array_map(function ($v)
|
244 |
{
|
245 |
return array(
|
246 |
-
'id' => "pageid_" . $v['page_id']
|
|
|
247 |
);
|
248 |
}
|
249 |
, $data)
|
250 |
));
|
251 |
if ($response->isSuccessful()) {
|
|
|
252 |
$connection = $this->getConnection();
|
253 |
$select = $connection->select()->from(array(
|
254 |
'k' => $this->getTableName("klevu_search/product_sync")
|
@@ -273,8 +280,8 @@ class Klevu_Content_Model_Content extends Klevu_Search_Model_Product_Sync
|
|
273 |
else {
|
274 |
return true;
|
275 |
}
|
276 |
-
}
|
277 |
-
|
278 |
return sprintf("%d cms%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
279 |
}
|
280 |
}
|
@@ -290,6 +297,7 @@ class Klevu_Content_Model_Content extends Klevu_Search_Model_Product_Sync
|
|
290 |
*/
|
291 |
protected function addCms(array $data)
|
292 |
{
|
|
|
293 |
$total = count($data);
|
294 |
$data = $this->addCmsData($data);
|
295 |
$response = Mage::getModel('klevu_search/api_action_addrecords')->setStore($this->getStore())->execute(array(
|
@@ -334,6 +342,7 @@ class Klevu_Content_Model_Content extends Klevu_Search_Model_Product_Sync
|
|
334 |
}
|
335 |
}
|
336 |
else {
|
|
|
337 |
return sprintf("%d cms%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
338 |
}
|
339 |
}
|
@@ -391,6 +400,7 @@ class Klevu_Content_Model_Content extends Klevu_Search_Model_Product_Sync
|
|
391 |
*/
|
392 |
protected function updateCms(array $data)
|
393 |
{
|
|
|
394 |
$total = count($data);
|
395 |
$data = $this->addCmsData($data);
|
396 |
$response = Mage::getModel('klevu_search/api_action_updaterecords')->setStore($this->getStore())->execute(array(
|
@@ -425,6 +435,7 @@ class Klevu_Content_Model_Content extends Klevu_Search_Model_Product_Sync
|
|
425 |
}
|
426 |
}
|
427 |
else {
|
|
|
428 |
return sprintf("%d cms%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
429 |
}
|
430 |
}
|
237 |
*/
|
238 |
protected function deletecms(array $data)
|
239 |
{
|
240 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
241 |
+
$baseDomain = $this->getStore()->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true);
|
242 |
+
foreach($data as $key => $value){
|
243 |
+
$data[$key]['url'] = $baseDomain;
|
244 |
+
}
|
245 |
$total = count($data);
|
246 |
$response = Mage::getModel('klevu_search/api_action_deleterecords')->setStore($this->getStore())->execute(array(
|
247 |
'sessionId' => $this->getSessionId() ,
|
248 |
'records' => array_map(function ($v)
|
249 |
{
|
250 |
return array(
|
251 |
+
'id' => "pageid_" . $v['page_id'],
|
252 |
+
'url' => $v['url']
|
253 |
);
|
254 |
}
|
255 |
, $data)
|
256 |
));
|
257 |
if ($response->isSuccessful()) {
|
258 |
+
|
259 |
$connection = $this->getConnection();
|
260 |
$select = $connection->select()->from(array(
|
261 |
'k' => $this->getTableName("klevu_search/product_sync")
|
280 |
else {
|
281 |
return true;
|
282 |
}
|
283 |
+
} else {
|
284 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
285 |
return sprintf("%d cms%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
286 |
}
|
287 |
}
|
297 |
*/
|
298 |
protected function addCms(array $data)
|
299 |
{
|
300 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
301 |
$total = count($data);
|
302 |
$data = $this->addCmsData($data);
|
303 |
$response = Mage::getModel('klevu_search/api_action_addrecords')->setStore($this->getStore())->execute(array(
|
342 |
}
|
343 |
}
|
344 |
else {
|
345 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
346 |
return sprintf("%d cms%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
347 |
}
|
348 |
}
|
400 |
*/
|
401 |
protected function updateCms(array $data)
|
402 |
{
|
403 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
404 |
$total = count($data);
|
405 |
$data = $this->addCmsData($data);
|
406 |
$response = Mage::getModel('klevu_search/api_action_updaterecords')->setStore($this->getStore())->execute(array(
|
435 |
}
|
436 |
}
|
437 |
else {
|
438 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
439 |
return sprintf("%d cms%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
440 |
}
|
441 |
}
|
app/code/community/Klevu/Search/Block/Adminhtml/Form/Field/Trigger/Button.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class Klevu_Search_Block_Adminhtml_Form_Field_Sync_Button
|
5 |
+
*
|
6 |
+
* @method setStoreId($id)
|
7 |
+
* @method string getStoreId()
|
8 |
+
*/
|
9 |
+
class Klevu_Search_Block_Adminhtml_Form_Field_Trigger_Button extends Mage_Adminhtml_Block_System_Config_Form_Field {
|
10 |
+
|
11 |
+
protected function _prepareLayout() {
|
12 |
+
parent::_prepareLayout();
|
13 |
+
|
14 |
+
// Set the default template
|
15 |
+
if (!$this->getTemplate()) {
|
16 |
+
$this->setTemplate('klevu/search/form/field/trigger/button.phtml');
|
17 |
+
}
|
18 |
+
|
19 |
+
return $this;
|
20 |
+
}
|
21 |
+
|
22 |
+
public function render(Varien_Data_Form_Element_Abstract $element) {
|
23 |
+
if ($element->getScope() == "stores") {
|
24 |
+
$this->setStoreId($element->getScopeId());
|
25 |
+
}
|
26 |
+
|
27 |
+
// Remove the scope information so it doesn't get printed out
|
28 |
+
$element
|
29 |
+
->unsScope()
|
30 |
+
->unsCanUseWebsiteValue()
|
31 |
+
->unsCanUseDefaultValue();
|
32 |
+
|
33 |
+
return parent::render($element);
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
|
37 |
+
$url_params = ($this->getStoreId()) ? array("store" => $this->getStoreId()) : array();
|
38 |
+
$label_suffix = ($this->getStoreId()) ? " for This Store" : "";
|
39 |
+
|
40 |
+
$this->addData(array(
|
41 |
+
"html_id" => $element->getHtmlId(),
|
42 |
+
"button_label" => sprintf("save %s", $label_suffix),
|
43 |
+
"destination_url" => $this->getUrl("adminhtml/klevu_search/trigger", $url_params)
|
44 |
+
));
|
45 |
+
|
46 |
+
return $this->_toHtml();
|
47 |
+
}
|
48 |
+
}
|
app/code/community/Klevu/Search/Helper/Config.php
CHANGED
@@ -43,6 +43,9 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
43 |
const XML_PATH_CONFIG_IMAGE_FLAG = "klevu_search/image_setting/enabled";
|
44 |
const XML_PATH_CONFIG_SYNC_FREQUENCY = "klevu_search/product_sync/frequency";
|
45 |
const XML_PATH_COLLETION_METHOD = "klevu_search/developer/collection_method";
|
|
|
|
|
|
|
46 |
const DATETIME_FORMAT = "Y-m-d H:i:s T";
|
47 |
protected $_klevu_features_response;
|
48 |
protected $_klevu_enabled_feature_response;
|
@@ -638,7 +641,8 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
638 |
"price",
|
639 |
"tax_class_id",
|
640 |
"weight",
|
641 |
-
"rating"
|
|
|
642 |
"klevu_attribute" => array(
|
643 |
"name",
|
644 |
"sku",
|
@@ -651,7 +655,8 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
651 |
"salePrice",
|
652 |
"salePrice",
|
653 |
"weight",
|
654 |
-
"rating"
|
|
|
655 |
)
|
656 |
);
|
657 |
}
|
@@ -874,4 +879,63 @@ class Klevu_Search_Helper_Config extends Mage_Core_Helper_Abstract {
|
|
874 |
public function getCollectionMethod() {
|
875 |
return Mage::getStoreConfigFlag(static::XML_PATH_COLLETION_METHOD);
|
876 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
877 |
}
|
43 |
const XML_PATH_CONFIG_IMAGE_FLAG = "klevu_search/image_setting/enabled";
|
44 |
const XML_PATH_CONFIG_SYNC_FREQUENCY = "klevu_search/product_sync/frequency";
|
45 |
const XML_PATH_COLLETION_METHOD = "klevu_search/developer/collection_method";
|
46 |
+
const XML_PATH_TRIGGER_OPTIONS = "klevu_search/developer/trigger_option";
|
47 |
+
const XML_PATH_DESCRIPTION_FLAG = "klevu_search/description_setting/enabled";
|
48 |
+
const XML_PATH_FLAT_CATALOG = "catalog/frontend/flat_catalog_product";
|
49 |
const DATETIME_FORMAT = "Y-m-d H:i:s T";
|
50 |
protected $_klevu_features_response;
|
51 |
protected $_klevu_enabled_feature_response;
|
641 |
"price",
|
642 |
"tax_class_id",
|
643 |
"weight",
|
644 |
+
"rating",
|
645 |
+
"msrp"),
|
646 |
"klevu_attribute" => array(
|
647 |
"name",
|
648 |
"sku",
|
655 |
"salePrice",
|
656 |
"salePrice",
|
657 |
"weight",
|
658 |
+
"rating",
|
659 |
+
"msrp"
|
660 |
)
|
661 |
);
|
662 |
}
|
879 |
public function getCollectionMethod() {
|
880 |
return Mage::getStoreConfigFlag(static::XML_PATH_COLLETION_METHOD);
|
881 |
}
|
882 |
+
|
883 |
+
/**
|
884 |
+
* save trigger option value
|
885 |
+
*
|
886 |
+
* @param string $value
|
887 |
+
*
|
888 |
+
* @return
|
889 |
+
*/
|
890 |
+
public function saveTrigger($value) {
|
891 |
+
$this->setGlobalConfig(static::XML_PATH_TRIGGER_OPTIONS, $value);
|
892 |
+
return $this;
|
893 |
+
}
|
894 |
+
|
895 |
+
/**
|
896 |
+
* Return the configuration flag for trigger options.
|
897 |
+
*
|
898 |
+
*
|
899 |
+
* @return int
|
900 |
+
*/
|
901 |
+
public function getTriggerOptionsFlag() {
|
902 |
+
return Mage::getStoreConfig(static::XML_PATH_TRIGGER_OPTIONS);
|
903 |
+
}
|
904 |
+
|
905 |
+
|
906 |
+
/**
|
907 |
+
* Return the configuration flag for sending config image.
|
908 |
+
*
|
909 |
+
* @param Mage_Core_Model_Store|int $store
|
910 |
+
*
|
911 |
+
* @return bool
|
912 |
+
*/
|
913 |
+
public function isUseConfigDescription($store=null){
|
914 |
+
return Mage::getStoreConfigFlag(static::XML_PATH_DESCRIPTION_FLAG, $store);
|
915 |
+
}
|
916 |
+
|
917 |
+
/**
|
918 |
+
* Return the store from api key.
|
919 |
+
*
|
920 |
+
* @param $klevuApi
|
921 |
+
*
|
922 |
+
* @return int
|
923 |
+
*/
|
924 |
+
public function scopeId($klevuApi){
|
925 |
+
$configs = Mage::getModel('core/config_data')->getCollection()
|
926 |
+
->addFieldToFilter('value',$this->getJsApiKey())->load();
|
927 |
+
$scope_id = $configs->getData();
|
928 |
+
return intval($scope_id[0]['scope_id']);
|
929 |
+
}
|
930 |
+
|
931 |
+
/**
|
932 |
+
* Return the store from api key.
|
933 |
+
*
|
934 |
+
* @return bool
|
935 |
+
*/
|
936 |
+
public function getFlatCatalogStatus(){
|
937 |
+
return Mage::getStoreConfig(static::XML_PATH_FLAT_CATALOG);
|
938 |
+
|
939 |
+
}
|
940 |
+
|
941 |
}
|
app/code/community/Klevu/Search/Helper/Data.php
CHANGED
@@ -433,4 +433,45 @@ class Klevu_Search_Helper_Data extends Mage_Core_Helper_Abstract {
|
|
433 |
}
|
434 |
}
|
435 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
436 |
}
|
433 |
}
|
434 |
}
|
435 |
|
436 |
+
/**
|
437 |
+
* Check for invalid index
|
438 |
+
*
|
439 |
+
* @return bool
|
440 |
+
*/
|
441 |
+
public function getStatuOfIndexing() {
|
442 |
+
if(Mage::getEdition() != "Enterprise") {
|
443 |
+
$flat_status = Mage::helper('klevu_search/config')->getFlatCatalogStatus();
|
444 |
+
$allIndex= Mage::getSingleton('index/indexer')->getProcessesCollection();
|
445 |
+
foreach ($allIndex as $index) {
|
446 |
+
if($flat_status == 0) {
|
447 |
+
if(strpos($index->getIndexerCode(), "flat") === false)
|
448 |
+
{
|
449 |
+
if($index->getStatus() == "require_reindex") {
|
450 |
+
return true;
|
451 |
+
}
|
452 |
+
}
|
453 |
+
} else {
|
454 |
+
if($index->getStatus() == "require_reindex") {
|
455 |
+
return true;
|
456 |
+
}
|
457 |
+
}
|
458 |
+
}
|
459 |
+
}
|
460 |
+
}
|
461 |
+
|
462 |
+
/**
|
463 |
+
* get for base domain
|
464 |
+
*
|
465 |
+
* @return string
|
466 |
+
*/
|
467 |
+
public function getBaseDomain() {
|
468 |
+
$base_domain = Mage::app()->getStore(Mage::helper('klevu_search/config')->scopeId())->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
|
469 |
+
if(!empty($base_domain)) {
|
470 |
+
$base_url_value = parse_url($base_domain);
|
471 |
+
return $base_url_value['host'];
|
472 |
+
}
|
473 |
+
}
|
474 |
+
|
475 |
+
|
476 |
+
|
477 |
}
|
app/code/community/Klevu/Search/Model/Api/Action/Addrecords.php
CHANGED
@@ -202,6 +202,7 @@ class Klevu_Search_Model_Api_Action_Addrecords extends Klevu_Search_Model_Api_Ac
|
|
202 |
* @param string
|
203 |
*/
|
204 |
protected function prepareOtherAttributeToIndexParameters(&$record) {
|
|
|
205 |
foreach ($record['otherAttributeToIndex'] as $key => &$value) {
|
206 |
$key = $this->sanitiseOtherAttribute($key);
|
207 |
|
@@ -220,7 +221,9 @@ class Klevu_Search_Model_Api_Action_Addrecords extends Klevu_Search_Model_Api_Ac
|
|
220 |
if (is_array($value)) {
|
221 |
$value = implode(",", $value);
|
222 |
}
|
223 |
-
|
|
|
|
|
224 |
$value = sprintf("%s:%s:%s", $key, $label, $value);
|
225 |
}
|
226 |
$record['otherAttributeToIndex'] = implode(";", $record['otherAttributeToIndex']);
|
202 |
* @param string
|
203 |
*/
|
204 |
protected function prepareOtherAttributeToIndexParameters(&$record) {
|
205 |
+
|
206 |
foreach ($record['otherAttributeToIndex'] as $key => &$value) {
|
207 |
$key = $this->sanitiseOtherAttribute($key);
|
208 |
|
221 |
if (is_array($value)) {
|
222 |
$value = implode(",", $value);
|
223 |
}
|
224 |
+
if($key == 'created_at') {
|
225 |
+
$value = date('Y-m-d',strtotime(substr($value,0,strpos($value,"T"))));
|
226 |
+
}
|
227 |
$value = sprintf("%s:%s:%s", $key, $label, $value);
|
228 |
}
|
229 |
$record['otherAttributeToIndex'] = implode(";", $record['otherAttributeToIndex']);
|
app/code/community/Klevu/Search/Model/Api/Request.php
CHANGED
@@ -166,8 +166,9 @@ class Klevu_Search_Model_Api_Request extends Varien_Object {
|
|
166 |
* @return Zend_Http_Client
|
167 |
*/
|
168 |
protected function build() {
|
169 |
-
|
170 |
-
|
|
|
171 |
$client
|
172 |
->setUri($this->getEndpoint())
|
173 |
->setMethod($this->getMethod())
|
166 |
* @return Zend_Http_Client
|
167 |
*/
|
168 |
protected function build() {
|
169 |
+
$client = new Zend_Http_Client();
|
170 |
+
$config = array('timeout' => 60);
|
171 |
+
$client->setConfig($config);
|
172 |
$client
|
173 |
->setUri($this->getEndpoint())
|
174 |
->setMethod($this->getMethod())
|
app/code/community/Klevu/Search/Model/Api/Response.php
CHANGED
@@ -95,11 +95,27 @@ class Klevu_Search_Model_Api_Response extends Varien_Object {
|
|
95 |
case 503:
|
96 |
$message = "API server unavailable.";
|
97 |
break;
|
|
|
|
|
|
|
|
|
98 |
default:
|
99 |
$message = "Unexpected error.";
|
100 |
}
|
101 |
-
|
102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
Mage::helper('klevu_search')->log(Zend_Log::ERR, sprintf("Unsuccessful HTTP response: %s %s", $response->getStatus(), $response->responseCodeAsText($response->getStatus())));
|
104 |
}
|
105 |
|
95 |
case 503:
|
96 |
$message = "API server unavailable.";
|
97 |
break;
|
98 |
+
case 400:
|
99 |
+
$message = "Klevu Product sync has issues indexing your products. <b>".Mage::helper('klevu_search')->getBaseDomain()."</b> is not listed as an allowed base URL for the Klevu Search API key <b>'".Mage::helper('klevu_search/config')->getJsApiKey()."'</b>. Please <a href='http://support.klevu.com/knowledgebase/base-urls
|
100 |
+
' target='_blank'>click here</a> for more information.";
|
101 |
+
break;
|
102 |
default:
|
103 |
$message = "Unexpected error.";
|
104 |
}
|
105 |
+
if($response->getStatus() == 400) {
|
106 |
+
$this->setMessage(sprintf("%s", $message));
|
107 |
+
$storefromscope = Mage::app()->getStore(Mage::helper('klevu_search/config')->scopeId());
|
108 |
+
Mage::getModel('klevu_search/product_sync')->notify(
|
109 |
+
Mage::helper('klevu_search')->__(
|
110 |
+
"Product Sync failed for %s (%s): %s",
|
111 |
+
$storefromscope->getWebsite()->getName(),
|
112 |
+
$storefromscope->getName(),
|
113 |
+
$message
|
114 |
+
),null
|
115 |
+
);
|
116 |
+
} else {
|
117 |
+
$this->setMessage(sprintf("Failed to connect to Klevu: %s", $message));
|
118 |
+
}
|
119 |
Mage::helper('klevu_search')->log(Zend_Log::ERR, sprintf("Unsuccessful HTTP response: %s %s", $response->getStatus(), $response->responseCodeAsText($response->getStatus())));
|
120 |
}
|
121 |
|
app/code/community/Klevu/Search/Model/Api/Response/Empty.php
CHANGED
@@ -5,7 +5,7 @@ class Klevu_Search_Model_Api_Response_Empty extends Klevu_Search_Model_Api_Respo
|
|
5 |
public function _construct() {
|
6 |
$this->successful = false;
|
7 |
$this->addData(array(
|
8 |
-
'message' => "No HTTP response received. if you are using PHP version 5.4, please make sure to enable the
|
9 |
));
|
10 |
}
|
11 |
|
5 |
public function _construct() {
|
6 |
$this->successful = false;
|
7 |
$this->addData(array(
|
8 |
+
'message' => "No HTTP response received. if you are using PHP version 5.4, please make sure to enable the openssl in your php.ini file."
|
9 |
));
|
10 |
}
|
11 |
|
app/code/community/Klevu/Search/Model/Api/Response/Search.php
CHANGED
@@ -47,16 +47,18 @@ class Klevu_Search_Model_Api_Response_Search extends Klevu_Search_Model_Api_Resp
|
|
47 |
protected function _prepareFilters($filters) {
|
48 |
$prepared_filters = array();
|
49 |
$i = 0;
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
56 |
}
|
57 |
-
|
58 |
-
}
|
59 |
-
|
60 |
return $prepared_filters;
|
61 |
}
|
62 |
|
47 |
protected function _prepareFilters($filters) {
|
48 |
$prepared_filters = array();
|
49 |
$i = 0;
|
50 |
+
if(!empty($filters)){
|
51 |
+
foreach ($filters as $filter) {
|
52 |
+
$prepared_filters[$i] = $filter['@attributes'];
|
53 |
+
$options = isset($filter['option']) ? $filter['option'] : $filter[0];
|
54 |
+
if(!empty($options)){
|
55 |
+
foreach ($options as $option) {
|
56 |
+
$prepared_filters[$i]['options'][] = isset($option['@attributes']) ? $option['@attributes'] : $option;
|
57 |
+
}
|
58 |
+
}
|
59 |
+
$i++;
|
60 |
}
|
61 |
+
}
|
|
|
|
|
62 |
return $prepared_filters;
|
63 |
}
|
64 |
|
app/code/community/Klevu/Search/Model/Observer.php
CHANGED
@@ -21,7 +21,8 @@ class Klevu_Search_Model_Observer extends Varien_Object {
|
|
21 |
$this->setIsProductSyncScheduled(true);
|
22 |
}
|
23 |
}
|
24 |
-
|
|
|
25 |
/**
|
26 |
* Schedule an Order Sync to run immediately. If the observed event
|
27 |
* contains an order, add it to the sync queue before scheduling.
|
@@ -274,5 +275,7 @@ class Klevu_Search_Model_Observer extends Varien_Object {
|
|
274 |
Mage::helper('klevu_search')->log(Zend_Log::CRIT, sprintf("Exception thrown in %s::%s - %s", __CLASS__, __METHOD__, $e->getMessage()));
|
275 |
}
|
276 |
}
|
|
|
|
|
277 |
|
278 |
}
|
21 |
$this->setIsProductSyncScheduled(true);
|
22 |
}
|
23 |
}
|
24 |
+
|
25 |
+
|
26 |
/**
|
27 |
* Schedule an Order Sync to run immediately. If the observed event
|
28 |
* contains an order, add it to the sync queue before scheduling.
|
275 |
Mage::helper('klevu_search')->log(Zend_Log::CRIT, sprintf("Exception thrown in %s::%s - %s", __CLASS__, __METHOD__, $e->getMessage()));
|
276 |
}
|
277 |
}
|
278 |
+
|
279 |
+
|
280 |
|
281 |
}
|
app/code/community/Klevu/Search/Model/Product/Sync.php
CHANGED
@@ -36,9 +36,22 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
36 |
* deleting removed products since last sync.
|
37 |
*/
|
38 |
public function run() {
|
39 |
-
|
40 |
try {
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
/* mark for update special price product */
|
43 |
$this->markProductForUpdate();
|
44 |
|
@@ -73,7 +86,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
73 |
}
|
74 |
|
75 |
$stores = Mage::app()->getStores();
|
76 |
-
|
77 |
|
78 |
foreach ($stores as $store) {
|
79 |
$this->reset();
|
@@ -368,6 +381,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
368 |
return;
|
369 |
}
|
370 |
$method = $action . "Products";
|
|
|
371 |
$products = $this->getConnection()->fetchAll($statement, $statement->getBind());
|
372 |
|
373 |
|
@@ -600,14 +614,14 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
600 |
)
|
601 |
);*/
|
602 |
} else {
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
}
|
612 |
|
613 |
return false;
|
@@ -625,18 +639,23 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
625 |
* @return bool|string
|
626 |
*/
|
627 |
protected function deleteProducts(array $data) {
|
|
|
628 |
$total = count($data);
|
629 |
-
|
|
|
|
|
|
|
630 |
$response = Mage::getModel('klevu_search/api_action_deleterecords')
|
631 |
->setStore($this->getStore())
|
632 |
->execute(array(
|
633 |
'sessionId' => $this->getSessionId(),
|
634 |
'records' => array_map(function ($v) {
|
635 |
-
return array('id' => Mage::helper('klevu_search')->getKlevuProductId($v['product_id'], $v['parent_id']));
|
636 |
}, $data)
|
637 |
));
|
638 |
|
639 |
if ($response->isSuccessful()) {
|
|
|
640 |
$connection = $this->getConnection();
|
641 |
|
642 |
$select = $connection
|
@@ -677,11 +696,13 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
677 |
return true;
|
678 |
}
|
679 |
} else {
|
|
|
680 |
return sprintf("%d product%s failed (%s)",
|
681 |
$total,
|
682 |
($total > 1) ? "s" : "",
|
683 |
$response->getMessage()
|
684 |
);
|
|
|
685 |
}
|
686 |
}
|
687 |
|
@@ -696,6 +717,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
696 |
* @return bool|string
|
697 |
*/
|
698 |
protected function updateProducts(array $data) {
|
|
|
699 |
$total = count($data);
|
700 |
$dataToSend = $this->addProductSyncData($data);
|
701 |
if(!empty($dataToSend) && is_numeric($dataToSend)){
|
@@ -709,6 +731,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
709 |
));
|
710 |
|
711 |
if ($response->isSuccessful()) {
|
|
|
712 |
$helper = Mage::helper('klevu_search');
|
713 |
$connection = $this->getConnection();
|
714 |
|
@@ -758,11 +781,13 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
758 |
return true;
|
759 |
}
|
760 |
} else {
|
|
|
761 |
return sprintf("%d product%s failed (%s)",
|
762 |
$total,
|
763 |
($total > 1) ? "s" : "",
|
764 |
$response->getMessage()
|
765 |
);
|
|
|
766 |
}
|
767 |
}
|
768 |
|
@@ -777,6 +802,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
777 |
* @return bool|string
|
778 |
*/
|
779 |
protected function addProducts(array $data) {
|
|
|
780 |
$total = count($data);
|
781 |
$dataToSend = $this->addProductSyncData($data);
|
782 |
if(!empty($dataToSend) && is_numeric($dataToSend)){
|
@@ -790,7 +816,6 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
790 |
));
|
791 |
|
792 |
if ($response->isSuccessful()) {
|
793 |
-
|
794 |
$skipped_record_ids = array();
|
795 |
if ($skipped_records = $response->getSkippedRecords()) {
|
796 |
$skipped_record_ids = array_flip($skipped_records["index"]);
|
@@ -849,6 +874,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
849 |
return true;
|
850 |
}
|
851 |
} else {
|
|
|
852 |
return sprintf("%d product%s failed (%s)",
|
853 |
$total,
|
854 |
($total > 1) ? "s" : "",
|
@@ -1009,6 +1035,38 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1009 |
break;
|
1010 |
}
|
1011 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1012 |
break;
|
1013 |
case "image":
|
1014 |
$config = Mage::helper('klevu_search/config');
|
@@ -1503,9 +1561,11 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1503 |
$additional_attributes = Mage::helper('klevu_search/config')->getAdditionalAttributesMap($this->getStore());
|
1504 |
$attribute_map = $this->prepareAttributeMap($attribute_map, $additional_attributes);
|
1505 |
|
1506 |
-
|
1507 |
// Add otherAttributeToIndex to $attribute_map.
|
1508 |
-
$otherAttributeToIndex = Mage::helper('klevu_search/config')->getOtherAttributesToIndex($this->getStore());
|
|
|
|
|
1509 |
if(!empty($otherAttributeToIndex)) {
|
1510 |
$attribute_map['otherAttributeToIndex'] = $otherAttributeToIndex;
|
1511 |
}
|
@@ -1648,12 +1708,13 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1648 |
* each category in the path, the last element being the
|
1649 |
* name of the category referenced by the ID.
|
1650 |
*/
|
1651 |
-
|
1652 |
if (!$category_paths = $this->getData('category_paths')) {
|
1653 |
$category_paths = array();
|
1654 |
$rootId = $this->getStore()->getRootCategoryId();
|
1655 |
$collection = Mage::getResourceModel('catalog/category_collection')
|
1656 |
->setStoreId($this->getStore()->getId())
|
|
|
1657 |
->addFieldToFilter('level', array('gt' => 1))
|
1658 |
->addFieldToFilter('path', array('like'=> "1/$rootId/%"))
|
1659 |
->addIsActiveFilter()
|
@@ -1664,14 +1725,16 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1664 |
$path_ids = $category->getPathIds();
|
1665 |
foreach ($path_ids as $id) {
|
1666 |
if ($item = $collection->getItemById($id)) {
|
1667 |
-
|
|
|
|
|
|
|
1668 |
}
|
1669 |
}
|
|
|
1670 |
}
|
1671 |
-
|
1672 |
$this->setData('category_paths', $category_paths);
|
1673 |
}
|
1674 |
-
|
1675 |
return $category_paths;
|
1676 |
}
|
1677 |
|
@@ -1909,7 +1972,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
1909 |
protected function processPrice($price, $tax_class_id, $pro) {
|
1910 |
if($price < 0){$price = 0;}else{$price = $price;}
|
1911 |
$config = Mage::helper('klevu_search/config');
|
1912 |
-
if (($pro->getData('type_id') == Mage_Catalog_Model_Product_Type::TYPE_GROUPED || $pro->getData('type_id')==Mage_Catalog_Model_Product_Type::TYPE_BUNDLE )
|
1913 |
return $this->convertPrice($price);
|
1914 |
}
|
1915 |
if($config->isTaxEnabled($this->getStore()->getId())) {
|
@@ -2027,7 +2090,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
2027 |
*
|
2028 |
* @return $this
|
2029 |
*/
|
2030 |
-
|
2031 |
$type = ($store === null) ? static::NOTIFICATION_GLOBAL_TYPE : static::NOTIFICATION_STORE_TYPE_PREFIX . $store->getId();
|
2032 |
/** @var Klevu_Search_Model_Notification $notification */
|
2033 |
$notification = Mage::getResourceModel('klevu_search/notification_collection')
|
@@ -2496,6 +2559,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
2496 |
*/
|
2497 |
protected function addCategory(array $data)
|
2498 |
{
|
|
|
2499 |
$total = count($data);
|
2500 |
$data = $this->addcategoryData($data);
|
2501 |
$response = Mage::getModel('klevu_search/api_action_addrecords')->setStore($this->getStore())->execute(array(
|
@@ -2503,6 +2567,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
2503 |
'records' => $data
|
2504 |
));
|
2505 |
if ($response->isSuccessful()) {
|
|
|
2506 |
$skipped_record_ids = array();
|
2507 |
if ($skipped_records = $response->getSkippedRecords()) {
|
2508 |
$skipped_record_ids = array_flip($skipped_records["index"]);
|
@@ -2540,7 +2605,10 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
2540 |
}
|
2541 |
}
|
2542 |
else {
|
2543 |
-
|
|
|
|
|
|
|
2544 |
}
|
2545 |
}
|
2546 |
/**
|
@@ -2590,6 +2658,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
2590 |
*/
|
2591 |
protected function updateCategory(array $data)
|
2592 |
{
|
|
|
2593 |
$total = count($data);
|
2594 |
$data = $this->addcategoryData($data);
|
2595 |
$response = Mage::getModel('klevu_search/api_action_updaterecords')->setStore($this->getStore())->execute(array(
|
@@ -2624,6 +2693,7 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
2624 |
}
|
2625 |
}
|
2626 |
else {
|
|
|
2627 |
return sprintf("%d category%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
2628 |
}
|
2629 |
}
|
@@ -2639,13 +2709,19 @@ class Klevu_Search_Model_Product_Sync extends Klevu_Search_Model_Sync {
|
|
2639 |
*/
|
2640 |
protected function deleteCategory(array $data)
|
2641 |
{
|
|
|
|
|
|
|
|
|
|
|
2642 |
$total = count($data);
|
2643 |
$response = Mage::getModel('klevu_search/api_action_deleterecords')->setStore($this->getStore())->execute(array(
|
2644 |
'sessionId' => $this->getSessionId() ,
|
2645 |
'records' => array_map(function ($v)
|
2646 |
{
|
2647 |
return array(
|
2648 |
-
'id' => "categoryid_" . $v['category_id']
|
|
|
2649 |
);
|
2650 |
}
|
2651 |
, $data)
|
36 |
* deleting removed products since last sync.
|
37 |
*/
|
38 |
public function run() {
|
|
|
39 |
try {
|
40 |
+
|
41 |
+
// reset the flag for fail message
|
42 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
43 |
+
|
44 |
+
// check the status of indexing when collection method selected to sync data
|
45 |
+
$config = Mage::helper('klevu_search/config');
|
46 |
+
if($config->getCollectionMethod()) {
|
47 |
+
if(Mage::helper('klevu_search')->getStatuOfIndexing()) {
|
48 |
+
$this->notify(Mage::helper('klevu_search')->__("Product sync failed:One of your Magento indexes is not up-to-date. Please, rebuild your indexes (see System > Index Management)."),null);
|
49 |
+
Mage::helper('klevu_search')->log(Zend_Log::INFO, "Product sync failed:One of your Magento indexes is not up-to-date. Please, rebuild your indexes (see System > Index Management).");
|
50 |
+
|
51 |
+
return true;
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
/* mark for update special price product */
|
56 |
$this->markProductForUpdate();
|
57 |
|
86 |
}
|
87 |
|
88 |
$stores = Mage::app()->getStores();
|
89 |
+
|
90 |
|
91 |
foreach ($stores as $store) {
|
92 |
$this->reset();
|
381 |
return;
|
382 |
}
|
383 |
$method = $action . "Products";
|
384 |
+
|
385 |
$products = $this->getConnection()->fetchAll($statement, $statement->getBind());
|
386 |
|
387 |
|
614 |
)
|
615 |
);*/
|
616 |
} else {
|
617 |
+
$this->notify(
|
618 |
+
Mage::helper('klevu_search')->__(
|
619 |
+
"Product Sync failed for %s (%s): %s",
|
620 |
+
$store->getWebsite()->getName(),
|
621 |
+
$store->getName(),
|
622 |
+
$response->getMessage()
|
623 |
+
),$store
|
624 |
+
);
|
625 |
}
|
626 |
|
627 |
return false;
|
639 |
* @return bool|string
|
640 |
*/
|
641 |
protected function deleteProducts(array $data) {
|
642 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
643 |
$total = count($data);
|
644 |
+
$baseDomain = $this->getStore()->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true);
|
645 |
+
foreach($data as $key => $value){
|
646 |
+
$data[$key]['url'] = $baseDomain;
|
647 |
+
}
|
648 |
$response = Mage::getModel('klevu_search/api_action_deleterecords')
|
649 |
->setStore($this->getStore())
|
650 |
->execute(array(
|
651 |
'sessionId' => $this->getSessionId(),
|
652 |
'records' => array_map(function ($v) {
|
653 |
+
return array('id' => Mage::helper('klevu_search')->getKlevuProductId($v['product_id'], $v['parent_id']),'url' => $v['url']);
|
654 |
}, $data)
|
655 |
));
|
656 |
|
657 |
if ($response->isSuccessful()) {
|
658 |
+
|
659 |
$connection = $this->getConnection();
|
660 |
|
661 |
$select = $connection
|
696 |
return true;
|
697 |
}
|
698 |
} else {
|
699 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
700 |
return sprintf("%d product%s failed (%s)",
|
701 |
$total,
|
702 |
($total > 1) ? "s" : "",
|
703 |
$response->getMessage()
|
704 |
);
|
705 |
+
|
706 |
}
|
707 |
}
|
708 |
|
717 |
* @return bool|string
|
718 |
*/
|
719 |
protected function updateProducts(array $data) {
|
720 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
721 |
$total = count($data);
|
722 |
$dataToSend = $this->addProductSyncData($data);
|
723 |
if(!empty($dataToSend) && is_numeric($dataToSend)){
|
731 |
));
|
732 |
|
733 |
if ($response->isSuccessful()) {
|
734 |
+
|
735 |
$helper = Mage::helper('klevu_search');
|
736 |
$connection = $this->getConnection();
|
737 |
|
781 |
return true;
|
782 |
}
|
783 |
} else {
|
784 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
785 |
return sprintf("%d product%s failed (%s)",
|
786 |
$total,
|
787 |
($total > 1) ? "s" : "",
|
788 |
$response->getMessage()
|
789 |
);
|
790 |
+
|
791 |
}
|
792 |
}
|
793 |
|
802 |
* @return bool|string
|
803 |
*/
|
804 |
protected function addProducts(array $data) {
|
805 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
806 |
$total = count($data);
|
807 |
$dataToSend = $this->addProductSyncData($data);
|
808 |
if(!empty($dataToSend) && is_numeric($dataToSend)){
|
816 |
));
|
817 |
|
818 |
if ($response->isSuccessful()) {
|
|
|
819 |
$skipped_record_ids = array();
|
820 |
if ($skipped_records = $response->getSkippedRecords()) {
|
821 |
$skipped_record_ids = array_flip($skipped_records["index"]);
|
874 |
return true;
|
875 |
}
|
876 |
} else {
|
877 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
878 |
return sprintf("%d product%s failed (%s)",
|
879 |
$total,
|
880 |
($total > 1) ? "s" : "",
|
1035 |
break;
|
1036 |
}
|
1037 |
}
|
1038 |
+
break;
|
1039 |
+
case "desc":
|
1040 |
+
foreach ($attributes as $attribute) {
|
1041 |
+
if ($parent && $parent->getData($attribute)) {
|
1042 |
+
$product[$key] = $parent->getData($attribute).$item->getData($attribute);
|
1043 |
+
break;
|
1044 |
+
} else {
|
1045 |
+
$product[$key] = $item->getData($attribute);
|
1046 |
+
break;
|
1047 |
+
}
|
1048 |
+
}
|
1049 |
+
break;
|
1050 |
+
case "shortDesc":
|
1051 |
+
foreach ($attributes as $attribute) {
|
1052 |
+
if($config->isUseConfigDescription($this->getStore()->getId())) {
|
1053 |
+
if ($parent && $parent->getData($attribute)) {
|
1054 |
+
$product[$key] = $parent->getData($attribute);
|
1055 |
+
break;
|
1056 |
+
} else {
|
1057 |
+
$product[$key] = $item->getData($attribute);
|
1058 |
+
break;
|
1059 |
+
}
|
1060 |
+
} else {
|
1061 |
+
if ($item->getData($attribute)) {
|
1062 |
+
$product[$key] = $item->getData($attribute);
|
1063 |
+
break;
|
1064 |
+
} else {
|
1065 |
+
$product[$key] = $parent->getData($attribute);
|
1066 |
+
break;
|
1067 |
+
}
|
1068 |
+
}
|
1069 |
+
}
|
1070 |
break;
|
1071 |
case "image":
|
1072 |
$config = Mage::helper('klevu_search/config');
|
1561 |
$additional_attributes = Mage::helper('klevu_search/config')->getAdditionalAttributesMap($this->getStore());
|
1562 |
$attribute_map = $this->prepareAttributeMap($attribute_map, $additional_attributes);
|
1563 |
|
1564 |
+
$default_attribute_to_index = array("news_from_date","news_to_date","created_at");
|
1565 |
// Add otherAttributeToIndex to $attribute_map.
|
1566 |
+
$otherAttributeToIndex = array_merge($default_attribute_to_index,Mage::helper('klevu_search/config')->getOtherAttributesToIndex($this->getStore()));
|
1567 |
+
|
1568 |
+
|
1569 |
if(!empty($otherAttributeToIndex)) {
|
1570 |
$attribute_map['otherAttributeToIndex'] = $otherAttributeToIndex;
|
1571 |
}
|
1708 |
* each category in the path, the last element being the
|
1709 |
* name of the category referenced by the ID.
|
1710 |
*/
|
1711 |
+
protected function getCategoryPaths() {
|
1712 |
if (!$category_paths = $this->getData('category_paths')) {
|
1713 |
$category_paths = array();
|
1714 |
$rootId = $this->getStore()->getRootCategoryId();
|
1715 |
$collection = Mage::getResourceModel('catalog/category_collection')
|
1716 |
->setStoreId($this->getStore()->getId())
|
1717 |
+
->addAttributeToSelect('exclude_in_search')
|
1718 |
->addFieldToFilter('level', array('gt' => 1))
|
1719 |
->addFieldToFilter('path', array('like'=> "1/$rootId/%"))
|
1720 |
->addIsActiveFilter()
|
1725 |
$path_ids = $category->getPathIds();
|
1726 |
foreach ($path_ids as $id) {
|
1727 |
if ($item = $collection->getItemById($id)) {
|
1728 |
+
if($category->getExcludeInSearch() != 1) {
|
1729 |
+
$category_paths[$category->getId()][] = $item->getName();
|
1730 |
+
|
1731 |
+
}
|
1732 |
}
|
1733 |
}
|
1734 |
+
|
1735 |
}
|
|
|
1736 |
$this->setData('category_paths', $category_paths);
|
1737 |
}
|
|
|
1738 |
return $category_paths;
|
1739 |
}
|
1740 |
|
1972 |
protected function processPrice($price, $tax_class_id, $pro) {
|
1973 |
if($price < 0){$price = 0;}else{$price = $price;}
|
1974 |
$config = Mage::helper('klevu_search/config');
|
1975 |
+
if (($pro->getData('type_id') == Mage_Catalog_Model_Product_Type::TYPE_GROUPED || $pro->getData('type_id')==Mage_Catalog_Model_Product_Type::TYPE_BUNDLE )) {
|
1976 |
return $this->convertPrice($price);
|
1977 |
}
|
1978 |
if($config->isTaxEnabled($this->getStore()->getId())) {
|
2090 |
*
|
2091 |
* @return $this
|
2092 |
*/
|
2093 |
+
public function notify($message, $store = null) {
|
2094 |
$type = ($store === null) ? static::NOTIFICATION_GLOBAL_TYPE : static::NOTIFICATION_STORE_TYPE_PREFIX . $store->getId();
|
2095 |
/** @var Klevu_Search_Model_Notification $notification */
|
2096 |
$notification = Mage::getResourceModel('klevu_search/notification_collection')
|
2559 |
*/
|
2560 |
protected function addCategory(array $data)
|
2561 |
{
|
2562 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
2563 |
$total = count($data);
|
2564 |
$data = $this->addcategoryData($data);
|
2565 |
$response = Mage::getModel('klevu_search/api_action_addrecords')->setStore($this->getStore())->execute(array(
|
2567 |
'records' => $data
|
2568 |
));
|
2569 |
if ($response->isSuccessful()) {
|
2570 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
2571 |
$skipped_record_ids = array();
|
2572 |
if ($skipped_records = $response->getSkippedRecords()) {
|
2573 |
$skipped_record_ids = array_flip($skipped_records["index"]);
|
2605 |
}
|
2606 |
}
|
2607 |
else {
|
2608 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
2609 |
+
return sprintf("%d category%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
2610 |
+
|
2611 |
+
|
2612 |
}
|
2613 |
}
|
2614 |
/**
|
2658 |
*/
|
2659 |
protected function updateCategory(array $data)
|
2660 |
{
|
2661 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(0);
|
2662 |
$total = count($data);
|
2663 |
$data = $this->addcategoryData($data);
|
2664 |
$response = Mage::getModel('klevu_search/api_action_updaterecords')->setStore($this->getStore())->execute(array(
|
2693 |
}
|
2694 |
}
|
2695 |
else {
|
2696 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
2697 |
return sprintf("%d category%s failed (%s)", $total, ($total > 1) ? "s" : "", $response->getMessage());
|
2698 |
}
|
2699 |
}
|
2709 |
*/
|
2710 |
protected function deleteCategory(array $data)
|
2711 |
{
|
2712 |
+
$baseDomain = $this->getStore()->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true);
|
2713 |
+
|
2714 |
+
foreach($data as $key => $value){
|
2715 |
+
$data[$key]['url'] = $baseDomain;
|
2716 |
+
}
|
2717 |
$total = count($data);
|
2718 |
$response = Mage::getModel('klevu_search/api_action_deleterecords')->setStore($this->getStore())->execute(array(
|
2719 |
'sessionId' => $this->getSessionId() ,
|
2720 |
'records' => array_map(function ($v)
|
2721 |
{
|
2722 |
return array(
|
2723 |
+
'id' => "categoryid_" . $v['category_id'],
|
2724 |
+
'url' => $v['url']
|
2725 |
);
|
2726 |
}
|
2727 |
, $data)
|
app/code/community/Klevu/Search/Model/System/Config/Source/Triggeroptions.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Klevu_Search_Model_System_Config_Source_Triggeroptions {
|
4 |
+
|
5 |
+
const YES = 1;
|
6 |
+
const NO = 0;
|
7 |
+
|
8 |
+
public function toOptionArray() {
|
9 |
+
$helper = Mage::helper("klevu_search");
|
10 |
+
|
11 |
+
return array(
|
12 |
+
array('value' => static::YES, 'label' => $helper->__("Yes")),
|
13 |
+
array('value' => static::NO, 'label' => $helper->__("No"))
|
14 |
+
);
|
15 |
+
}
|
16 |
+
}
|
app/code/community/Klevu/Search/controllers/Adminhtml/Klevu/SearchController.php
CHANGED
@@ -17,14 +17,14 @@ class Klevu_Search_Adminhtml_Klevu_SearchController extends Mage_Adminhtml_Contr
|
|
17 |
if (Mage::helper('klevu_search/config')->isProductSyncEnabled()) {
|
18 |
|
19 |
if(Mage::helper('klevu_search/config')->getSyncOptionsFlag() == "2") {
|
20 |
-
|
21 |
Mage::getModel('klevu_search/product_sync')
|
22 |
->markAllProductsForUpdate($store)
|
23 |
->schedule();
|
24 |
-
|
25 |
-
|
26 |
->markAllProductsForUpdate($store);
|
27 |
-
|
28 |
|
29 |
if ($store) {
|
30 |
Mage::helper("klevu_search")->log(Zend_Log::INFO, sprintf("Product Sync scheduled to re-sync ALL products in %s (%s).",
|
@@ -73,13 +73,25 @@ class Klevu_Search_Adminhtml_Klevu_SearchController extends Mage_Adminhtml_Contr
|
|
73 |
/* Use event For other content sync */
|
74 |
Mage::dispatchEvent('content_data_to_sync', array());
|
75 |
$memoryMessage = Mage::getSingleton('core/session')->getMemoryMessage();
|
|
|
|
|
76 |
if(!empty($memoryMessage)) {
|
77 |
-
$
|
78 |
-
|
|
|
|
|
|
|
|
|
|
|
79 |
} else {
|
80 |
-
$
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
Mage::getSingleton('adminhtml/session')->addSuccess($message);
|
|
|
83 |
|
84 |
} catch (Mage_Core_Model_Store_Exception $e) {
|
85 |
Mage::logException($e);
|
@@ -95,12 +107,124 @@ class Klevu_Search_Adminhtml_Klevu_SearchController extends Mage_Adminhtml_Contr
|
|
95 |
Mage::helper('klevu_search/config')->saveSyncOptions($sync_options);
|
96 |
}
|
97 |
|
|
|
|
|
|
|
|
|
98 |
/* clear the cron entry */
|
99 |
public function clear_klevu_cronAction() {
|
100 |
Mage::getModel("klevu_search/product_sync")->clearKlevuCron();
|
101 |
Mage::getSingleton('adminhtml/session')->addSuccess($this->__("Running Klevu product Sync entry cleared from cron_schedule table."));
|
102 |
return $this->_redirectReferer("adminhtml/dashboard");
|
103 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
protected function _isAllowed()
|
106 |
{
|
17 |
if (Mage::helper('klevu_search/config')->isProductSyncEnabled()) {
|
18 |
|
19 |
if(Mage::helper('klevu_search/config')->getSyncOptionsFlag() == "2") {
|
20 |
+
if(Mage::helper("klevu_search/config")->isExternalCronEnabled()) {
|
21 |
Mage::getModel('klevu_search/product_sync')
|
22 |
->markAllProductsForUpdate($store)
|
23 |
->schedule();
|
24 |
+
} else {
|
25 |
+
Mage::getModel('klevu_search/product_sync')
|
26 |
->markAllProductsForUpdate($store);
|
27 |
+
}
|
28 |
|
29 |
if ($store) {
|
30 |
Mage::helper("klevu_search")->log(Zend_Log::INFO, sprintf("Product Sync scheduled to re-sync ALL products in %s (%s).",
|
73 |
/* Use event For other content sync */
|
74 |
Mage::dispatchEvent('content_data_to_sync', array());
|
75 |
$memoryMessage = Mage::getSingleton('core/session')->getMemoryMessage();
|
76 |
+
$failedMessage = Mage::getSingleton('core/session')->getKlevuFailedFlag();
|
77 |
+
|
78 |
if(!empty($memoryMessage)) {
|
79 |
+
$failedMessage = Mage::getSingleton('core/session')->getKlevuFailedFlag();
|
80 |
+
if(!empty($failedMessage) && $failedMessage == 1) {
|
81 |
+
$message = $this->__("Product sync failed.Please consult klevu_search.log file for more information.");
|
82 |
+
} else {
|
83 |
+
$message = $this->__("Data updates have been sent to Klevu.").$memoryMessage;
|
84 |
+
Mage::getSingleton('core/session')->setMemoryMessage("");
|
85 |
+
}
|
86 |
} else {
|
87 |
+
if(!empty($failedMessage) && $failedMessage == 1) {
|
88 |
+
$message = $this->__("Product sync failed.Please consult klevu_search.log file for more information.");
|
89 |
+
} else {
|
90 |
+
$message = $this->__("Data updates have been sent to Klevu.");
|
91 |
+
}
|
92 |
}
|
93 |
Mage::getSingleton('adminhtml/session')->addSuccess($message);
|
94 |
+
Mage::getSingleton('core/session')->setKlevuFailedFlag(1);
|
95 |
|
96 |
} catch (Mage_Core_Model_Store_Exception $e) {
|
97 |
Mage::logException($e);
|
107 |
Mage::helper('klevu_search/config')->saveSyncOptions($sync_options);
|
108 |
}
|
109 |
|
110 |
+
public function trigger_options_configAction() {
|
111 |
+
$triggeroptions = $this->getRequest()->getParam("triggeroptions");
|
112 |
+
Mage::helper('klevu_search/config')->saveTrigger($triggeroptions);
|
113 |
+
}
|
114 |
/* clear the cron entry */
|
115 |
public function clear_klevu_cronAction() {
|
116 |
Mage::getModel("klevu_search/product_sync")->clearKlevuCron();
|
117 |
Mage::getSingleton('adminhtml/session')->addSuccess($this->__("Running Klevu product Sync entry cleared from cron_schedule table."));
|
118 |
return $this->_redirectReferer("adminhtml/dashboard");
|
119 |
}
|
120 |
+
|
121 |
+
public function triggerAction()
|
122 |
+
{
|
123 |
+
$trigger = new Klevu_Trigger();
|
124 |
+
$resource = Mage::getSingleton('core/resource');
|
125 |
+
$write = $resource->getConnection('core_write');
|
126 |
+
$dbname = (string)Mage::getConfig()->getNode('global/resources/default_setup/connection/dbname');
|
127 |
+
$catalog_product_index_price = $resource->getTableName("catalog_product_index_price");
|
128 |
+
$klevu_product_sync = $resource->getTableName("klevu_search/product_sync");
|
129 |
+
$catalogrule_product_price = $resource->getTableName("catalogrule_product_price");
|
130 |
+
$cataloginventory_stock_status = $resource->getTableName("cataloginventory_stock_status");
|
131 |
+
try
|
132 |
+
{
|
133 |
+
if(Mage::helper('klevu_search/config')->getTriggerOptionsFlag() == "1")
|
134 |
+
{
|
135 |
+
$write->query("DROP TRIGGER IF EXISTS Update_KlevuProductSync_For_CPIP;");
|
136 |
+
$write->query("DROP TRIGGER IF EXISTS Update_KlevuProductSync_For_LSA;");
|
137 |
+
$write->query("DROP TRIGGER IF EXISTS Update_KlevuProductSync_For_CPP;");
|
138 |
+
// Set time SQL_TIME_BEFORE / SQL_TIME_AFTER
|
139 |
+
$trigger->setTime($trigger::SQL_TIME_AFTER);
|
140 |
+
$trigger->setName("Update_KlevuProductSync_For_CPIP");
|
141 |
+
// Set time SQL_EVENT_INSERT / SQL_EVENT_UPDATE / SQL_EVENT_DELETE
|
142 |
+
$trigger->setEvent($trigger::SQL_EVENT_UPDATE);
|
143 |
+
|
144 |
+
// Set target table name
|
145 |
+
$trigger->setTarget($catalog_product_index_price);
|
146 |
+
|
147 |
+
// Set Body
|
148 |
+
$trigger->setBody("IF NEW.price <> OLD.price || NEW.final_price <> OLD.final_price THEN
|
149 |
+
IF (SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '".$dbname."' AND table_name = '{$klevu_product_sync}') <> 0 THEN
|
150 |
+
UPDATE {$klevu_product_sync}
|
151 |
+
SET last_synced_at = '0000-00-00 00:00:00'
|
152 |
+
WHERE product_id = NEW.entity_id;
|
153 |
+
END IF ;
|
154 |
+
END IF ;");
|
155 |
+
|
156 |
+
// Assemble query, returns direct SQL for trigger
|
157 |
+
$triggerCreateFinalPriceQuery = $trigger->assemble();
|
158 |
+
// Adapter initiates query
|
159 |
+
$write->query($triggerCreateFinalPriceQuery);
|
160 |
+
//reset previous query for executing new query
|
161 |
+
$trigger->reset();
|
162 |
+
// Set time SQL_TIME_BEFORE / SQL_TIME_AFTER
|
163 |
+
$trigger->setTime($trigger::SQL_TIME_AFTER);
|
164 |
+
$trigger->setName("Update_KlevuProductSync_For_LSA");
|
165 |
+
// Set time SQL_EVENT_INSERT / SQL_EVENT_UPDATE / SQL_EVENT_DELETE
|
166 |
+
$trigger->setEvent($trigger::SQL_EVENT_UPDATE);
|
167 |
+
|
168 |
+
// Set target table name
|
169 |
+
$trigger->setTarget($cataloginventory_stock_status);
|
170 |
+
|
171 |
+
// Set Body
|
172 |
+
$trigger->setBody("IF NEW.stock_status <> OLD.stock_status THEN
|
173 |
+
IF (SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '".$dbname."' AND table_name = '{$klevu_product_sync}') <> 0 THEN
|
174 |
+
UPDATE {$klevu_product_sync}
|
175 |
+
SET last_synced_at = '0000-00-00 00:00:00'
|
176 |
+
WHERE product_id = NEW.product_id;
|
177 |
+
END IF ;
|
178 |
+
END IF ;");
|
179 |
+
|
180 |
+
// Assemble query, returns direct SQL for trigger
|
181 |
+
$triggerCreateStockQuery = $trigger->assemble();
|
182 |
+
// Adapter initiates query
|
183 |
+
$write->query($triggerCreateStockQuery);
|
184 |
+
|
185 |
+
//reset previous query for executing new query
|
186 |
+
$trigger->reset();
|
187 |
+
// Set time SQL_TIME_BEFORE / SQL_TIME_AFTER
|
188 |
+
if(Mage::getEdition() == "Enterprise") {
|
189 |
+
$trigger->setTime($trigger::SQL_TIME_BEFORE);
|
190 |
+
} else {
|
191 |
+
$trigger->setTime($trigger::SQL_TIME_AFTER);
|
192 |
+
}
|
193 |
+
$trigger->setName("Update_KlevuProductSync_For_CPP");
|
194 |
+
// Set time SQL_EVENT_INSERT / SQL_EVENT_UPDATE / SQL_EVENT_DELETE
|
195 |
+
$trigger->setEvent($trigger::SQL_EVENT_UPDATE);
|
196 |
+
|
197 |
+
// Set target table name
|
198 |
+
$trigger->setTarget($catalogrule_product_price);
|
199 |
+
|
200 |
+
// Set Body
|
201 |
+
$trigger->setBody("IF NEW.rule_price <> OLD.rule_price THEN
|
202 |
+
IF (SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '".$dbname."' AND table_name = '{$klevu_product_sync}') <> 0 THEN
|
203 |
+
UPDATE {$klevu_product_sync}
|
204 |
+
SET last_synced_at = '0000-00-00 00:00:00'
|
205 |
+
WHERE product_id = NEW.product_id;
|
206 |
+
END IF ;
|
207 |
+
END IF ;");
|
208 |
+
|
209 |
+
// Assemble query, returns direct SQL for trigger
|
210 |
+
$triggerCreateRulePriceQuery = $trigger->assemble();
|
211 |
+
// Adapter initiates query
|
212 |
+
$write->query($triggerCreateRulePriceQuery);
|
213 |
+
Mage::getSingleton('adminhtml/session')->addSuccess($this->__("Trigger is activated."));
|
214 |
+
return $this->_redirectReferer("adminhtml/dashboard");
|
215 |
+
}
|
216 |
+
else
|
217 |
+
{
|
218 |
+
$write->query("DROP TRIGGER IF EXISTS Update_KlevuProductSync_For_CPIP;");
|
219 |
+
$write->query("DROP TRIGGER IF EXISTS Update_KlevuProductSync_For_LSA;");
|
220 |
+
$write->query("DROP TRIGGER IF EXISTS Update_KlevuProductSync_For_CPP;");
|
221 |
+
Mage::getSingleton('adminhtml/session')->addSuccess($this->__("Trigger is deactivated."));
|
222 |
+
return $this->_redirectReferer("adminhtml/dashboard");
|
223 |
+
}
|
224 |
+
} catch (Mage_Core_Model_Store_Exception $e) {
|
225 |
+
Mage::logException($e);
|
226 |
+
}
|
227 |
+
}
|
228 |
|
229 |
protected function _isAllowed()
|
230 |
{
|
app/code/community/Klevu/Search/controllers/IndexController.php
CHANGED
@@ -10,7 +10,7 @@ class Klevu_Search_IndexController extends Mage_Core_Controller_Front_Action {
|
|
10 |
$query = $this->getRequest()->getParam('q');
|
11 |
if(!empty($query)) {
|
12 |
$head = $this->getLayout()->getBlock('head');
|
13 |
-
$head->setTitle($this->__(
|
14 |
} else {
|
15 |
$this->getLayout()->getBlock("head")->setTitle($this->__("Search"));
|
16 |
}
|
@@ -21,10 +21,18 @@ class Klevu_Search_IndexController extends Mage_Core_Controller_Front_Action {
|
|
21 |
"link" => Mage::getBaseUrl()
|
22 |
));
|
23 |
|
24 |
-
|
25 |
-
|
26 |
-
"
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
$this->renderLayout();
|
30 |
}
|
@@ -91,12 +99,7 @@ class Klevu_Search_IndexController extends Mage_Core_Controller_Front_Action {
|
|
91 |
}else {
|
92 |
Mage::getSingleton('core/session')->addSuccess($response->getMessage());
|
93 |
}
|
94 |
-
|
95 |
-
$content ="";
|
96 |
-
$allIndex= Mage::getSingleton('index/indexer')->getProcessesCollection();
|
97 |
-
foreach ($allIndex as $index) {
|
98 |
-
$content .= $index->getIndexerCode().":".$index->getStatus().'<br>';
|
99 |
-
}
|
100 |
$response = Mage::getModel("klevu_search/api_action_debuginfo")->debugKlevu(array('apiKey'=>$debugapi,'klevuLog'=>$content,'type'=>'index'));
|
101 |
if($response->getMessage()=="success") {
|
102 |
Mage::getSingleton('core/session')->addSuccess("Status of magento indices sent.");
|
10 |
$query = $this->getRequest()->getParam('q');
|
11 |
if(!empty($query)) {
|
12 |
$head = $this->getLayout()->getBlock('head');
|
13 |
+
$head->setTitle($this->__("Search results for: '%s'",$query));
|
14 |
} else {
|
15 |
$this->getLayout()->getBlock("head")->setTitle($this->__("Search"));
|
16 |
}
|
21 |
"link" => Mage::getBaseUrl()
|
22 |
));
|
23 |
|
24 |
+
if(!empty($query)) {
|
25 |
+
$breadcrumbs->addCrumb("Search Result", array(
|
26 |
+
"label" => $this->__($this->__("Search results for: '%s'",$query)),
|
27 |
+
"title" => $this->__($this->__("Search results for: '%s'",$query))
|
28 |
+
));
|
29 |
+
|
30 |
+
} else {
|
31 |
+
$breadcrumbs->addCrumb("Search Result", array(
|
32 |
+
"label" => $this->__("Search results"),
|
33 |
+
"title" => $this->__("Search results")
|
34 |
+
));
|
35 |
+
}
|
36 |
}
|
37 |
$this->renderLayout();
|
38 |
}
|
99 |
}else {
|
100 |
Mage::getSingleton('core/session')->addSuccess($response->getMessage());
|
101 |
}
|
102 |
+
|
|
|
|
|
|
|
|
|
|
|
103 |
$response = Mage::getModel("klevu_search/api_action_debuginfo")->debugKlevu(array('apiKey'=>$debugapi,'klevuLog'=>$content,'type'=>'index'));
|
104 |
if($response->getMessage()=="success") {
|
105 |
Mage::getSingleton('core/session')->addSuccess("Status of magento indices sent.");
|
app/code/community/Klevu/Search/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Klevu_Search>
|
5 |
-
<version>1.2.
|
6 |
</Klevu_Search>
|
7 |
</modules>
|
8 |
<global>
|
@@ -49,6 +49,7 @@
|
|
49 |
</klevu_search_setup>
|
50 |
</resources>
|
51 |
<events>
|
|
|
52 |
<admin_system_config_changed_section_klevu_search>
|
53 |
<observers>
|
54 |
<klevu_search_removetest>
|
@@ -322,8 +323,8 @@
|
|
322 |
<hostname>box.klevu.com</hostname>
|
323 |
<rest_hostname>rest.klevu.com</rest_hostname>
|
324 |
<test_hostname>box.klevu.com</test_hostname>
|
325 |
-
<test_cloud_search_url>
|
326 |
-
<cloud_search_url>
|
327 |
<analytics_url>stats.klevu.com</analytics_url>
|
328 |
<test_analytics_url>stats.klevu.com</test_analytics_url>
|
329 |
<js_url>js.klevu.com</js_url>
|
@@ -356,6 +357,9 @@
|
|
356 |
<image_setting>
|
357 |
<enabled>0</enabled>
|
358 |
</image_setting>
|
|
|
|
|
|
|
359 |
</klevu_search>
|
360 |
</default>
|
361 |
<phpunit>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Klevu_Search>
|
5 |
+
<version>1.2.13</version>
|
6 |
</Klevu_Search>
|
7 |
</modules>
|
8 |
<global>
|
49 |
</klevu_search_setup>
|
50 |
</resources>
|
51 |
<events>
|
52 |
+
|
53 |
<admin_system_config_changed_section_klevu_search>
|
54 |
<observers>
|
55 |
<klevu_search_removetest>
|
323 |
<hostname>box.klevu.com</hostname>
|
324 |
<rest_hostname>rest.klevu.com</rest_hostname>
|
325 |
<test_hostname>box.klevu.com</test_hostname>
|
326 |
+
<test_cloud_search_url>eucs4.klevu.com</test_cloud_search_url>
|
327 |
+
<cloud_search_url>eucs5.klevu.com</cloud_search_url>
|
328 |
<analytics_url>stats.klevu.com</analytics_url>
|
329 |
<test_analytics_url>stats.klevu.com</test_analytics_url>
|
330 |
<js_url>js.klevu.com</js_url>
|
357 |
<image_setting>
|
358 |
<enabled>0</enabled>
|
359 |
</image_setting>
|
360 |
+
<description_setting>
|
361 |
+
<enabled>0</enabled>
|
362 |
+
</description_setting>
|
363 |
</klevu_search>
|
364 |
</default>
|
365 |
<phpunit>
|
app/code/community/Klevu/Search/etc/system.xml
CHANGED
@@ -427,6 +427,35 @@
|
|
427 |
</enabled>
|
428 |
</fields>
|
429 |
</image_setting>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
430 |
<developer translate="label">
|
431 |
<label>Developer Settings</label>
|
432 |
<sort_order>1000</sort_order>
|
@@ -484,6 +513,24 @@
|
|
484 |
<show_in_website>0</show_in_website>
|
485 |
<show_in_store>0</show_in_store>
|
486 |
</sendlog>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
487 |
</fields>
|
488 |
</developer>
|
489 |
</groups>
|
427 |
</enabled>
|
428 |
</fields>
|
429 |
</image_setting>
|
430 |
+
<description_setting translate="label">
|
431 |
+
<label>Product Description Settings</label>
|
432 |
+
<sort_order>9</sort_order>
|
433 |
+
<show_in_default>1</show_in_default>
|
434 |
+
<show_in_website>0</show_in_website>
|
435 |
+
<show_in_store>1</show_in_store>
|
436 |
+
<expanded>0</expanded>
|
437 |
+
<fields>
|
438 |
+
<info_enabled translate="label comment">
|
439 |
+
<label></label>
|
440 |
+
<comment><![CDATA[Switch to store view scope to set]]></comment>
|
441 |
+
<frontend_type>label</frontend_type>
|
442 |
+
<sort_order>100</sort_order>
|
443 |
+
<show_in_default>1</show_in_default>
|
444 |
+
<show_in_website>0</show_in_website>
|
445 |
+
<show_in_store>0</show_in_store>
|
446 |
+
</info_enabled>
|
447 |
+
<enabled translate="label comment">
|
448 |
+
<label><![CDATA[Use Configurable Product's description in Search]]></label>
|
449 |
+
<comment><![CDATA[Choose Yes to use configurable product's description in search.Please make sure to resynchronize products by clicking on the "Sync Data for This Store" under the "Data Sync Settings."]]></comment>
|
450 |
+
<frontend_type>select</frontend_type>
|
451 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
452 |
+
<sort_order>100</sort_order>
|
453 |
+
<show_in_default>0</show_in_default>
|
454 |
+
<show_in_website>0</show_in_website>
|
455 |
+
<show_in_store>1</show_in_store>
|
456 |
+
</enabled>
|
457 |
+
</fields>
|
458 |
+
</description_setting>
|
459 |
<developer translate="label">
|
460 |
<label>Developer Settings</label>
|
461 |
<sort_order>1000</sort_order>
|
513 |
<show_in_website>0</show_in_website>
|
514 |
<show_in_store>0</show_in_store>
|
515 |
</sendlog>
|
516 |
+
<trigger_option translate="label">
|
517 |
+
<label>Using an ERP OR 3rd party tool for product updates</label>
|
518 |
+
<comment><![CDATA[If store is integrated with an ERP OR 3rd party tool for product updates (i.e stock or price data),set this value to 'Yes']]></comment>
|
519 |
+
<frontend_type>select</frontend_type>
|
520 |
+
<source_model>klevu_search/system_config_source_triggeroptions</source_model>
|
521 |
+
<sort_order>356</sort_order>
|
522 |
+
<show_in_default>1</show_in_default>
|
523 |
+
<show_in_website>0</show_in_website>
|
524 |
+
<show_in_store>0</show_in_store>
|
525 |
+
</trigger_option>
|
526 |
+
<trigger_button>
|
527 |
+
<label></label>
|
528 |
+
<frontend_model>klevu_search/adminhtml_form_field_trigger_button</frontend_model>
|
529 |
+
<sort_order>357</sort_order>
|
530 |
+
<show_in_default>1</show_in_default>
|
531 |
+
<show_in_website>0</show_in_website>
|
532 |
+
<show_in_store>0</show_in_store>
|
533 |
+
</trigger_button>
|
534 |
</fields>
|
535 |
</developer>
|
536 |
</groups>
|
app/design/adminhtml/default/default/template/klevu/search/form/field/trigger/button.phtml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php /** @var Klevu_Search_Block_Adminhtml_Form_Field_Sync_Button $this */ ?>
|
2 |
+
<button id="<?php echo $this->getHtmlId() ?>" class="scalable" type="button">
|
3 |
+
<span><?php echo $this->__($this->getButtonLabel()) ?></span>
|
4 |
+
</button>
|
5 |
+
<script type="text/javascript">
|
6 |
+
$("<?php echo $this->getHtmlId() ?>").observe("click", function () {
|
7 |
+
if(document.getElementById('klevu_search_developer_trigger_option')) {
|
8 |
+
var triggeroptions = document.getElementById('klevu_search_developer_trigger_option').value;
|
9 |
+
new Ajax.Request("<?php echo $this->getUrl('adminhtml/klevu_search/trigger_options_config'); ?>" + '?triggeroptions=' + triggeroptions, {
|
10 |
+
method: 'POST',
|
11 |
+
onComplete: function(data) {
|
12 |
+
setLocation("<?php echo $this->getDestinationUrl() ?>");
|
13 |
+
}
|
14 |
+
});
|
15 |
+
} else {
|
16 |
+
setLocation("<?php echo $this->getDestinationUrl() ?>");
|
17 |
+
}
|
18 |
+
|
19 |
+
});
|
20 |
+
</script>
|
app/design/frontend/base/default/template/klevu/search/form_js.phtml
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
));
|
8 |
?>
|
9 |
<script type="text/javascript">
|
10 |
-
var klevu_sessionId = '<?php echo session_id();?>';
|
11 |
var allInputs = document.getElementsByTagName( 'input' );
|
12 |
var klevu_current_version = '<?php echo Mage::getConfig()->getModuleConfig('Klevu_Search')->version; ?>';
|
13 |
<?php
|
@@ -91,7 +91,7 @@
|
|
91 |
if($login) { ?>
|
92 |
<script type="text/javascript">
|
93 |
var klevu_loginCustomerGroup = "<?php echo Mage::getSingleton('customer/session')->getCustomerGroupId(); ?>";
|
94 |
-
var
|
95 |
</script>
|
96 |
<?php }?>
|
97 |
<?php
|
7 |
));
|
8 |
?>
|
9 |
<script type="text/javascript">
|
10 |
+
var klevu_sessionId = '<?php echo md5(session_id());?>';
|
11 |
var allInputs = document.getElementsByTagName( 'input' );
|
12 |
var klevu_current_version = '<?php echo Mage::getConfig()->getModuleConfig('Klevu_Search')->version; ?>';
|
13 |
<?php
|
91 |
if($login) { ?>
|
92 |
<script type="text/javascript">
|
93 |
var klevu_loginCustomerGroup = "<?php echo Mage::getSingleton('customer/session')->getCustomerGroupId(); ?>";
|
94 |
+
var klevu_idCode = "<?php echo "enc-".md5(Mage::getSingleton('customer/session')->getCustomer()->getEmail()); ?>";
|
95 |
</script>
|
96 |
<?php }?>
|
97 |
<?php
|
lib/Klevu/Trigger.php
ADDED
@@ -0,0 +1,335 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* @category Magento
|
4 |
+
* @package Magento_Db
|
5 |
+
* @copyright Copyright (c) 2012 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Magento_Db_Sql_Trigger
|
11 |
+
*
|
12 |
+
* @category Magento
|
13 |
+
* @package Magento_Db
|
14 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
15 |
+
*/
|
16 |
+
class Klevu_Trigger
|
17 |
+
{
|
18 |
+
const NAME = 'name';
|
19 |
+
const TARGET = 'target';
|
20 |
+
const TIME = 'time';
|
21 |
+
const EVENT = 'event';
|
22 |
+
const SCOPE = 'scope';
|
23 |
+
const BODY = 'body';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* SQL constants
|
27 |
+
*/
|
28 |
+
const SQL_TIME_BEFORE = 'BEFORE';
|
29 |
+
const SQL_TIME_AFTER = 'AFTER';
|
30 |
+
const SQL_EVENT_INSERT = 'INSERT';
|
31 |
+
const SQL_EVENT_UPDATE = 'UPDATE';
|
32 |
+
const SQL_EVENT_DELETE = 'DELETE';
|
33 |
+
const SQL_FOR_EACH_ROW = 'FOR EACH ROW';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Trigger parts
|
37 |
+
*
|
38 |
+
* @var array
|
39 |
+
*/
|
40 |
+
protected $_parts = array();
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Allowed time types
|
44 |
+
*
|
45 |
+
* @var array
|
46 |
+
*/
|
47 |
+
protected $_timeTypes = array(
|
48 |
+
self::SQL_TIME_AFTER,
|
49 |
+
self::SQL_TIME_BEFORE
|
50 |
+
);
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Allowed event types
|
54 |
+
*
|
55 |
+
* @var array
|
56 |
+
*/
|
57 |
+
protected $_eventTypes = array(
|
58 |
+
self::SQL_EVENT_INSERT,
|
59 |
+
self::SQL_EVENT_UPDATE,
|
60 |
+
self::SQL_EVENT_DELETE
|
61 |
+
);
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Initial trigger structure, for MySQL scope is always "FOR EACH ROW".
|
65 |
+
* Time "AFTER" is default
|
66 |
+
*
|
67 |
+
* @var array
|
68 |
+
*/
|
69 |
+
protected static $_partsInit = array(
|
70 |
+
self::TARGET => null,
|
71 |
+
self::TIME => self::SQL_TIME_AFTER,
|
72 |
+
self::EVENT => null,
|
73 |
+
self::SCOPE => self::SQL_FOR_EACH_ROW,
|
74 |
+
self::BODY => array()
|
75 |
+
);
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Constructor
|
79 |
+
*/
|
80 |
+
public function __construct()
|
81 |
+
{
|
82 |
+
$this->_parts = self::$_partsInit;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Validate where all trigger parts set?
|
87 |
+
*
|
88 |
+
* @return Magento_Db_Sql_Trigger
|
89 |
+
* @throws Exception
|
90 |
+
*/
|
91 |
+
protected function _validateIsComplete()
|
92 |
+
{
|
93 |
+
foreach (array_keys(self::$_partsInit) as $part) {
|
94 |
+
if (empty($this->_parts[$part])) {
|
95 |
+
throw new Exception('Part [' . $part . '] should be set');
|
96 |
+
}
|
97 |
+
}
|
98 |
+
return $this;
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Set trigger part
|
103 |
+
*
|
104 |
+
* @param $part
|
105 |
+
* @param $value
|
106 |
+
* @return Magento_Db_Sql_Trigger
|
107 |
+
* @throws InvalidArgumentException
|
108 |
+
*/
|
109 |
+
protected function _setPart($part, $value)
|
110 |
+
{
|
111 |
+
if ($value != null) {
|
112 |
+
$this->_parts[$part] = $value;
|
113 |
+
} else {
|
114 |
+
throw new InvalidArgumentException('Part [' . $part . '] can not be empty');
|
115 |
+
}
|
116 |
+
return $this;
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Set trigger part
|
121 |
+
*
|
122 |
+
* @param $part
|
123 |
+
* @return string|array
|
124 |
+
* @throws Exception
|
125 |
+
*/
|
126 |
+
protected function _getPart($part)
|
127 |
+
{
|
128 |
+
if (isset($this->_parts[$part])) {
|
129 |
+
return $this->_parts[$part];
|
130 |
+
}
|
131 |
+
|
132 |
+
throw new Exception('Part [' . $part . '] does\'t exists');
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Set body part to trigger
|
137 |
+
*
|
138 |
+
* @param $part
|
139 |
+
* @param $value
|
140 |
+
* @return Magento_Db_Sql_Trigger
|
141 |
+
* @throws InvalidArgumentException
|
142 |
+
*/
|
143 |
+
public function setBodyPart($part, $value)
|
144 |
+
{
|
145 |
+
if ($value != null) {
|
146 |
+
$this->_parts[self::BODY][$part] = $value;
|
147 |
+
} else {
|
148 |
+
throw new InvalidArgumentException('Part [' . $part . '] can not be empty');
|
149 |
+
}
|
150 |
+
return $this;
|
151 |
+
}
|
152 |
+
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Set body part to trigger
|
156 |
+
*
|
157 |
+
* @param string $part
|
158 |
+
* @return string
|
159 |
+
* @throws Exception
|
160 |
+
*/
|
161 |
+
public function getBodyPart($part)
|
162 |
+
{
|
163 |
+
if (isset($this->_parts[self::BODY][$part])) {
|
164 |
+
return $this->_parts[self::BODY][$part];
|
165 |
+
}
|
166 |
+
|
167 |
+
throw new Exception('Part [' . $part . '] does\'t exists');
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Generate trigger name
|
172 |
+
*
|
173 |
+
* @return string
|
174 |
+
*/
|
175 |
+
protected function _generateTriggerName()
|
176 |
+
{
|
177 |
+
return strtolower('trg_' . $this->_parts[self::TARGET]
|
178 |
+
. '_' . $this->_parts[self::TIME]
|
179 |
+
. '_' . $this->_parts[self::EVENT]);
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Set trigger time {BEFORE/AFTER}
|
184 |
+
* @param $time
|
185 |
+
* @return Magento_Db_Sql_Trigger
|
186 |
+
* @throws InvalidArgumentException
|
187 |
+
*/
|
188 |
+
public function setTime($time)
|
189 |
+
{
|
190 |
+
if (in_array($time, $this->getTimeTypes())) {
|
191 |
+
$this->_setPart(self::TIME, $time);
|
192 |
+
} else {
|
193 |
+
throw new InvalidArgumentException('Unsupported time type!');
|
194 |
+
}
|
195 |
+
return $this;
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Set trigger event {INSERT/UPDATE/DELETE}
|
200 |
+
*
|
201 |
+
* @param $event
|
202 |
+
* @return Magento_Db_Sql_Trigger
|
203 |
+
* @throws InvalidArgumentException
|
204 |
+
*/
|
205 |
+
public function setEvent($event)
|
206 |
+
{
|
207 |
+
if (in_array($event, $this->getEventTypes())) {
|
208 |
+
$this->_setPart(self::EVENT, $event);
|
209 |
+
} else {
|
210 |
+
throw new InvalidArgumentException('Unsupported event type!');
|
211 |
+
}
|
212 |
+
return $this;
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* Set trigger target, table name
|
217 |
+
*
|
218 |
+
* @param $target
|
219 |
+
* @return Magento_Db_Sql_Trigger
|
220 |
+
*/
|
221 |
+
public function setTarget($target)
|
222 |
+
{
|
223 |
+
$this->_setPart(self::TARGET, $target);
|
224 |
+
return $this;
|
225 |
+
}
|
226 |
+
|
227 |
+
/**
|
228 |
+
* Set trigger name
|
229 |
+
*
|
230 |
+
* @param $name
|
231 |
+
* @return Magento_Db_Sql_Trigger
|
232 |
+
*/
|
233 |
+
public function setName($name)
|
234 |
+
{
|
235 |
+
$this->_setPart(self::NAME, $name);
|
236 |
+
return $this;
|
237 |
+
}
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Retrieve trigger name.
|
241 |
+
* If trigger name does not exists generate it by template 'trg_{TARGET}_{TIME}_{EVENT}'.
|
242 |
+
*
|
243 |
+
* @return mixed
|
244 |
+
*/
|
245 |
+
public function getName()
|
246 |
+
{
|
247 |
+
if (empty($this->_parts[self::NAME])) {
|
248 |
+
$this->_parts[self::NAME] = $this->_generateTriggerName();
|
249 |
+
}
|
250 |
+
return $this->_parts[self::NAME];
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Set trigger body
|
255 |
+
*
|
256 |
+
* @param array|string $body
|
257 |
+
* @return Magento_Db_Sql_Trigger
|
258 |
+
*/
|
259 |
+
public function setBody($body)
|
260 |
+
{
|
261 |
+
if (!is_array($body)) {
|
262 |
+
$body = array($body);
|
263 |
+
}
|
264 |
+
$this->_setPart(self::BODY, $body);
|
265 |
+
return $this;
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Get body parts of trigger
|
270 |
+
*
|
271 |
+
* @return array
|
272 |
+
*/
|
273 |
+
public function getBody()
|
274 |
+
{
|
275 |
+
return $this->_getPart(self::BODY);
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* Get trigger creating SQL script
|
280 |
+
*
|
281 |
+
* @return string
|
282 |
+
*/
|
283 |
+
public function assemble()
|
284 |
+
{
|
285 |
+
$this->_validateIsComplete();
|
286 |
+
return "CREATE TRIGGER "
|
287 |
+
. $this->getName() . "\n"
|
288 |
+
. $this->_parts[self::TIME] . " " . $this->_parts[self::EVENT] . "\n"
|
289 |
+
. "ON " . $this->_parts[self::TARGET] . " " . $this->_parts[self::SCOPE] . "\n"
|
290 |
+
. "BEGIN\n"
|
291 |
+
. implode("\n", $this->_parts[self::BODY]) . "\n"
|
292 |
+
. "END;\n";
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Implement magic method
|
297 |
+
*
|
298 |
+
* @return string
|
299 |
+
*/
|
300 |
+
public function __toString()
|
301 |
+
{
|
302 |
+
return $this->assemble();
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Retrieve list of allowed events
|
307 |
+
*
|
308 |
+
* @return array
|
309 |
+
*/
|
310 |
+
public function getEventTypes()
|
311 |
+
{
|
312 |
+
return $this->_eventTypes;
|
313 |
+
}
|
314 |
+
|
315 |
+
/**
|
316 |
+
* Retrieve list of allowed time types
|
317 |
+
*
|
318 |
+
* @return array
|
319 |
+
*/
|
320 |
+
public function getTimeTypes()
|
321 |
+
{
|
322 |
+
return $this->_timeTypes;
|
323 |
+
}
|
324 |
+
|
325 |
+
/**
|
326 |
+
* Reset trigger parts
|
327 |
+
*
|
328 |
+
* @return Magento_Db_Sql_Trigger
|
329 |
+
*/
|
330 |
+
public function reset()
|
331 |
+
{
|
332 |
+
$this->_parts = self::$_partsInit;
|
333 |
+
return $this;
|
334 |
+
}
|
335 |
+
}
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Klevu_SmartSearch</name>
|
4 |
-
<version>1.2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://klevu.com">Commercial</license>
|
7 |
<channel>community</channel>
|
@@ -14,13 +14,22 @@ Intelligent boosting - Just select products you want to promote, no need to manu
|
|
14 |
Dynamic filters - Shoppers get excellent shopping experience.
|
15 |
Search as you type - Shoppers see results even with long keywords.
|
16 |
Actionable insights - Drive traffic by learning from shoppers' search patterns.</description>
|
17 |
-
<notes>-
|
18 |
-
-
|
19 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
<authors><author><name>Klevu</name><user>Klevu</user><email>niraj.aswani@klevu.com</email></author></authors>
|
21 |
-
<date>2017-
|
22 |
-
<time>
|
23 |
-
<contents><target name="mageetc"><dir name="modules"><file name="Klevu_Search.xml" hash="49674c121481f67bcfc2f31bb21e5aaf"/><file name="Klevu_Boosting.xml" hash="e5e64cc12dacfc956c2b0cb2b47dd0c4"/><file name="Klevu_Content.xml" hash="26c6470ff0f3b121bc6eb85686ac285d"/><file name="Klevu_Searchterms.xml" hash="3b38e76a2c869aedf4caa37ac81f6325"/><file name="Klevu_Addtocart.xml" hash="1702387194f7bb2addab6b7b0c701505"/></dir></target><target name="magecommunity"><dir name="Klevu"><dir name="Boosting"><dir name="Block"><dir name="Adminhtml"><dir name="Boost"><dir name="Edit"><file name="Form.php" hash="f383d355c07e8f6930037a3cb663fea8"/><dir name="Tab"><file name="Actions.php" hash="bea65d14949e38f7e2470f596e6a8757"/><file name="Conditions.php" hash="f471bf87addc58de5fc577efb1ef000f"/><file name="Form.php" hash="ceb369273be213ab6c0699edf029f8f5"/></dir><file name="Tabs.php" hash="956926b08afbd7d5c24d4015b8d5fb1a"/></dir><file name="Edit.php" hash="102725d29f9a72655baa68f334837d2c"/><file name="Grid.php" hash="3e9f1e10943666904bdf2cf895111e19"/></dir><file name="Boost.php" hash="ca0e56e107ef39310f81d43ad16f6ae5"/><dir name="Form"><dir name="Field"><dir name="Rule"><file name="Button.php" hash="54234efa375229e734b38f0f1daa7c44"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="5dd9cdbc59b7886d7248a49013ee0692"/></dir><dir name="Model"><dir name="Boost"><dir name="Rule"><dir name="Condition"><file name="Combine.php" hash="f01c5f12ea202559feed422130df4d5f"/><file name="Product.php" hash="f35bd54c39f6412db9e08b78a00687fc"/></dir></dir></dir><file name="Boost.php" hash="b11c92c884361d22e705bde6f18f413a"/><dir name="Mysql4"><dir name="Boost"><file name="Collection.php" hash="1ac0d91b93e00c6ca0c6229b8dce69e0"/></dir><file name="Boost.php" hash="2d7c34e4800945c9fdcab56b7d41d7da"/></dir><file name="Observer.php" hash="5f9982c232746da15c1b0ee7ab5581de"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Boosting"><file name="Attribute.php" hash="6debec1229df22e3f4eda58dd781053a"/></dir></dir></dir></dir></dir><dir name="Test"><dir name="Model"><dir name="Boost"><dir name="fixtures"><file name="testGetMatchingProductIds.yaml" hash="023c1cc74e5525ccfbed76d38674243d"/></dir></dir><file name="Boost.php" hash="e2cba3650eeed3e39ed29381a6014579"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="BoostController.php" hash="0f2ce187d18fe74c8445becd6e44acfc"/></dir></dir><dir name="etc"><file name="config.xml" hash="66c1bcd5daab17ef03d671553670cac5"/><file name="system.xml" hash="a9f3647f178f8f373c31a90569ffd651"/></dir><dir name="sql"><dir name="klevu_boosting_setup"><file name="mysql4-install-10.0.0.php" hash="b36ab1905efd2ba496635fd8830d7438"/></dir></dir></dir><dir name="Search"><dir name="Block"><dir name="Adminhtml"><dir name="Form"><dir name="Field"><dir name="Attribute"><file name="Mappings.php" hash="293c4d19663fa3aad76c17287fec2114"/></dir><dir name="Automatic"><dir name="Attribute"><file name="Mappings.php" hash="b0d192bd03319957d09f34d510914a2f"/></dir></dir><dir name="Html"><file name="Select.php" hash="adc22272b93deb46b524f46f7000972f"/></dir><dir name="Image"><file name="Log.php" hash="a5775de3c82a73e0cda865586a2d10ee"/></dir><dir name="Store"><dir name="Level"><file name="Label.php" hash="df3680c83924ece232eb14bd0b7ac9b3"/></dir><file name="Status.php" hash="0e023c95f20bea421ea6e7f4e64e5eae"/></dir><dir name="Sync"><file name="Button.php" hash="aeec22e3e952e40d1e1bed33a9e8185b"/></dir></dir><file name="Infolinks.php" hash="201b94b4b627bf9053424fcd70bbd101"/><file name="Information.php" hash="b422d8aa8524b4277f2b4013e90379a0"/><file name="Klevuinfo.php" hash="d2532a3a273acd33515165b3d98ac4d1"/><file name="Syncoptionsinfo.php" hash="28621e3bd17eb8216639fa3a2da47840"/></dir><file name="Notifications.php" hash="9fc2511a89e04cb2c9ce86fc7c3684cd"/><dir name="System"><dir name="Config"><dir name="Form"><file name="Field.php" hash="d4e9023e6cdbedceb7145d248168d33b"/></dir></dir></dir><dir name="Wizard"><dir name="Config"><file name="Button.php" hash="d17ba7640d5777612ab9fb27f85aa5c9"/></dir><dir name="Configure"><file name="Attributes.php" hash="3801cd4ebb45b3d29cfbacf830af2874"/><file name="Store.php" hash="a5e900bf91db47115ce54497669fd384"/><file name="User.php" hash="b885cf0d838e5de5d734c4c0c76cb173"/><file name="Userplan.php" hash="5fc147d5266c2251b4388800fe8f78fb"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><file name="Tracking.php" hash="049f45dfc363c0f604ef57472611d7cd"/></dir></dir></dir><dir name="Helper"><file name="Api.php" hash="f7f1b51781d27032c114ec2392cb5371"/><file name="Compat.php" hash="3726862a4576a53c5a44dda59a1e9a86"/><file name="Config.php" hash="93b5584d603c4791649e2821713c488e"/><file name="Data.php" hash="c0be49f3f6a8e3a35c170bf85583fc6c"/></dir><dir name="Model"><dir name="Adminhtml"><file name="Comment.php" hash="2d3cb94ca5bea4c6ea50f9aa9dd3a936"/></dir><dir name="Api"><dir name="Action"><file name="Addrecords.php" hash="8a78275bcf4f266d065c0b3ae10fdfdd"/><file name="Adduser.php" hash="d8b6e6d37fe6ce522747fd6951c8e9df"/><file name="Addwebstore.php" hash="ea33f2c7032682a6ec2bdb8324cdaf0e"/><file name="Checkuserdetail.php" hash="ebe4eeaf8986684bb7081932e68553bf"/><file name="Debuginfo.php" hash="dd92df091719aa73eca07a08d9681d42"/><file name="Deleterecords.php" hash="0e404db0aab2c58ff90a4e7e4fe73818"/><file name="Features.php" hash="f3f22d268fe2e6651cdab8f12c56599a"/><file name="Getplans.php" hash="82715646d1fdacee524525c51c47138f"/><file name="Gettimezone.php" hash="4bb572b68f42236d765f8194e413b1ca"/><file name="Getuserdetail.php" hash="849a0f04bfdbf39ae75a2627d26717ca"/><file name="Idsearch.php" hash="9b8ba6fde615675884e6e0b6a49e8200"/><file name="Producttracking.php" hash="d88a30dcc3926ad0626591567868a04b"/><file name="Removetestmode.php" hash="bd2e7ecf6c233b1430e2989b2b62000f"/><file name="Searchtermtracking.php" hash="450a05e0598618130ef06d71410a3fcc"/><file name="Startsession.php" hash="14edcef879dce92c76a9c78d4106fc6c"/><file name="Updaterecords.php" hash="9e99ce8da72a030b10e9af8353233427"/></dir><file name="Action.php" hash="792f3fe4348f7d13bdf09562ec0d8b59"/><dir name="Request"><file name="Get.php" hash="2d6f510d4dcc171b8e44322b76a49f93"/><file name="Post.php" hash="a46b484a50ced15e2c02deb16bbeb6bb"/><file name="Xml.php" hash="6fb6945b88624571b332733076f1cd3b"/></dir><file name="Request.php" hash="7f15814e8a01982499563e0e056d2d52"/><dir name="Response"><file name="Data.php" hash="9dbe8e28a501feacb07a6ce2bcc4deb8"/><file name="Empty.php" hash="5988ec43c1756cf4acfedb212787b2b9"/><file name="Invalid.php" hash="8287280c3b99f64e08cf54a0bf65e4a1"/><file name="Message.php" hash="5b6d717c75014e798e619e3df2008d29"/><file name="Search.php" hash="96b9bdef60811c4d994cb457f0d355a9"/><file name="Timezone.php" hash="ffa4d48e42fa52d2c928e202c2af61fd"/></dir><file name="Response.php" hash="9d85b7a9e899375df6cffb375cd59ed7"/></dir><dir name="Catalog"><dir name="Model"><file name="Config.php" hash="57ae55e3cea3dd1b4c60dafcb06d5efd"/></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="104ac92f6ef59879b593a9f1baffd562"/><file name="Category.php" hash="39e56a1a1a1070f09fce2bec6d48c4ce"/><file name="Price.php" hash="4ca1e56183364670fb39a88ea5666c13"/></dir></dir><dir name="Resource"><dir name="Fulltext"><file name="Collection.php" hash="8e970880623949bdd01c620b64c518fe"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="d675e50ad7c5277b9ca4100770ac16d3"/></dir></dir></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="ef07b22f48c4ca72066bf90a1cf9ac27"/></dir></dir><file name="Cron.php" hash="0936cc2667e056182668c9f61fc171bc"/><file name="Notification.php" hash="771d45868668c5b925e3bf2202482b43"/><file name="Observer.php" hash="db4c59a2da08c5f4471a96c6eaa56c31"/><dir name="Order"><file name="Sync.php" hash="8268fe69f6f3f326bab438eb6af78e18"/></dir><dir name="Product"><file name="Sync.php" hash="6874fb9a8669fe2a8a57e2e7bfb1a1ef"/></dir><dir name="Resource"><dir name="Notification"><file name="Collection.php" hash="936a242678b1c89853149e9dc77b6aff"/></dir><file name="Notification.php" hash="f3206c5286bf6ccb4df268c54fcff0f5"/></dir><file name="Session.php" hash="a4ab94b093ba8a414fbfa031f0d2cabe"/><file name="Sync.php" hash="6c032e3e9a2d6b45c92cbcdb4b6a44e4"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Additional"><file name="Attributes.php" hash="d91e1af65488d647b035fbb100a4eb1d"/></dir><dir name="Boosting"><file name="Attribute.php" hash="f6db7762064a7e97ca73b5e15757148f"/></dir><file name="Frequency.php" hash="3a347a4238031e73a03e38a14ab56b0a"/><file name="Landingoptions.php" hash="031834ff6c6c794735350120a686c77e"/><dir name="Log"><file name="Level.php" hash="ba2bee63eb18b966db6beade72293036"/></dir><dir name="Product"><file name="Attributes.php" hash="f99ced41d6504f1570a703e66743dd0b"/></dir><file name="Syncoptions.php" hash="6114fd30c79d1d268b039c09f93e9f74"/><file name="Taxoptions.php" hash="2754ec4fcaa8fcaf17976bc35d2f2ed2"/><file name="Yesnoforced.php" hash="0cf0e7842afae56af0caf92c9490295b"/></dir></dir></dir></dir><dir name="Test"><dir name="Config"><file name="Base.php" hash="a1a8faa15e50cd1d394bc79ca94f712b"/></dir><dir name="Controller"><dir name="CatalogSearch"><dir name="fixtures"><file name="search_results.yaml" hash="bfa6ebad238b75d771b89fb369201540"/></dir></dir><file name="CatalogSearch.php" hash="f6c2615ef27061d0cce7e7eae717c040"/></dir><dir name="Helper"><file name="Api.php" hash="c8484c149e920b3f74b8f6f2dce82936"/><file name="Compat.php" hash="8bae993e0da8f368eb50689f271446a5"/><dir name="Config"><dir name="fixtures"><file name="testGetOrderSyncEnabledFlag.yaml" hash="d1427ea15734ca336c47aad51ad7026e"/><file name="testGetOrderSyncFrequency.yaml" hash="52dffcad75b15761a695eb451b99c751"/><file name="testGetProductSyncEnabledFlag.yaml" hash="43e7263c8b781ef7fb6efbb6598f0226"/><file name="testGetProductSyncFrequency.yaml" hash="004e62dfa22c9abfd8dcf56c92270e19"/><file name="testIsExtensionEnabledDisabled.yaml" hash="5d706b347b4f32f87dc8eb4dd6102148"/><file name="testIsExtensionEnabledEnabled.yaml" hash="52c9eb8a4fad4d8f3ba25c68d35977f3"/></dir><dir name="providers"><file name="testIsOrderSyncEnabled.yaml" hash="938cc58e15b310ba2760be6c64e3d3cb"/><file name="testIsProductSyncEnabled.yaml" hash="5be1dcfb21264a012de32cbd252a09c9"/><file name="testIsTestModeEnabled.yaml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir><file name="Config.php" hash="9ef7b00d63104e11426f3085afa36744"/><dir name="Data"><dir name="providers"><file name="testBytesToHumanReadable.yaml" hash="7cdb8705e108715abc63fa2cfd81626b"/><file name="testGetLanguageFromLocale.yaml" hash="c301f8dc090142627f6af4e4222b7708"/><file name="testHumanReadableToBytes.yaml" hash="dd89ae5b6705cfcfbf42ba64432c0f0a"/><file name="testIsProductionDomain.yaml" hash="f88ef0f80073fdb9cbdbd020348527a7"/></dir></dir><file name="Data.php" hash="93bb38ec55380a6ec7d79008496cac34"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><dir name="Addrecords"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="26eea8bfc58c60e4a2f07dcbddc2e6fd"/><file name="testValidateRequiredFieldsRecords.yaml" hash="590b7ec9b7c33debb740b8c6c6db717f"/><file name="testValidateRequiredFieldsRecordsAllowedEmpty.yaml" hash="f82933b3d219491015cef39a214543bd"/><file name="testValidateRequiredFieldsRecordsEmpty.yaml" hash="d5dcd5aad682db42b1352c35b8905d47"/><file name="testValidateRequiredFieldsRecordsOptional.yaml" hash="25092bb84ba311815ca33971a388256e"/></dir></dir><file name="Addrecords.php" hash="14f5c217fac3f82957f54916fa29b387"/><dir name="Adduser"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="841f068ff3ffd8081ccc91e8675f998c"/></dir></dir><file name="Adduser.php" hash="5189f29f08c4ed30d9b6ac83429de3d0"/><dir name="Addwebstore"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="e52324b58b76d2d63cfa83ee228e1b31"/></dir></dir><file name="Addwebstore.php" hash="fbeac1b8adc5df45ef08a0a3331e5fbc"/><dir name="Getuserdetail"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="297df49838c47536bc9ee928b27470b2"/></dir></dir><file name="Getuserdetail.php" hash="4733d1ec7fd5b3b765aa88f182adf390"/><dir name="Getuserfeaturesdetail"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="e4ef56d9b494fad5392984a144401998"/></dir></dir><file name="Getuserfeaturesdetail.php" hash="601f204cb67a44628c2c951aa8228cd3"/><dir name="Idsearch"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="f36c1a1a1e6d1f5a2d3a59d8d349036e"/></dir></dir><file name="Idsearch.php" hash="4c8849b460a0df494911e3a4df65719c"/><dir name="Producttracking"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="4bc690980c701649d17ff6caba3ef646"/></dir></dir><file name="Producttracking.php" hash="04d8ef59f24f848d36493aabfa413828"/><file name="Startsession.php" hash="c1ae49d22b5e75672b8d84499d51f3d4"/></dir><file name="Action.php" hash="14ce7e11eb3acfda2dfea539c8f5254b"/><dir name="Request"><dir name="Xml"><dir name="providers"><file name="testGetDataAsXml.yaml" hash="4aa16e3557481444ba39775ee0b99d29"/></dir></dir><file name="Xml.php" hash="279a5defe0c933540e9635455590d8b1"/></dir><file name="Request.php" hash="b0cbdfe6a023d0479dc1b1c7fc6869c0"/><dir name="Response"><dir name="Data"><dir name="providers"><file name="testIsSuccessful.yaml" hash="f085922f4329b3d6b19c1e0010d3ca22"/></dir></dir><file name="Data.php" hash="1ab05c7225658f54bd31f0c205d05a2b"/><file name="Empty.php" hash="9933c42aa9ff06977ca3e53d2de15857"/><file name="Invalid.php" hash="bb68f25a053b7e5fc024bce0f5286fcb"/><dir name="Message"><dir name="providers"><file name="testIsSuccessful.yaml" hash="d53562002270a0c4b58ca94733309a21"/></dir></dir><file name="Message.php" hash="135c0d136fa9d0e86158407fc59294c3"/><dir name="Timezone"><dir name="providers"><file name="testIsSuccessful.yaml" hash="67f35e7ee5081689a1eddb867ae6256d"/></dir></dir><file name="Timezone.php" hash="f9cb063ef1f506f656a25c6206899eb3"/><dir name="providers"><file name="response_testIsSuccessful.yaml" hash="ac214d5ebf1eccb89e8fa85e8e3cbb75"/></dir></dir><file name="Response.php" hash="dbcce43ccb2cdf47bce5c05fcf27e759"/><dir name="Test"><file name="Case.php" hash="ec6d3169b9e2bd26655687124be779dd"/></dir><dir name="data"><file name="data_response_data.xml" hash="cd2e5d3dcac402828b9e5f0b0b637c76"/><file name="data_response_failure.xml" hash="ba677628e68149e0283729c1c8e5e86a"/><file name="data_response_no_response.xml" hash="98944f0eda050221de59100f4b22f030"/><file name="data_response_success.xml" hash="e92d1cfcd4461dc8d3fcabe1f902b40b"/><file name="data_response_success_only.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="feature_response.xml" hash="4d400030f5c322b6ab85ccbc7bcd2c0d"/><file name="message_response_failure.xml" hash="ab63c55523b26bd53ea6abf426dd11f5"/><file name="message_response_missing_message.xml" hash="4a43490eda6f33804ca400da2f9cdac1"/><file name="message_response_missing_status.xml" hash="39103fec18a0be88e4ff00a8149c8ad4"/><file name="message_response_session_id.xml" hash="415f25f79a3795ae70b983504cbb784f"/><file name="message_response_success.xml" hash="3ac53566b3d187cb81eb04d40a195c50"/><file name="response_malformed.xml" hash="bfeb4e75829a42082a7935a8e7be491e"/><file name="response_noxml.xml" hash="2debfdcf79f03e4a65a667d21ef9de14"/><file name="response_valid.xml" hash="c915992330f0e4bd37bb629637139f98"/><file name="search_response_empty.xml" hash="601298402d21f3626052634cbbb0ae72"/><file name="search_response_paged.xml" hash="04203807a1d6df787c54afd84690a50e"/><file name="search_response_sorted.xml" hash="c3ee65658a56f65334417328c7fbdcac"/><file name="search_response_success.xml" hash="fea4e59e7ae6e68b387729e320d5f49c"/><file name="startsession_response_success.xml" hash="1865ee2da80359e5a84914c56cae2c8d"/><file name="timezone_response_no_data.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="timezone_response_no_status.xml" hash="bd695479b03e3607196f01f627af4a45"/><file name="timezone_response_with_failure.xml" hash="69a6b1fa7b2cf087d85be162064525b0"/><file name="timezone_response_with_success.xml" hash="e6888eca066741675d228ba1397b5554"/></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="2032f568dc75c8a5ff63c7daaf8bd049"/></dir></dir><dir name="Notification"><dir name="fixtures"><file name="testLoad.yaml" hash="305afce09851bb40e8c990c138aff162"/></dir></dir><file name="Notification.php" hash="889ec647dbdb938741cfc75e1baa2bc2"/><dir name="Observer"><dir name="fixtures"><file name="testLandingPageRewritesDisabled.yaml" hash="88f0c274444dbaab4fded639b4f40048"/><file name="testLandingPageRewritesEnabled.yaml" hash="bfe60a7ccc0ac73c664f24a4b7394343"/><file name="testScheduleOrderSync.yaml" hash="170806194b4a1bd7f00bc346a51709e1"/></dir></dir><file name="Observer.php" hash="73349e9c475129197c2cf55a1e1d4cdc"/><dir name="Order"><dir name="Sync"><dir name="fixtures"><file name="testAddOrderToQueue.yaml" hash="c93c3c28273757a13b878f97dd0b9e97"/><file name="testClearQueue.yaml" hash="d7ad7abd553e333e84cbab149cdcfb31"/><file name="testRun.yaml" hash="44f091d24de97d230f61fcaf3689ba81"/></dir></dir><file name="Sync.php" hash="d2166272904e003b6bea3862f66e0235"/></dir><dir name="Product"><dir name="Sync"><dir name="fixtures"><file name="testAddProducts.yaml" hash="0ac9a9e6666f285eff796d30c8e0a4e3"/><file name="testCatalogruleProducts.yaml" hash="c37fe4fe86fda18d9fd90794ea1520e4"/><file name="testClearAllProducts.yaml" hash="b7ec8b285d34a27e1c50d572b5ae8227"/><file name="testDeleteProducts.yaml" hash="22f94366cc64b6980b8d648067920533"/><file name="testRun.yaml" hash="eaac2bf57835625a6cd80294e6c5a99c"/><file name="testSpecialpriceProducts.yaml" hash="7d44672dcf91473c0bf1d9cb523a394a"/><file name="testUpdateProducts.yaml" hash="61266411faa659dc175f75ffbccce97e"/></dir></dir><file name="Sync.php" hash="62c07a8123480172bba781b78103fcf6"/></dir><dir name="Sync"><dir name="providers"><file name="testSchedule.yaml" hash="97f1043c42eb74162ae97941dc920d8f"/></dir></dir><file name="Sync.php" hash="8c091e168e251761be7fb1d1d2149305"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Test"><dir name="providers"><file name="testIsValidSourceModel.yaml" hash="cfedc94014707ee5586dd212b4d1ee16"/></dir></dir><file name="Test.php" hash="3e915599d4f76a2fbbb20aed9ffdf968"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Klevu"><file name="NotificationsController.php" hash="880ebe97a3e7f9cd1d8d0da41447ae12"/><dir name="Search"><file name="WizardController.php" hash="9b478e0ed333e20b41ed4fe28d17b015"/></dir><file name="SearchController.php" hash="81e6b2b6a9072585c36cf01c2e9a2fb5"/></dir></dir><file name="IndexController.php" hash="938643728bbfeaecfee7ad3ec87823fe"/></dir><dir name="etc"><file name="adminhtml.xml" hash="6ce395b9dec2d88a7709d0917c13d50f"/><file name="config.xml" hash="bae5b88c684a3feaad6a02c2d3da8383"/><file name="system.xml" hash="4d2b6abdf61636b2a0ce9f6a15b9f106"/></dir><dir name="sql"><dir name="klevu_search_setup"><file name="mysql4-data-upgrade-1.1.1-1.1.2.php" hash="a65f702cf64af452f2fb6f6cdac130a7"/><file name="mysql4-data-upgrade-1.1.22-1.1.23.php" hash="79a74acda887a3a5e435a4793bd39dfd"/><file name="mysql4-data-upgrade-1.1.25-1.1.26.php" hash="0c31a59a5562739a00909738ef26d742"/><file name="mysql4-data-upgrade-1.1.27-1.1.28.php" hash="b9dcc6b50d2177976e13b61064adfa2a"/><file name="mysql4-data-upgrade-1.2.10-1.2.11.php" hash="bc8e3dfcc2e019809b72f98f3f7987b7"/><file name="mysql4-data-upgrade-1.2.4-1.2.5.php" hash="b53f5e8b923a26538f26df55fe4038e8"/><file name="mysql4-data-upgrade-1.2.8-1.2.9.php" hash="8126ee936691fefb761dfa304f70938f"/><file name="mysql4-install-1.0.0.php" hash="028831a3f92cf63768a5b43beba06e75"/></dir></dir></dir><dir name="Searchterms"><dir name="Block"><dir name="Catalog"><dir name="Product"><file name="Popularterms.php" hash="aa85fe13044e5477b08dc8b5b5b9da24"/></dir></dir><file name="Popularterms.php" hash="aa85fe13044e5477b08dc8b5b5b9da24"/></dir><dir name="Helper"><file name="Data.php" hash="8e9151b766cdb3eda6f78063c3abbe08"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><file name="Boostingscore.php" hash="13ab65ce0a7109d71b6764495cee7790"/><file name="Popularterms.php" hash="8551ebb57c02e80cf36497f324b55955"/></dir></dir><file name="Observer.php" hash="38538cda2093dfa3502b2ba5dd3dd833"/><dir name="Product"><file name="Seo.php" hash="52dcabcd7be98ccceaa2d3cdea6aaa6c"/></dir></dir><dir name="controllers"><file name="IndexController.php" hash="4578e1f39d16335c7a3acd9bb6fdc560"/></dir><dir name="etc"><file name="config.xml" hash="5c8664b8fa4997b2b762e571111868da"/><file name="system.xml" hash="17b7d94f5635e3cbbdaa164ced250e0d"/></dir><dir name="sql"><dir name="klevu_searchterms_setup"><file name="mysql4-data-upgrade-10.0.0-10.0.1.php" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="mysql4-install-10.0.0.php" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir><dir name="Addtocart"><dir name="Helper"><file name="Data.php" hash="1cf568a02f4d4a319683c986201934e7"/></dir><dir name="etc"><file name="config.xml" hash="bb74783fa2486f42a92efc93ac1b1e8e"/><file name="system.xml" hash="5f214a95e3095fbd78a17f69bf5dc249"/></dir></dir><dir name="Content"><dir name="Block"><dir name="Adminhtml"><dir name="Form"><file name="Cmspages.php" hash="74fc3262b45481e33dad508f48002746"/><dir name="System"><dir name="Config"><dir name="Field"><file name="Select.php" hash="a42ac33f00dfd9346479143ac910f53f"/></dir></dir></dir></dir><dir name="Wizard"><dir name="Configure"><file name="Store.php" hash="6926f8cc65cdcf47bdc89d5067a1e0e4"/></dir></dir></dir><file name="Index.php" hash="4e40ebae7545e7a61a2fcd8da21b7e64"/><file name="Tracking.php" hash="15150693e0d1a6167960f3f96ea3ed22"/></dir><dir name="Helper"><file name="Data.php" hash="06860754d31b39bfbb48c9814ceba0bd"/></dir><dir name="Model"><file name="Content.php" hash="53c44640c9bc7beb1b18f20afb4cf8eb"/><file name="Observer.php" hash="fb0b66baf26daa9f0a02b6adbf396986"/></dir><dir name="Test"><dir name="Controller"><dir name="ContentSearch"><dir name="fixtures"><file name="content_search_results.yaml" hash="952b8215496a66cca9563eea08030f8a"/></dir></dir><file name="ContentSearch.php" hash="9b0e012f2c9bf7d33394361f880020af"/></dir><dir name="Helper"><dir name="Data"><dir name="fixtures"><file name="content_search_results.yaml" hash="65a8b23a351f8b87c2993301361d9191"/><file name="testIsCmsEnabledDisabled.yaml" hash="24e89be563a355b9dcfd6016eb7fe3e2"/><file name="testIsCmsEnabledEnabled.yaml" hash="8903e1fc649bb70f4d76454fced95e2a"/></dir><dir name="providers"><file name="testGetExcludedCmsPages.yaml" hash="954599a138a65fecd75da2366aa6b515"/><file name="testIsCmsSyncEnabled.yaml" hash="9c3006c510c146f6511cae9287b3fdb8"/></dir></dir><file name="Data.php" hash="a8ee9e9d91eece007d94c0d92ddb654b"/></dir><dir name="Model"><dir name="Api"><dir name="data"><file name="message_response_content_success.xml" hash="3ac53566b3d187cb81eb04d40a195c50"/><file name="search_response_empty.xml" hash="39b739de681275c6a192dcd4ce796207"/><file name="search_response_success.xml" hash="15fea6ab852abd01c9630c86b895d773"/><file name="startsession_response_content_success.xml" hash="5fd26f817657ca9e1c1980d59219b28e"/></dir></dir><dir name="Content"><dir name="fixtures"><file name="testAddCms.yaml" hash="3054d1f054399ac080721e9a03be5f0e"/><file name="testClearAllProducts.yaml" hash="b7ec8b285d34a27e1c50d572b5ae8227"/><file name="testCmsRun.yaml" hash="074c89e69ec7a903f224ea430534c12d"/><file name="testDeleteCms.yaml" hash="21071d067eb03b1e546d1e12fe70955b"/><file name="testUpdateCms.yaml" hash="0e3a9db13fdee6858284ebb8b1d31083"/></dir></dir><file name="Content.php" hash="4d2f4c54d5389c686cd745c28fa97d40"/></dir></dir><dir name="controllers"><file name="SearchController.php" hash="b84ae7ea7a66f7c7f78c54fa7afdcfd1"/></dir><dir name="etc"><file name="config.xml" hash="c0e3647d7d4f067f14a45ab037cfc2c8"/><file name="system.xml" hash="de4dfb0d239a9d498c3157ce14d2fd57"/></dir><dir name="sql"><dir name="klevu_content_setup"><file name="mysql4-install-0.1.0.php" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="klevu"><dir name="boosting"><dir name="form"><dir name="field"><dir name="rule"><file name="button.phtml" hash="f27feff3fad2bbcd68b56df38de5cc83"/></dir></dir></dir></dir><dir name="search"><dir name="form"><dir name="field"><file name="array_readonly.phtml" hash="d3a3be4cf22f89d84bd73121a1adfa86"/><dir name="sync"><file name="button.phtml" hash="dae55579390ed8b72e1fadcbb538442b"/><file name="logbutton.phtml" hash="d31dd881015319d78d9fb2b83874f296"/></dir></dir><file name="information.phtml" hash="9014ac2b78bf4f22be503208b377dc2c"/><file name="klevuinfo.phtml" hash="ea29b14b8f9b794f22465a6695a0e2ae"/><file name="quickinfo.phtml" hash="a383bb10176e87206954b5e379d20c7f"/></dir><file name="notifications.phtml" hash="090714ca57b11d24769c1baa1bcd4615"/><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array.phtml" hash="2e55476e647b79114b28d0a3a02704d5"/></dir></dir></dir></dir><dir name="wizard"><file name="complete.phtml" hash="7cf33a9a829eb07148d16da5056324dd"/><dir name="config"><file name="button.phtml" hash="b1644ee569882b05c2d8cb2f1eecddbc"/></dir><dir name="configure"><file name="attributes.phtml" hash="d54f0a86e78390fbe66825d0771aad25"/><file name="store.phtml" hash="c3a4fce90c554be53ecca58a41c2813d"/><file name="user.phtml" hash="e5678d947c0ccd6f14a23be3df7e9d7d"/><file name="userplan.phtml" hash="812420878cde0f51e8dcefa2a3ae7039"/></dir><dir name="form"><dir name="field"><file name="array.phtml" hash="ccdccab02fbd9cfc2145f094d5e12a2e"/></dir></dir></dir></dir></dir></dir><dir name="layout"><dir name="klevu"><file name="boosting.xml" hash="c17c262a50d6dfa4dc3ee6dbaac18432"/><file name="search.xml" hash="26cef989bb342bad783f5d8fc6a49e7f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="klevu"><dir name="addtocart"><file name="index.phtml" hash="64503e05ee420827bdba15b22e53dd9c"/><file name="index.phtml" hash="64503e05ee420827bdba15b22e53dd9c"/></dir><dir name="content"><file name="content_tracking.phtml" hash="54dc6f0ce8112013c1bcaad01899d7bc"/><file name="index.phtml" hash="a6fdec47b211db2177c9ceba0683d302"/><file name="left.phtml" hash="51f0cad58008a71a27e44377319fa044"/><file name="search.phtml" hash="379b8164a6760762ae1fcea9109f8924"/><file name="top.phtml" hash="2e2e3484388be8eed022ff541fc354f5"/><file name="type_of_query.phtml" hash="25b05bfe942a3bba838a44a8e150a453"/><file name="content_tracking.phtml" hash="54dc6f0ce8112013c1bcaad01899d7bc"/><file name="index.phtml" hash="a6fdec47b211db2177c9ceba0683d302"/><file name="left.phtml" hash="51f0cad58008a71a27e44377319fa044"/><file name="search.phtml" hash="379b8164a6760762ae1fcea9109f8924"/><file name="top.phtml" hash="2e2e3484388be8eed022ff541fc354f5"/><file name="type_of_query.phtml" hash="25b05bfe942a3bba838a44a8e150a453"/></dir><dir name="learning"><file name="category.phtml" hash="ce6ab73d3c9f2a36ac0d34e7a0cf3280"/><file name="category_tracking.phtml" hash="b825ba28a49b9ebb2e4d15ac5459fbf4"/></dir><dir name="search"><file name="form_js.phtml" hash="db06ac54a3fc083297a47792bfd91a38"/><file name="index.phtml" hash="df508e23fce08ddcd980a4fea4988f8e"/><file name="klevulog.phtml" hash="9cebbd9ec162570768aefc30c777fb78"/><file name="product_tracking.phtml" hash="e773b0cfcc8c3649bf26cc83d71345ec"/><file name="form_js.phtml" hash="db06ac54a3fc083297a47792bfd91a38"/><file name="index.phtml" hash="df508e23fce08ddcd980a4fea4988f8e"/><file name="klevulog.phtml" hash="9cebbd9ec162570768aefc30c777fb78"/><file name="product_tracking.phtml" hash="e773b0cfcc8c3649bf26cc83d71345ec"/></dir><dir name="searchterm"><file name="popular_searchterms.phtml" hash="4306a14ced0036bdb72158e11d4091d3"/></dir></dir></dir><dir name="layout"><dir name="klevu"><file name="search.xml" hash="7c581fe86dd6379ccdfdfce5120e43ca"/><file name="addtocart.xml" hash="78bb1c4910c4c2c37b49a9c36446f9d5"/><file name="content.xml" hash="633558c22064c1eb89c684d51b9deb00"/><file name="searchterms.xml" hash="c0db7111782ef105d6c44281b5a95303"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="klevu"><dir name="search"><dir name="lib"><file name="Wizard.js" hash="359afd117dc5cc7ccd14c838eacb573d"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="klevu"><dir name="search"><file name="klevumagestyle.css" hash="c2c4508f1193336d078cae94a45d1528"/><file name="notifications.css" hash="019a5a055bc621cb0f4c166ab8e5604c"/><file name="wizard.css" hash="824f735715f3ed97ce98414b9895e46b"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="klevu"><dir name="content"><file name="klevu-landing-left.css" hash="38c63d7796e4e33b212a1d8b044d0a91"/></dir><file name="klevu-landing-page-style.css" hash="778364c191321c1a96f4582f929c3195"/><file name="klevu-landing-responsive.css" hash="1381b9400a4b286a7a02aef4e3ff4970"/><dir name="search"><file name="klevu-search-term.css" hash="e7e3f2e24073e6fa0949ac157d6d4d34"/></dir></dir></dir><dir name="images"><dir name="klevu"><file name="btn-gridview.png" hash="c3dd97f4f53e1dfe34b6c5b6b4237b8a"/><file name="btn-listview.png" hash="00aaaa62d67e252248d6075f53b04f7f"/><file name="ku-loader.gif" hash="009d5e60ec4c77c9a3351a3bf625b257"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="shell"><dir name="klevu"><file name="sync.php" hash="a1c1cedadb2f584c769409c17183d3fa"/></dir></dir></target></contents>
|
24 |
<compatible/>
|
25 |
-
<dependencies><required><php><min>5.3.0</min><max>7.1.
|
26 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Klevu_SmartSearch</name>
|
4 |
+
<version>1.2.13</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://klevu.com">Commercial</license>
|
7 |
<channel>community</channel>
|
14 |
Dynamic filters - Shoppers get excellent shopping experience.
|
15 |
Search as you type - Shoppers see results even with long keywords.
|
16 |
Actionable insights - Drive traffic by learning from shoppers' search patterns.</description>
|
17 |
+
<notes>- Shell script message change
|
18 |
+
- Css change
|
19 |
+
- Domain related notification
|
20 |
+
- Change cloud search url to change 4
|
21 |
+
- Pass the date when the product was added
|
22 |
+
- Add an option in the plugin to regenerate images using shell script command
|
23 |
+
- Exclude in search change
|
24 |
+
- Options to use configurable product description
|
25 |
+
- bug fix for Bundle product tax issue
|
26 |
+
- All data sync with magento indexing using shell script command
|
27 |
+
- Trigger option to detect ERP and third party api direct db change in stock and price
|
28 |
+
- Message change for openssl</notes>
|
29 |
<authors><author><name>Klevu</name><user>Klevu</user><email>niraj.aswani@klevu.com</email></author></authors>
|
30 |
+
<date>2017-05-29</date>
|
31 |
+
<time>11:14:00</time>
|
32 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Klevu_Search.xml" hash="49674c121481f67bcfc2f31bb21e5aaf"/><file name="Klevu_Boosting.xml" hash="e5e64cc12dacfc956c2b0cb2b47dd0c4"/><file name="Klevu_Content.xml" hash="26c6470ff0f3b121bc6eb85686ac285d"/><file name="Klevu_Searchterms.xml" hash="3b38e76a2c869aedf4caa37ac81f6325"/><file name="Klevu_Addtocart.xml" hash="1702387194f7bb2addab6b7b0c701505"/></dir></target><target name="magecommunity"><dir name="Klevu"><dir name="Boosting"><dir name="Block"><dir name="Adminhtml"><dir name="Boost"><dir name="Edit"><file name="Form.php" hash="f383d355c07e8f6930037a3cb663fea8"/><dir name="Tab"><file name="Actions.php" hash="bea65d14949e38f7e2470f596e6a8757"/><file name="Conditions.php" hash="f471bf87addc58de5fc577efb1ef000f"/><file name="Form.php" hash="ceb369273be213ab6c0699edf029f8f5"/></dir><file name="Tabs.php" hash="956926b08afbd7d5c24d4015b8d5fb1a"/></dir><file name="Edit.php" hash="102725d29f9a72655baa68f334837d2c"/><file name="Grid.php" hash="3e9f1e10943666904bdf2cf895111e19"/></dir><file name="Boost.php" hash="ca0e56e107ef39310f81d43ad16f6ae5"/><dir name="Form"><dir name="Field"><dir name="Rule"><file name="Button.php" hash="54234efa375229e734b38f0f1daa7c44"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="5dd9cdbc59b7886d7248a49013ee0692"/></dir><dir name="Model"><dir name="Boost"><dir name="Rule"><dir name="Condition"><file name="Combine.php" hash="f01c5f12ea202559feed422130df4d5f"/><file name="Product.php" hash="f35bd54c39f6412db9e08b78a00687fc"/></dir></dir></dir><file name="Boost.php" hash="b11c92c884361d22e705bde6f18f413a"/><dir name="Mysql4"><dir name="Boost"><file name="Collection.php" hash="1ac0d91b93e00c6ca0c6229b8dce69e0"/></dir><file name="Boost.php" hash="2d7c34e4800945c9fdcab56b7d41d7da"/></dir><file name="Observer.php" hash="5f9982c232746da15c1b0ee7ab5581de"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Boosting"><file name="Attribute.php" hash="6debec1229df22e3f4eda58dd781053a"/></dir></dir></dir></dir></dir><dir name="Test"><dir name="Model"><dir name="Boost"><dir name="fixtures"><file name="testGetMatchingProductIds.yaml" hash="023c1cc74e5525ccfbed76d38674243d"/></dir></dir><file name="Boost.php" hash="e2cba3650eeed3e39ed29381a6014579"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="BoostController.php" hash="0f2ce187d18fe74c8445becd6e44acfc"/></dir></dir><dir name="etc"><file name="config.xml" hash="66c1bcd5daab17ef03d671553670cac5"/><file name="system.xml" hash="a9f3647f178f8f373c31a90569ffd651"/></dir><dir name="sql"><dir name="klevu_boosting_setup"><file name="mysql4-install-10.0.0.php" hash="b36ab1905efd2ba496635fd8830d7438"/></dir></dir></dir><dir name="Search"><dir name="Block"><dir name="Adminhtml"><dir name="Form"><dir name="Field"><dir name="Attribute"><file name="Mappings.php" hash="293c4d19663fa3aad76c17287fec2114"/></dir><dir name="Automatic"><dir name="Attribute"><file name="Mappings.php" hash="b0d192bd03319957d09f34d510914a2f"/></dir></dir><dir name="Html"><file name="Select.php" hash="adc22272b93deb46b524f46f7000972f"/></dir><dir name="Image"><file name="Log.php" hash="a5775de3c82a73e0cda865586a2d10ee"/></dir><dir name="Store"><dir name="Level"><file name="Label.php" hash="df3680c83924ece232eb14bd0b7ac9b3"/></dir><file name="Status.php" hash="0e023c95f20bea421ea6e7f4e64e5eae"/></dir><dir name="Sync"><file name="Button.php" hash="aeec22e3e952e40d1e1bed33a9e8185b"/></dir><dir name="Trigger"><file name="Button.php" hash="4f5273f072fe626bc7146a7bd6393091"/></dir></dir><file name="Infolinks.php" hash="201b94b4b627bf9053424fcd70bbd101"/><file name="Information.php" hash="b422d8aa8524b4277f2b4013e90379a0"/><file name="Klevuinfo.php" hash="d2532a3a273acd33515165b3d98ac4d1"/><file name="Syncoptionsinfo.php" hash="28621e3bd17eb8216639fa3a2da47840"/></dir><file name="Notifications.php" hash="9fc2511a89e04cb2c9ce86fc7c3684cd"/><dir name="System"><dir name="Config"><dir name="Form"><file name="Field.php" hash="d4e9023e6cdbedceb7145d248168d33b"/></dir></dir></dir><dir name="Wizard"><dir name="Config"><file name="Button.php" hash="d17ba7640d5777612ab9fb27f85aa5c9"/></dir><dir name="Configure"><file name="Attributes.php" hash="3801cd4ebb45b3d29cfbacf830af2874"/><file name="Store.php" hash="a5e900bf91db47115ce54497669fd384"/><file name="User.php" hash="b885cf0d838e5de5d734c4c0c76cb173"/><file name="Userplan.php" hash="5fc147d5266c2251b4388800fe8f78fb"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><file name="Tracking.php" hash="049f45dfc363c0f604ef57472611d7cd"/></dir></dir></dir><dir name="Helper"><file name="Api.php" hash="f7f1b51781d27032c114ec2392cb5371"/><file name="Compat.php" hash="3726862a4576a53c5a44dda59a1e9a86"/><file name="Config.php" hash="5fa52a958c6651ce5491f2a11bc3199b"/><file name="Data.php" hash="4d9f1ec6f54168c0bdb6dea727871eb0"/></dir><dir name="Model"><dir name="Adminhtml"><file name="Comment.php" hash="2d3cb94ca5bea4c6ea50f9aa9dd3a936"/></dir><dir name="Api"><dir name="Action"><file name="Addrecords.php" hash="71a37b56f652371056e2a0cfb5f20157"/><file name="Adduser.php" hash="d8b6e6d37fe6ce522747fd6951c8e9df"/><file name="Addwebstore.php" hash="ea33f2c7032682a6ec2bdb8324cdaf0e"/><file name="Checkuserdetail.php" hash="ebe4eeaf8986684bb7081932e68553bf"/><file name="Debuginfo.php" hash="dd92df091719aa73eca07a08d9681d42"/><file name="Deleterecords.php" hash="0e404db0aab2c58ff90a4e7e4fe73818"/><file name="Features.php" hash="f3f22d268fe2e6651cdab8f12c56599a"/><file name="Getplans.php" hash="82715646d1fdacee524525c51c47138f"/><file name="Gettimezone.php" hash="4bb572b68f42236d765f8194e413b1ca"/><file name="Getuserdetail.php" hash="849a0f04bfdbf39ae75a2627d26717ca"/><file name="Idsearch.php" hash="9b8ba6fde615675884e6e0b6a49e8200"/><file name="Producttracking.php" hash="d88a30dcc3926ad0626591567868a04b"/><file name="Removetestmode.php" hash="bd2e7ecf6c233b1430e2989b2b62000f"/><file name="Searchtermtracking.php" hash="450a05e0598618130ef06d71410a3fcc"/><file name="Startsession.php" hash="14edcef879dce92c76a9c78d4106fc6c"/><file name="Updaterecords.php" hash="9e99ce8da72a030b10e9af8353233427"/></dir><file name="Action.php" hash="792f3fe4348f7d13bdf09562ec0d8b59"/><dir name="Request"><file name="Get.php" hash="2d6f510d4dcc171b8e44322b76a49f93"/><file name="Post.php" hash="a46b484a50ced15e2c02deb16bbeb6bb"/><file name="Xml.php" hash="6fb6945b88624571b332733076f1cd3b"/></dir><file name="Request.php" hash="2c81a4f0d4a41d31ad5105220f3d1452"/><dir name="Response"><file name="Data.php" hash="9dbe8e28a501feacb07a6ce2bcc4deb8"/><file name="Empty.php" hash="cffe9f5070c4771a6d4e12f0343078b5"/><file name="Invalid.php" hash="8287280c3b99f64e08cf54a0bf65e4a1"/><file name="Message.php" hash="5b6d717c75014e798e619e3df2008d29"/><file name="Search.php" hash="28bd2503c07b2a89ce00f81e601c2e2b"/><file name="Timezone.php" hash="ffa4d48e42fa52d2c928e202c2af61fd"/></dir><file name="Response.php" hash="c63251cb98f4da2ae3a4438c20d17cf5"/></dir><dir name="Catalog"><dir name="Model"><file name="Config.php" hash="57ae55e3cea3dd1b4c60dafcb06d5efd"/></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="104ac92f6ef59879b593a9f1baffd562"/><file name="Category.php" hash="39e56a1a1a1070f09fce2bec6d48c4ce"/><file name="Price.php" hash="4ca1e56183364670fb39a88ea5666c13"/></dir></dir><dir name="Resource"><dir name="Fulltext"><file name="Collection.php" hash="8e970880623949bdd01c620b64c518fe"/></dir><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="d675e50ad7c5277b9ca4100770ac16d3"/></dir></dir></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="ef07b22f48c4ca72066bf90a1cf9ac27"/></dir></dir><file name="Cron.php" hash="0936cc2667e056182668c9f61fc171bc"/><file name="Notification.php" hash="771d45868668c5b925e3bf2202482b43"/><file name="Observer.php" hash="b7f623d149cae8c9f11490605dbe0589"/><dir name="Order"><file name="Sync.php" hash="8268fe69f6f3f326bab438eb6af78e18"/></dir><dir name="Product"><file name="Sync.php" hash="4144c2bc1e10ec4e4df3f879335bd0e5"/></dir><dir name="Resource"><dir name="Notification"><file name="Collection.php" hash="936a242678b1c89853149e9dc77b6aff"/></dir><file name="Notification.php" hash="f3206c5286bf6ccb4df268c54fcff0f5"/></dir><file name="Session.php" hash="a4ab94b093ba8a414fbfa031f0d2cabe"/><file name="Sync.php" hash="6c032e3e9a2d6b45c92cbcdb4b6a44e4"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Additional"><file name="Attributes.php" hash="d91e1af65488d647b035fbb100a4eb1d"/></dir><dir name="Boosting"><file name="Attribute.php" hash="f6db7762064a7e97ca73b5e15757148f"/></dir><file name="Frequency.php" hash="3a347a4238031e73a03e38a14ab56b0a"/><file name="Landingoptions.php" hash="031834ff6c6c794735350120a686c77e"/><dir name="Log"><file name="Level.php" hash="ba2bee63eb18b966db6beade72293036"/></dir><dir name="Product"><file name="Attributes.php" hash="f99ced41d6504f1570a703e66743dd0b"/></dir><file name="Syncoptions.php" hash="6114fd30c79d1d268b039c09f93e9f74"/><file name="Taxoptions.php" hash="2754ec4fcaa8fcaf17976bc35d2f2ed2"/><file name="Triggeroptions.php" hash="3471bd23d03f2b4b1ac9582ad660484d"/><file name="Yesnoforced.php" hash="0cf0e7842afae56af0caf92c9490295b"/></dir></dir></dir></dir><dir name="Test"><dir name="Config"><file name="Base.php" hash="a1a8faa15e50cd1d394bc79ca94f712b"/></dir><dir name="Controller"><dir name="CatalogSearch"><dir name="fixtures"><file name="search_results.yaml" hash="bfa6ebad238b75d771b89fb369201540"/></dir></dir><file name="CatalogSearch.php" hash="f6c2615ef27061d0cce7e7eae717c040"/></dir><dir name="Helper"><file name="Api.php" hash="c8484c149e920b3f74b8f6f2dce82936"/><file name="Compat.php" hash="8bae993e0da8f368eb50689f271446a5"/><dir name="Config"><dir name="fixtures"><file name="testGetOrderSyncEnabledFlag.yaml" hash="d1427ea15734ca336c47aad51ad7026e"/><file name="testGetOrderSyncFrequency.yaml" hash="52dffcad75b15761a695eb451b99c751"/><file name="testGetProductSyncEnabledFlag.yaml" hash="43e7263c8b781ef7fb6efbb6598f0226"/><file name="testGetProductSyncFrequency.yaml" hash="004e62dfa22c9abfd8dcf56c92270e19"/><file name="testIsExtensionEnabledDisabled.yaml" hash="5d706b347b4f32f87dc8eb4dd6102148"/><file name="testIsExtensionEnabledEnabled.yaml" hash="52c9eb8a4fad4d8f3ba25c68d35977f3"/></dir><dir name="providers"><file name="testIsOrderSyncEnabled.yaml" hash="938cc58e15b310ba2760be6c64e3d3cb"/><file name="testIsProductSyncEnabled.yaml" hash="5be1dcfb21264a012de32cbd252a09c9"/><file name="testIsTestModeEnabled.yaml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir><file name="Config.php" hash="9ef7b00d63104e11426f3085afa36744"/><dir name="Data"><dir name="providers"><file name="testBytesToHumanReadable.yaml" hash="7cdb8705e108715abc63fa2cfd81626b"/><file name="testGetLanguageFromLocale.yaml" hash="c301f8dc090142627f6af4e4222b7708"/><file name="testHumanReadableToBytes.yaml" hash="dd89ae5b6705cfcfbf42ba64432c0f0a"/><file name="testIsProductionDomain.yaml" hash="f88ef0f80073fdb9cbdbd020348527a7"/></dir></dir><file name="Data.php" hash="93bb38ec55380a6ec7d79008496cac34"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><dir name="Addrecords"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="26eea8bfc58c60e4a2f07dcbddc2e6fd"/><file name="testValidateRequiredFieldsRecords.yaml" hash="590b7ec9b7c33debb740b8c6c6db717f"/><file name="testValidateRequiredFieldsRecordsAllowedEmpty.yaml" hash="f82933b3d219491015cef39a214543bd"/><file name="testValidateRequiredFieldsRecordsEmpty.yaml" hash="d5dcd5aad682db42b1352c35b8905d47"/><file name="testValidateRequiredFieldsRecordsOptional.yaml" hash="25092bb84ba311815ca33971a388256e"/></dir></dir><file name="Addrecords.php" hash="14f5c217fac3f82957f54916fa29b387"/><dir name="Adduser"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="841f068ff3ffd8081ccc91e8675f998c"/></dir></dir><file name="Adduser.php" hash="5189f29f08c4ed30d9b6ac83429de3d0"/><dir name="Addwebstore"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="e52324b58b76d2d63cfa83ee228e1b31"/></dir></dir><file name="Addwebstore.php" hash="fbeac1b8adc5df45ef08a0a3331e5fbc"/><dir name="Getuserdetail"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="297df49838c47536bc9ee928b27470b2"/></dir></dir><file name="Getuserdetail.php" hash="4733d1ec7fd5b3b765aa88f182adf390"/><dir name="Getuserfeaturesdetail"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="e4ef56d9b494fad5392984a144401998"/></dir></dir><file name="Getuserfeaturesdetail.php" hash="601f204cb67a44628c2c951aa8228cd3"/><dir name="Idsearch"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="f36c1a1a1e6d1f5a2d3a59d8d349036e"/></dir></dir><file name="Idsearch.php" hash="4c8849b460a0df494911e3a4df65719c"/><dir name="Producttracking"><dir name="providers"><file name="testValidateRequiredFields.yaml" hash="4bc690980c701649d17ff6caba3ef646"/></dir></dir><file name="Producttracking.php" hash="04d8ef59f24f848d36493aabfa413828"/><file name="Startsession.php" hash="c1ae49d22b5e75672b8d84499d51f3d4"/></dir><file name="Action.php" hash="14ce7e11eb3acfda2dfea539c8f5254b"/><dir name="Request"><dir name="Xml"><dir name="providers"><file name="testGetDataAsXml.yaml" hash="4aa16e3557481444ba39775ee0b99d29"/></dir></dir><file name="Xml.php" hash="279a5defe0c933540e9635455590d8b1"/></dir><file name="Request.php" hash="b0cbdfe6a023d0479dc1b1c7fc6869c0"/><dir name="Response"><dir name="Data"><dir name="providers"><file name="testIsSuccessful.yaml" hash="f085922f4329b3d6b19c1e0010d3ca22"/></dir></dir><file name="Data.php" hash="1ab05c7225658f54bd31f0c205d05a2b"/><file name="Empty.php" hash="9933c42aa9ff06977ca3e53d2de15857"/><file name="Invalid.php" hash="bb68f25a053b7e5fc024bce0f5286fcb"/><dir name="Message"><dir name="providers"><file name="testIsSuccessful.yaml" hash="d53562002270a0c4b58ca94733309a21"/></dir></dir><file name="Message.php" hash="135c0d136fa9d0e86158407fc59294c3"/><dir name="Timezone"><dir name="providers"><file name="testIsSuccessful.yaml" hash="67f35e7ee5081689a1eddb867ae6256d"/></dir></dir><file name="Timezone.php" hash="f9cb063ef1f506f656a25c6206899eb3"/><dir name="providers"><file name="response_testIsSuccessful.yaml" hash="ac214d5ebf1eccb89e8fa85e8e3cbb75"/></dir></dir><file name="Response.php" hash="dbcce43ccb2cdf47bce5c05fcf27e759"/><dir name="Test"><file name="Case.php" hash="ec6d3169b9e2bd26655687124be779dd"/></dir><dir name="data"><file name="data_response_data.xml" hash="cd2e5d3dcac402828b9e5f0b0b637c76"/><file name="data_response_failure.xml" hash="ba677628e68149e0283729c1c8e5e86a"/><file name="data_response_no_response.xml" hash="98944f0eda050221de59100f4b22f030"/><file name="data_response_success.xml" hash="e92d1cfcd4461dc8d3fcabe1f902b40b"/><file name="data_response_success_only.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="feature_response.xml" hash="4d400030f5c322b6ab85ccbc7bcd2c0d"/><file name="message_response_failure.xml" hash="ab63c55523b26bd53ea6abf426dd11f5"/><file name="message_response_missing_message.xml" hash="4a43490eda6f33804ca400da2f9cdac1"/><file name="message_response_missing_status.xml" hash="39103fec18a0be88e4ff00a8149c8ad4"/><file name="message_response_session_id.xml" hash="415f25f79a3795ae70b983504cbb784f"/><file name="message_response_success.xml" hash="3ac53566b3d187cb81eb04d40a195c50"/><file name="response_malformed.xml" hash="bfeb4e75829a42082a7935a8e7be491e"/><file name="response_noxml.xml" hash="2debfdcf79f03e4a65a667d21ef9de14"/><file name="response_valid.xml" hash="c915992330f0e4bd37bb629637139f98"/><file name="search_response_empty.xml" hash="601298402d21f3626052634cbbb0ae72"/><file name="search_response_paged.xml" hash="04203807a1d6df787c54afd84690a50e"/><file name="search_response_sorted.xml" hash="c3ee65658a56f65334417328c7fbdcac"/><file name="search_response_success.xml" hash="fea4e59e7ae6e68b387729e320d5f49c"/><file name="startsession_response_success.xml" hash="1865ee2da80359e5a84914c56cae2c8d"/><file name="timezone_response_no_data.xml" hash="276055d04a3f112efe9e6f1c337d7699"/><file name="timezone_response_no_status.xml" hash="bd695479b03e3607196f01f627af4a45"/><file name="timezone_response_with_failure.xml" hash="69a6b1fa7b2cf087d85be162064525b0"/><file name="timezone_response_with_success.xml" hash="e6888eca066741675d228ba1397b5554"/></dir></dir><dir name="Config"><dir name="Log"><file name="Level.php" hash="2032f568dc75c8a5ff63c7daaf8bd049"/></dir></dir><dir name="Notification"><dir name="fixtures"><file name="testLoad.yaml" hash="305afce09851bb40e8c990c138aff162"/></dir></dir><file name="Notification.php" hash="889ec647dbdb938741cfc75e1baa2bc2"/><dir name="Observer"><dir name="fixtures"><file name="testLandingPageRewritesDisabled.yaml" hash="88f0c274444dbaab4fded639b4f40048"/><file name="testLandingPageRewritesEnabled.yaml" hash="bfe60a7ccc0ac73c664f24a4b7394343"/><file name="testScheduleOrderSync.yaml" hash="170806194b4a1bd7f00bc346a51709e1"/></dir></dir><file name="Observer.php" hash="73349e9c475129197c2cf55a1e1d4cdc"/><dir name="Order"><dir name="Sync"><dir name="fixtures"><file name="testAddOrderToQueue.yaml" hash="c93c3c28273757a13b878f97dd0b9e97"/><file name="testClearQueue.yaml" hash="d7ad7abd553e333e84cbab149cdcfb31"/><file name="testRun.yaml" hash="44f091d24de97d230f61fcaf3689ba81"/></dir></dir><file name="Sync.php" hash="d2166272904e003b6bea3862f66e0235"/></dir><dir name="Product"><dir name="Sync"><dir name="fixtures"><file name="testAddProducts.yaml" hash="0ac9a9e6666f285eff796d30c8e0a4e3"/><file name="testCatalogruleProducts.yaml" hash="c37fe4fe86fda18d9fd90794ea1520e4"/><file name="testClearAllProducts.yaml" hash="b7ec8b285d34a27e1c50d572b5ae8227"/><file name="testDeleteProducts.yaml" hash="22f94366cc64b6980b8d648067920533"/><file name="testRun.yaml" hash="eaac2bf57835625a6cd80294e6c5a99c"/><file name="testSpecialpriceProducts.yaml" hash="7d44672dcf91473c0bf1d9cb523a394a"/><file name="testUpdateProducts.yaml" hash="61266411faa659dc175f75ffbccce97e"/></dir></dir><file name="Sync.php" hash="62c07a8123480172bba781b78103fcf6"/></dir><dir name="Sync"><dir name="providers"><file name="testSchedule.yaml" hash="97f1043c42eb74162ae97941dc920d8f"/></dir></dir><file name="Sync.php" hash="8c091e168e251761be7fb1d1d2149305"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Test"><dir name="providers"><file name="testIsValidSourceModel.yaml" hash="cfedc94014707ee5586dd212b4d1ee16"/></dir></dir><file name="Test.php" hash="3e915599d4f76a2fbbb20aed9ffdf968"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Klevu"><file name="NotificationsController.php" hash="880ebe97a3e7f9cd1d8d0da41447ae12"/><dir name="Search"><file name="WizardController.php" hash="9b478e0ed333e20b41ed4fe28d17b015"/></dir><file name="SearchController.php" hash="f83573076eb79b00490760f1b2735411"/></dir></dir><file name="IndexController.php" hash="28fffa70ab3f89f35112eda48053aa2c"/></dir><dir name="etc"><file name="adminhtml.xml" hash="6ce395b9dec2d88a7709d0917c13d50f"/><file name="config.xml" hash="7e209dda8fb12e0baa1ffcd1dba4efbf"/><file name="system.xml" hash="e3c58be415545b7ca00a05d78c84f45c"/></dir><dir name="sql"><dir name="klevu_search_setup"><file name="mysql4-data-upgrade-1.1.1-1.1.2.php" hash="a65f702cf64af452f2fb6f6cdac130a7"/><file name="mysql4-data-upgrade-1.1.22-1.1.23.php" hash="79a74acda887a3a5e435a4793bd39dfd"/><file name="mysql4-data-upgrade-1.1.25-1.1.26.php" hash="0c31a59a5562739a00909738ef26d742"/><file name="mysql4-data-upgrade-1.1.27-1.1.28.php" hash="b9dcc6b50d2177976e13b61064adfa2a"/><file name="mysql4-data-upgrade-1.2.10-1.2.11.php" hash="bc8e3dfcc2e019809b72f98f3f7987b7"/><file name="mysql4-data-upgrade-1.2.4-1.2.5.php" hash="b53f5e8b923a26538f26df55fe4038e8"/><file name="mysql4-data-upgrade-1.2.8-1.2.9.php" hash="8126ee936691fefb761dfa304f70938f"/><file name="mysql4-install-1.0.0.php" hash="028831a3f92cf63768a5b43beba06e75"/></dir></dir></dir><dir name="Searchterms"><dir name="Block"><dir name="Catalog"><dir name="Product"><file name="Popularterms.php" hash="aa85fe13044e5477b08dc8b5b5b9da24"/></dir></dir><file name="Popularterms.php" hash="aa85fe13044e5477b08dc8b5b5b9da24"/></dir><dir name="Helper"><file name="Data.php" hash="8e9151b766cdb3eda6f78063c3abbe08"/></dir><dir name="Model"><dir name="Api"><dir name="Action"><file name="Boostingscore.php" hash="13ab65ce0a7109d71b6764495cee7790"/><file name="Popularterms.php" hash="8551ebb57c02e80cf36497f324b55955"/></dir></dir><file name="Observer.php" hash="38538cda2093dfa3502b2ba5dd3dd833"/><dir name="Product"><file name="Seo.php" hash="52dcabcd7be98ccceaa2d3cdea6aaa6c"/></dir></dir><dir name="controllers"><file name="IndexController.php" hash="4578e1f39d16335c7a3acd9bb6fdc560"/></dir><dir name="etc"><file name="config.xml" hash="5c8664b8fa4997b2b762e571111868da"/><file name="system.xml" hash="17b7d94f5635e3cbbdaa164ced250e0d"/></dir><dir name="sql"><dir name="klevu_searchterms_setup"><file name="mysql4-data-upgrade-10.0.0-10.0.1.php" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="mysql4-install-10.0.0.php" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir><dir name="Addtocart"><dir name="Helper"><file name="Data.php" hash="1cf568a02f4d4a319683c986201934e7"/></dir><dir name="etc"><file name="config.xml" hash="bb74783fa2486f42a92efc93ac1b1e8e"/><file name="system.xml" hash="5f214a95e3095fbd78a17f69bf5dc249"/></dir></dir><dir name="Content"><dir name="Block"><dir name="Adminhtml"><dir name="Form"><file name="Cmspages.php" hash="74fc3262b45481e33dad508f48002746"/><dir name="System"><dir name="Config"><dir name="Field"><file name="Select.php" hash="a42ac33f00dfd9346479143ac910f53f"/></dir></dir></dir></dir><dir name="Wizard"><dir name="Configure"><file name="Store.php" hash="6926f8cc65cdcf47bdc89d5067a1e0e4"/></dir></dir></dir><file name="Index.php" hash="4e40ebae7545e7a61a2fcd8da21b7e64"/><file name="Tracking.php" hash="15150693e0d1a6167960f3f96ea3ed22"/></dir><dir name="Helper"><file name="Data.php" hash="06860754d31b39bfbb48c9814ceba0bd"/></dir><dir name="Model"><file name="Content.php" hash="a2f9bb7340ca8546a5897ab3d7693464"/><file name="Observer.php" hash="fb0b66baf26daa9f0a02b6adbf396986"/></dir><dir name="Test"><dir name="Controller"><dir name="ContentSearch"><dir name="fixtures"><file name="content_search_results.yaml" hash="952b8215496a66cca9563eea08030f8a"/></dir></dir><file name="ContentSearch.php" hash="9b0e012f2c9bf7d33394361f880020af"/></dir><dir name="Helper"><dir name="Data"><dir name="fixtures"><file name="content_search_results.yaml" hash="65a8b23a351f8b87c2993301361d9191"/><file name="testIsCmsEnabledDisabled.yaml" hash="24e89be563a355b9dcfd6016eb7fe3e2"/><file name="testIsCmsEnabledEnabled.yaml" hash="8903e1fc649bb70f4d76454fced95e2a"/></dir><dir name="providers"><file name="testGetExcludedCmsPages.yaml" hash="954599a138a65fecd75da2366aa6b515"/><file name="testIsCmsSyncEnabled.yaml" hash="9c3006c510c146f6511cae9287b3fdb8"/></dir></dir><file name="Data.php" hash="a8ee9e9d91eece007d94c0d92ddb654b"/></dir><dir name="Model"><dir name="Api"><dir name="data"><file name="message_response_content_success.xml" hash="3ac53566b3d187cb81eb04d40a195c50"/><file name="search_response_empty.xml" hash="39b739de681275c6a192dcd4ce796207"/><file name="search_response_success.xml" hash="15fea6ab852abd01c9630c86b895d773"/><file name="startsession_response_content_success.xml" hash="5fd26f817657ca9e1c1980d59219b28e"/></dir></dir><dir name="Content"><dir name="fixtures"><file name="testAddCms.yaml" hash="3054d1f054399ac080721e9a03be5f0e"/><file name="testClearAllProducts.yaml" hash="b7ec8b285d34a27e1c50d572b5ae8227"/><file name="testCmsRun.yaml" hash="074c89e69ec7a903f224ea430534c12d"/><file name="testDeleteCms.yaml" hash="21071d067eb03b1e546d1e12fe70955b"/><file name="testUpdateCms.yaml" hash="0e3a9db13fdee6858284ebb8b1d31083"/></dir></dir><file name="Content.php" hash="4d2f4c54d5389c686cd745c28fa97d40"/></dir></dir><dir name="controllers"><file name="SearchController.php" hash="b84ae7ea7a66f7c7f78c54fa7afdcfd1"/></dir><dir name="etc"><file name="config.xml" hash="c0e3647d7d4f067f14a45ab037cfc2c8"/><file name="system.xml" hash="de4dfb0d239a9d498c3157ce14d2fd57"/></dir><dir name="sql"><dir name="klevu_content_setup"><file name="mysql4-install-0.1.0.php" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="klevu"><dir name="boosting"><dir name="form"><dir name="field"><dir name="rule"><file name="button.phtml" hash="f27feff3fad2bbcd68b56df38de5cc83"/></dir></dir></dir></dir><dir name="search"><dir name="form"><dir name="field"><file name="array_readonly.phtml" hash="d3a3be4cf22f89d84bd73121a1adfa86"/><dir name="sync"><file name="button.phtml" hash="dae55579390ed8b72e1fadcbb538442b"/><file name="logbutton.phtml" hash="d31dd881015319d78d9fb2b83874f296"/></dir><dir name="trigger"><file name="button.phtml" hash="935c2d1ff308747c1a5e45417d1faa9e"/></dir></dir><file name="information.phtml" hash="9014ac2b78bf4f22be503208b377dc2c"/><file name="klevuinfo.phtml" hash="ea29b14b8f9b794f22465a6695a0e2ae"/><file name="quickinfo.phtml" hash="a383bb10176e87206954b5e379d20c7f"/></dir><file name="notifications.phtml" hash="090714ca57b11d24769c1baa1bcd4615"/><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array.phtml" hash="2e55476e647b79114b28d0a3a02704d5"/></dir></dir></dir></dir><dir name="wizard"><file name="complete.phtml" hash="7cf33a9a829eb07148d16da5056324dd"/><dir name="config"><file name="button.phtml" hash="b1644ee569882b05c2d8cb2f1eecddbc"/></dir><dir name="configure"><file name="attributes.phtml" hash="d54f0a86e78390fbe66825d0771aad25"/><file name="store.phtml" hash="c3a4fce90c554be53ecca58a41c2813d"/><file name="user.phtml" hash="e5678d947c0ccd6f14a23be3df7e9d7d"/><file name="userplan.phtml" hash="812420878cde0f51e8dcefa2a3ae7039"/></dir><dir name="form"><dir name="field"><file name="array.phtml" hash="ccdccab02fbd9cfc2145f094d5e12a2e"/></dir></dir></dir></dir></dir></dir><dir name="layout"><dir name="klevu"><file name="boosting.xml" hash="c17c262a50d6dfa4dc3ee6dbaac18432"/><file name="search.xml" hash="26cef989bb342bad783f5d8fc6a49e7f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="klevu"><dir name="addtocart"><file name="index.phtml" hash="64503e05ee420827bdba15b22e53dd9c"/><file name="index.phtml" hash="64503e05ee420827bdba15b22e53dd9c"/></dir><dir name="content"><file name="content_tracking.phtml" hash="54dc6f0ce8112013c1bcaad01899d7bc"/><file name="index.phtml" hash="a6fdec47b211db2177c9ceba0683d302"/><file name="left.phtml" hash="51f0cad58008a71a27e44377319fa044"/><file name="search.phtml" hash="379b8164a6760762ae1fcea9109f8924"/><file name="top.phtml" hash="2e2e3484388be8eed022ff541fc354f5"/><file name="type_of_query.phtml" hash="25b05bfe942a3bba838a44a8e150a453"/><file name="content_tracking.phtml" hash="54dc6f0ce8112013c1bcaad01899d7bc"/><file name="index.phtml" hash="a6fdec47b211db2177c9ceba0683d302"/><file name="left.phtml" hash="51f0cad58008a71a27e44377319fa044"/><file name="search.phtml" hash="379b8164a6760762ae1fcea9109f8924"/><file name="top.phtml" hash="2e2e3484388be8eed022ff541fc354f5"/><file name="type_of_query.phtml" hash="25b05bfe942a3bba838a44a8e150a453"/></dir><dir name="learning"><file name="category.phtml" hash="ce6ab73d3c9f2a36ac0d34e7a0cf3280"/><file name="category_tracking.phtml" hash="b825ba28a49b9ebb2e4d15ac5459fbf4"/></dir><dir name="search"><file name="form_js.phtml" hash="aebc81705e43c7d50aa5db453072f1c6"/><file name="index.phtml" hash="df508e23fce08ddcd980a4fea4988f8e"/><file name="klevulog.phtml" hash="9cebbd9ec162570768aefc30c777fb78"/><file name="product_tracking.phtml" hash="e773b0cfcc8c3649bf26cc83d71345ec"/><file name="form_js.phtml" hash="aebc81705e43c7d50aa5db453072f1c6"/><file name="index.phtml" hash="df508e23fce08ddcd980a4fea4988f8e"/><file name="klevulog.phtml" hash="9cebbd9ec162570768aefc30c777fb78"/><file name="product_tracking.phtml" hash="e773b0cfcc8c3649bf26cc83d71345ec"/></dir><dir name="searchterm"><file name="popular_searchterms.phtml" hash="4306a14ced0036bdb72158e11d4091d3"/></dir></dir></dir><dir name="layout"><dir name="klevu"><file name="search.xml" hash="7c581fe86dd6379ccdfdfce5120e43ca"/><file name="addtocart.xml" hash="78bb1c4910c4c2c37b49a9c36446f9d5"/><file name="content.xml" hash="633558c22064c1eb89c684d51b9deb00"/><file name="searchterms.xml" hash="c0db7111782ef105d6c44281b5a95303"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="klevu"><dir name="search"><dir name="lib"><file name="Wizard.js" hash="359afd117dc5cc7ccd14c838eacb573d"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="klevu"><dir name="search"><file name="klevumagestyle.css" hash="c2c4508f1193336d078cae94a45d1528"/><file name="notifications.css" hash="019a5a055bc621cb0f4c166ab8e5604c"/><file name="wizard.css" hash="824f735715f3ed97ce98414b9895e46b"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="klevu"><dir name="content"><file name="klevu-landing-left.css" hash="38c63d7796e4e33b212a1d8b044d0a91"/></dir><file name="klevu-landing-page-style.css" hash="ea3b2def562e2bc312c6608556c2254f"/><file name="klevu-landing-responsive.css" hash="1381b9400a4b286a7a02aef4e3ff4970"/><dir name="search"><file name="klevu-search-term.css" hash="e7e3f2e24073e6fa0949ac157d6d4d34"/></dir></dir></dir><dir name="images"><dir name="klevu"><file name="btn-gridview.png" hash="c3dd97f4f53e1dfe34b6c5b6b4237b8a"/><file name="btn-listview.png" hash="00aaaa62d67e252248d6075f53b04f7f"/><file name="ku-loader.gif" hash="009d5e60ec4c77c9a3351a3bf625b257"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="shell"><dir name="klevu"><file name="sync.php" hash="153e2895d8fbd544d8bf29d9504f5495"/></dir></dir><dir name="lib"><dir name="Klevu"><file name="Trigger.php" hash="c6e027b2e3924dbac1330c403cef78af"/></dir></dir></target></contents>
|
33 |
<compatible/>
|
34 |
+
<dependencies><required><php><min>5.3.0</min><max>7.1.2</max></php></required></dependencies>
|
35 |
</package>
|
shell/klevu/sync.php
CHANGED
@@ -24,16 +24,71 @@ class Klevu_Shell_Sync extends Mage_Shell_Abstract
|
|
24 |
if ($this->getArg('updatesonly')) {
|
25 |
Mage::getModel('klevu_search/product_sync')->run();
|
26 |
Mage::getModel("content/content")->run();
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
28 |
} else if($this->getArg('alldata')) {
|
29 |
// Modified the updated date klevu_product_sync table
|
30 |
Mage::getModel('klevu_search/product_sync')->markAllProductsForUpdate();
|
31 |
// Run the product sync for all store
|
32 |
Mage::getModel('klevu_search/product_sync')->run();
|
33 |
Mage::getModel("content/content")->run();
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
echo $this->usageHelp();
|
38 |
}
|
39 |
} catch(Exception $e){
|
@@ -46,6 +101,24 @@ class Klevu_Shell_Sync extends Mage_Shell_Abstract
|
|
46 |
|
47 |
|
48 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
|
50 |
// Usage instructions
|
51 |
public function usageHelp()
|
24 |
if ($this->getArg('updatesonly')) {
|
25 |
Mage::getModel('klevu_search/product_sync')->run();
|
26 |
Mage::getModel("content/content")->run();
|
27 |
+
$failedMessage = Mage::getSingleton('core/session')->getKlevuFailedFlag();
|
28 |
+
if(!empty($failedMessage) && $failedMessage == 1) {
|
29 |
+
echo "Product sync failed.Please consult klevu_search.log file for more information.";
|
30 |
+
} else {
|
31 |
+
echo "Data updates have been sent to Klevu";
|
32 |
+
}
|
33 |
} else if($this->getArg('alldata')) {
|
34 |
// Modified the updated date klevu_product_sync table
|
35 |
Mage::getModel('klevu_search/product_sync')->markAllProductsForUpdate();
|
36 |
// Run the product sync for all store
|
37 |
Mage::getModel('klevu_search/product_sync')->run();
|
38 |
Mage::getModel("content/content")->run();
|
39 |
+
if(!empty($failedMessage) && $failedMessage == 1) {
|
40 |
+
echo "Product sync failed.Please consult klevu_search.log file for more information.";
|
41 |
+
} else {
|
42 |
+
echo "All Data have been sent to Klevu";
|
43 |
+
}
|
44 |
+
} else if ($this->getArg('updatesonlywithindexing')) {
|
45 |
+
/* @var $indexCollection Mage_Index_Model_Resource_Process_Collection */
|
46 |
+
$indexCollection = Mage::getModel('index/process')->getCollection();
|
47 |
+
foreach ($indexCollection as $index) {
|
48 |
+
/* @var $index Mage_Index_Model_Process */
|
49 |
+
$index->reindexAll();
|
50 |
+
}
|
51 |
+
|
52 |
+
Mage::getModel('klevu_search/product_sync')->run();
|
53 |
+
Mage::getModel("content/content")->run();
|
54 |
+
$failedMessage = Mage::getSingleton('core/session')->getKlevuFailedFlag();
|
55 |
+
if(!empty($failedMessage) && $failedMessage == 1) {
|
56 |
+
echo "Product sync failed.Please consult klevu_search.log file for more information.";
|
57 |
+
} else {
|
58 |
+
echo "Data updates have been sent to Klevu";
|
59 |
+
}
|
60 |
+
} else if($this->getArg('alldatawithindexing')) {
|
61 |
+
|
62 |
+
/* @var $indexCollection Mage_Index_Model_Resource_Process_Collection */
|
63 |
+
$indexCollection = Mage::getModel('index/process')->getCollection();
|
64 |
+
foreach ($indexCollection as $index) {
|
65 |
+
/* @var $index Mage_Index_Model_Process */
|
66 |
+
$index->reindexAll();
|
67 |
+
}
|
68 |
+
|
69 |
+
// Modified the updated date klevu_product_sync table
|
70 |
+
Mage::getModel('klevu_search/product_sync')->markAllProductsForUpdate();
|
71 |
+
// Run the product sync for all store
|
72 |
+
Mage::getModel('klevu_search/product_sync')->run();
|
73 |
+
Mage::getModel("content/content")->run();
|
74 |
+
if(!empty($failedMessage) && $failedMessage == 1) {
|
75 |
+
echo "Product sync failed.Please consult klevu_search.log file for more information.";
|
76 |
+
} else {
|
77 |
+
echo "All Data have been sent to Klevu";
|
78 |
+
}
|
79 |
+
|
80 |
+
} else if($this->getArg('refreshklevuimages')) {
|
81 |
+
$collections = Mage::getModel('catalog/product')->getCollection();
|
82 |
+
foreach($collections as $collection){
|
83 |
+
$stores = Mage::app()->getStores();
|
84 |
+
foreach ($stores as $store) {
|
85 |
+
$ProductModel = Mage::getModel('catalog/product')->setStoreId($store->getId())
|
86 |
+
->load($collection->getId());
|
87 |
+
$image = $ProductModel->getImage();
|
88 |
+
$this->createThumb($ProductModel->getImage());
|
89 |
+
}
|
90 |
+
}
|
91 |
+
} else {
|
92 |
echo $this->usageHelp();
|
93 |
}
|
94 |
} catch(Exception $e){
|
101 |
|
102 |
|
103 |
}
|
104 |
+
|
105 |
+
|
106 |
+
public function createThumb($image) {
|
107 |
+
$imageResized = Mage::getBaseDir('media').DS."klevu_images".$image;
|
108 |
+
$baseImageUrl = Mage::getBaseDir('media').DS."catalog".DS."product".$image;
|
109 |
+
if(file_exists($baseImageUrl)) {
|
110 |
+
list($width, $height, $type, $attr)= getimagesize($baseImageUrl);
|
111 |
+
if($width > 200 && $height > 200) {
|
112 |
+
if(file_exists($imageResized)) {
|
113 |
+
if (!unlink('media/klevu_images'. $image))
|
114 |
+
{
|
115 |
+
Mage::helper('klevu_search')->log(Zend_Log::DEBUG, sprintf("Image Deleting Error:\n%s", $image));
|
116 |
+
}
|
117 |
+
}
|
118 |
+
Mage::getModel("klevu_search/product_sync")->thumbImageObj($baseImageUrl,$imageResized);
|
119 |
+
}
|
120 |
+
}
|
121 |
+
}
|
122 |
|
123 |
// Usage instructions
|
124 |
public function usageHelp()
|
skin/frontend/base/default/css/klevu/klevu-landing-page-style.css
CHANGED
@@ -945,6 +945,22 @@ transition: background 200ms;
|
|
945 |
color: #414042;
|
946 |
}
|
947 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
948 |
/* show variants */
|
949 |
.kuVariants{
|
950 |
font-size: 10px;
|
945 |
color: #414042;
|
946 |
}
|
947 |
|
948 |
+
/* div to display or query message */
|
949 |
+
.kuOrQueryMessage{
|
950 |
+
text-align: center;
|
951 |
+
margin-top: 10px;
|
952 |
+
color: #414042;
|
953 |
+
background: #ebebeb;
|
954 |
+
font-size: 13px;
|
955 |
+
padding: 7px 0px !important;
|
956 |
+
margin: 10px 15px;
|
957 |
+
}
|
958 |
+
|
959 |
+
.kuOrQueryMessage span {
|
960 |
+
font-weight: 600;
|
961 |
+
}
|
962 |
+
|
963 |
+
|
964 |
/* show variants */
|
965 |
.kuVariants{
|
966 |
font-size: 10px;
|