Recurring.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace Dotdigitalgroup\Email\Setup;
  3. use Magento\Framework\Setup\ExternalFKSetup;
  4. use Magento\Framework\Setup\InstallSchemaInterface;
  5. use Magento\Framework\Setup\ModuleContextInterface;
  6. use Magento\Framework\Setup\SchemaSetupInterface;
  7. use Magento\Framework\DB\Ddl\Table;
  8. /**
  9. * Catalog recurring setup
  10. */
  11. class Recurring implements InstallSchemaInterface
  12. {
  13. /**
  14. * @var ExternalFKSetup
  15. */
  16. protected $externalFKSetup;
  17. /**
  18. * @var Schema\Shared
  19. */
  20. private $shared;
  21. /**
  22. * @param ExternalFKSetup $externalFKSetup
  23. * @param Schema\Shared $shared
  24. */
  25. public function __construct(
  26. ExternalFKSetup $externalFKSetup,
  27. Schema\Shared $shared
  28. ) {
  29. $this->shared = $shared;
  30. $this->externalFKSetup = $externalFKSetup;
  31. }
  32. /**
  33. * @param SchemaSetupInterface $setup
  34. * @param ModuleContextInterface $context
  35. */
  36. public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
  37. {
  38. $installer = $setup;
  39. $installer->startSetup();
  40. $this->externalFKSetup->install(
  41. $installer,
  42. 'catalog_product_entity',
  43. 'entity_id',
  44. Schema::EMAIL_CATALOG_TABLE,
  45. 'product_id'
  46. );
  47. $this->checkAndCreateAbandonedCart($setup, $context);
  48. $installer->endSetup();
  49. }
  50. /**
  51. * Create table for abandoned carts if doesn't exists between two versions.
  52. *
  53. * @param SchemaSetupInterface $setup
  54. * @param ModuleContextInterface $context
  55. */
  56. private function checkAndCreateAbandonedCart($setup, $context)
  57. {
  58. $connection = $setup->getConnection();
  59. $abandonedCartTableName = $setup->getTable(Schema::EMAIL_ABANDONED_CART_TABLE);
  60. if (version_compare($context->getVersion(), '2.3.8', '>') &&
  61. ! $connection->isTableExists($abandonedCartTableName)
  62. ) {
  63. $this->shared->createAbandonedCartTable($setup, $abandonedCartTableName);
  64. }
  65. }
  66. }