You are here

function social_event_managers_node_access_records in Open Social 8.7

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

Implements hook_node_access_records().

File

modules/social_features/social_event/modules/social_event_managers/social_event_managers.module, line 198
Contains social_event_managers.module.

Code

function social_event_managers_node_access_records(NodeInterface $node) {
  $grants = [];

  // Only for events.
  if ($node
    ->getType() === 'event' && ($event_managers_ids = array_column($node
    ->get('field_event_managers')
    ->getValue(), 'target_id'))) {

    // Event organizers should be granted access.
    // Load the event managers accounts.
    $users = User::loadMultiple($event_managers_ids);
    foreach ($users as $event_manager) {

      // Event organizers must have access
      // to view the record in the first place.
      if ($node
        ->access('view', $event_manager)) {

        // Add grant.
        $grants[] = [
          'realm' => 'social_event_managers:' . $node
            ->id(),
          'gid' => $event_manager
            ->id(),
          'grant_view' => 1,
          'grant_update' => 1,
          'grant_delete' => 0,
        ];
      }
    }
  }
  return $grants;
}