d35d3801da56b24f560cef656643705789e476d8
[yaffs-website] / web / core / modules / datetime / src / Plugin / Field / FieldFormatter / DateTimePlainFormatter.php
1 <?php
2
3 namespace Drupal\datetime\Plugin\Field\FieldFormatter;
4
5 use Drupal\Core\Field\FieldItemListInterface;
6 use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
7
8 /**
9  * Plugin implementation of the 'Plain' formatter for 'datetime' fields.
10  *
11  * @FieldFormatter(
12  *   id = "datetime_plain",
13  *   label = @Translation("Plain"),
14  *   field_types = {
15  *     "datetime"
16  *   }
17  *)
18  */
19 class DateTimePlainFormatter extends DateTimeFormatterBase {
20
21   /**
22    * {@inheritdoc}
23    */
24   public function viewElements(FieldItemListInterface $items, $langcode) {
25     $elements = [];
26
27     foreach ($items as $delta => $item) {
28       $output = '';
29       if (!empty($item->date)) {
30         /** @var \Drupal\Core\Datetime\DrupalDateTime $date */
31         $date = $item->date;
32
33         if ($this->getFieldSetting('datetime_type') == 'date') {
34           // A date without time will pick up the current time, use the default.
35           datetime_date_default_time($date);
36         }
37         $this->setTimeZone($date);
38
39         $output = $this->formatDate($date);
40       }
41       $elements[$delta] = [
42         '#cache' => [
43           'contexts' => [
44             'timezone',
45           ],
46         ],
47         '#markup' => $output,
48       ];
49     }
50
51     return $elements;
52   }
53
54   /**
55    * {@inheritdoc}
56    */
57   protected function formatDate($date) {
58     $format = $this->getFieldSetting('datetime_type') == DateTimeItem::DATETIME_TYPE_DATE ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
59     $timezone = $this->getSetting('timezone_override');
60     return $this->dateFormatter->format($date->getTimestamp(), 'custom', $format, $timezone != '' ? $timezone : NULL);
61   }
62
63 }