Spaces:
No application file
No application file
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); | |
} | |
} | |