You are here

function og_role_watchdog_og_membership_update in Role Watchdog 7

Same name and namespace in other branches
  1. 7.2 modules/og_role_watchdog/og_role_watchdog.module \og_role_watchdog_og_membership_update()

Implements hook_og_membership_update().

File

modules/og_role_watchdog/og_role_watchdog.module, line 135
Logs changes to user roles.

Code

function og_role_watchdog_og_membership_update($membership) {
  if ($membership->entity_type == 'user') {
    $account = user_load($membership->etid);
    $roles = array_flip(og_get_global_roles());

    // Authenticated role ID.
    $rid = $roles[OG_AUTHENTICATED_ROLE];
    if ($membership->original->state != OG_STATE_ACTIVE && $membership->state == OG_STATE_ACTIVE) {

      // Making a user "active" is an "aproved" action unless the user is blocked, in
      // which case it is recorded as an "unblock".
      _og_role_watchdog_add_role($rid, $account, $membership->gid, $membership->original->state == OG_STATE_BLOCKED ? ROLE_WATCHDOG_ROLE_UNBLOCKED : ROLE_WATCHDOG_ROLE_APPROVED);
    }
    if ($membership->original->state != OG_STATE_BLOCKED && $membership->state == OG_STATE_BLOCKED) {
      _og_role_watchdog_remove_role($rid, $account, $membership->gid, ROLE_WATCHDOG_ROLE_BLOCKED);
    }
  }
}