You are here

function social_event_block_access in Open Social 8.5

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_event/social_event.module \social_event_block_access()
  2. 8.3 modules/social_features/social_event/social_event.module \social_event_block_access()
  3. 8.4 modules/social_features/social_event/social_event.module \social_event_block_access()
  4. 8.6 modules/social_features/social_event/social_event.module \social_event_block_access()
  5. 8.7 modules/social_features/social_event/social_event.module \social_event_block_access()
  6. 8.8 modules/social_features/social_event/social_event.module \social_event_block_access()
  7. 10.3.x modules/social_features/social_event/social_event.module \social_event_block_access()
  8. 10.0.x modules/social_features/social_event/social_event.module \social_event_block_access()
  9. 10.1.x modules/social_features/social_event/social_event.module \social_event_block_access()
  10. 10.2.x modules/social_features/social_event/social_event.module \social_event_block_access()

Custom permission check, to see if people have access to users' events.

Implements hook_block_access().

File

modules/social_features/social_event/social_event.module, line 425
The Social event module.

Code

function social_event_block_access(Block $block, $operation, AccountInterface $account) {
  if ($operation === 'view' && ($block
    ->getPluginId() === 'views_exposed_filter_block:events-events_overview' || $block
    ->getPluginId() === 'views_block:events-block_events_on_profile')) {

    // Here we're going to assume by default access is not granted.
    $eventController = SocialEventController::create(\Drupal::getContainer());
    $access = $eventController
      ->myEventAccess($account);

    // If the 'myEventAccess' returns 'AccessResultNeutral', we have to assume
    // that access must be denied.
    if ($access instanceof AccessResultNeutral) {

      // Return forbidden, since access was not explicitly granted.
      return AccessResult::forbidden();
    }
    return $access;
  }
  if ($operation === 'view' && $block
    ->getPluginId() === 'views_block:event_enrollments-event_enrollments') {
    $nid = \Drupal::routeMatch()
      ->getRawParameter('node');
    if (!empty($nid) && ($node = Node::load($nid))) {

      // Check if event enrollment were disabled explicitly.
      if (!\Drupal::service('social_event.enroll')
        ->isEnabled($node)) {

        // Return forbidden, since access was not explicitly granted.
        return AccessResult::forbidden();
      }
    }
  }

  // No opinion.
  return AccessResult::neutral();
}