AzuraCast/src/Form/Field/PlaylistTime.php

41 lines
1.2 KiB
PHP

<?php
namespace App\Form\Field;
use AzuraForms;
use AzuraForms\Field\Time;
class PlaylistTime extends Time
{
public function __construct(AzuraForms\Form $form, $element_name, array $config = [], $group = null)
{
parent::__construct($form, $element_name, $config, $group);
$this->attributes['pattern'] = '[0-9]{2}:[0-9]{2}';
$this->attributes['placeholder'] = '13:45';
// Handle the "time code" format used by the database entity,
// which is just the regular 24-hour time minus the ":".
$this->filters[] = function ($new_value) {
// Don't use regular empty() check because 0 (which is 00:00, 12:00AM) is considered empty.
if ('' !== $new_value && null !== $new_value && false === strpos($new_value, ':')) {
$time_code = str_pad($new_value, 4, '0', STR_PAD_LEFT);
return substr($time_code, 0, 2) . ':' . substr($time_code, 2);
}
return $new_value;
};
}
/**
*/
public function getValue(): string|int
{
if (empty($this->value)) {
return '';
}
[$hours, $minutes] = explode(':', $this->value);
return ((int)$hours * 100) + (int)$minutes;
}
}