![]() 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/mautic.corals.io/app/bundles/StatsBundle/Aggregate/Helper/ |
<?php namespace Mautic\StatsBundle\Aggregate\Helper; use Mautic\StatsBundle\Aggregate\Collection\DAO\StatDAO; class CalculatorHelper { /** * @throws \Exception */ public static function getYearLabel($year, $labelFormat): string { return (new \DateTime(self::getYearDateString($year)))->format($labelFormat); } public static function getYearDateString($year): string { return "$year-01-01 00:00:00"; } /** * @param string $lastYear * @param string $thisYear * @param string $labelFormat * * @throws \Exception */ public static function fillInMissingYears(StatDAO $statDAO, $lastYear, $thisYear, $labelFormat): void { if (!$lastYear) { return; } $lastYear = new \DateTime(self::getYearDateString($lastYear)); $thisYear = new \DateTime(self::getYearDateString($thisYear)); if (!isset($statDAO->getStats()[$lastYear->format($labelFormat)])) { $statDAO->addStat($lastYear->format($labelFormat), 0); } while ($lastYear < $thisYear) { $lastYear->modify('+1 year'); $statDAO->addStat($lastYear->format($labelFormat), 0); } } /** * @throws \Exception */ public static function getMonthLabel($month, $labelFormat): string { return (new \DateTime(self::getMonthDateString($month)))->format($labelFormat); } public static function getMonthDateString($month): string { return "$month-01 00:00:00"; } /** * @param string $lastMonth * @param string $thisMonth * @param string $labelFormat * * @throws \Exception */ public static function fillInMissingMonths(StatDAO $statDAO, $lastMonth, $thisMonth, $labelFormat): void { if (!$lastMonth) { return; } $lastMonth = new \DateTime(self::getMonthDateString($lastMonth)); $thisMonth = new \DateTime(self::getMonthDateString($thisMonth)); if (!isset($statDAO->getStats()[$lastMonth->format($labelFormat)])) { $statDAO->addStat($lastMonth->format($labelFormat), 0); } while ($lastMonth < $thisMonth) { $lastMonth->modify('+1 month'); $statDAO->addStat($lastMonth->format($labelFormat), 0); } } /** * @throws \Exception */ public static function getDayLabel($day, $labelFormat): string { return (new \DateTime(self::getDayDateString($day)))->format($labelFormat); } public static function getDayDateString($day): string { return "$day 00:00:00"; } /** * @param string $date * * @throws \Exception */ public static function getWeekFromDayString($date): string { return (new \DateTime($date))->format('Y-W'); } /** * @param string $date * @param string $labelFormat * * @throws \Exception */ public static function getWeekLabel($date, $labelFormat = 'Y-W'): string { return (new \DateTime(self::getWeekDateString($date)))->format($labelFormat); } public static function getWeekDateString($date): string { if (!preg_match('/^([0-9]{4})-([0-9]{2})$/', $date, $matches)) { throw new \InvalidArgumentException('Invalid argument, Y-W format is required.'); } $year = $matches[1]; $week = $matches[2]; return date('Y-m-d 00:00:00', strtotime($year.'W'.$week.'1')); } /** * @param string $yesterday * @param string $today * @param string $labelFormat * * @throws \Exception */ public static function fillInMissingWeeks(StatDAO $statDAO, $yesterday, $today, $labelFormat): void { if (!$yesterday) { return; } $yesterday = new \DateTime(self::getWeekDateString($yesterday)); $today = new \DateTime(self::getWeekDateString($today)); while ($yesterday < $today) { $statDAO->addStat($yesterday->format($labelFormat), 0); $yesterday->modify('+1 week'); } } /** * @param string $yesterday * @param string $today * @param string $labelFormat * * @throws \Exception */ public static function fillInMissingDays(StatDAO $statDAO, $yesterday, $today, $labelFormat): void { if (!$yesterday) { return; } $yesterday = (new \DateTime(self::getDayDateString($yesterday)))->modify('-1 day'); $today = new \DateTime(self::getDayDateString($today)); while ($yesterday < $today) { $yesterday->modify('+1 day'); $statDAO->addStat($yesterday->format($labelFormat), 0); } } /** * @throws \Exception */ public static function getHourLabel($hour, $labelFormat): string { return (new \DateTime(self::getHourDateString($hour)))->format($labelFormat); } public static function getHourDateString($hour): string { return "$hour:00:00"; } /** * @param string $lastHour * @param string $thisHour * @param string $labelFormat * * @throws \Exception */ public static function fillInMissingHours(StatDAO $statDAO, $lastHour, $thisHour, $labelFormat): void { if (!$lastHour) { return; } $lastHour = new \DateTime(self::getHourDateString($lastHour)); $thisHour = new \DateTime(self::getHourDateString($thisHour)); while ($lastHour < $thisHour) { $lastHour->modify('+1 hour'); $statDAO->addStat($lastHour->format($labelFormat), 0); } } }