Skip to content
Snippets Groups Projects
Commit 767b8310 authored by Matthieu Scarset's avatar Matthieu Scarset
Browse files

Use users' timezone to populate calendars #3339333

parent e3ab6c73
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@
namespace Drupal\calendar_view\Plugin\views\style;
use Drupal\Component\Datetime\DateTimePlus;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\Field\FieldItemInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Link;
......@@ -40,6 +41,12 @@ abstract class CalendarViewBase extends DefaultStyle implements CalendarViewInte
*/
protected $entityFieldManager;
/**
* The current user.
*
* @var \Drupal\Core\Session\AccountInterface
*/
protected $currentUser;
/**
* Contains the system.data configuration object.
......@@ -56,6 +63,7 @@ abstract class CalendarViewBase extends DefaultStyle implements CalendarViewInte
$instance->dateFormatter = $container->get('date.formatter');
$instance->logger = $container->get('logger.channel.calendar_view');
$instance->entityFieldManager = $container->get('entity_field.manager');
$instance->currentUser = $container->get('current_user');
$instance->dateConfig = $container->get('config.factory')->get('system.date');
return $instance;
}
......@@ -492,13 +500,20 @@ abstract class CalendarViewBase extends DefaultStyle implements CalendarViewInte
return;
}
$start = $values['value'];
$start_day = new \DateTime();
$start = $values['value'] ?? NULL;
if (empty($start)) {
return;
}
/** @var \Drupal\Core\Datetime\DrupalDateTime $datetime */
$datetime = new DrupalDateTime('', $this->currentUser->getTimezone());
$start_day = clone $datetime;
$start_day->setTimestamp($start);
$start_day->setTime(0, 0, 0);
$end = $values['end_value'] ?? $start;
$end_day = new \DateTime();
$end_day = clone $datetime;
$end_day->setTimestamp($end);
$end_day->setTime(0, 0, 0);
......@@ -520,9 +535,10 @@ abstract class CalendarViewBase extends DefaultStyle implements CalendarViewInte
foreach ($table['#rows'] as $r => $rows) {
foreach (array_keys($rows['data']) as $timestamp) {
if (in_array($timestamp, $timestamps)) {
$today = new \DateTime();
$today = clone $datetime;
$today->setTimestamp($timestamp);
$today->setTime(0, 0, 0);
$interval = $start_day->diff($today);
$values['instance'] = $interval->format('%a');
$renderable_row['#values'] = $values;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment