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;
|
