![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-reports/Helper/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Reports\Helper; use Magento\Framework\Data\Collection; /** * Reports data helper. * * @api * @since 100.0.2 */ class Data extends \Magento\Framework\App\Helper\AbstractHelper { const REPORT_PERIOD_TYPE_DAY = 'day'; const REPORT_PERIOD_TYPE_MONTH = 'month'; const REPORT_PERIOD_TYPE_YEAR = 'year'; /** * Item factory * * @var \Magento\Reports\Model\ItemFactory */ protected $_itemFactory; /** * Constructor * * @param \Magento\Framework\App\Helper\Context $context * @param \Magento\Reports\Model\ItemFactory $itemFactory */ public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Reports\Model\ItemFactory $itemFactory ) { parent::__construct($context); $this->_itemFactory = $itemFactory; } /** * Retrieve array of intervals * * @param string $from * @param string $to * @param string $period * @return array * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function getIntervals($from, $to, $period = self::REPORT_PERIOD_TYPE_DAY) { $intervals = []; if (!$from && !$to) { return $intervals; } $dateStart = new \DateTime($from); $dateEnd = new \DateTime($to); $dateFormat = 'Y-m-d'; $dateInterval = new \DateInterval('P1D'); switch ($period) { case self::REPORT_PERIOD_TYPE_MONTH: $dateFormat = 'Y-m'; $dateInterval = new \DateInterval('P1M'); break; case self::REPORT_PERIOD_TYPE_YEAR: $dateFormat = 'Y'; $dateInterval = new \DateInterval('P1Y'); break; } while ($dateStart->diff($dateEnd)->invert == 0) { $intervals[] = $dateStart->format($dateFormat); $dateStart->add($dateInterval); } if (!in_array($dateEnd->format($dateFormat), $intervals)) { $intervals[] = $dateEnd->format($dateFormat); } return $intervals; } /** * Add items to interval collection * * @param Collection $collection * @param string $from * @param string $to * @param string $periodType * @return void */ public function prepareIntervalsCollection($collection, $from, $to, $periodType = self::REPORT_PERIOD_TYPE_DAY) { $intervals = $this->getIntervals($from, $to, $periodType); foreach ($intervals as $interval) { $item = $this->_itemFactory->create(); $item->setPeriod($interval); $item->setIsEmpty(); $collection->addItem($item); } } }