Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
NewOrder.php
Go to the documentation of this file.
1 <?php
7 
9 
15 {
19  protected $orderFactory;
20 
26  protected $urlBuilder;
27 
31  protected $localeDate;
32 
36  protected $dateTime;
37 
42  protected $eventManager;
43 
49  protected $layout;
50 
54  protected $rssUrlBuilder;
55 
65  public function __construct(
66  \Magento\Sales\Model\OrderFactory $orderFactory,
67  \Magento\Framework\UrlInterface $urlBuilder,
68  \Magento\Framework\App\Rss\UrlBuilderInterface $rssUrlBuilder,
69  \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
70  \Magento\Framework\Stdlib\DateTime $dateTime,
71  \Magento\Framework\Event\ManagerInterface $eventManager,
72  \Magento\Framework\View\LayoutInterface $layout
73  ) {
74  $this->orderFactory = $orderFactory;
75  $this->urlBuilder = $urlBuilder;
76  $this->localeDate = $localeDate;
77  $this->dateTime = $dateTime;
78  $this->eventManager = $eventManager;
79  $this->layout = $layout;
80  $this->rssUrlBuilder = $rssUrlBuilder;
81  }
82 
88  public function isAllowed()
89  {
90  return true;
91  }
92 
98  public function getRssData()
99  {
100  $dateTime = new \DateTime('now', new \DateTimeZone('UTC'));
101  $interval = new \DateInterval('P7D');
102  $dateTime->sub($interval);
103  $fromDate = $this->dateTime->formatDate($dateTime->getTimestamp());
104  $newUrl = $this->rssUrlBuilder->getUrl(['_secure' => true, '_nosecret' => true, 'type' => 'new_order']);
105  $title = __('New Orders');
106  $data = ['title' => $title, 'description' => $title, 'link' => $newUrl, 'charset' => 'UTF-8'];
107 
109  $order = $this->orderFactory->create();
111  $collection = $order->getResourceCollection();
112  $collection->addAttributeToFilter('created_at', ['date' => true, 'from' => $fromDate])
113  ->addAttributeToSort('created_at', 'desc');
114  $this->eventManager->dispatch('rss_order_new_collection_select', ['collection' => $collection]);
115 
116  $detailBlock = $this->layout->getBlockSingleton(\Magento\Sales\Block\Adminhtml\Order\Details::class);
117  foreach ($collection as $item) {
118  $title = __('Order #%1 created at %2', $item->getIncrementId(), $this->localeDate->formatDate(
119  $item->getCreatedAt()
120  ));
121  $url = $this->urlBuilder->getUrl(
122  'sales/order/view',
123  ['_secure' => true, 'order_id' => $item->getId(), '_nosecret' => true]
124  );
125  $detailBlock->setOrder($item);
126 
127  $data['entries'][] = (['title' => $title, 'link' => $url, 'description' => $detailBlock->toHtml()]);
128  }
129 
130  return $data;
131  }
132 
136  public function getCacheKey()
137  {
138  return 'rss_new_orders_data';
139  }
140 
144  public function getCacheLifetime()
145  {
146  return 60;
147  }
148 
152  public function getFeeds()
153  {
154  return [];
155  }
156 
160  public function isAuthRequired()
161  {
162  return true;
163  }
164 }
$title
Definition: default.phtml:14
__construct(\Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Framework\UrlInterface $urlBuilder, \Magento\Framework\App\Rss\UrlBuilderInterface $rssUrlBuilder, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Framework\Stdlib\DateTime $dateTime, \Magento\Framework\Event\ManagerInterface $eventManager, \Magento\Framework\View\LayoutInterface $layout)
Definition: NewOrder.php:65
$order
Definition: order.php:55
__()
Definition: __.php:13