EmailTemplateFieldValue.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace Dotdigitalgroup\Email\Model\Adminhtml\Backend;
  3. class EmailTemplateFieldValue extends \Magento\Framework\App\Config\Value
  4. {
  5. /**
  6. * @var \Dotdigitalgroup\Email\Model\Email\TemplateFactory
  7. */
  8. private $templateFactory;
  9. /**
  10. * @var \Magento\Store\Model\StoreManagerInterface
  11. */
  12. private $storeManager;
  13. /**
  14. * @var \Magento\Email\Model\ResourceModel\Template
  15. */
  16. private $templateResource;
  17. /**
  18. * @var \Dotdigitalgroup\Email\Helper\Data
  19. */
  20. private $helper;
  21. /**
  22. * @var \Magento\Framework\App\RequestInterface
  23. */
  24. private $request;
  25. /**
  26. * EmailTemplateFieldValue constructor.
  27. *
  28. * @param \Magento\Framework\Model\Context $context
  29. * @param \Magento\Framework\Registry $registry
  30. * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
  31. * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
  32. * @param \Dotdigitalgroup\Email\Model\Email\TemplateFactory $templateFactory
  33. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  34. * @param \Magento\Email\Model\ResourceModel\Template $templateResource
  35. * @param \Dotdigitalgroup\Email\Helper\Data $helper
  36. * @param \Magento\Framework\App\RequestInterface $request
  37. * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
  38. * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
  39. * @param array $data
  40. */
  41. public function __construct(
  42. \Magento\Framework\Model\Context $context,
  43. \Magento\Framework\Registry $registry,
  44. \Magento\Framework\App\Config\ScopeConfigInterface $config,
  45. \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
  46. \Dotdigitalgroup\Email\Model\Email\TemplateFactory $templateFactory,
  47. \Magento\Store\Model\StoreManagerInterface $storeManager,
  48. \Magento\Email\Model\ResourceModel\Template $templateResource,
  49. \Dotdigitalgroup\Email\Helper\Data $helper,
  50. \Magento\Framework\App\RequestInterface $request,
  51. \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
  52. \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
  53. array $data = []
  54. ) {
  55. $this->templateFactory = $templateFactory;
  56. $this->storeManager = $storeManager;
  57. $this->templateResource = $templateResource;
  58. $this->helper = $helper;
  59. $this->request = $request;
  60. parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
  61. }
  62. /**
  63. * @return \Magento\Framework\App\Config\Value
  64. */
  65. public function beforeDelete()
  66. {
  67. $dotTemplate = $this->templateFactory->create();
  68. $this->helper->deleteConfigData(
  69. $dotTemplate->templateConfigMapping[$this->getField()],
  70. $this->getScope(),
  71. $this->getScopeId()
  72. );
  73. return parent::beforeDelete();
  74. }
  75. /**
  76. * @return \Magento\Framework\App\Config\Value
  77. */
  78. public function beforeSave()
  79. {
  80. if (! $this->isValueChanged()) {
  81. return parent::beforeSave();
  82. }
  83. $dotTemplate = $this->templateFactory->create();
  84. $templateConfigId = $this->getField();
  85. $scope = $this->getScope();
  86. $scopeId = $this->getScopeId();
  87. //email template mapped
  88. if ($this->getValue()) {
  89. $templateConfigPath = $dotTemplate->templateConfigMapping[$templateConfigId];
  90. $template = $dotTemplate->saveTemplateWithConfigPath(
  91. $templateConfigId,
  92. $this->getValue(),
  93. $scope,
  94. $scopeId
  95. );
  96. //save successful created new email template with the default config value for template.
  97. if ($template) {
  98. $this->helper->saveConfigData(
  99. $templateConfigPath,
  100. $template->getId(),
  101. $scope,
  102. $scopeId
  103. );
  104. }
  105. } else {
  106. //remove the config for core email template
  107. $this->helper->deleteConfigData(
  108. $dotTemplate->templateConfigMapping[$templateConfigId],
  109. $scope,
  110. $scopeId
  111. );
  112. //remove the config for dotmailer template
  113. $this->helper->deleteConfigData(
  114. $dotTemplate->templateConfigIdToDotmailerConfigPath[$templateConfigId],
  115. $scope,
  116. $scopeId
  117. );
  118. }
  119. return parent::beforeSave();
  120. }
  121. }