Spaces:
No application file
No application file
File size: 3,357 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
<?php
declare(strict_types=1);
namespace Mautic\CoreBundle\Twig\Extension;
use Mautic\CoreBundle\Twig\Helper\DateHelper;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class DateExtension extends AbstractExtension
{
public function __construct(
protected DateHelper $dateHelper
) {
}
public function getFunctions()
{
return [
new TwigFunction('dateToText', [$this, 'toText'], ['is_safe' => ['all']]),
new TwigFunction('dateToFull', [$this, 'toFull'], ['is_safe' => ['all']]),
new TwigFunction('dateToFullConcat', [$this, 'toFullConcat'], ['is_safe' => ['all']]),
new TwigFunction('dateToDate', [$this, 'toDate'], ['is_safe' => ['all']]),
new TwigFunction('dateToTime', [$this, 'toTime'], ['is_safe' => ['all']]),
new TwigFunction('dateToShort', [$this, 'toShort'], ['is_safe' => ['all']]),
new TwigFunction('dateFormatRange', [$this, 'formatRange'], ['is_safe' => ['all']]),
];
}
/**
* Returns date/time like Today, 10:00 AM.
*
* @param mixed $datetime
* @param bool $forceDateForNonText If true, return as full date/time rather than "29 days ago"
*/
public function toText($datetime, string $timezone = 'local', string $fromFormat = 'Y-m-d H:i:s', bool $forceDateForNonText = false): string
{
return $this->dateHelper->toText($datetime, $timezone, $fromFormat, $forceDateForNonText);
}
/**
* Returns full date. eg. October 8, 2014 21:19.
*
* @param \DateTime|string $datetime
*/
public function toFull($datetime, string $timezone = 'local', string $fromFormat = 'Y-m-d H:i:s'): string
{
return $this->dateHelper->toFull($datetime, $timezone, $fromFormat);
}
/**
* Returns date and time concat eg 2014-08-02 5:00am.
*
* @param \DateTime|string $datetime
* @param string $timezone
* @param string $fromFormat
*
* @return string
*/
public function toFullConcat($datetime, $timezone = 'local', $fromFormat = 'Y-m-d H:i:s')
{
return $this->dateHelper->toFullConcat($datetime, $timezone, $fromFormat);
}
/**
* Returns date only e.g. 2014-08-09.
*
* @param \DateTime|string $datetime
*
* @return string
*/
public function toDate($datetime, string $timezone = 'local', string $fromFormat = 'Y-m-d H:i:s')
{
return $this->dateHelper->toDate($datetime, $timezone, $fromFormat);
}
/**
* Returns time only e.g. 21:19.
*
* @param \DateTime|string $datetime
*/
public function toTime($datetime, string $timezone = 'local', string $fromFormat = 'Y-m-d H:i:s'): string
{
return $this->dateHelper->toTime($datetime, $timezone, $fromFormat);
}
/**
* Returns short date format eg Sun, Oct 8.
*
* @param \DateTime|string $datetime
*/
public function toShort($datetime, string $timezone = 'local', string $fromFormat = 'Y-m-d H:i:s'): string
{
return $this->dateHelper->toShort($datetime, $timezone, $fromFormat);
}
/**
* @see DateHelper::formatRange
*/
public function formatRange(\DateInterval $range): string
{
return $this->dateHelper->formatRange($range);
}
}
|