quiz_maker-1.0.6/src/Plugin/Field/FieldFormatter/TimeLimitFormatter.php
src/Plugin/Field/FieldFormatter/TimeLimitFormatter.php
<?php
namespace Drupal\quiz_maker\Plugin\Field\FieldFormatter;
use Drupal\Component\Datetime\TimeInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Plugin implementation of the 'Entity Count' formatter.
*
* @FieldFormatter(
* id = "time_limit",
* label = @Translation("Time limit"),
* field_types = {"integer"},
* )
*/
final class TimeLimitFormatter extends FormatterBase {
/**
* Constructs a new TimeLimitFormatter object.
*/
public function __construct(
$plugin_id,
$plugin_definition,
FieldDefinitionInterface $field_definition,
array $settings,
$label,
$view_mode,
array $third_party_settings,
protected TimeInterface $time,
) {
parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings);
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static(
$plugin_id,
$plugin_definition,
$configuration['field_definition'],
$configuration['settings'],
$configuration['label'],
$configuration['view_mode'],
$configuration['third_party_settings'],
$container->get('datetime.time'),
);
}
/**
* {@inheritdoc}
*/
public static function defaultSettings(): array {
$setting = ['time_format' => 'H:i:s'];
return $setting + parent::defaultSettings();
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state): array {
$elements['time_format'] = [
'#type' => 'textfield',
'#title' => $this->t('Time format'),
'#default_value' => $this->getSetting('time_format'),
];
return $elements;
}
/**
* {@inheritdoc}
*/
public function settingsSummary(): array {
return [
$this->t('Format: @time_format', ['@time_format' => gmdate($this->getSetting('time_format'), $this->time->getCurrentTime())]),
];
}
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode): array {
$element = [];
foreach ($items as $delta => $item) {
$element[$delta] = [
'#type' => 'html_tag',
'#tag' => 'span',
'#value' => gmdate($this->getSetting('time_format'), (int) $item->getString()),
];
}
return $element;
}
/**
* {@inheritdoc}
*/
public static function isApplicable(FieldDefinitionInterface $field_definition): bool {
return $field_definition->getName() === 'time_limit';
}
}
