Template.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace Dotdigitalgroup\Email\Model\Config\Source\Transactional\Email;
  3. class Template extends \Magento\Framework\DataObject implements \Magento\Framework\Option\ArrayInterface
  4. {
  5. /**
  6. * @var \Magento\Framework\Registry
  7. */
  8. private $coreRegistry;
  9. /**
  10. * @var \Magento\Email\Model\Template\Config
  11. */
  12. private $emailConfig;
  13. /**
  14. * @var \Magento\Email\Model\ResourceModel\Template\CollectionFactory
  15. */
  16. protected $templatesFactory;
  17. /**
  18. * @param \Magento\Framework\Registry $coreRegistry
  19. * @param \Magento\Email\Model\ResourceModel\Template\CollectionFactory $templatesFactory
  20. * @param \Magento\Email\Model\Template\Config $emailConfig
  21. * @param array $data
  22. */
  23. public function __construct(
  24. \Magento\Framework\Registry $coreRegistry,
  25. \Magento\Email\Model\ResourceModel\Template\CollectionFactory $templatesFactory,
  26. \Magento\Email\Model\Template\Config $emailConfig,
  27. array $data = []
  28. ) {
  29. parent::__construct($data);
  30. $this->coreRegistry = $coreRegistry;
  31. $this->templatesFactory = $templatesFactory;
  32. $this->emailConfig = $emailConfig;
  33. }
  34. /**
  35. * Generate list of email templates
  36. *
  37. * @return array
  38. */
  39. public function toOptionArray()
  40. {
  41. /** @var $collection \Magento\Email\Model\ResourceModel\Template\Collection */
  42. if (!($collection = $this->coreRegistry->registry('config_system_email_template'))) {
  43. $collection = $this->templatesFactory->create();
  44. $collection->load();
  45. $this->coreRegistry->register('config_system_email_template', $collection);
  46. }
  47. return $this->emailConfig->getAvailableTemplates();
  48. }
  49. }