Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Helper\Chart; | |
| trait DateRangeUnitTrait | |
| { | |
| /** | |
| * Returns appropriate time unit from a date range so the line/bar charts won't be too full/empty. | |
| */ | |
| public function getTimeUnitFromDateRange(\DateTimeInterface $dateFrom, \DateTimeInterface $dateTo): string | |
| { | |
| $dayDiff = $dateTo->diff($dateFrom)->format('%a'); | |
| $unit = 'd'; | |
| if ($dayDiff <= 1) { | |
| $unit = 'H'; | |
| $sameDay = $dateTo->format('d') === $dateFrom->format('d'); | |
| $hourDiff = $dateTo->diff($dateFrom)->format('%h'); | |
| $minuteDiff = $dateTo->diff($dateFrom)->format('%i'); | |
| if ($sameDay && !intval($hourDiff) && intval($minuteDiff)) { | |
| $unit = 'i'; | |
| } | |
| $secondDiff = $dateTo->diff($dateFrom)->format('%s'); | |
| if (!intval($minuteDiff) && intval($secondDiff)) { | |
| $unit = 'i'; | |
| } | |
| } | |
| if ($dayDiff > 31) { | |
| $unit = 'W'; | |
| } | |
| if ($dayDiff > 100) { | |
| $unit = 'm'; | |
| } | |
| if ($dayDiff > 1000) { | |
| $unit = 'Y'; | |
| } | |
| return $unit; | |
| } | |
| } | |