/** * Helper function to find the first date argument handler for this view. * * @param \Drupal\views\ViewExecutable $view * @param null $display_id * * @return \Drupal\calendar\DateArgumentWrapper|FALSE Returns the Date handler if one is found, or FALSE otherwise. * Returns the Date handler if one is found, or FALSE otherwise. */ public static function getDateArgumentHandler(ViewExecutable $view, $display_id = NULL) { $all_arguments = []; if ($display_id) { // If we aren't dealing with current display we have to load the argument handlers. /** @var \Drupal\views\Plugin\ViewsHandlerManager $argument_manager */ $argument_manager = \Drupal::getContainer()->get('plugin.manager.views.argument'); $argument_configs = $view->getHandlers('argument', $display_id); foreach ($argument_configs as $argument_config) { $all_arguments[] = $argument_manager->createInstance($argument_config['plugin_id'], $argument_config); } } else { // $view->argument actually contains an array of current arguments. $all_arguments = $view->argument; } if ($all_arguments) { $current_position = 0; /** * @var $name * @var \Drupal\views\Plugin\views\argument\ArgumentPluginBase $handler */ foreach ($all_arguments as $name => $handler) { if (static::isCalendarArgument($handler)) { $wrapper = new DateArgumentWrapper($handler); $wrapper->setPosition($current_position); return $wrapper; } $current_position++; } } return FALSE; }