You are here

function masquerade_switch_back in Masquerade 7

Same name and namespace in other branches
  1. 5 masquerade.module \masquerade_switch_back()
  2. 6 masquerade.module \masquerade_switch_back()

Function for a masquerading user to switch back to the previous user.

1 call to masquerade_switch_back()
masquerade_switch_back_page in ./masquerade.module
Allows a user who is currently masquerading to become a new user.

File

./masquerade.module, line 890
The masquerade module allows administrators to masquerade as other user.

Code

function masquerade_switch_back() {

  // switch user
  global $user;
  cache_clear_all($user->uid, 'cache_menu', TRUE);
  $uid = db_query("SELECT m.uid_from FROM {masquerade} m WHERE m.sid = :sid AND m.uid_as = :uid_as ", array(
    ':sid' => session_id(),
    ':uid_as' => $user->uid,
  ))
    ->fetchField();

  // erase record
  db_delete('masquerade')
    ->condition('sid', session_id())
    ->condition('uid_as', $user->uid)
    ->execute();
  $oldname = $user->uid == 0 ? variable_get('anonymous', t('Anonymous')) : $user->name;

  // Call logout hooks when switching from masquerading user.
  masquerade_user_logout($user);
  drupal_session_regenerate();
  $user = user_load($uid);

  // Call all login hooks when switching back to original user.
  $edit = array();

  // Passed by reference.
  user_module_invoke('login', $edit, $user);
  watchdog('masquerade', 'User %user no longer masquerading as %masq_as.', array(
    '%user' => $user->name,
    '%masq_as' => $oldname,
  ), WATCHDOG_INFO);
}