Template.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Config\Model\Config\Source\Email;
  7. /**
  8. * @api
  9. * @since 100.0.2
  10. */
  11. class Template extends \Magento\Framework\DataObject implements \Magento\Framework\Option\ArrayInterface
  12. {
  13. /**
  14. * @var \Magento\Framework\Registry
  15. */
  16. private $_coreRegistry;
  17. /**
  18. * @var \Magento\Email\Model\Template\Config
  19. */
  20. private $_emailConfig;
  21. /**
  22. * @var \Magento\Email\Model\ResourceModel\Template\CollectionFactory
  23. */
  24. protected $_templatesFactory;
  25. /**
  26. * @param \Magento\Framework\Registry $coreRegistry
  27. * @param \Magento\Email\Model\ResourceModel\Template\CollectionFactory $templatesFactory
  28. * @param \Magento\Email\Model\Template\Config $emailConfig
  29. * @param array $data
  30. */
  31. public function __construct(
  32. \Magento\Framework\Registry $coreRegistry,
  33. \Magento\Email\Model\ResourceModel\Template\CollectionFactory $templatesFactory,
  34. \Magento\Email\Model\Template\Config $emailConfig,
  35. array $data = []
  36. ) {
  37. parent::__construct($data);
  38. $this->_coreRegistry = $coreRegistry;
  39. $this->_templatesFactory = $templatesFactory;
  40. $this->_emailConfig = $emailConfig;
  41. }
  42. /**
  43. * Generate list of email templates
  44. *
  45. * @return array
  46. */
  47. public function toOptionArray()
  48. {
  49. /** @var $collection \Magento\Email\Model\ResourceModel\Template\Collection */
  50. if (!($collection = $this->_coreRegistry->registry('config_system_email_template'))) {
  51. $collection = $this->_templatesFactory->create();
  52. $collection->load();
  53. $this->_coreRegistry->register('config_system_email_template', $collection);
  54. }
  55. $options = $collection->toOptionArray();
  56. $templateId = str_replace('/', '_', $this->getPath());
  57. $templateLabel = $this->_emailConfig->getTemplateLabel($templateId);
  58. $templateLabel = __('%1 (Default)', $templateLabel);
  59. array_unshift($options, ['value' => $templateId, 'label' => $templateLabel]);
  60. return $options;
  61. }
  62. }