示例#1
0
 /**
  * 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;
 }