function userprotect_check_bypass in User protect 7
Same name and namespace in other branches
- 5 userprotect.module \userprotect_check_bypass()
- 6 userprotect.module \userprotect_check_bypass()
Checks to see if the current user can bypass a protection.
Parameters
string $protection: The protection to check for bypass.
object $account: (optional) The user to perform the bypass check on Defaults to the current user.
Return value
bool TRUE if the user can bypass. FALSE otherwise.
6 calls to userprotect_check_bypass()
- UserProtectBypassWebTest::doCheckBypass in tests/UserProtectBypassWebTest.test 
- Tests if bypassing a certain protection is respected.
- userprotect_form_alter in ./userprotect.module 
- Implements hook_form_alter().
- userprotect_form_user_profile_form_alter in ./userprotect.module 
- Implements hook_form_user_profile_form_alter().
- userprotect_user_admin_account_validate in ./userprotect.module 
- Custom validation function for protecting users from the user administration operations.
- userprotect_user_cancel_access in ./userprotect.module 
- Access callback for user cancel pages.
1 string reference to 'userprotect_check_bypass'
- UserProtectBypassWebTest::doCheckBypass in tests/UserProtectBypassWebTest.test 
- Tests if bypassing a certain protection is respected.
File
- ./userprotect.module, line 823 
- Main module file for the userprotect module.
Code
function userprotect_check_bypass($protection, $account = NULL) {
  $bypass =& drupal_static(__FUNCTION__, array());
  $bypass_defaults =& drupal_static(__FUNCTION__ . '_defaults', NULL);
  if (empty($account)) {
    global $user;
    $account = $user;
  }
  // If not a user admin, no checks necessary.
  if (!user_access('administer users', $account)) {
    return FALSE;
  }
  // Set the static array for the current admin.
  if (!isset($bypass[$account->uid])) {
    $result = db_query("SELECT * FROM {userprotect} WHERE uid = :uid AND up_type = :up_type", array(
      ':uid' => $account->uid,
      ':up_type' => 'admin',
    ));
    if ($admin_array = $result
      ->fetchAssoc()) {
      $bypass[$account->uid] = $admin_array;
    }
  }
  // If a per administrator bypass setting exists, return it.
  if (isset($bypass[$account->uid][$protection])) {
    return $bypass[$account->uid][$protection];
  }
  else {
    if (!isset($bypass_defaults)) {
      $bypass_defaults = variable_get('userprotect_administrator_bypass_defaults', userprotect_administrator_bypass_defaults());
    }
    return isset($bypass_defaults[$protection]) ? $bypass_defaults[$protection] : FALSE;
  }
}