Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Data.php
Go to the documentation of this file.
1 <?php
11 
14 
20 {
21  const REPORT_PERIOD_TYPE_DAY = 'day';
22 
23  const REPORT_PERIOD_TYPE_MONTH = 'month';
24 
25  const REPORT_PERIOD_TYPE_YEAR = 'year';
26 
32  protected $_itemFactory;
33 
40  public function __construct(
41  \Magento\Framework\App\Helper\Context $context,
42  \Magento\Reports\Model\ItemFactory $itemFactory
43  ) {
44  parent::__construct($context);
45  $this->_itemFactory = $itemFactory;
46  }
47 
57  public function getIntervals($from, $to, $period = self::REPORT_PERIOD_TYPE_DAY)
58  {
59  $intervals = [];
60  if (!$from && !$to) {
61  return $intervals;
62  }
63 
64  $dateStart = new \DateTime($from);
65  $dateEnd = new \DateTime($to);
66  while ($dateStart->diff($dateEnd)->invert == 0) {
67  switch ($period) {
69  $intervals[] = $dateStart->format('Y-m-d');
70  $dateStart->add(new \DateInterval('P1D'));
71  break;
73  $intervals[] = $dateStart->format('Y-m');
74  $dateStart->add(new \DateInterval('P1M'));
75  break;
77  $intervals[] = $dateStart->format('Y');
78  $dateStart->add(new \DateInterval('P1Y'));
79  break;
80  }
81  }
82  return $intervals;
83  }
84 
94  public function prepareIntervalsCollection($collection, $from, $to, $periodType = self::REPORT_PERIOD_TYPE_DAY)
95  {
96  $intervals = $this->getIntervals($from, $to, $periodType);
97 
98  foreach ($intervals as $interval) {
99  $item = $this->_itemFactory->create();
100  $item->setPeriod($interval);
101  $item->setIsEmpty();
102  $collection->addItem($item);
103  }
104  }
105 }
__construct(\Magento\Framework\App\Helper\Context $context, \Magento\Reports\Model\ItemFactory $itemFactory)
Definition: Data.php:40
prepareIntervalsCollection($collection, $from, $to, $periodType=self::REPORT_PERIOD_TYPE_DAY)
Definition: Data.php:94
const REPORT_PERIOD_TYPE_MONTH
Definition: Data.php:23
getIntervals($from, $to, $period=self::REPORT_PERIOD_TYPE_DAY)
Definition: Data.php:57