5a34f2c1828345445fe4136fce724bdaef76146e
[yaffs-website] / web / core / modules / datetime_range / src / DateTimeRangeTrait.php
1 <?php
2
3 namespace Drupal\datetime_range;
4
5 use Drupal\Core\Datetime\DrupalDateTime;
6 use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
7
8 /**
9  * Provides friendly methods for datetime range.
10  */
11 trait DateTimeRangeTrait {
12
13   /**
14    * Creates a render array from a date object.
15    *
16    * @param \Drupal\Core\Datetime\DrupalDateTime $date
17    *   A date object.
18    *
19    * @return array
20    *   A render array.
21    */
22   protected function buildDate(DrupalDateTime $date) {
23     if ($this->getFieldSetting('datetime_type') == DateTimeItem::DATETIME_TYPE_DATE) {
24       // A date without time will pick up the current time, use the default.
25       datetime_date_default_time($date);
26     }
27     $this->setTimeZone($date);
28
29     $build = [
30       '#plain_text' => $this->formatDate($date),
31       '#cache' => [
32         'contexts' => [
33           'timezone',
34         ],
35       ],
36     ];
37
38     return $build;
39   }
40
41   /**
42    * Creates a render array from a date object with ISO date attribute.
43    *
44    * @param \Drupal\Core\Datetime\DrupalDateTime $date
45    *   A date object.
46    *
47    * @return array
48    *   A render array.
49    */
50   protected function buildDateWithIsoAttribute(DrupalDateTime $date) {
51     if ($this->getFieldSetting('datetime_type') == DateTimeItem::DATETIME_TYPE_DATE) {
52       // A date without time will pick up the current time, use the default.
53       datetime_date_default_time($date);
54     }
55
56     // Create the ISO date in Universal Time.
57     $iso_date = $date->format("Y-m-d\TH:i:s") . 'Z';
58
59     $this->setTimeZone($date);
60
61     $build = [
62       '#theme' => 'time',
63       '#text' => $this->formatDate($date),
64       '#html' => FALSE,
65       '#attributes' => [
66         'datetime' => $iso_date,
67       ],
68       '#cache' => [
69         'contexts' => [
70           'timezone',
71         ],
72       ],
73     ];
74
75     return $build;
76   }
77
78 }