What is the best way to make a hook that only fires when new members are added to a group?
I have a function that exports group memberships to moodle course enrolments. Right now I have it bound to _user_presave:
function mymodule_user_presave (User $user) {
// Gather data.
$userid = $user->id();
$group_memberships = \Drupal::service('group.membership_loader')->loadByUser($user);
foreach ($group_memberships as $group_membership) {
$group = $group_membership->getGroup();
$groupid = $group->id->value;
$roles = $group_membership->getRoles();
// Get roles.
foreach ($roles as $rolename => $value) {
I bound it to user_presave after I realized that adding members to a group also calls this hook. But this seems unnecessarily inefficient, since it always returns all group memberships of the user, instead of just the latest one.
Is there a way to detect a new GroupMembership directly and hook into that?