You are here

function apigee_edge_teams_user_delete in Apigee Edge 8

Implements hook_ENTITY_TYPE_delete().

File

modules/apigee_edge_teams/apigee_edge_teams.module, line 123
Copyright 2018 Google Inc.

Code

function apigee_edge_teams_user_delete(EntityInterface $entity) {

  /** @var \Drupal\user\UserInterface $entity */

  /** @var \Drupal\apigee_edge_teams\Entity\Storage\TeamMemberRoleStorageInterface $team_member_role_storage */
  $team_member_role_storage = \Drupal::entityTypeManager()
    ->getStorage('team_member_role');

  // When a user gets deleted then its developer account also gets deleted
  // from Apigee Edge which removes its (team) company memberships.
  // We must delete this user's team roles from Drupal as well.
  foreach ($team_member_role_storage
    ->loadByDeveloper($entity) as $team_member_roles_in_team) {
    try {
      $team_member_roles_in_team
        ->delete();
    } catch (EntityStorageException $e) {
      \Drupal::logger('apigee_edge_teams')
        ->critical("Integrity check: Failed to remove %developer team member's roles in %team team when its Drupal user got deleted.", [
        '%developer' => $entity
          ->getEmail(),
        '%team' => $team_member_roles_in_team
          ->getTeam()
          ->id(),
      ]);
    }
  }
}