You are here

function audit_log_user_user_update in Audit Log 7

Implements hook_user_update().

File

modules/audit_log_user/audit_log_user.module, line 96
User related hook implemenations for the Audit log module.

Code

function audit_log_user_user_update(&$edit, $account, $category) {

  // Check if the user was enabled or disabled.
  if (isset($edit['status'])) {
    if ($edit['original']->status != $edit['status']) {
      $action = $edit['status'] ? 'user-unblocked' : 'user-blocked';
      audit_log($account, 'user', $action, $account, NULL, REQUEST_TIME, array(
        'message' => format_string('@action @name.', array(
          '@name' => $account->name,
          '@action' => $action,
        )),
      ));
    }
  }

  // Only run if the submission form in fact sent role info.
  if (isset($edit['roles']) && is_array($edit['roles'])) {

    // Check if any roles were removed.
    $removed_roles = array_diff_key($edit['original']->roles, $edit['roles']);
    if (!empty($removed_roles)) {
      audit_log($account, 'user', 'roles-removed', $account, NULL, REQUEST_TIME, array(
        'message' => implode(', ', $removed_roles),
      ));
    }

    // Check if any roles were added.
    $added_keys = array_diff_key($edit['roles'], $edit['original']->roles);
    if (!empty($added_keys)) {
      $all_roles = user_roles();
      $added_roles = array_intersect_key($all_roles, $added_keys);
      audit_log($account, 'user', 'roles-added', $account, NULL, REQUEST_TIME, array(
        'message' => implode(', ', $added_roles),
      ));
    }
  }
}