123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\Rss;
- use Magento\Framework\App\Rss\DataProviderInterface;
- /**
- * Class NewOrder
- * @package Magento\Sales\Model\Rss
- */
- class NewOrder implements DataProviderInterface
- {
- /**
- * @var \Magento\Sales\Model\OrderFactory
- */
- protected $orderFactory;
- /**
- * Url Builder
- *
- * @var \Magento\Framework\UrlInterface
- */
- protected $urlBuilder;
- /**
- * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
- */
- protected $localeDate;
- /**
- * @var \Magento\Framework\Stdlib\DateTime
- */
- protected $dateTime;
- /**
- * System event manager
- * @var \Magento\Framework\Event\ManagerInterface
- */
- protected $eventManager;
- /**
- * Parent layout of the block
- *
- * @var \Magento\Framework\View\LayoutInterface
- */
- protected $layout;
- /**
- * @var \Magento\Framework\App\Rss\UrlBuilderInterface
- */
- protected $rssUrlBuilder;
- /**
- * @param \Magento\Sales\Model\OrderFactory $orderFactory
- * @param \Magento\Framework\UrlInterface $urlBuilder
- * @param \Magento\Framework\App\Rss\UrlBuilderInterface $rssUrlBuilder
- * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
- * @param \Magento\Framework\Stdlib\DateTime $dateTime
- * @param \Magento\Framework\Event\ManagerInterface $eventManager
- * @param \Magento\Framework\View\LayoutInterface $layout
- */
- public function __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
- ) {
- $this->orderFactory = $orderFactory;
- $this->urlBuilder = $urlBuilder;
- $this->localeDate = $localeDate;
- $this->dateTime = $dateTime;
- $this->eventManager = $eventManager;
- $this->layout = $layout;
- $this->rssUrlBuilder = $rssUrlBuilder;
- }
- /**
- * Check if RSS feed allowed
- *
- * @return mixed
- */
- public function isAllowed()
- {
- return true;
- }
- /**
- * Get RSS feed items
- *
- * @return array
- */
- public function getRssData()
- {
- $dateTime = new \DateTime('now', new \DateTimeZone('UTC'));
- $interval = new \DateInterval('P7D');
- $dateTime->sub($interval);
- $fromDate = $this->dateTime->formatDate($dateTime->getTimestamp());
- $newUrl = $this->rssUrlBuilder->getUrl(['_secure' => true, '_nosecret' => true, 'type' => 'new_order']);
- $title = __('New Orders');
- $data = ['title' => $title, 'description' => $title, 'link' => $newUrl, 'charset' => 'UTF-8'];
- /** @var $order \Magento\Sales\Model\Order */
- $order = $this->orderFactory->create();
- /** @var $collection \Magento\Sales\Model\ResourceModel\Order\Collection */
- $collection = $order->getResourceCollection();
- $collection->addAttributeToFilter('created_at', ['date' => true, 'from' => $fromDate])
- ->addAttributeToSort('created_at', 'desc');
- $this->eventManager->dispatch('rss_order_new_collection_select', ['collection' => $collection]);
- $detailBlock = $this->layout->getBlockSingleton(\Magento\Sales\Block\Adminhtml\Order\Details::class);
- foreach ($collection as $item) {
- $title = __('Order #%1 created at %2', $item->getIncrementId(), $this->localeDate->formatDate(
- $item->getCreatedAt()
- ));
- $url = $this->urlBuilder->getUrl(
- 'sales/order/view',
- ['_secure' => true, 'order_id' => $item->getId(), '_nosecret' => true]
- );
- $detailBlock->setOrder($item);
- $data['entries'][] = (['title' => $title, 'link' => $url, 'description' => $detailBlock->toHtml()]);
- }
- return $data;
- }
- /**
- * @return string
- */
- public function getCacheKey()
- {
- return 'rss_new_orders_data';
- }
- /**
- * @return int
- */
- public function getCacheLifetime()
- {
- return 60;
- }
- /**
- * @return array
- */
- public function getFeeds()
- {
- return [];
- }
- /**
- * {@inheritdoc}
- */
- public function isAuthRequired()
- {
- return true;
- }
- }
|