diff --git a/src/Plugin/views/row/Calendar.php b/src/Plugin/views/row/Calendar.php index 17a70783..ef838b92 100644 --- a/src/Plugin/views/row/Calendar.php +++ b/src/Plugin/views/row/Calendar.php @@ -5,13 +5,12 @@ use Drupal\calendar\CalendarEvent; use Drupal\calendar\CalendarHelper; use Drupal\calendar\CalendarViewsTrait; +use Drupal\Core\Datetime\DateFormatter; use Drupal\Core\Entity\EntityFieldManagerInterface; -use Drupal\Core\Field\BaseFieldDefinition; -use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem; +use Drupal\Core\Form\FormStateInterface; +use Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface; use Drupal\taxonomy\Entity\Term; use Drupal\views\Plugin\views\argument\Date; -use Drupal\Core\Datetime\DateFormatter; -use Drupal\Core\Form\FormStateInterface; use Drupal\views\Plugin\views\display\DisplayPluginBase; use Drupal\views\Plugin\views\row\RowPluginBase; use Drupal\views\ViewExecutable; @@ -417,14 +416,6 @@ public function render($row) { return []; } - // @todo clean up -// $table_name = $info['table_name']; - $delta_field = $info['delta_field']; -// $tz_handling = $info['tz_handling']; -// $tz_field = $info['timezone_field']; -// $rrule_field = $info['rrule_field']; -// $is_field = $info['is_field']; - $event = new CalendarEvent($entity); // Retrieve the field value(s) that matched our query from the cached node. @@ -435,17 +426,16 @@ public function render($row) { $granularity = 'month'; $increment = 1; - // @todo implement timezone support if ($entity->hasField($field_name) && $entity->get($field_name)) { $item = $entity->get($field_name)->getValue(); - // @todo handle timezones // $db_tz = date_get_timezone_db($tz_handling, isset($item->$tz_field) ? $item->$tz_field : timezone_name_get($dateInfo->getTimezone())); // $to_zone = date_get_timezone($tz_handling, isset($item->$tz_field) ? $item->$tz_field : timezone_name_get($dateInfo->getTimezone())); // $item_start_date = new dateObject($item, $db_tz); - $item_start_date = new \DateTime($item[0]['value']); + $timezone = new \DateTimeZone(DateTimeItemInterface::STORAGE_TIMEZONE); + $item_start_date = new \DateTime($item[0]['value'], $timezone); if (!empty($item[0]['end_value'])) { - $item_end_date = new \DateTime($item[0]['end_value']); + $item_end_date = new \DateTime($item[0]['end_value'], $timezone); } else { $item_end_date = $item_start_date; @@ -458,11 +448,6 @@ public function render($row) { continue; } - // Set the item date to the proper display timezone; - // @todo handle timezones -// $item_start_date->setTimezone(new dateTimezone($to_zone)); -// $item_end_date->setTimezone(new dateTimezone($to_zone)); - $event->setStartDate($item_start_date); $event->setEndDate($item_end_date); $event->setTimezone(new \DateTimeZone(timezone_name_get($dateInfo->getTimezone()))); @@ -546,9 +531,9 @@ function explode_values($event) { // this view. // @TODO make this work with the CalendarDateInfo object - $start = $event->getStartDate()->format('Y-m-d'); + $start = $this->dateFormatter->format($event->getStartDate()->getTimestamp(), 'custom', 'Y-m-d'); $now = $start; - $to = $event->getEndDate()->format('Y-m-d'); + $to = $this->dateFormatter->format($event->getEndDate()->getTimestamp(), 'custom', 'Y-m-d'); $next = new \DateTime(); $next->setTimestamp($event->getStartDate()->getTimestamp());