Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Observer.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Sitemap\Model;
7 
13 class Observer
14 {
18  const XML_PATH_GENERATION_ENABLED = 'sitemap/generate/enabled';
19 
25  const XML_PATH_CRON_EXPR = 'crontab/default/jobs/generate_sitemaps/schedule/cron_expr';
26 
30  const XML_PATH_ERROR_TEMPLATE = 'sitemap/generate/error_email_template';
31 
35  const XML_PATH_ERROR_IDENTITY = 'sitemap/generate/error_email_identity';
36 
40  const XML_PATH_ERROR_RECIPIENT = 'sitemap/generate/error_email';
41 
47  protected $_scopeConfig;
48 
53 
57  protected $_transportBuilder;
58 
62  protected $_storeManager;
63 
67  protected $inlineTranslation;
68 
76  public function __construct(
77  \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
78  \Magento\Sitemap\Model\ResourceModel\Sitemap\CollectionFactory $collectionFactory,
79  \Magento\Store\Model\StoreManagerInterface $storeManager,
80  \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder,
81  \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
82  ) {
83  $this->_scopeConfig = $scopeConfig;
84  $this->_collectionFactory = $collectionFactory;
85  $this->_storeManager = $storeManager;
86  $this->_transportBuilder = $transportBuilder;
87  $this->inlineTranslation = $inlineTranslation;
88  }
89 
97  public function scheduledGenerateSitemaps()
98  {
99  $errors = [];
100 
101  // check if scheduled generation enabled
102  if (!$this->_scopeConfig->isSetFlag(
103  self::XML_PATH_GENERATION_ENABLED,
105  )
106  ) {
107  return;
108  }
109 
110  $collection = $this->_collectionFactory->create();
111  /* @var $collection \Magento\Sitemap\Model\ResourceModel\Sitemap\Collection */
112  foreach ($collection as $sitemap) {
113  /* @var $sitemap \Magento\Sitemap\Model\Sitemap */
114  try {
115  $sitemap->generateXml();
116  } catch (\Exception $e) {
117  $errors[] = $e->getMessage();
118  }
119  }
120 
121  if ($errors && $this->_scopeConfig->getValue(
122  self::XML_PATH_ERROR_RECIPIENT,
124  )
125  ) {
126  $this->inlineTranslation->suspend();
127 
128  $this->_transportBuilder->setTemplateIdentifier(
129  $this->_scopeConfig->getValue(
130  self::XML_PATH_ERROR_TEMPLATE,
132  )
133  )->setTemplateOptions(
134  [
135  'area' => \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE,
136  'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID,
137  ]
138  )->setTemplateVars(
139  ['warnings' => join("\n", $errors)]
140  )->setFrom(
141  $this->_scopeConfig->getValue(
142  self::XML_PATH_ERROR_IDENTITY,
144  )
145  )->addTo(
146  $this->_scopeConfig->getValue(
147  self::XML_PATH_ERROR_RECIPIENT,
149  )
150  );
151  $transport = $this->_transportBuilder->getTransport();
152  $transport->sendMessage();
153 
154  $this->inlineTranslation->resume();
155  }
156  }
157 }
$storeManager
__construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Sitemap\Model\ResourceModel\Sitemap\CollectionFactory $collectionFactory, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder, \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation)
Definition: Observer.php:76
$errors
Definition: overview.phtml:9