annotate core/modules/datetime_range/src/DateTimeRangeTrait.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\datetime_range;
Chris@0 4
Chris@0 5 use Drupal\Core\Field\FieldItemListInterface;
Chris@0 6
Chris@0 7 /**
Chris@0 8 * Provides friendly methods for datetime range.
Chris@0 9 */
Chris@0 10 trait DateTimeRangeTrait {
Chris@0 11
Chris@0 12 /**
Chris@0 13 * {@inheritdoc}
Chris@0 14 */
Chris@0 15 public function viewElements(FieldItemListInterface $items, $langcode) {
Chris@0 16 $elements = [];
Chris@0 17 $separator = $this->getSetting('separator');
Chris@0 18
Chris@0 19 foreach ($items as $delta => $item) {
Chris@0 20 if (!empty($item->start_date) && !empty($item->end_date)) {
Chris@0 21 /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */
Chris@0 22 $start_date = $item->start_date;
Chris@0 23 /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */
Chris@0 24 $end_date = $item->end_date;
Chris@0 25
Chris@0 26 if ($start_date->getTimestamp() !== $end_date->getTimestamp()) {
Chris@0 27 $elements[$delta] = [
Chris@0 28 'start_date' => $this->buildDateWithIsoAttribute($start_date),
Chris@0 29 'separator' => ['#plain_text' => ' ' . $separator . ' '],
Chris@0 30 'end_date' => $this->buildDateWithIsoAttribute($end_date),
Chris@0 31 ];
Chris@0 32 }
Chris@0 33 else {
Chris@0 34 $elements[$delta] = $this->buildDateWithIsoAttribute($start_date);
Chris@0 35
Chris@0 36 if (!empty($item->_attributes)) {
Chris@0 37 $elements[$delta]['#attributes'] += $item->_attributes;
Chris@0 38 // Unset field item attributes since they have been included in the
Chris@0 39 // formatter output and should not be rendered in the field template.
Chris@0 40 unset($item->_attributes);
Chris@0 41 }
Chris@0 42 }
Chris@0 43 }
Chris@0 44 }
Chris@0 45
Chris@0 46 return $elements;
Chris@0 47 }
Chris@0 48
Chris@0 49 }