Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Template.php
Go to the documentation of this file.
1 <?php
8 
18 {
24  protected $_date;
25 
31  public function __construct(
32  \Magento\Framework\Model\ResourceModel\Db\Context $context,
33  \Magento\Framework\Stdlib\DateTime\DateTime $date,
34  $connectionName = null
35  ) {
36  parent::__construct($context, $connectionName);
37  $this->_date = $date;
38  }
39 
45  protected function _construct()
46  {
47  $this->_init('newsletter_template', 'template_id');
48  }
49 
56  public function checkUsageInQueue(\Magento\Newsletter\Model\Template $template)
57  {
58  if ($template->getTemplateActual() !== 0 && !$template->getIsSystem()) {
59  $select = $this->getConnection()->select()->from(
60  $this->getTable('newsletter_queue'),
61  new \Zend_Db_Expr('COUNT(queue_id)')
62  )->where(
63  'template_id = :template_id'
64  );
65 
66  $countOfQueue = $this->getConnection()->fetchOne($select, ['template_id' => $template->getId()]);
67 
68  return $countOfQueue > 0;
69  } elseif ($template->getIsSystem()) {
70  return false;
71  } else {
72  return true;
73  }
74  }
75 
82  public function checkCodeUsage(\Magento\Newsletter\Model\Template $template)
83  {
84  if ($template->getTemplateActual() != 0 || $template->getTemplateActual() === null) {
85  $bind = [
86  'template_id' => $template->getId(),
87  'template_code' => $template->getTemplateCode(),
88  'template_actual' => 1,
89  ];
90  $select = $this->getConnection()->select()->from(
91  $this->getMainTable(),
92  new \Zend_Db_Expr('COUNT(template_id)')
93  )->where(
94  'template_id != :template_id'
95  )->where(
96  'template_code = :template_code'
97  )->where(
98  'template_actual = :template_actual'
99  );
100 
101  $countOfCodes = $this->getConnection()->fetchOne($select, $bind);
102 
103  return $countOfCodes > 0;
104  } else {
105  return false;
106  }
107  }
108 
116  protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object)
117  {
118  if ($this->checkCodeUsage($object)) {
119  throw new \Magento\Framework\Exception\LocalizedException(__('Duplicate template code'));
120  }
121 
122  if (!$object->hasTemplateActual()) {
123  $object->setTemplateActual(1);
124  }
125  if (!$object->hasAddedAt()) {
126  $object->setAddedAt($this->_date->gmtDate());
127  }
128  $object->setModifiedAt($this->_date->gmtDate());
129 
130  return parent::_beforeSave($object);
131  }
132 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
checkUsageInQueue(\Magento\Newsletter\Model\Template $template)
Definition: Template.php:56
__()
Definition: __.php:13
__construct(\Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Framework\Stdlib\DateTime\DateTime $date, $connectionName=null)
Definition: Template.php:31
_beforeSave(\Magento\Framework\Model\AbstractModel $object)
Definition: Template.php:116
checkCodeUsage(\Magento\Newsletter\Model\Template $template)
Definition: Template.php:82
$template
Definition: export.php:12