You are here

public static function CalendarHelper::getDateArgumentHandler in Calendar 8

Helper function to find the first date argument handler for this view.

Parameters

\Drupal\views\ViewExecutable $view: The view executable object.

null $display_id:

Return value

\Drupal\calendar\DateArgumentWrapper|false Returns the Date handler if one is found, or FALSE otherwise.

8 calls to CalendarHelper::getDateArgumentHandler()
Calendar::render in src/Plugin/views/style/Calendar.php
Render the display in this style.
Calendar::validate in src/Plugin/views/style/Calendar.php
Validate that the plugin is correct and can be saved.
Calendar::viewOptionsForGranularity in src/Plugin/views/style/Calendar.php
Get options for Views displays that support Calendar with set granularity.
CalendarHeader::render in src/Plugin/views/area/CalendarHeader.php
Render the area.
CalendarHelper::getDisplayForGranularity in src/CalendarHelper.php
Get the display that handles a given granularity.

... See full list

File

src/CalendarHelper.php, line 722

Class

CalendarHelper
Defines Gregorian Calendar date values.

Namespace

Drupal\calendar

Code

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
        ->getHandler($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;
}