You are here

function rng_views_views_query_alter in RNG - Events and Registrations 8.2

Same name and namespace in other branches
  1. 3.x rng_views/rng_views.module \rng_views_views_query_alter()

Implements hook_views_query_alter().

File

rng_views/rng_views.module, line 191

Code

function rng_views_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {

  /** @var \Drupal\rng\EventManager $event_manager */
  $event_manager = \Drupal::service('rng.event_manager');
  $event_types = $event_manager
    ->getEventTypes();
  foreach (array_keys($event_types) as $entity_type) {
    if ($view
      ->id() == "rng_registrations_{$entity_type}") {

      /** @var \Drupal\Core\Routing\RouteMatchInterface $route_match */
      $route_match = \Drupal::service('current_route_match');

      /** @var \Drupal\Core\Entity\EntityInterface $event */
      if ($event = $route_match
        ->getParameter($entity_type)) {
        if ($meta = $event_manager
          ->getMeta($event)) {

          // If we waitlist and have a registration limit, set some defaults.
          if ($meta
            ->allowWaitList() && $meta
            ->getRegistrantsMaximum() > 0) {
            if ($view
              ->getDisplay()->display['id'] == 'page_1') {
              $query
                ->setLimit($meta
                ->getRegistrantsMaximum());
            }
            if ($view
              ->getDisplay()->display['id'] == 'attachment_1') {
              $view
                ->setOffset($meta
                ->getRegistrantsMaximum());
            }
          }
        }
      }
    }
  }
}