Version Notes
Download this release
Release Info
| Developer | Codisto |
| Extension | codistoconnect |
| Version | 1.90.11 |
| Comparing to | |
| See all releases | |
Code changes from version 1.90.10 to 1.90.11
- app/code/community/Codisto/Sync/Controller/Router.php +7 -3
- app/code/community/Codisto/Sync/Helper/Data.php +330 -263
- app/code/community/Codisto/Sync/Model/Sync.php +229 -187
- app/code/community/Codisto/Sync/controllers/IndexController.php +25 -17
- app/code/community/Codisto/Sync/controllers/SyncController.php +10 -0
- app/code/community/Codisto/Sync/data/codisto_setup/{data-install-1.90.10.php → data-install-1.90.11.php} +1 -1
- app/code/community/Codisto/Sync/etc/adminhtml.xml +12 -12
- app/code/community/Codisto/Sync/etc/config.xml +1 -1
- app/code/community/Codisto/Sync/sql/codisto_setup/{mysql4-install-1.90.10.php → mysql4-install-1.90.11.php} +0 -0
- package.xml +1 -1
app/code/community/Codisto/Sync/Controller/Router.php
CHANGED
|
@@ -37,8 +37,7 @@ class Codisto_Sync_Controller_Router extends Mage_Core_Controller_Varien_Router_
|
|
| 37 |
throw new PDOException('(sqlite PDO Driver) please refer to <a target="#blank" href="http://help.codisto.com/article/64-what-is-pdoexception-could-not-find-driver">Codisto help article</a>', 999);
|
| 38 |
}
|
| 39 |
|
| 40 |
-
|
| 41 |
-
$createMerchant = Mage::helper('codistosync')->createMerchantwithLock();
|
| 42 |
}
|
| 43 |
|
| 44 |
//Something else happened such as PDO related exception
|
|
@@ -109,6 +108,12 @@ class Codisto_Sync_Controller_Router extends Mage_Core_Controller_Varien_Router_
|
|
| 109 |
return true;
|
| 110 |
}
|
| 111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
$loggedIn = false;
|
| 113 |
|
| 114 |
if($request->getCookie('adminhtml'))
|
|
@@ -149,7 +154,6 @@ class Codisto_Sync_Controller_Router extends Mage_Core_Controller_Varien_Router_
|
|
| 149 |
if(class_exists('Zend_Session', false) && Zend_Session::isStarted())
|
| 150 |
{
|
| 151 |
Zend_Session::writeClose();
|
| 152 |
-
Zend_Session::destroy();
|
| 153 |
}
|
| 154 |
if(isset($_SESSION))
|
| 155 |
{
|
| 37 |
throw new PDOException('(sqlite PDO Driver) please refer to <a target="#blank" href="http://help.codisto.com/article/64-what-is-pdoexception-could-not-find-driver">Codisto help article</a>', 999);
|
| 38 |
}
|
| 39 |
|
| 40 |
+
$createMerchant = Mage::helper('codistosync')->createMerchantwithLock(5.0);
|
|
|
|
| 41 |
}
|
| 42 |
|
| 43 |
//Something else happened such as PDO related exception
|
| 108 |
return true;
|
| 109 |
}
|
| 110 |
|
| 111 |
+
if(isset($_SESSION))
|
| 112 |
+
{
|
| 113 |
+
session_write_close();
|
| 114 |
+
unset($_SESSION);
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
$loggedIn = false;
|
| 118 |
|
| 119 |
if($request->getCookie('adminhtml'))
|
| 154 |
if(class_exists('Zend_Session', false) && Zend_Session::isStarted())
|
| 155 |
{
|
| 156 |
Zend_Session::writeClose();
|
|
|
|
| 157 |
}
|
| 158 |
if(isset($_SESSION))
|
| 159 |
{
|
app/code/community/Codisto/Sync/Helper/Data.php
CHANGED
|
@@ -12,10 +12,10 @@
|
|
| 12 |
* obtain it through the world-wide-web, please send an email
|
| 13 |
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
*
|
| 15 |
-
* @category
|
| 16 |
-
* @package
|
| 17 |
* @copyright Copyright (c) 2015 On Technology Pty. Ltd. (http://codisto.com/)
|
| 18 |
-
* @license
|
| 19 |
*/
|
| 20 |
|
| 21 |
|
|
@@ -106,6 +106,14 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 106 |
}
|
| 107 |
catch(Exception $e)
|
| 108 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 109 |
$this->logExceptionCodisto($e, 'https://ui.codisto.com/installed');
|
| 110 |
}
|
| 111 |
|
|
@@ -145,7 +153,7 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 145 |
}
|
| 146 |
|
| 147 |
//Determine if we can create a new merchant. Prevent multiple requests from being able to complete signups
|
| 148 |
-
public function createMerchantwithLock()
|
| 149 |
{
|
| 150 |
$createMerchant = false;
|
| 151 |
|
|
@@ -180,7 +188,7 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 180 |
|
| 181 |
$lockQuery->closeCursor();
|
| 182 |
|
| 183 |
-
if($timeStamp +
|
| 184 |
{
|
| 185 |
$createMerchant = true;
|
| 186 |
|
|
@@ -376,315 +384,322 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 376 |
if(!$this->getTriggerMode())
|
| 377 |
return false;
|
| 378 |
|
| 379 |
-
|
|
|
|
|
|
|
| 380 |
|
| 381 |
-
|
| 382 |
|
| 383 |
-
|
| 384 |
-
|
| 385 |
-
|
| 386 |
-
|
| 387 |
-
|
| 388 |
-
|
| 389 |
|
| 390 |
-
|
| 391 |
|
| 392 |
-
|
| 393 |
-
|
| 394 |
-
{
|
| 395 |
-
$changeTables = array_flip( $changeTables );
|
| 396 |
-
|
| 397 |
-
foreach($changeTableDefs as $table => $createStatement)
|
| 398 |
{
|
| 399 |
-
|
|
|
|
|
|
|
| 400 |
{
|
| 401 |
-
|
|
|
|
|
|
|
| 402 |
|
| 403 |
-
|
|
|
|
| 404 |
}
|
| 405 |
}
|
| 406 |
-
}
|
| 407 |
-
|
| 408 |
-
// trigger management
|
| 409 |
-
$stdCodistoProductChangeStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 410 |
-
$stdCodistoProductDeleteStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 411 |
-
$stdCodistoCategoryChangeStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 412 |
-
$stdCodistoCategoryDeleteStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = OLD.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 413 |
-
|
| 414 |
-
$triggerStaticRules = array(
|
| 415 |
-
'catalog_product_entity' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 416 |
-
'catalog_product_entity_datetime' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 417 |
-
'catalog_product_entity_decimal' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 418 |
-
'catalog_product_entity_gallery' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 419 |
-
'catalog_product_entity_group_price' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 420 |
-
'catalog_product_entity_int' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 421 |
-
'catalog_product_entity_media_gallery' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 422 |
-
'catalog_product_entity_text' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 423 |
-
'catalog_product_entity_varchar' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 424 |
-
'cataloginventory_stock_item' => array(
|
| 425 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 426 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 427 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 428 |
-
),
|
| 429 |
-
'cataloginventory_stock_status' => array(
|
| 430 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 431 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 432 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 433 |
-
),
|
| 434 |
-
'catalog_category_entity' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 435 |
-
'catalog_category_entity_datetime' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 436 |
-
'catalog_category_entity_decimal' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 437 |
-
'catalog_category_entity_int' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 438 |
-
'catalog_category_entity_text' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 439 |
-
'catalog_category_entity_varchar' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 440 |
-
'catalog_category_product' => array(
|
| 441 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'.
|
| 442 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = NEW.category_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 443 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'.
|
| 444 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = NEW.category_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 445 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'.
|
| 446 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = OLD.category_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 447 |
-
),
|
| 448 |
-
'sales_flat_order' => array(
|
| 449 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND COALESCE(NEW.codisto_orderid, \'\') != \'\' THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 450 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND COALESCE(NEW.codisto_orderid, \'\') != \'\' THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 451 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND COALESCE(OLD.codisto_orderid, \'\') != \'\' THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 452 |
-
),
|
| 453 |
-
'sales_flat_invoice' => array(
|
| 454 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 455 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 456 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = OLD.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 457 |
-
),
|
| 458 |
-
'sales_flat_shipment' => array(
|
| 459 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 460 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 461 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = OLD.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 462 |
-
),
|
| 463 |
-
'sales_flat_shipment_track' => array(
|
| 464 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 465 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 466 |
-
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = OLD.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 467 |
-
)
|
| 468 |
-
);
|
| 469 |
-
|
| 470 |
-
$triggerRules = array();
|
| 471 |
-
foreach($triggerStaticRules as $table => $statements)
|
| 472 |
-
{
|
| 473 |
-
$triggerRules[$tablePrefix.$table] = array( 'table' => $table, 'statements' => $statements );
|
| 474 |
-
}
|
| 475 |
-
|
| 476 |
-
$adapter->query('CREATE TEMPORARY TABLE `codisto_triggers` ( `table` varchar(100) NOT NULL PRIMARY KEY, `insert_statement` varchar(2000) NOT NULL, `update_statement` varchar(2000) NOT NULL, `delete_statement` varchar(2000) NOT NULL )');
|
| 477 |
-
foreach($triggerRules as $table => $tableData)
|
| 478 |
-
{
|
| 479 |
-
$adapter->insert('codisto_triggers', array( 'table' => $table, 'insert_statement' => $tableData['statements'][0], 'update_statement' => $tableData['statements'][1], 'delete_statement' => $tableData['statements'][2] ) );
|
| 480 |
-
}
|
| 481 |
-
|
| 482 |
-
$missingTriggers = $adapter->fetchAll(
|
| 483 |
-
'SELECT T.`table`, '.
|
| 484 |
-
'TYPE.`type`, '.
|
| 485 |
-
'CASE WHEN TRIGGER_NAME IS NULL THEN 0 ELSE -1 END AS `exists`, '.
|
| 486 |
-
'COALESCE(EXISTING.TRIGGER_CATALOG, \'\') AS `current_catalog`, '.
|
| 487 |
-
'COALESCE(EXISTING.TRIGGER_SCHEMA, \'\') AS `current_schema`, '.
|
| 488 |
-
'COALESCE(EXISTING.TRIGGER_NAME, \'\') AS `current_name`, '.
|
| 489 |
-
'COALESCE(EXISTING.ACTION_STATEMENT, \'\') AS `current_statement`, '.
|
| 490 |
-
'COALESCE(EXISTING.DEFINER, \'\') AS `current_definer`, '.
|
| 491 |
-
'COALESCE(EXISTING.SQL_MODE, \'\') AS `current_sqlmode` '.
|
| 492 |
-
'FROM `codisto_triggers` AS T '.
|
| 493 |
-
'CROSS JOIN (SELECT \'UPDATE\' AS `type` UNION ALL SELECT \'INSERT\' UNION ALL SELECT \'DELETE\') AS TYPE '.
|
| 494 |
-
'LEFT JOIN INFORMATION_SCHEMA.TRIGGERS AS EXISTING ON EXISTING.EVENT_OBJECT_TABLE = T.`table` AND EXISTING.ACTION_TIMING = \'AFTER\' AND EXISTING.EVENT_MANIPULATION = TYPE.`type` '.
|
| 495 |
-
'WHERE NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TRIGGERS WHERE EVENT_OBJECT_TABLE = T.`table` AND ACTION_TIMING = \'AFTER\' AND EVENT_MANIPULATION = TYPE.`type` AND ACTION_STATEMENT LIKE CONCAT(\'%\', CASE WHEN TYPE.`type` = \'INSERT\' THEN T.`insert_statement` WHEN TYPE.`type` = \'UPDATE\' THEN T.`update_statement` WHEN TYPE.`type` = \'DELETE\' THEN T.`delete_statement` END, \'%\'))');
|
| 496 |
-
|
| 497 |
-
$changeTriggersExist = true;
|
| 498 |
-
|
| 499 |
-
if(count($missingTriggers) > 0)
|
| 500 |
-
{
|
| 501 |
-
$changeTriggersExist = false;
|
| 502 |
|
| 503 |
-
|
| 504 |
-
|
| 505 |
-
$
|
| 506 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 507 |
{
|
| 508 |
-
|
| 509 |
-
$trigger['current_statement'])
|
| 510 |
-
{
|
| 511 |
-
$existingTriggers[] = array(
|
| 512 |
-
'current_definer' => $trigger['current_definer'],
|
| 513 |
-
'current_schema' => $trigger['current_schema'],
|
| 514 |
-
'current_name' => $trigger['current_name'],
|
| 515 |
-
'current_statement' => $trigger['current_statement'],
|
| 516 |
-
'current_sqlmode' => $trigger['current_sqlmode'],
|
| 517 |
-
'type' => $trigger['type'],
|
| 518 |
-
'table' => $trigger['table']
|
| 519 |
-
);
|
| 520 |
-
}
|
| 521 |
}
|
| 522 |
|
| 523 |
-
|
|
|
|
| 524 |
{
|
| 525 |
-
$adapter->
|
| 526 |
-
|
| 527 |
-
foreach($existingTriggers as $trigger)
|
| 528 |
-
{
|
| 529 |
-
$adapter->insert($tablePrefix.'codisto_trigger_backup', array(
|
| 530 |
-
'definer' => $trigger['current_definer'],
|
| 531 |
-
'current_schema' => $trigger['current_schema'],
|
| 532 |
-
'current_name' => $trigger['current_name'],
|
| 533 |
-
'current_statement' => $trigger['current_statement'],
|
| 534 |
-
'type' => $trigger['type'],
|
| 535 |
-
'table' => $trigger['table']
|
| 536 |
-
));
|
| 537 |
-
}
|
| 538 |
}
|
| 539 |
|
| 540 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 541 |
{
|
| 542 |
-
$
|
| 543 |
|
| 544 |
-
$
|
| 545 |
-
$statement = $triggerRule['statements'][$triggerTypeMap[$trigger['type']]];
|
| 546 |
|
| 547 |
-
|
|
|
|
| 548 |
{
|
| 549 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 550 |
|
| 551 |
-
|
| 552 |
-
|
|
|
|
| 553 |
|
| 554 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 555 |
}
|
| 556 |
-
|
|
|
|
| 557 |
{
|
| 558 |
-
|
| 559 |
-
|
| 560 |
-
|
| 561 |
-
|
| 562 |
-
|
|
|
|
| 563 |
{
|
| 564 |
-
|
| 565 |
|
| 566 |
-
$
|
| 567 |
-
$
|
| 568 |
-
$final_statement = preg_replace('/;\s*;/', ';', $cleaned_statement."\n/* start codisto change tracking trigger */\n".$statement)
|
| 569 |
-
."\n/* end codisto change tracking trigger */\n";
|
| 570 |
|
| 571 |
-
|
| 572 |
-
|
| 573 |
-
|
| 574 |
-
|
| 575 |
-
if(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 576 |
{
|
| 577 |
-
|
| 578 |
-
}
|
| 579 |
|
| 580 |
-
|
| 581 |
-
|
| 582 |
-
|
| 583 |
-
|
| 584 |
-
|
| 585 |
-
|
| 586 |
-
|
| 587 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 588 |
|
| 589 |
-
try
|
| 590 |
-
{
|
| 591 |
-
$adapter->query('SET @saved_sql_mode = @@sql_mode');
|
| 592 |
-
$adapter->query('SET sql_mode = \''.$trigger['current_sqlmode'].'\'');
|
| 593 |
-
$adapter->query('DROP TRIGGER `'.$trigger['current_schema'].'`.`'.$trigger['current_name'].'`');
|
| 594 |
-
$adapter->query('CREATE DEFINER = '.$definer.' TRIGGER `'.$trigger['current_name'].'` AFTER '.$trigger['type'].' ON `'.$trigger['table'].'`'."\n".' FOR EACH ROW BEGIN'.$final_statement.'END');
|
| 595 |
-
$adapter->query('SET sql_mode = @saved_sql_mode');
|
| 596 |
-
}
|
| 597 |
-
catch(Exception $e2)
|
| 598 |
-
{
|
| 599 |
try
|
| 600 |
{
|
| 601 |
$adapter->query('SET @saved_sql_mode = @@sql_mode');
|
| 602 |
$adapter->query('SET sql_mode = \''.$trigger['current_sqlmode'].'\'');
|
| 603 |
-
$adapter->query('
|
|
|
|
| 604 |
$adapter->query('SET sql_mode = @saved_sql_mode');
|
| 605 |
}
|
| 606 |
-
catch(Exception $
|
| 607 |
{
|
| 608 |
-
|
| 609 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 610 |
|
| 611 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 612 |
}
|
| 613 |
-
}
|
| 614 |
-
else
|
| 615 |
-
{
|
| 616 |
-
throw $e;
|
| 617 |
}
|
| 618 |
}
|
| 619 |
}
|
| 620 |
-
}
|
| 621 |
|
| 622 |
-
|
| 623 |
|
| 624 |
-
|
| 625 |
-
|
| 626 |
-
|
| 627 |
|
| 628 |
-
|
| 629 |
-
|
| 630 |
-
|
| 631 |
|
| 632 |
-
|
| 633 |
|
| 634 |
-
|
| 635 |
|
| 636 |
-
|
| 637 |
|
| 638 |
-
|
| 639 |
|
| 640 |
-
|
| 641 |
-
|
| 642 |
-
|
| 643 |
-
|
| 644 |
-
|
| 645 |
|
| 646 |
-
|
| 647 |
|
| 648 |
-
|
| 649 |
-
|
| 650 |
-
|
| 651 |
-
|
| 652 |
-
|
| 653 |
-
|
| 654 |
-
|
| 655 |
-
|
| 656 |
|
| 657 |
-
|
| 658 |
|
| 659 |
-
|
| 660 |
-
|
| 661 |
-
{
|
| 662 |
-
$qry = null;
|
| 663 |
-
try
|
| 664 |
{
|
|
|
|
| 665 |
try
|
| 666 |
{
|
| 667 |
-
|
|
|
|
|
|
|
| 668 |
|
| 669 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 670 |
}
|
| 671 |
catch(Exception $e)
|
| 672 |
{
|
| 673 |
-
|
| 674 |
-
$qry->closeCursor();
|
| 675 |
}
|
| 676 |
}
|
| 677 |
-
catch(Exception $e)
|
| 678 |
-
{
|
| 679 |
|
| 680 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 681 |
}
|
| 682 |
-
|
| 683 |
-
return (!is_null($changeToken) && $changeToken != '') &&
|
| 684 |
-
($changeToken == $syncToken) &&
|
| 685 |
-
$changeTablesExist &&
|
| 686 |
-
$changeTriggersExist &&
|
| 687 |
-
$syncDbExists;
|
| 688 |
}
|
| 689 |
|
| 690 |
public function cleanSyncFolder()
|
|
@@ -802,16 +817,49 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 802 |
array('pipe', 'w')
|
| 803 |
), $pipes);
|
| 804 |
|
| 805 |
-
|
| 806 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 807 |
|
| 808 |
$result = @stream_get_contents($pipes[1]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 809 |
if(!$result)
|
| 810 |
$result = '';
|
| 811 |
|
| 812 |
-
fclose($pipes[1]);
|
| 813 |
-
|
| 814 |
-
proc_close($process);
|
| 815 |
|
| 816 |
return $result;
|
| 817 |
}
|
|
@@ -1020,7 +1068,7 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 1020 |
|
| 1021 |
if(is_resource($process))
|
| 1022 |
{
|
| 1023 |
-
proc_close($process);
|
| 1024 |
return true;
|
| 1025 |
}
|
| 1026 |
}
|
|
@@ -1077,24 +1125,43 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 1077 |
$descriptors, $pipes, Mage::getBaseDir('base'), array( 'CURL_CA_BUNDLE' => $curl_cainfo ));
|
| 1078 |
if(is_resource($process))
|
| 1079 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1080 |
if(is_string($stdin))
|
| 1081 |
{
|
| 1082 |
for($written = 0; $written < strlen($stdin); )
|
| 1083 |
{
|
| 1084 |
$writecount = fwrite($pipes[0], substr($stdin, $written));
|
| 1085 |
if($writecount === false)
|
| 1086 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1087 |
|
| 1088 |
$written += $writecount;
|
| 1089 |
}
|
| 1090 |
|
| 1091 |
-
fclose($pipes[0]);
|
| 1092 |
}
|
| 1093 |
|
| 1094 |
-
$result = stream_get_contents($pipes[1]);
|
| 1095 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1096 |
|
| 1097 |
-
|
|
|
|
| 1098 |
return $result;
|
| 1099 |
}
|
| 1100 |
}
|
|
@@ -1108,7 +1175,7 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 1108 |
if(strpos($content, '{{') === false)
|
| 1109 |
return trim($content);
|
| 1110 |
|
| 1111 |
-
$result = $this->runProcess('
|
| 1112 |
if($result != null)
|
| 1113 |
return $result;
|
| 1114 |
|
|
@@ -1154,7 +1221,7 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 1154 |
|
| 1155 |
if($eventtype == Mage_Index_Model_Event::TYPE_DELETE)
|
| 1156 |
{
|
| 1157 |
-
$syncObject->
|
| 1158 |
}
|
| 1159 |
else
|
| 1160 |
{
|
|
@@ -1166,7 +1233,7 @@ class Codisto_Sync_Helper_Data extends Mage_Core_Helper_Abstract
|
|
| 1166 |
}
|
| 1167 |
}
|
| 1168 |
|
| 1169 |
-
$backgroundSignal = $this->runProcessBackground('
|
| 1170 |
if($backgroundSignal)
|
| 1171 |
return;
|
| 1172 |
|
| 12 |
* obtain it through the world-wide-web, please send an email
|
| 13 |
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
*
|
| 15 |
+
* @category Codisto
|
| 16 |
+
* @package Codisto_Sync
|
| 17 |
* @copyright Copyright (c) 2015 On Technology Pty. Ltd. (http://codisto.com/)
|
| 18 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 19 |
*/
|
| 20 |
|
| 21 |
|
| 106 |
}
|
| 107 |
catch(Exception $e)
|
| 108 |
{
|
| 109 |
+
if(property_exists($e, 'errorInfo') &&
|
| 110 |
+
$e->errorInfo[0] == 'HY000' &&
|
| 111 |
+
$e->errorInfo[1] == 8 &&
|
| 112 |
+
$e->errorInfo[2] == 'attempt to write a readonly database')
|
| 113 |
+
{
|
| 114 |
+
if(file_exists($nonceDbPath))
|
| 115 |
+
unlink($nonceDbPath);
|
| 116 |
+
}
|
| 117 |
$this->logExceptionCodisto($e, 'https://ui.codisto.com/installed');
|
| 118 |
}
|
| 119 |
|
| 153 |
}
|
| 154 |
|
| 155 |
//Determine if we can create a new merchant. Prevent multiple requests from being able to complete signups
|
| 156 |
+
public function createMerchantwithLock($timeout)
|
| 157 |
{
|
| 158 |
$createMerchant = false;
|
| 159 |
|
| 188 |
|
| 189 |
$lockQuery->closeCursor();
|
| 190 |
|
| 191 |
+
if($timeStamp + $timeout < microtime(true))
|
| 192 |
{
|
| 193 |
$createMerchant = true;
|
| 194 |
|
| 384 |
if(!$this->getTriggerMode())
|
| 385 |
return false;
|
| 386 |
|
| 387 |
+
try
|
| 388 |
+
{
|
| 389 |
+
$adapter = Mage::getModel('core/resource')->getConnection(Mage_Core_Model_Resource::DEFAULT_WRITE_RESOURCE);
|
| 390 |
|
| 391 |
+
$tablePrefix = Mage::getConfig()->getTablePrefix();
|
| 392 |
|
| 393 |
+
// change tables
|
| 394 |
+
$changeTableDefs = array(
|
| 395 |
+
'codisto_product_change' => 'CREATE TABLE `'.$tablePrefix.'codisto_product_change` (product_id int(10) unsigned NOT NULL PRIMARY KEY, stamp datetime NOT NULL)',
|
| 396 |
+
'codisto_order_change' => 'CREATE TABLE `'.$tablePrefix.'codisto_order_change` (order_id int(10) unsigned NOT NULL PRIMARY KEY, stamp datetime NOT NULL)',
|
| 397 |
+
'codisto_category_change' => 'CREATE TABLE `'.$tablePrefix.'codisto_category_change` (category_id int(10) unsigned NOT NULL PRIMARY KEY, stamp datetime NOT NULL)'
|
| 398 |
+
);
|
| 399 |
|
| 400 |
+
$changeTablesExist = true;
|
| 401 |
|
| 402 |
+
$changeTables = $adapter->fetchCol('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE \''.$tablePrefix.'codisto_%_change\'');
|
| 403 |
+
if(is_array($changeTables))
|
|
|
|
|
|
|
|
|
|
|
|
|
| 404 |
{
|
| 405 |
+
$changeTables = array_flip( $changeTables );
|
| 406 |
+
|
| 407 |
+
foreach($changeTableDefs as $table => $createStatement)
|
| 408 |
{
|
| 409 |
+
if(!isset($changeTables[$tablePrefix.$table]))
|
| 410 |
+
{
|
| 411 |
+
$adapter->query($changeTableDefs[$table]);
|
| 412 |
|
| 413 |
+
$changeTablesExist = false;
|
| 414 |
+
}
|
| 415 |
}
|
| 416 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 417 |
|
| 418 |
+
// trigger management
|
| 419 |
+
$stdCodistoProductChangeStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 420 |
+
$stdCodistoProductDeleteStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 421 |
+
$stdCodistoCategoryChangeStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 422 |
+
$stdCodistoCategoryDeleteStmt = 'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = OLD.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;';
|
| 423 |
+
|
| 424 |
+
$triggerStaticRules = array(
|
| 425 |
+
'catalog_product_entity' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 426 |
+
'catalog_product_entity_datetime' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 427 |
+
'catalog_product_entity_decimal' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 428 |
+
'catalog_product_entity_gallery' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 429 |
+
'catalog_product_entity_group_price' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 430 |
+
'catalog_product_entity_int' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 431 |
+
'catalog_product_entity_media_gallery' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 432 |
+
'catalog_product_entity_text' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 433 |
+
'catalog_product_entity_varchar' => array( $stdCodistoProductChangeStmt, $stdCodistoProductChangeStmt, $stdCodistoProductDeleteStmt ),
|
| 434 |
+
'cataloginventory_stock_item' => array(
|
| 435 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 436 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 437 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 438 |
+
),
|
| 439 |
+
'cataloginventory_stock_status' => array(
|
| 440 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 441 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 442 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 443 |
+
),
|
| 444 |
+
'catalog_category_entity' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 445 |
+
'catalog_category_entity_datetime' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 446 |
+
'catalog_category_entity_decimal' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 447 |
+
'catalog_category_entity_int' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 448 |
+
'catalog_category_entity_text' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 449 |
+
'catalog_category_entity_varchar' => array( $stdCodistoCategoryChangeStmt, $stdCodistoCategoryChangeStmt, $stdCodistoCategoryDeleteStmt ),
|
| 450 |
+
'catalog_category_product' => array(
|
| 451 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'.
|
| 452 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = NEW.category_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 453 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = NEW.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'.
|
| 454 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = NEW.category_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 455 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_product_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_product_change` SET product_id = OLD.product_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE product_id = product_id, stamp = UTC_TIMESTAMP(); END IF;'.
|
| 456 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_category_change\') THEN INSERT INTO `'.$tablePrefix.'codisto_category_change` SET category_id = OLD.category_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE category_id = category_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 457 |
+
),
|
| 458 |
+
'sales_flat_order' => array(
|
| 459 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND COALESCE(NEW.codisto_orderid, \'\') != \'\' THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 460 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND COALESCE(NEW.codisto_orderid, \'\') != \'\' THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 461 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND COALESCE(OLD.codisto_orderid, \'\') != \'\' THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.entity_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 462 |
+
),
|
| 463 |
+
'sales_flat_invoice' => array(
|
| 464 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 465 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 466 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = OLD.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 467 |
+
),
|
| 468 |
+
'sales_flat_shipment' => array(
|
| 469 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 470 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 471 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = OLD.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 472 |
+
),
|
| 473 |
+
'sales_flat_shipment_track' => array(
|
| 474 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 475 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = NEW.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = NEW.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;',
|
| 476 |
+
'IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \''.$tablePrefix.'codisto_order_change\') AND EXISTS(SELECT 1 FROM `'.$tablePrefix.'sales_flat_order` WHERE entity_id = OLD.order_id AND COALESCE(codisto_orderid, \'\') != \'\') THEN INSERT INTO `'.$tablePrefix.'codisto_order_change` SET order_id = OLD.order_id, stamp = UTC_TIMESTAMP() ON DUPLICATE KEY UPDATE order_id = order_id, stamp = UTC_TIMESTAMP(); END IF;'
|
| 477 |
+
)
|
| 478 |
+
);
|
| 479 |
+
|
| 480 |
+
$triggerRules = array();
|
| 481 |
+
foreach($triggerStaticRules as $table => $statements)
|
| 482 |
{
|
| 483 |
+
$triggerRules[$tablePrefix.$table] = array( 'table' => $table, 'statements' => $statements );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 484 |
}
|
| 485 |
|
| 486 |
+
$adapter->query('CREATE TEMPORARY TABLE `codisto_triggers` ( `table` varchar(100) NOT NULL PRIMARY KEY, `insert_statement` varchar(2000) NOT NULL, `update_statement` varchar(2000) NOT NULL, `delete_statement` varchar(2000) NOT NULL )');
|
| 487 |
+
foreach($triggerRules as $table => $tableData)
|
| 488 |
{
|
| 489 |
+
$adapter->insert('codisto_triggers', array( 'table' => $table, 'insert_statement' => $tableData['statements'][0], 'update_statement' => $tableData['statements'][1], 'delete_statement' => $tableData['statements'][2] ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 490 |
}
|
| 491 |
|
| 492 |
+
$missingTriggers = $adapter->fetchAll(
|
| 493 |
+
'SELECT T.`table`, '.
|
| 494 |
+
'TYPE.`type`, '.
|
| 495 |
+
'CASE WHEN TRIGGER_NAME IS NULL THEN 0 ELSE -1 END AS `exists`, '.
|
| 496 |
+
'COALESCE(EXISTING.TRIGGER_CATALOG, \'\') AS `current_catalog`, '.
|
| 497 |
+
'COALESCE(EXISTING.TRIGGER_SCHEMA, \'\') AS `current_schema`, '.
|
| 498 |
+
'COALESCE(EXISTING.TRIGGER_NAME, \'\') AS `current_name`, '.
|
| 499 |
+
'COALESCE(EXISTING.ACTION_STATEMENT, \'\') AS `current_statement`, '.
|
| 500 |
+
'COALESCE(EXISTING.DEFINER, \'\') AS `current_definer`, '.
|
| 501 |
+
'COALESCE(EXISTING.SQL_MODE, \'\') AS `current_sqlmode` '.
|
| 502 |
+
'FROM `codisto_triggers` AS T '.
|
| 503 |
+
'CROSS JOIN (SELECT \'UPDATE\' AS `type` UNION ALL SELECT \'INSERT\' UNION ALL SELECT \'DELETE\') AS TYPE '.
|
| 504 |
+
'LEFT JOIN INFORMATION_SCHEMA.TRIGGERS AS EXISTING ON EXISTING.EVENT_OBJECT_TABLE = T.`table` AND EXISTING.ACTION_TIMING = \'AFTER\' AND EXISTING.EVENT_MANIPULATION = TYPE.`type` '.
|
| 505 |
+
'WHERE NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TRIGGERS WHERE EVENT_OBJECT_TABLE = T.`table` AND ACTION_TIMING = \'AFTER\' AND EVENT_MANIPULATION = TYPE.`type` AND ACTION_STATEMENT LIKE CONCAT(\'%\', CASE WHEN TYPE.`type` = \'INSERT\' THEN T.`insert_statement` WHEN TYPE.`type` = \'UPDATE\' THEN T.`update_statement` WHEN TYPE.`type` = \'DELETE\' THEN T.`delete_statement` END, \'%\'))');
|
| 506 |
+
|
| 507 |
+
$changeTriggersExist = true;
|
| 508 |
+
|
| 509 |
+
if(count($missingTriggers) > 0)
|
| 510 |
{
|
| 511 |
+
$changeTriggersExist = false;
|
| 512 |
|
| 513 |
+
$triggerTypeMap = array( 'INSERT' => 0, 'UPDATE' => 1, 'DELETE' => 2 );
|
|
|
|
| 514 |
|
| 515 |
+
$existingTriggers = array();
|
| 516 |
+
foreach($missingTriggers as $trigger)
|
| 517 |
{
|
| 518 |
+
if(isset($trigger['current_name']) && $trigger['current_name'] &&
|
| 519 |
+
$trigger['current_statement'])
|
| 520 |
+
{
|
| 521 |
+
$existingTriggers[] = array(
|
| 522 |
+
'current_definer' => $trigger['current_definer'],
|
| 523 |
+
'current_schema' => $trigger['current_schema'],
|
| 524 |
+
'current_name' => $trigger['current_name'],
|
| 525 |
+
'current_statement' => $trigger['current_statement'],
|
| 526 |
+
'current_sqlmode' => $trigger['current_sqlmode'],
|
| 527 |
+
'type' => $trigger['type'],
|
| 528 |
+
'table' => $trigger['table']
|
| 529 |
+
);
|
| 530 |
+
}
|
| 531 |
+
}
|
| 532 |
|
| 533 |
+
if(!empty($existingTriggers))
|
| 534 |
+
{
|
| 535 |
+
$adapter->query('CREATE TABLE IF NOT EXISTS `'.$tablePrefix.'codisto_trigger_backup` (definer text NOT NULL, current_schema text NOT NULL, current_name text NOT NULL, current_statement text NOT NULL, type text NOT NULL, `table` text NOT NULL, stamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)');
|
| 536 |
|
| 537 |
+
foreach($existingTriggers as $trigger)
|
| 538 |
+
{
|
| 539 |
+
$adapter->insert($tablePrefix.'codisto_trigger_backup', array(
|
| 540 |
+
'definer' => $trigger['current_definer'],
|
| 541 |
+
'current_schema' => $trigger['current_schema'],
|
| 542 |
+
'current_name' => $trigger['current_name'],
|
| 543 |
+
'current_statement' => $trigger['current_statement'],
|
| 544 |
+
'type' => $trigger['type'],
|
| 545 |
+
'table' => $trigger['table']
|
| 546 |
+
));
|
| 547 |
+
}
|
| 548 |
}
|
| 549 |
+
|
| 550 |
+
foreach($missingTriggers as $trigger)
|
| 551 |
{
|
| 552 |
+
$triggerRule = $triggerRules[$trigger['table']];
|
| 553 |
+
|
| 554 |
+
$table = $triggerRule['table'];
|
| 555 |
+
$statement = $triggerRule['statements'][$triggerTypeMap[$trigger['type']]];
|
| 556 |
+
|
| 557 |
+
try
|
| 558 |
{
|
| 559 |
+
$final_statement = "\n/* start codisto change tracking trigger */\n".$statement."\n/* end codisto change tracking trigger */\n";
|
| 560 |
|
| 561 |
+
$adapter->query('DROP TRIGGER IF EXISTS codisto_'.$table.'_'.strtolower($trigger['type']));
|
| 562 |
+
$adapter->query('CREATE DEFINER = CURRENT_USER TRIGGER codisto_'.$table.'_'.strtolower($trigger['type']).' AFTER '.$trigger['type'].' ON `'.$trigger['table'].'`'."\n".'FOR EACH ROW BEGIN '.$final_statement.'END');
|
|
|
|
|
|
|
| 563 |
|
| 564 |
+
// TODO: loop on existing triggers for this class that match /* start codisto change tracking trigger */ and remove
|
| 565 |
+
}
|
| 566 |
+
catch(Exception $e)
|
| 567 |
+
{
|
| 568 |
+
if(method_exists($e, 'hasChainedException') &&
|
| 569 |
+
$e->hasChainedException() &&
|
| 570 |
+
$e->getChainedException() instanceof PDOException &&
|
| 571 |
+
is_array($e->getChainedException()->errorInfo) &&
|
| 572 |
+
$e->getChainedException()->errorInfo[1] == 1235)
|
| 573 |
{
|
| 574 |
+
// this version of mysql doesn't support multiple triggers so let's modify the existing trigger
|
|
|
|
| 575 |
|
| 576 |
+
$current_statement = preg_replace('/^BEGIN|END$/i', '', $trigger['current_statement']);
|
| 577 |
+
$cleaned_statement = preg_replace('/\s*\/\*\s+start\s+codisto\s+change\s+tracking\s+trigger\s+\*\/.*\/\*\s+end\s+codisto\s+change\s+tracking\s+trigger\s+\*\/\n?\s*/is', '', $current_statement);
|
| 578 |
+
$final_statement = preg_replace('/;\s*;/', ';', $cleaned_statement."\n/* start codisto change tracking trigger */\n".$statement)
|
| 579 |
+
."\n/* end codisto change tracking trigger */\n";
|
| 580 |
+
|
| 581 |
+
if(!preg_match('/^\s/', $final_statement))
|
| 582 |
+
{
|
| 583 |
+
$final_statement = "\n".$final_statement;
|
| 584 |
+
}
|
| 585 |
+
if(!preg_match('/\s$/', $final_statement))
|
| 586 |
+
{
|
| 587 |
+
$final_statement = $final_statement."\n";
|
| 588 |
+
}
|
| 589 |
+
|
| 590 |
+
$definer = $trigger['current_definer'];
|
| 591 |
+
if(strpos($definer, '@') !== false)
|
| 592 |
+
{
|
| 593 |
+
$definer = explode('@', $definer);
|
| 594 |
+
$definer[0] = '\''.$definer[0].'\'';
|
| 595 |
+
$definer[1] = '\''.$definer[1].'\'';
|
| 596 |
+
$definer = implode('@', $definer);
|
| 597 |
+
}
|
| 598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 599 |
try
|
| 600 |
{
|
| 601 |
$adapter->query('SET @saved_sql_mode = @@sql_mode');
|
| 602 |
$adapter->query('SET sql_mode = \''.$trigger['current_sqlmode'].'\'');
|
| 603 |
+
$adapter->query('DROP TRIGGER `'.$trigger['current_schema'].'`.`'.$trigger['current_name'].'`');
|
| 604 |
+
$adapter->query('CREATE DEFINER = '.$definer.' TRIGGER `'.$trigger['current_name'].'` AFTER '.$trigger['type'].' ON `'.$trigger['table'].'`'."\n".' FOR EACH ROW BEGIN'.$final_statement.'END');
|
| 605 |
$adapter->query('SET sql_mode = @saved_sql_mode');
|
| 606 |
}
|
| 607 |
+
catch(Exception $e2)
|
| 608 |
{
|
| 609 |
+
try
|
| 610 |
+
{
|
| 611 |
+
$adapter->query('SET @saved_sql_mode = @@sql_mode');
|
| 612 |
+
$adapter->query('SET sql_mode = \''.$trigger['current_sqlmode'].'\'');
|
| 613 |
+
$adapter->query('CREATE DEFINER = '.$definer.' TRIGGER `'.$trigger['current_name'].'` AFTER '.$trigger['type'].' ON `'.$trigger['table'].'`'."\n".'FOR EACH ROW '.$trigger['current_statement']);
|
| 614 |
+
$adapter->query('SET sql_mode = @saved_sql_mode');
|
| 615 |
+
}
|
| 616 |
+
catch(Exception $e3)
|
| 617 |
+
{
|
| 618 |
+
throw new Exception($e2->getMessage().' '.$e3->getMessage());
|
| 619 |
+
}
|
| 620 |
|
| 621 |
+
throw $e2;
|
| 622 |
+
}
|
| 623 |
+
}
|
| 624 |
+
else
|
| 625 |
+
{
|
| 626 |
+
throw $e;
|
| 627 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 628 |
}
|
| 629 |
}
|
| 630 |
}
|
|
|
|
| 631 |
|
| 632 |
+
$adapter->query('DROP TABLE codisto_triggers');
|
| 633 |
|
| 634 |
+
// check sync db exists
|
| 635 |
+
$syncDbExists = false;
|
| 636 |
+
$syncDb = null;
|
| 637 |
|
| 638 |
+
try
|
| 639 |
+
{
|
| 640 |
+
$syncDb = new PDO('sqlite:' . $syncDbPath);
|
| 641 |
|
| 642 |
+
$this->prepareSqliteDatabase( $syncDb, 60 );
|
| 643 |
|
| 644 |
+
$qry = $syncDb->query('PRAGMA quick_check');
|
| 645 |
|
| 646 |
+
$checkResult = $qry->fetchColumn();
|
| 647 |
|
| 648 |
+
$qry->closeCursor();
|
| 649 |
|
| 650 |
+
if($checkResult == 'ok')
|
| 651 |
+
$syncDbExists = true;
|
| 652 |
+
}
|
| 653 |
+
catch(Exception $e)
|
| 654 |
+
{
|
| 655 |
|
| 656 |
+
}
|
| 657 |
|
| 658 |
+
// check sync db uuid and mage uuid
|
| 659 |
+
$changeToken = null;
|
| 660 |
+
try
|
| 661 |
+
{
|
| 662 |
+
$changeToken = $adapter->fetchOne('SELECT token FROM `'.$tablePrefix.'codisto_sync` WHERE store_id = '.(int)$storeId);
|
| 663 |
+
}
|
| 664 |
+
catch(Exception $e)
|
| 665 |
+
{
|
| 666 |
|
| 667 |
+
}
|
| 668 |
|
| 669 |
+
$syncToken = null;
|
| 670 |
+
if($syncDb)
|
|
|
|
|
|
|
|
|
|
| 671 |
{
|
| 672 |
+
$qry = null;
|
| 673 |
try
|
| 674 |
{
|
| 675 |
+
try
|
| 676 |
+
{
|
| 677 |
+
$qry = $syncDb->query('SELECT token FROM sync');
|
| 678 |
|
| 679 |
+
$syncToken = $qry->fetchColumn();
|
| 680 |
+
}
|
| 681 |
+
catch(Exception $e)
|
| 682 |
+
{
|
| 683 |
+
if($qry)
|
| 684 |
+
$qry->closeCursor();
|
| 685 |
+
}
|
| 686 |
}
|
| 687 |
catch(Exception $e)
|
| 688 |
{
|
| 689 |
+
|
|
|
|
| 690 |
}
|
| 691 |
}
|
|
|
|
|
|
|
| 692 |
|
| 693 |
+
return (!is_null($changeToken) && $changeToken != '') &&
|
| 694 |
+
($changeToken == $syncToken) &&
|
| 695 |
+
$changeTablesExist &&
|
| 696 |
+
$changeTriggersExist &&
|
| 697 |
+
$syncDbExists;
|
| 698 |
+
}
|
| 699 |
+
catch(Exception $e)
|
| 700 |
+
{
|
| 701 |
+
return false;
|
| 702 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 703 |
}
|
| 704 |
|
| 705 |
public function cleanSyncFolder()
|
| 817 |
array('pipe', 'w')
|
| 818 |
), $pipes);
|
| 819 |
|
| 820 |
+
stream_set_blocking( $pipes[0], 0 );
|
| 821 |
+
stream_set_blocking( $pipes[1], 0 );
|
| 822 |
+
|
| 823 |
+
stream_set_timeout( $pipes[0], 5 );
|
| 824 |
+
stream_set_timeout( $pipes[1], 10 );
|
| 825 |
+
|
| 826 |
+
$write_total = strlen( $script );
|
| 827 |
+
$written = 0;
|
| 828 |
+
|
| 829 |
+
while($write_total > 0)
|
| 830 |
+
{
|
| 831 |
+
$write_count = @fwrite($pipes[0], substr( $script, $written ) );
|
| 832 |
+
if($write_count === false)
|
| 833 |
+
{
|
| 834 |
+
@fclose( $pipes[0] );
|
| 835 |
+
@fclose( $pipes[1] );
|
| 836 |
+
@proc_terminate( $process, 9 );
|
| 837 |
+
@proc_close( $process );
|
| 838 |
+
|
| 839 |
+
return '';
|
| 840 |
+
}
|
| 841 |
+
|
| 842 |
+
$write_total -= $write_count;
|
| 843 |
+
$written += $write_count;
|
| 844 |
+
}
|
| 845 |
+
|
| 846 |
+
@fclose( $pipes[0] );
|
| 847 |
|
| 848 |
$result = @stream_get_contents($pipes[1]);
|
| 849 |
+
if($result === false)
|
| 850 |
+
{
|
| 851 |
+
@fclose( $pipes[1] );
|
| 852 |
+
@proc_terminate( $process, 9 );
|
| 853 |
+
@proc_close( $process );
|
| 854 |
+
|
| 855 |
+
return '';
|
| 856 |
+
}
|
| 857 |
+
|
| 858 |
if(!$result)
|
| 859 |
$result = '';
|
| 860 |
|
| 861 |
+
@fclose( $pipes[1] );
|
| 862 |
+
@proc_close( $process );
|
|
|
|
| 863 |
|
| 864 |
return $result;
|
| 865 |
}
|
| 1068 |
|
| 1069 |
if(is_resource($process))
|
| 1070 |
{
|
| 1071 |
+
@proc_close($process);
|
| 1072 |
return true;
|
| 1073 |
}
|
| 1074 |
}
|
| 1125 |
$descriptors, $pipes, Mage::getBaseDir('base'), array( 'CURL_CA_BUNDLE' => $curl_cainfo ));
|
| 1126 |
if(is_resource($process))
|
| 1127 |
{
|
| 1128 |
+
stream_set_blocking( $pipes[0], 0 );
|
| 1129 |
+
stream_set_blocking( $pipes[1], 0 );
|
| 1130 |
+
|
| 1131 |
+
stream_set_timeout( $pipes[0], 5 );
|
| 1132 |
+
stream_set_timeout( $pipes[1], 30 );
|
| 1133 |
+
|
| 1134 |
if(is_string($stdin))
|
| 1135 |
{
|
| 1136 |
for($written = 0; $written < strlen($stdin); )
|
| 1137 |
{
|
| 1138 |
$writecount = fwrite($pipes[0], substr($stdin, $written));
|
| 1139 |
if($writecount === false)
|
| 1140 |
+
{
|
| 1141 |
+
@fclose( $pipes[0] );
|
| 1142 |
+
@fclose( $pipes[1] );
|
| 1143 |
+
@proc_terminate( $process, 9 );
|
| 1144 |
+
@proc_close( $process );
|
| 1145 |
+
return null;
|
| 1146 |
+
}
|
| 1147 |
|
| 1148 |
$written += $writecount;
|
| 1149 |
}
|
| 1150 |
|
| 1151 |
+
@fclose($pipes[0]);
|
| 1152 |
}
|
| 1153 |
|
| 1154 |
+
$result = @stream_get_contents($pipes[1]);
|
| 1155 |
+
if($result === false)
|
| 1156 |
+
{
|
| 1157 |
+
@fclose( $pipes[1] );
|
| 1158 |
+
@proc_terminate( $process, 9 );
|
| 1159 |
+
@proc_close( $process );
|
| 1160 |
+
return null;
|
| 1161 |
+
}
|
| 1162 |
|
| 1163 |
+
@fclose($pipes[1]);
|
| 1164 |
+
@proc_close($process);
|
| 1165 |
return $result;
|
| 1166 |
}
|
| 1167 |
}
|
| 1175 |
if(strpos($content, '{{') === false)
|
| 1176 |
return trim($content);
|
| 1177 |
|
| 1178 |
+
$result = $this->runProcess(realpath(dirname(__FILE__)).'/CmsContent.php', null, array('pdo', 'curl', 'simplexml'), $content);
|
| 1179 |
if($result != null)
|
| 1180 |
return $result;
|
| 1181 |
|
| 1221 |
|
| 1222 |
if($eventtype == Mage_Index_Model_Event::TYPE_DELETE)
|
| 1223 |
{
|
| 1224 |
+
$syncObject->DeleteProducts($syncDb, $productids, $storeId);
|
| 1225 |
}
|
| 1226 |
else
|
| 1227 |
{
|
| 1233 |
}
|
| 1234 |
}
|
| 1235 |
|
| 1236 |
+
$backgroundSignal = $this->runProcessBackground(realpath(dirname(__FILE__)).'/Signal.php', array(serialize($merchants), $msg), array('pdo', 'curl', 'simplexml'));
|
| 1237 |
if($backgroundSignal)
|
| 1238 |
return;
|
| 1239 |
|
app/code/community/Codisto/Sync/Model/Sync.php
CHANGED
|
@@ -12,10 +12,10 @@
|
|
| 12 |
* obtain it through the world-wide-web, please send an email
|
| 13 |
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
*
|
| 15 |
-
* @category
|
| 16 |
-
* @package
|
| 17 |
* @copyright Copyright (c) 2015 On Technology Pty. Ltd. (http://codisto.com/)
|
| 18 |
-
* @license
|
| 19 |
*/
|
| 20 |
|
| 21 |
class Codisto_Sync_Model_Sync
|
|
@@ -82,52 +82,18 @@ class Codisto_Sync_Model_Sync
|
|
| 82 |
|
| 83 |
private function AvailableProductFields($selectArr) {
|
| 84 |
|
| 85 |
-
$attributes = array();
|
| 86 |
-
$productAttrs = Mage::getResourceModel('catalog/product_attribute_collection');
|
| 87 |
-
foreach ($productAttrs as $productAttr) {
|
| 88 |
-
$attributes[] = $productAttr->getAttributeCode();
|
| 89 |
-
}
|
| 90 |
-
$selectAvailable = array();
|
| 91 |
-
foreach($attributes as $attr){
|
| 92 |
-
if (in_array($attr, $selectArr)) {
|
| 93 |
-
$selectAvailable[] = $attr;
|
| 94 |
-
}
|
| 95 |
-
}
|
| 96 |
-
return $selectAvailable;
|
| 97 |
-
|
| 98 |
-
}
|
| 99 |
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
$dir = rtrim($dir, '\\/');
|
| 103 |
-
$result = array();
|
| 104 |
-
|
| 105 |
-
try
|
| 106 |
{
|
| 107 |
-
if(
|
| 108 |
{
|
| 109 |
-
$
|
| 110 |
-
|
| 111 |
-
if($scan !== false)
|
| 112 |
-
{
|
| 113 |
-
foreach ($scan as $f) {
|
| 114 |
-
if ($f !== '.' and $f !== '..') {
|
| 115 |
-
if (is_dir("$dir/$f")) {
|
| 116 |
-
$result = array_merge($result, $this->FilesInDir("$dir/$f", "$f/"));
|
| 117 |
-
} else {
|
| 118 |
-
$result[] = $prefix.$f;
|
| 119 |
-
}
|
| 120 |
-
}
|
| 121 |
-
}
|
| 122 |
-
}
|
| 123 |
}
|
| 124 |
}
|
| 125 |
-
catch(Exception $e)
|
| 126 |
-
{
|
| 127 |
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
return $result;
|
| 131 |
}
|
| 132 |
|
| 133 |
public function TemplateRead($templateDb)
|
|
@@ -259,9 +225,6 @@ class Codisto_Sync_Model_Sync
|
|
| 259 |
{
|
| 260 |
$db = $this->GetSyncDb($syncDb, 60 );
|
| 261 |
|
| 262 |
-
$args = array();
|
| 263 |
-
$args[] = $id;
|
| 264 |
-
|
| 265 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
| 266 |
|
| 267 |
$db->exec('CREATE TABLE IF NOT EXISTS CategoryDelete(ExternalReference text NOT NULL PRIMARY KEY);'.
|
|
@@ -334,17 +297,33 @@ class Codisto_Sync_Model_Sync
|
|
| 334 |
|
| 335 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
| 336 |
|
| 337 |
-
$db->exec('
|
| 338 |
-
$
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
|
| 343 |
-
|
| 344 |
-
|
| 345 |
-
|
| 346 |
-
|
| 347 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 348 |
|
| 349 |
Mage::getSingleton('core/resource_iterator')->walk($configurableProducts->getSelect(), array(array($this, 'SyncConfigurableProductData')),
|
| 350 |
array(
|
|
@@ -426,7 +405,7 @@ class Codisto_Sync_Model_Sync
|
|
| 426 |
$db->exec('COMMIT TRANSACTION');
|
| 427 |
}
|
| 428 |
|
| 429 |
-
public function
|
| 430 |
{
|
| 431 |
$db = $this->GetSyncDb($syncDb, 60 );
|
| 432 |
|
|
@@ -439,25 +418,30 @@ class Codisto_Sync_Model_Sync
|
|
| 439 |
$ids = array($ids);
|
| 440 |
}
|
| 441 |
|
| 442 |
-
$db->exec(
|
| 443 |
-
'DELETE FROM Product WHERE ExternalReference IN ('.implode(',', $ids).');'.
|
| 444 |
-
'DELETE FROM ProductImage WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 445 |
-
'DELETE FROM ProductHTML WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 446 |
-
'DELETE FROM ProductRelated WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 447 |
-
'DELETE FROM ProductAttributeValue WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 448 |
-
'DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).'));'.
|
| 449 |
-
'DELETE FROM ProductQuestion WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 450 |
-
'DELETE FROM SKULink WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 451 |
-
'DELETE FROM SKUMatrix WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 452 |
-
'DELETE FROM SKU WHERE ProductExternalReference IN ('.implode(',', $ids).');'.
|
| 453 |
-
'DELETE FROM CategoryProduct WHERE ProductExternalReference IN ('.implode(',', $ids).')'
|
| 454 |
-
);
|
| 455 |
|
| 456 |
foreach($ids as $id)
|
| 457 |
{
|
|
|
|
| 458 |
$db->exec('INSERT OR IGNORE INTO ProductDelete VALUES('.$id.')');
|
| 459 |
}
|
| 460 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 461 |
$db->exec('COMMIT TRANSACTION');
|
| 462 |
}
|
| 463 |
|
|
@@ -477,7 +461,6 @@ class Codisto_Sync_Model_Sync
|
|
| 477 |
$data = array();
|
| 478 |
foreach ($insertFields as $key)
|
| 479 |
{
|
| 480 |
-
|
| 481 |
$value = $categoryData[$key];
|
| 482 |
|
| 483 |
if(!$value) {
|
|
@@ -572,53 +555,73 @@ class Codisto_Sync_Model_Sync
|
|
| 572 |
$productParent = $args['parent_product'];
|
| 573 |
|
| 574 |
$attributeCodes = array();
|
|
|
|
|
|
|
| 575 |
|
| 576 |
foreach($attributes as $attribute)
|
| 577 |
{
|
| 578 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 579 |
}
|
| 580 |
|
| 581 |
-
|
| 582 |
-
|
| 583 |
-
if(!is_array($attributeValues))
|
| 584 |
-
$attributeValues = array( $attributeCodes[0] => $attributeValues );
|
| 585 |
-
|
| 586 |
-
$options = array();
|
| 587 |
-
|
| 588 |
-
foreach($attributes as $attribute)
|
| 589 |
{
|
| 590 |
-
$
|
|
|
|
|
|
|
| 591 |
|
| 592 |
-
$options
|
|
|
|
|
|
|
|
|
|
|
|
|
| 593 |
}
|
| 594 |
-
$price = $this->SyncProductPrice($store, $productParent, $options);
|
| 595 |
|
| 596 |
-
if(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 597 |
$price = 0;
|
|
|
|
| 598 |
|
| 599 |
$insertSKULinkSQL->execute(array($skuData['entity_id'], $args['parent_id'], $price));
|
| 600 |
|
| 601 |
-
|
| 602 |
// SKU Matrix
|
| 603 |
foreach($attributes as $attribute)
|
| 604 |
{
|
| 605 |
$productAttribute = $attribute->getProductAttribute();
|
| 606 |
-
$productOptionId = $productAttribute->getId();
|
| 607 |
-
$productOptionValueId = $attributeValues[$productAttribute->getAttributeCode()];
|
| 608 |
|
| 609 |
-
if(
|
| 610 |
{
|
| 611 |
-
$
|
| 612 |
-
$
|
| 613 |
-
|
| 614 |
-
$
|
| 615 |
-
|
| 616 |
-
|
| 617 |
-
|
| 618 |
-
|
| 619 |
-
|
| 620 |
-
$
|
| 621 |
-
$productOptionValueId)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 622 |
}
|
| 623 |
}
|
| 624 |
}
|
|
@@ -872,7 +875,7 @@ class Codisto_Sync_Model_Sync
|
|
| 872 |
$data[] = $product_id;
|
| 873 |
$data[] = $type == 'configurable' ? 'c' : ($type == 'grouped' ? 'g' : 's');
|
| 874 |
$data[] = $productData['sku'];
|
| 875 |
-
$data[] = $productName;
|
| 876 |
$data[] = $price;
|
| 877 |
$data[] = $listPrice;
|
| 878 |
$data[] = isset($productData['tax_class_id']) && $productData['tax_class_id'] ? $productData['tax_class_id'] : '';
|
|
@@ -916,6 +919,9 @@ class Codisto_Sync_Model_Sync
|
|
| 916 |
|
| 917 |
foreach($attributes as $attribute)
|
| 918 |
{
|
|
|
|
|
|
|
|
|
|
| 919 |
$backend = $attribute->getBackEnd();
|
| 920 |
if(!$backend->isStatic())
|
| 921 |
{
|
|
@@ -1050,128 +1056,131 @@ class Codisto_Sync_Model_Sync
|
|
| 1050 |
$attrTypeSelects[] = $attrTypeSelect;
|
| 1051 |
}
|
| 1052 |
|
| 1053 |
-
$
|
| 1054 |
-
|
| 1055 |
-
$attrSelect = $adapter->select()->union($attrTypeSelects, Zend_Db_Select::SQL_UNION_ALL);
|
| 1056 |
-
|
| 1057 |
-
$attrArgs = array(
|
| 1058 |
-
'entity_type_id' => 4,
|
| 1059 |
-
'entity_id' => $product_id,
|
| 1060 |
-
'store_id' => $store->getId()
|
| 1061 |
-
);
|
| 1062 |
-
|
| 1063 |
-
$attributeRows = $adapter->fetchPairs($attrSelect, $attrArgs);
|
| 1064 |
-
foreach ($attributeRows as $attributeId => $attributeValue)
|
| 1065 |
-
{
|
| 1066 |
-
$attributeCode = $attributeCodeIDMap[$attributeId];
|
| 1067 |
-
$attributeValues[$attributeCode] = $attributeValue;
|
| 1068 |
-
}
|
| 1069 |
-
|
| 1070 |
-
foreach($attributeSet as $attributeData)
|
| 1071 |
{
|
| 1072 |
-
|
| 1073 |
-
$attributeValue = $attributeValues[$attributeData['code']];
|
| 1074 |
-
else
|
| 1075 |
-
$attributeValue = null;
|
| 1076 |
|
| 1077 |
-
|
| 1078 |
-
$attributeData['source_model'] == 'eav/entity_attribute_source_boolean')
|
| 1079 |
-
{
|
| 1080 |
-
$attributeData['backend_type'] = 'boolean';
|
| 1081 |
|
| 1082 |
-
|
| 1083 |
-
|
| 1084 |
-
|
| 1085 |
-
|
| 1086 |
-
|
| 1087 |
|
| 1088 |
-
|
|
|
|
| 1089 |
{
|
| 1090 |
-
$
|
|
|
|
| 1091 |
}
|
| 1092 |
|
| 1093 |
-
|
| 1094 |
{
|
| 1095 |
-
if(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1096 |
{
|
| 1097 |
-
if(
|
| 1098 |
-
method_exists( $attributeData['source'], 'getOptionText') )
|
| 1099 |
{
|
| 1100 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1101 |
|
| 1102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1103 |
{
|
| 1104 |
-
if(isset($this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$
|
| 1105 |
{
|
| 1106 |
-
$
|
| 1107 |
}
|
| 1108 |
else
|
| 1109 |
{
|
| 1110 |
try
|
| 1111 |
{
|
| 1112 |
-
$attributeText = $attributeData['source']->getOptionText($
|
| 1113 |
|
| 1114 |
-
$this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$
|
| 1115 |
|
| 1116 |
-
$
|
| 1117 |
}
|
| 1118 |
catch(Exception $e)
|
| 1119 |
{
|
| 1120 |
-
|
| 1121 |
}
|
| 1122 |
}
|
| 1123 |
}
|
| 1124 |
-
|
| 1125 |
-
$attributeValue = $attributeValueSet;
|
| 1126 |
}
|
| 1127 |
}
|
| 1128 |
-
|
|
|
|
| 1129 |
{
|
| 1130 |
-
if(
|
| 1131 |
-
method_exists( $attributeData['source'], 'getOptionText') )
|
| 1132 |
{
|
| 1133 |
-
|
| 1134 |
-
|
| 1135 |
-
$attributeValue = $this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$attributeValue];
|
| 1136 |
-
}
|
| 1137 |
-
else
|
| 1138 |
-
{
|
| 1139 |
-
try
|
| 1140 |
-
{
|
| 1141 |
-
$attributeText = $attributeData['source']->getOptionText($attributeValue);
|
| 1142 |
|
| 1143 |
-
|
| 1144 |
|
| 1145 |
-
|
| 1146 |
-
|
| 1147 |
-
|
| 1148 |
-
|
| 1149 |
-
$attributeValue = null;
|
| 1150 |
-
}
|
| 1151 |
-
}
|
| 1152 |
}
|
| 1153 |
-
}
|
| 1154 |
-
}
|
| 1155 |
-
|
| 1156 |
-
if(isset($attributeValue) && !is_null($attributeValue))
|
| 1157 |
-
{
|
| 1158 |
-
if($attributeData['html'])
|
| 1159 |
-
{
|
| 1160 |
-
$insertHTMLSQL->execute(array($product_id, $attributeData['label'], $attributeValue));
|
| 1161 |
-
}
|
| 1162 |
|
| 1163 |
-
|
|
|
|
| 1164 |
|
| 1165 |
-
|
| 1166 |
-
{
|
| 1167 |
-
$insertAttributeGroupSQL->execute(array($attributeData['groupid'], $attributeData['groupname']));
|
| 1168 |
-
$insertAttributeGroupMapSQL->execute(array($attributeData['groupid'], $attributeData['id']));
|
| 1169 |
}
|
| 1170 |
-
|
| 1171 |
-
if(is_array($attributeValue))
|
| 1172 |
-
$attributeValue = implode(',', $attributeValue);
|
| 1173 |
-
|
| 1174 |
-
$insertProductAttributeSQL->execute(array($product_id, $attributeData['id'], $attributeValue));
|
| 1175 |
}
|
| 1176 |
}
|
| 1177 |
|
|
@@ -2690,4 +2699,37 @@ class Codisto_Sync_Model_Sync
|
|
| 2690 |
|
| 2691 |
return $price;
|
| 2692 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2693 |
}
|
| 12 |
* obtain it through the world-wide-web, please send an email
|
| 13 |
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
*
|
| 15 |
+
* @category Codisto
|
| 16 |
+
* @package Codisto_Sync
|
| 17 |
* @copyright Copyright (c) 2015 On Technology Pty. Ltd. (http://codisto.com/)
|
| 18 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 19 |
*/
|
| 20 |
|
| 21 |
class Codisto_Sync_Model_Sync
|
| 82 |
|
| 83 |
private function AvailableProductFields($selectArr) {
|
| 84 |
|
| 85 |
+
$attributes = array('entity_id');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
+
$productAttrs = Mage::getResourceModel('catalog/product_attribute_collection');
|
| 88 |
+
foreach ($productAttrs as $productAttr)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
{
|
| 90 |
+
if( in_array( $productAttr->getAttributeCode(), $selectArr ) )
|
| 91 |
{
|
| 92 |
+
$attributes[] = $productAttr->getAttributeCode();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
}
|
| 94 |
}
|
|
|
|
|
|
|
| 95 |
|
| 96 |
+
return $attributes;
|
|
|
|
|
|
|
| 97 |
}
|
| 98 |
|
| 99 |
public function TemplateRead($templateDb)
|
| 225 |
{
|
| 226 |
$db = $this->GetSyncDb($syncDb, 60 );
|
| 227 |
|
|
|
|
|
|
|
|
|
|
| 228 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
| 229 |
|
| 230 |
$db->exec('CREATE TABLE IF NOT EXISTS CategoryDelete(ExternalReference text NOT NULL PRIMARY KEY);'.
|
| 297 |
|
| 298 |
$db->exec('BEGIN EXCLUSIVE TRANSACTION');
|
| 299 |
|
| 300 |
+
$db->exec('CREATE TEMPORARY TABLE TmpChanged (entity_id text NOT NULL PRIMARY KEY)');
|
| 301 |
+
foreach($ids as $id)
|
| 302 |
+
{
|
| 303 |
+
$db->exec('INSERT INTO TmpChanged (entity_id) VALUES('.$id.')');
|
| 304 |
+
}
|
| 305 |
+
|
| 306 |
+
try
|
| 307 |
+
{
|
| 308 |
+
$db->exec('DELETE FROM ProductDelete WHERE ExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 309 |
+
}
|
| 310 |
+
catch(Exception $e)
|
| 311 |
+
{
|
| 312 |
+
|
| 313 |
+
}
|
| 314 |
+
$db->exec('DELETE FROM Product WHERE ExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 315 |
+
$db->exec('DELETE FROM ProductImage WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 316 |
+
$db->exec('DELETE FROM ProductHTML WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 317 |
+
$db->exec('DELETE FROM ProductRelated WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 318 |
+
$db->exec('DELETE FROM ProductAttributeValue WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 319 |
+
$db->exec('DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged))');
|
| 320 |
+
$db->exec('DELETE FROM ProductQuestion WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 321 |
+
$db->exec('DELETE FROM SKUMatrix WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 322 |
+
$db->exec('DELETE FROM SKULink WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 323 |
+
$db->exec('DELETE FROM SKU WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 324 |
+
$db->exec('DELETE FROM CategoryProduct WHERE ProductExternalReference IN (SELECT entity_id FROM TmpChanged)');
|
| 325 |
+
|
| 326 |
+
$db->exec('DROP TABLE TmpChanged');
|
| 327 |
|
| 328 |
Mage::getSingleton('core/resource_iterator')->walk($configurableProducts->getSelect(), array(array($this, 'SyncConfigurableProductData')),
|
| 329 |
array(
|
| 405 |
$db->exec('COMMIT TRANSACTION');
|
| 406 |
}
|
| 407 |
|
| 408 |
+
public function DeleteProducts($syncDb, $ids, $storeId)
|
| 409 |
{
|
| 410 |
$db = $this->GetSyncDb($syncDb, 60 );
|
| 411 |
|
| 418 |
$ids = array($ids);
|
| 419 |
}
|
| 420 |
|
| 421 |
+
$db->exec('CREATE TEMPORARY TABLE TmpDeleted(entity_id text NOT NULL PRIMARY KEY)');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 422 |
|
| 423 |
foreach($ids as $id)
|
| 424 |
{
|
| 425 |
+
$db->exec('INSERT OR IGNORE INTO TmpDeleted (entity_id) VALUES ('.$id.')');
|
| 426 |
$db->exec('INSERT OR IGNORE INTO ProductDelete VALUES('.$id.')');
|
| 427 |
}
|
| 428 |
|
| 429 |
+
$db->exec(
|
| 430 |
+
'DELETE FROM Product WHERE ExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 431 |
+
'DELETE FROM ProductImage WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 432 |
+
'DELETE FROM ProductHTML WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 433 |
+
'DELETE FROM ProductRelated WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 434 |
+
'DELETE FROM ProductAttributeValue WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 435 |
+
'DELETE FROM ProductQuestionAnswer WHERE ProductQuestionExternalReference IN (SELECT ExternalReference FROM ProductQuestion WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted));'.
|
| 436 |
+
'DELETE FROM ProductQuestion WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 437 |
+
'DELETE FROM SKULink WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 438 |
+
'DELETE FROM SKUMatrix WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 439 |
+
'DELETE FROM SKU WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted);'.
|
| 440 |
+
'DELETE FROM CategoryProduct WHERE ProductExternalReference IN (SELECT entity_id FROM TmpDeleted)'
|
| 441 |
+
);
|
| 442 |
+
|
| 443 |
+
$db->exec('DROP TABLE TmpDeleted');
|
| 444 |
+
|
| 445 |
$db->exec('COMMIT TRANSACTION');
|
| 446 |
}
|
| 447 |
|
| 461 |
$data = array();
|
| 462 |
foreach ($insertFields as $key)
|
| 463 |
{
|
|
|
|
| 464 |
$value = $categoryData[$key];
|
| 465 |
|
| 466 |
if(!$value) {
|
| 555 |
$productParent = $args['parent_product'];
|
| 556 |
|
| 557 |
$attributeCodes = array();
|
| 558 |
+
$productAttributes = array();
|
| 559 |
+
$attributeValues = array();
|
| 560 |
|
| 561 |
foreach($attributes as $attribute)
|
| 562 |
{
|
| 563 |
+
$prodAttr = $attribute->getProductAttribute();
|
| 564 |
+
if($prodAttr)
|
| 565 |
+
{
|
| 566 |
+
$attributeCodes[] = $prodAttr->getAttributeCode();
|
| 567 |
+
$productAttributes[] = $prodAttr;
|
| 568 |
+
}
|
| 569 |
}
|
| 570 |
|
| 571 |
+
if(!empty($attributeCodes))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 572 |
{
|
| 573 |
+
$attributeValues = Mage::getResourceSingleton('catalog/product')->getAttributeRawValue($skuData['entity_id'], $attributeCodes, $store->getId());
|
| 574 |
+
if(!is_array($attributeValues))
|
| 575 |
+
$attributeValues = array( $attributeCodes[0] => $attributeValues );
|
| 576 |
|
| 577 |
+
$options = array();
|
| 578 |
+
foreach($productAttributes as $attribute)
|
| 579 |
+
{
|
| 580 |
+
$options[$attribute->getId()] = $attributeValues[$attribute->getAttributeCode()];
|
| 581 |
+
}
|
| 582 |
}
|
|
|
|
| 583 |
|
| 584 |
+
if(!empty($options))
|
| 585 |
+
{
|
| 586 |
+
$price = $this->SyncProductPrice($store, $productParent, $options);
|
| 587 |
+
if(!$price)
|
| 588 |
+
$price = 0;
|
| 589 |
+
}
|
| 590 |
+
else
|
| 591 |
+
{
|
| 592 |
$price = 0;
|
| 593 |
+
}
|
| 594 |
|
| 595 |
$insertSKULinkSQL->execute(array($skuData['entity_id'], $args['parent_id'], $price));
|
| 596 |
|
|
|
|
| 597 |
// SKU Matrix
|
| 598 |
foreach($attributes as $attribute)
|
| 599 |
{
|
| 600 |
$productAttribute = $attribute->getProductAttribute();
|
|
|
|
|
|
|
| 601 |
|
| 602 |
+
if($productAttribute)
|
| 603 |
{
|
| 604 |
+
$productAttribute->setStoreId($store->getId());
|
| 605 |
+
$productAttribute->setStore($store);
|
| 606 |
+
|
| 607 |
+
$productOptionId = $productAttribute->getId();
|
| 608 |
+
$productOptionValueId = isset($attributeValues[$productAttribute->getAttributeCode()]) ?
|
| 609 |
+
$attributeValues[$productAttribute->getAttributeCode()] : null;
|
| 610 |
+
|
| 611 |
+
if($productOptionValueId != null)
|
| 612 |
+
{
|
| 613 |
+
$attributeName = $attribute->getLabel();
|
| 614 |
+
$attributeValue = $productAttribute->getSource()->getOptionText($productOptionValueId);
|
| 615 |
+
|
| 616 |
+
$insertSKUMatrixSQL->execute(array(
|
| 617 |
+
$skuData['entity_id'],
|
| 618 |
+
$args['parent_id'],
|
| 619 |
+
'',
|
| 620 |
+
$attributeName,
|
| 621 |
+
$attributeValue,
|
| 622 |
+
$productOptionId,
|
| 623 |
+
$productOptionValueId));
|
| 624 |
+
}
|
| 625 |
}
|
| 626 |
}
|
| 627 |
}
|
| 875 |
$data[] = $product_id;
|
| 876 |
$data[] = $type == 'configurable' ? 'c' : ($type == 'grouped' ? 'g' : 's');
|
| 877 |
$data[] = $productData['sku'];
|
| 878 |
+
$data[] = html_entity_decode($productName);
|
| 879 |
$data[] = $price;
|
| 880 |
$data[] = $listPrice;
|
| 881 |
$data[] = isset($productData['tax_class_id']) && $productData['tax_class_id'] ? $productData['tax_class_id'] : '';
|
| 919 |
|
| 920 |
foreach($attributes as $attribute)
|
| 921 |
{
|
| 922 |
+
$attribute->setStoreId($store->getId());
|
| 923 |
+
$attribute->setStore($store);
|
| 924 |
+
|
| 925 |
$backend = $attribute->getBackEnd();
|
| 926 |
if(!$backend->isStatic())
|
| 927 |
{
|
| 1056 |
$attrTypeSelects[] = $attrTypeSelect;
|
| 1057 |
}
|
| 1058 |
|
| 1059 |
+
if(!empty($attrTypeSelects))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1060 |
{
|
| 1061 |
+
$attributeValues = array();
|
|
|
|
|
|
|
|
|
|
| 1062 |
|
| 1063 |
+
$attrSelect = $adapter->select()->union($attrTypeSelects, Zend_Db_Select::SQL_UNION_ALL);
|
|
|
|
|
|
|
|
|
|
| 1064 |
|
| 1065 |
+
$attrArgs = array(
|
| 1066 |
+
'entity_type_id' => 4,
|
| 1067 |
+
'entity_id' => $product_id,
|
| 1068 |
+
'store_id' => $store->getId()
|
| 1069 |
+
);
|
| 1070 |
|
| 1071 |
+
$attributeRows = $adapter->fetchPairs($attrSelect, $attrArgs);
|
| 1072 |
+
foreach ($attributeRows as $attributeId => $attributeValue)
|
| 1073 |
{
|
| 1074 |
+
$attributeCode = $attributeCodeIDMap[$attributeId];
|
| 1075 |
+
$attributeValues[$attributeCode] = $attributeValue;
|
| 1076 |
}
|
| 1077 |
|
| 1078 |
+
foreach($attributeSet as $attributeData)
|
| 1079 |
{
|
| 1080 |
+
if(isset($attributeValues[$attributeData['code']]))
|
| 1081 |
+
$attributeValue = $attributeValues[$attributeData['code']];
|
| 1082 |
+
else
|
| 1083 |
+
$attributeValue = null;
|
| 1084 |
+
|
| 1085 |
+
if(isset($attributeData['source']) &&
|
| 1086 |
+
$attributeData['source_model'] == 'eav/entity_attribute_source_boolean')
|
| 1087 |
+
{
|
| 1088 |
+
$attributeData['backend_type'] = 'boolean';
|
| 1089 |
+
|
| 1090 |
+
if(isset($attributeValue) && $attributeValue)
|
| 1091 |
+
$attributeValue = -1;
|
| 1092 |
+
else
|
| 1093 |
+
$attributeValue = 0;
|
| 1094 |
+
}
|
| 1095 |
+
|
| 1096 |
+
else if($attributeData['html'])
|
| 1097 |
+
{
|
| 1098 |
+
$attributeValue = Mage::helper('codistosync')->processCmsContent($attributeValue);
|
| 1099 |
+
}
|
| 1100 |
+
|
| 1101 |
+
else if( in_array($attributeData['frontend_type'], array( 'select', 'multiselect' ) ) )
|
| 1102 |
{
|
| 1103 |
+
if(is_array($attributeValue))
|
|
|
|
| 1104 |
{
|
| 1105 |
+
if(isset($attributeData['source']) &&
|
| 1106 |
+
method_exists( $attributeData['source'], 'getOptionText') )
|
| 1107 |
+
{
|
| 1108 |
+
$attributeValueSet = array();
|
| 1109 |
+
|
| 1110 |
+
foreach($attributeValue as $attributeOptionId)
|
| 1111 |
+
{
|
| 1112 |
+
if(isset($this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$attributeOptionId]))
|
| 1113 |
+
{
|
| 1114 |
+
$attributeValueSet[] = $this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$attributeOptionId];
|
| 1115 |
+
}
|
| 1116 |
+
else
|
| 1117 |
+
{
|
| 1118 |
+
try
|
| 1119 |
+
{
|
| 1120 |
+
$attributeText = $attributeData['source']->getOptionText($attributeOptionId);
|
| 1121 |
+
|
| 1122 |
+
$this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$attributeOptionId] = $attributeText;
|
| 1123 |
+
|
| 1124 |
+
$attributeValueSet[] = $attributeText;
|
| 1125 |
+
}
|
| 1126 |
+
catch(Exception $e)
|
| 1127 |
+
{
|
| 1128 |
+
|
| 1129 |
+
}
|
| 1130 |
+
}
|
| 1131 |
+
}
|
| 1132 |
|
| 1133 |
+
$attributeValue = $attributeValueSet;
|
| 1134 |
+
}
|
| 1135 |
+
}
|
| 1136 |
+
else
|
| 1137 |
+
{
|
| 1138 |
+
if(isset($attributeData['source']) &&
|
| 1139 |
+
method_exists( $attributeData['source'], 'getOptionText') )
|
| 1140 |
{
|
| 1141 |
+
if(isset($this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$attributeValue]))
|
| 1142 |
{
|
| 1143 |
+
$attributeValue = $this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$attributeValue];
|
| 1144 |
}
|
| 1145 |
else
|
| 1146 |
{
|
| 1147 |
try
|
| 1148 |
{
|
| 1149 |
+
$attributeText = $attributeData['source']->getOptionText($attributeValue);
|
| 1150 |
|
| 1151 |
+
$this->optionTextCache[$store->getId().'-'.$attributeData['id'].'-'.$attributeValue] = $attributeText;
|
| 1152 |
|
| 1153 |
+
$attributeValue = $attributeText;
|
| 1154 |
}
|
| 1155 |
catch(Exception $e)
|
| 1156 |
{
|
| 1157 |
+
$attributeValue = null;
|
| 1158 |
}
|
| 1159 |
}
|
| 1160 |
}
|
|
|
|
|
|
|
| 1161 |
}
|
| 1162 |
}
|
| 1163 |
+
|
| 1164 |
+
if(isset($attributeValue) && !is_null($attributeValue))
|
| 1165 |
{
|
| 1166 |
+
if($attributeData['html'])
|
|
|
|
| 1167 |
{
|
| 1168 |
+
$insertHTMLSQL->execute(array($product_id, $attributeData['label'], $attributeValue));
|
| 1169 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1170 |
|
| 1171 |
+
$insertAttributeSQL->execute(array($attributeData['id'], $attributeData['name'], $attributeData['label'], $attributeData['backend_type'], $attributeData['frontend_type']));
|
| 1172 |
|
| 1173 |
+
if($attributeData['groupid'])
|
| 1174 |
+
{
|
| 1175 |
+
$insertAttributeGroupSQL->execute(array($attributeData['groupid'], $attributeData['groupname']));
|
| 1176 |
+
$insertAttributeGroupMapSQL->execute(array($attributeData['groupid'], $attributeData['id']));
|
|
|
|
|
|
|
|
|
|
| 1177 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1178 |
|
| 1179 |
+
if(is_array($attributeValue))
|
| 1180 |
+
$attributeValue = implode(',', $attributeValue);
|
| 1181 |
|
| 1182 |
+
$insertProductAttributeSQL->execute(array($product_id, $attributeData['id'], $attributeValue));
|
|
|
|
|
|
|
|
|
|
| 1183 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1184 |
}
|
| 1185 |
}
|
| 1186 |
|
| 2699 |
|
| 2700 |
return $price;
|
| 2701 |
}
|
| 2702 |
+
|
| 2703 |
+
private function FilesInDir($dir, $prefix = '')
|
| 2704 |
+
{
|
| 2705 |
+
$dir = rtrim($dir, '\\/');
|
| 2706 |
+
$result = array();
|
| 2707 |
+
|
| 2708 |
+
try
|
| 2709 |
+
{
|
| 2710 |
+
if(is_dir($dir))
|
| 2711 |
+
{
|
| 2712 |
+
$scan = @scandir($dir);
|
| 2713 |
+
|
| 2714 |
+
if($scan !== false)
|
| 2715 |
+
{
|
| 2716 |
+
foreach ($scan as $f) {
|
| 2717 |
+
if ($f !== '.' and $f !== '..') {
|
| 2718 |
+
if (is_dir("$dir/$f")) {
|
| 2719 |
+
$result = array_merge($result, $this->FilesInDir("$dir/$f", "$f/"));
|
| 2720 |
+
} else {
|
| 2721 |
+
$result[] = $prefix.$f;
|
| 2722 |
+
}
|
| 2723 |
+
}
|
| 2724 |
+
}
|
| 2725 |
+
}
|
| 2726 |
+
}
|
| 2727 |
+
}
|
| 2728 |
+
catch(Exception $e)
|
| 2729 |
+
{
|
| 2730 |
+
|
| 2731 |
+
}
|
| 2732 |
+
|
| 2733 |
+
return $result;
|
| 2734 |
+
}
|
| 2735 |
}
|
app/code/community/Codisto/Sync/controllers/IndexController.php
CHANGED
|
@@ -184,8 +184,8 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 184 |
$item->setDiscountAmount(0);
|
| 185 |
$item->setBaseDiscountAmount(0);
|
| 186 |
$item->setTaxPercent($taxpercent);
|
| 187 |
-
$item->setTaxAmount($producttax);
|
| 188 |
-
$item->setBaseTaxAmount($producttax);
|
| 189 |
$item->setRowTotal($productprice * $productqty);
|
| 190 |
$item->setBaseRowTotal($productprice * $productqty);
|
| 191 |
$item->setRowTotalWithDiscount($productprice * $productqty);
|
|
@@ -297,9 +297,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 297 |
|
| 298 |
$request = $this->getRequest();
|
| 299 |
$response = $this->getResponse();
|
| 300 |
-
$method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET';
|
| 301 |
-
$contenttype = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : '';
|
| 302 |
$server = $request->getServer();
|
|
|
|
|
|
|
| 303 |
|
| 304 |
if($method == 'POST')
|
| 305 |
{
|
|
@@ -566,7 +566,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 566 |
$order->setShippingAddress($quoteConverter->addressToOrderAddress($quote->getShippingAddress()));
|
| 567 |
$order->setPayment($quoteConverter->paymentToOrderPayment($quote->getPayment()));
|
| 568 |
$order->setCustomer($quote->getCustomer());
|
| 569 |
-
$order->setCodistoOrderid($ordercontent->orderid);
|
| 570 |
|
| 571 |
if(preg_match('/\{ordernumber\}|\{ebaysalesrecordnumber\}|\{ebaytransactionid\}/', $ordernumberformat))
|
| 572 |
{
|
|
@@ -683,9 +683,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 683 |
$orderItem->setBasePrice($price);
|
| 684 |
$orderItem->setBasePriceInclTax($priceinctax);
|
| 685 |
$orderItem->setTaxPercent($taxpercent);
|
| 686 |
-
$orderItem->setTaxAmount($taxamount);
|
| 687 |
-
$orderItem->setTaxBeforeDiscount($taxamount);
|
| 688 |
-
$orderItem->setBaseTaxBeforeDiscount($taxamount);
|
| 689 |
$orderItem->setDiscountAmount(0);
|
| 690 |
$orderItem->setWeight($weight);
|
| 691 |
$orderItem->setBaseRowTotal($subtotal);
|
|
@@ -1220,9 +1220,9 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 1220 |
$item->setBasePrice($price);
|
| 1221 |
$item->setBasePriceInclTax($priceinctax);
|
| 1222 |
$item->setTaxPercent($taxpercent);
|
| 1223 |
-
$item->setTaxAmount($taxamount);
|
| 1224 |
-
$item->setTaxBeforeDiscount($taxamount);
|
| 1225 |
-
$item->setBaseTaxBeforeDiscount($taxamount);
|
| 1226 |
$item->setDiscountAmount(0);
|
| 1227 |
$item->setWeight($weight);
|
| 1228 |
$item->setBaseRowTotal($subtotal);
|
|
@@ -1533,6 +1533,10 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 1533 |
$billing_first_name = $billing_address->name;
|
| 1534 |
}
|
| 1535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1536 |
$shipping_address = $ordercontent->orderaddresses->orderaddress[1];
|
| 1537 |
$shipping_first_name = $shipping_last_name = '';
|
| 1538 |
|
|
@@ -1544,8 +1548,12 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 1544 |
$shipping_first_name = $shipping_address->name;
|
| 1545 |
}
|
| 1546 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1547 |
$email = (string)$billing_address->email;
|
| 1548 |
-
if(!$email)
|
| 1549 |
$email = 'mail@example.com';
|
| 1550 |
|
| 1551 |
$regionCollection = $this->getRegionCollection($billing_address->countrycode);
|
|
@@ -1571,7 +1579,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 1571 |
'street' => (string)$billing_address->address1.($billing_address->address2 ? "\n".$billing_address->address2 : ''),
|
| 1572 |
'city' => (string)$billing_address->place,
|
| 1573 |
'postcode' => (string)$billing_address->postalcode,
|
| 1574 |
-
'telephone' => (string)$
|
| 1575 |
'fax' => '',
|
| 1576 |
'country_id' => (string)$billing_address->countrycode,
|
| 1577 |
'region_id' => $regionsel_id, // id from directory_country_region table
|
|
@@ -1598,7 +1606,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 1598 |
'street' => (string)$shipping_address->address1.($shipping_address->address2 ? "\n".$shipping_address->address2 : ''),
|
| 1599 |
'city' => (string)$shipping_address->place,
|
| 1600 |
'postcode' => (string)$shipping_address->postalcode,
|
| 1601 |
-
'telephone' => (string)$
|
| 1602 |
'fax' => '',
|
| 1603 |
'country_id' => (string)$shipping_address->countrycode,
|
| 1604 |
'region_id' => $regionsel_id_ship, // id from directory_country_region table
|
|
@@ -1607,7 +1615,7 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 1607 |
|
| 1608 |
$customer = null;
|
| 1609 |
|
| 1610 |
-
if($register_customer)
|
| 1611 |
{
|
| 1612 |
$customer = Mage::getModel('customer/customer');
|
| 1613 |
$customer->setWebsiteId($websiteId);
|
|
@@ -1819,8 +1827,8 @@ class Codisto_Sync_IndexController extends Mage_Core_Controller_Front_Action
|
|
| 1819 |
$item->setDiscountAmount(0);
|
| 1820 |
$item->setBaseDiscountAmount(0);
|
| 1821 |
$item->setTaxPercent($taxpercent);
|
| 1822 |
-
$item->setTaxAmount($taxamount);
|
| 1823 |
-
$item->setBaseTaxAmount($taxamount);
|
| 1824 |
$item->setRowTotal($subtotal);
|
| 1825 |
$item->setBaseRowTotal($subtotal);
|
| 1826 |
$item->setRowTotalWithDiscount($subtotal);
|
| 184 |
$item->setDiscountAmount(0);
|
| 185 |
$item->setBaseDiscountAmount(0);
|
| 186 |
$item->setTaxPercent($taxpercent);
|
| 187 |
+
$item->setTaxAmount($producttax * $productqty);
|
| 188 |
+
$item->setBaseTaxAmount($producttax * $productqty);
|
| 189 |
$item->setRowTotal($productprice * $productqty);
|
| 190 |
$item->setBaseRowTotal($productprice * $productqty);
|
| 191 |
$item->setRowTotalWithDiscount($productprice * $productqty);
|
| 297 |
|
| 298 |
$request = $this->getRequest();
|
| 299 |
$response = $this->getResponse();
|
|
|
|
|
|
|
| 300 |
$server = $request->getServer();
|
| 301 |
+
$method = isset($server['REQUEST_METHOD']) ? $server['REQUEST_METHOD'] : 'GET';
|
| 302 |
+
$contenttype = isset($server['CONTENT_TYPE']) ? $server['CONTENT_TYPE'] : '';
|
| 303 |
|
| 304 |
if($method == 'POST')
|
| 305 |
{
|
| 566 |
$order->setShippingAddress($quoteConverter->addressToOrderAddress($quote->getShippingAddress()));
|
| 567 |
$order->setPayment($quoteConverter->paymentToOrderPayment($quote->getPayment()));
|
| 568 |
$order->setCustomer($quote->getCustomer());
|
| 569 |
+
$order->setCodistoOrderid((string)$ordercontent->orderid);
|
| 570 |
|
| 571 |
if(preg_match('/\{ordernumber\}|\{ebaysalesrecordnumber\}|\{ebaytransactionid\}/', $ordernumberformat))
|
| 572 |
{
|
| 683 |
$orderItem->setBasePrice($price);
|
| 684 |
$orderItem->setBasePriceInclTax($priceinctax);
|
| 685 |
$orderItem->setTaxPercent($taxpercent);
|
| 686 |
+
$orderItem->setTaxAmount($taxamount * $qty);
|
| 687 |
+
$orderItem->setTaxBeforeDiscount($taxamount * $qty);
|
| 688 |
+
$orderItem->setBaseTaxBeforeDiscount($taxamount * $qty);
|
| 689 |
$orderItem->setDiscountAmount(0);
|
| 690 |
$orderItem->setWeight($weight);
|
| 691 |
$orderItem->setBaseRowTotal($subtotal);
|
| 1220 |
$item->setBasePrice($price);
|
| 1221 |
$item->setBasePriceInclTax($priceinctax);
|
| 1222 |
$item->setTaxPercent($taxpercent);
|
| 1223 |
+
$item->setTaxAmount($taxamount * $qty);
|
| 1224 |
+
$item->setTaxBeforeDiscount($taxamount * $qty);
|
| 1225 |
+
$item->setBaseTaxBeforeDiscount($taxamount * $qty);
|
| 1226 |
$item->setDiscountAmount(0);
|
| 1227 |
$item->setWeight($weight);
|
| 1228 |
$item->setBaseRowTotal($subtotal);
|
| 1533 |
$billing_first_name = $billing_address->name;
|
| 1534 |
}
|
| 1535 |
|
| 1536 |
+
$billing_phone = (string)$billing_address->phone;
|
| 1537 |
+
if(!$billing_phone)
|
| 1538 |
+
$billing_phone = 'Not Available';
|
| 1539 |
+
|
| 1540 |
$shipping_address = $ordercontent->orderaddresses->orderaddress[1];
|
| 1541 |
$shipping_first_name = $shipping_last_name = '';
|
| 1542 |
|
| 1548 |
$shipping_first_name = $shipping_address->name;
|
| 1549 |
}
|
| 1550 |
|
| 1551 |
+
$shipping_phone = (string)$shipping_address->phone;
|
| 1552 |
+
if(!$shipping_phone)
|
| 1553 |
+
$shipping_phone = 'Not Available';
|
| 1554 |
+
|
| 1555 |
$email = (string)$billing_address->email;
|
| 1556 |
+
if(!$email || $email == 'Invalid Request')
|
| 1557 |
$email = 'mail@example.com';
|
| 1558 |
|
| 1559 |
$regionCollection = $this->getRegionCollection($billing_address->countrycode);
|
| 1579 |
'street' => (string)$billing_address->address1.($billing_address->address2 ? "\n".$billing_address->address2 : ''),
|
| 1580 |
'city' => (string)$billing_address->place,
|
| 1581 |
'postcode' => (string)$billing_address->postalcode,
|
| 1582 |
+
'telephone' => (string)$billing_phone,
|
| 1583 |
'fax' => '',
|
| 1584 |
'country_id' => (string)$billing_address->countrycode,
|
| 1585 |
'region_id' => $regionsel_id, // id from directory_country_region table
|
| 1606 |
'street' => (string)$shipping_address->address1.($shipping_address->address2 ? "\n".$shipping_address->address2 : ''),
|
| 1607 |
'city' => (string)$shipping_address->place,
|
| 1608 |
'postcode' => (string)$shipping_address->postalcode,
|
| 1609 |
+
'telephone' => (string)$shipping_phone,
|
| 1610 |
'fax' => '',
|
| 1611 |
'country_id' => (string)$shipping_address->countrycode,
|
| 1612 |
'region_id' => $regionsel_id_ship, // id from directory_country_region table
|
| 1615 |
|
| 1616 |
$customer = null;
|
| 1617 |
|
| 1618 |
+
if($register_customer && $email != 'mail@example.com')
|
| 1619 |
{
|
| 1620 |
$customer = Mage::getModel('customer/customer');
|
| 1621 |
$customer->setWebsiteId($websiteId);
|
| 1827 |
$item->setDiscountAmount(0);
|
| 1828 |
$item->setBaseDiscountAmount(0);
|
| 1829 |
$item->setTaxPercent($taxpercent);
|
| 1830 |
+
$item->setTaxAmount($taxamount * $qty);
|
| 1831 |
+
$item->setBaseTaxAmount($taxamount * $qty);
|
| 1832 |
$item->setRowTotal($subtotal);
|
| 1833 |
$item->setBaseRowTotal($subtotal);
|
| 1834 |
$item->setRowTotalWithDiscount($subtotal);
|
app/code/community/Codisto/Sync/controllers/SyncController.php
CHANGED
|
@@ -517,6 +517,16 @@ class Codisto_Sync_SyncController extends Mage_Core_Controller_Front_Action
|
|
| 517 |
$this->sendPlainResponse($response, 200, 'OK', 'throttle');
|
| 518 |
$response->sendResponse();
|
| 519 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 520 |
else
|
| 521 |
{
|
| 522 |
$this->sendExceptionError($response, $e);
|
| 517 |
$this->sendPlainResponse($response, 200, 'OK', 'throttle');
|
| 518 |
$response->sendResponse();
|
| 519 |
}
|
| 520 |
+
else if(property_exists($e, 'errorInfo') &&
|
| 521 |
+
$e->errorInfo[0] == 'HY000' &&
|
| 522 |
+
$e->errorInfo[1] == 8 &&
|
| 523 |
+
$e->errorInfo[2] == 'attempt to write a readonly database')
|
| 524 |
+
{
|
| 525 |
+
if(file_exists($syncDb))
|
| 526 |
+
unlink($syncDb);
|
| 527 |
+
$this->sendExceptionError($response, $e);
|
| 528 |
+
$response->sendResponse();
|
| 529 |
+
}
|
| 530 |
else
|
| 531 |
{
|
| 532 |
$this->sendExceptionError($response, $e);
|
app/code/community/Codisto/Sync/data/codisto_setup/{data-install-1.90.10.php → data-install-1.90.11.php}
RENAMED
|
@@ -44,7 +44,7 @@ if(!isset($MerchantID) || !isset($HostKey))
|
|
| 44 |
}
|
| 45 |
|
| 46 |
//Can this request create a new merchant ?
|
| 47 |
-
$createMerchant = Mage::helper('codistosync')->createMerchantwithLock();
|
| 48 |
|
| 49 |
}
|
| 50 |
|
| 44 |
}
|
| 45 |
|
| 46 |
//Can this request create a new merchant ?
|
| 47 |
+
$createMerchant = Mage::helper('codistosync')->createMerchantwithLock(20.0);
|
| 48 |
|
| 49 |
}
|
| 50 |
|
app/code/community/Codisto/Sync/etc/adminhtml.xml
CHANGED
|
@@ -32,40 +32,40 @@
|
|
| 32 |
<action>adminhtml/codisto/index</action>
|
| 33 |
</listings>
|
| 34 |
<orders translate="title">
|
| 35 |
-
<title>
|
| 36 |
<sort_order>2</sort_order>
|
| 37 |
<action>adminhtml/codisto/orders</action>
|
| 38 |
</orders>
|
| 39 |
<categories translate="title">
|
| 40 |
-
<title>Manage Categories</title>
|
| 41 |
<sort_order>3</sort_order>
|
| 42 |
<action>adminhtml/codisto/categories</action>
|
| 43 |
</categories>
|
| 44 |
<attributes translate="title">
|
| 45 |
-
<title>Manage Attributes</title>
|
| 46 |
<sort_order>4</sort_order>
|
| 47 |
<action>adminhtml/codisto/attributemapping</action>
|
| 48 |
</attributes>
|
| 49 |
<import translate="title">
|
| 50 |
-
<title>
|
| 51 |
<sort_order>5</sort_order>
|
| 52 |
<action>adminhtml/codisto/import</action>
|
| 53 |
</import>
|
| 54 |
-
|
| 55 |
<title>Getting Started</title>
|
| 56 |
<sort_order>6</sort_order>
|
| 57 |
<action>adminhtml/codisto/intro</action>
|
| 58 |
-
</getstarted
|
| 59 |
-
<account translate="title">
|
| 60 |
-
<title>Account</title>
|
| 61 |
-
<sort_order>7</sort_order>
|
| 62 |
-
<action>adminhtml/codisto/account</action>
|
| 63 |
-
</account>
|
| 64 |
<settings translate="title">
|
| 65 |
<title>Settings</title>
|
| 66 |
-
<sort_order>
|
| 67 |
<action>adminhtml/codisto/settings</action>
|
| 68 |
</settings>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
</children>
|
| 70 |
</codisto>
|
| 71 |
</menu>
|
| 32 |
<action>adminhtml/codisto/index</action>
|
| 33 |
</listings>
|
| 34 |
<orders translate="title">
|
| 35 |
+
<title>eBay Orders View</title>
|
| 36 |
<sort_order>2</sort_order>
|
| 37 |
<action>adminhtml/codisto/orders</action>
|
| 38 |
</orders>
|
| 39 |
<categories translate="title">
|
| 40 |
+
<title>Manage eBay Store Categories</title>
|
| 41 |
<sort_order>3</sort_order>
|
| 42 |
<action>adminhtml/codisto/categories</action>
|
| 43 |
</categories>
|
| 44 |
<attributes translate="title">
|
| 45 |
+
<title>Manage Custom Attributes</title>
|
| 46 |
<sort_order>4</sort_order>
|
| 47 |
<action>adminhtml/codisto/attributemapping</action>
|
| 48 |
</attributes>
|
| 49 |
<import translate="title">
|
| 50 |
+
<title>Link eBay Listings</title>
|
| 51 |
<sort_order>5</sort_order>
|
| 52 |
<action>adminhtml/codisto/import</action>
|
| 53 |
</import>
|
| 54 |
+
<!-- getstarted translate="title">
|
| 55 |
<title>Getting Started</title>
|
| 56 |
<sort_order>6</sort_order>
|
| 57 |
<action>adminhtml/codisto/intro</action>
|
| 58 |
+
</getstarted -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
<settings translate="title">
|
| 60 |
<title>Settings</title>
|
| 61 |
+
<sort_order>7</sort_order>
|
| 62 |
<action>adminhtml/codisto/settings</action>
|
| 63 |
</settings>
|
| 64 |
+
<account translate="title">
|
| 65 |
+
<title>Account</title>
|
| 66 |
+
<sort_order>8</sort_order>
|
| 67 |
+
<action>adminhtml/codisto/account</action>
|
| 68 |
+
</account>
|
| 69 |
</children>
|
| 70 |
</codisto>
|
| 71 |
</menu>
|
app/code/community/Codisto/Sync/etc/config.xml
CHANGED
|
@@ -23,7 +23,7 @@
|
|
| 23 |
<config>
|
| 24 |
<modules>
|
| 25 |
<Codisto_Sync>
|
| 26 |
-
<version>1.90.
|
| 27 |
<depends>
|
| 28 |
<Mage_Payment/>
|
| 29 |
</depends>
|
| 23 |
<config>
|
| 24 |
<modules>
|
| 25 |
<Codisto_Sync>
|
| 26 |
+
<version>1.90.11</version>
|
| 27 |
<depends>
|
| 28 |
<Mage_Payment/>
|
| 29 |
</depends>
|
app/code/community/Codisto/Sync/sql/codisto_setup/{mysql4-install-1.90.10.php → mysql4-install-1.90.11.php}
RENAMED
|
File without changes
|
package.xml
CHANGED
|
@@ -1,2 +1,2 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
-
<package><name>codistoconnect</name><version>1.90.
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
+
<package><name>codistoconnect</name><version>1.90.11</version><stability>stable</stability><license>OSL-3.0</license><channel>community</channel><extends></extends><summary>Fastest, Easiest eBay listing</summary><description>CodistoConnect enables you to list on eBay in the simplest way possible with maximum performance</description><notes></notes><authors><author><name>Codisto</name><user>Codisto</user><email>hello@codisto.com</email></author></authors><date>2016-09-05</date><time>16:24:09</time><compatible></compatible><dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies><contents><target name="mage"><dir name="app"><dir name="design"><dir name="ebay"><file name="README" hash="8a3f3351f68ccde9f161cdbe3960392f"/></dir></dir><dir name="code"><dir name="community"><dir name="Codisto"><dir name="Sync"><dir name="Helper"><file name="CmsContent.php" hash="f00b4523d681c60c660089d0de0f2e03"/><file name="Data.php" hash="0977ec0ac6a697c918f85b165216b689"/><file name="Signal.php" hash="b624f962056ceffae9c3160ed3e5655e"/></dir><dir name="controllers"><file name="CodistoController.php" hash="eccbf167582d60ae559b7455b9b8e7ea"/><file name="IndexController.php" hash="4945ea70ebcca04a3dd0187412095661"/><file name="SyncController.php" hash="8f7077a9c04215f8e09b4a0257049a74"/></dir><dir name="Controller"><file name="Router.php" hash="66d43bfbe826fe525dc764d42146cd50"/></dir><dir name="Test"><file name="README" hash="8299e52f9198536ff5fd3fb42f4a29d8"/><dir name="Config"><file name="AdminHtml.php" hash="6ee6404e52ed6376ad41b7556f265c32"/><file name="Config.php" hash="2e9023fcbab484d03936394934f44f13"/><dir name="Config"><dir name="expectations"><file name="testCodistoCoreConfig.yaml" hash="4a4e07f62981139ff6eb8a63420cbf0d"/></dir></dir></dir><dir name="Controllers"><file name="CodistoController.php" hash="a2be4faeac73ff1847c0d7dc4fbdc0e0"/><file name="IndexController.php" hash="f7252fae8d2f7b67397ae56524db49d1"/><file name="SyncController.php" hash="33436e4935631488073765d723a82ff7"/></dir><dir name="Controller"><file name="Router.php" hash="8afc0dca269dd0977ff6b3ac6802d0ee"/></dir><dir name="Model"><file name="Paymentmethod.php" hash="862365909073ffbba057f6f152933826"/><file name="Sync.php" hash="10a38bbb62260208a8b1529e762b7b75"/></dir></dir><dir name="sql"><dir name="codisto_setup"><file name="mysql4-install-1.90.11.php" hash="6d07d4e22ae5d907df1f4389c3a829d4"/></dir></dir><dir name="data"><dir name="codisto_setup"><file name="data-install-1.90.11.php" hash="29334830432cf1a02e4a992b9a42d6c5"/></dir></dir><dir name="Block"><file name="PaymentInfo.php" hash="7aa15fed37766d20d9d5a7d707aff80d"/></dir><dir name="Ebaypayment"><dir name="Model"><file name="Paymentmethod.php" hash="480787461a5b952a739f20a752bffb5d"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="9503ace98df8dfa2f2ec460b30e1053d"/><file name="config.xml" hash="5770ec865c6ea755615a2b64aae6b8df"/></dir><dir name="Model"><file name="Observer.php" hash="8b309ae85f2bf696e97ff6777c1d64f2"/><file name="Sync.php" hash="67bf12b927e5d87fb8f87a836d943cb6"/><dir name="Indexer"><file name="Ebay.php" hash="556b1aabc7c3202f31a2e6c250e7d590"/></dir><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="6a6664ea18d93bcdd0f45530caa56244"/></dir></dir></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><file name="Codisto_Sync.xml" hash="a791bc2a9302d085eb29edf77421f525"/></dir></dir></dir></target></contents></package>
|
